1. Forums
  2. Discord
  3. About Mapcore
  4. Patreon Supporters
  • Login
  • Register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • More Options
  1. Mapcore
  2. Discussions
  3. Level Design

[CS:GO] - Lighting and compiling questions

  • biXen
  • August 21, 2015 at 12:56 PM
  • biXen
    • August 21, 2015 at 12:56 PM
    • #1

    Hi,

    Soon time to enter my map into the competition and for playtesting (obviously won't be detailed and proper finished for deadline, but still). I have a couple of questions.

    1) Is there any way to get coloured shadows from coloured glass? In the Valve docs I see that projections are disabled because you can only have one in a level, but is there an easy way to fake it with baking or something?

    2) When making a 3D skybox, my thinking is that if I build the 3d skybox around the map, select it and export it to a new map file. Work on it there, and then I can import it back into my level and make it smaller and that will be an easy workflow for updating it later too. Have I missed something or is there an easier way? (do you guys actually work on it in 1/16 scale or do you always scale it down?)

    3) When I start my map for the first time it generates a lot of extra data, paths for bots etc. , is that something that is then packaged into the same file I distribute? Or is there some process I am not doing that I should do? This also goes for "buildcubemaps".

    I might have more questions, but that was what I had right now.

  • jackophant
    • August 21, 2015 at 1:12 PM
    • #2

    1) Could you use coloured light_spots to crudely mimic the colour of the light coming through? It's a bit hacky, but it could work?

    2) Historically I've always built around the map and shrunk after finishing like you suggest. My skyboxes are often quite simple so I've not bothered moving them into a new file, but dont forget there are the "_skybox" props which are super tiny as well you can use.

    3) When starting a map for the first time, the game looks for an associated nav file and if none is found it would proceed to generate one, but only if bots are present. If you run the command "bot_kick" before you choose your team, the bots will never connect and you won't need to build the nav mesh. The file is stored in the same directory as the bsp, and the workshop uploader will automatically package it for you when submitting to the workshop if it exists.

    Cubemaps are automatically saved into the bsp when "buildcubemaps" is run. Make sure you upload the right version of the bsp with the cubemaps inside when uploading to workshop! (and turn mat_specular 0 on when generating and preferably keep cubemaps for players at a height of 64 units to best reflect head height reflections, if you don't know already)

  • Evert
    • August 21, 2015 at 1:43 PM
    • #3

    Regarding the skybox question:

    I've always found 3d-skyboxes to be cumbersome to iterate on, but now with the instances support in CS:GO I've noticed a pretty decent work flow.

    It requires a few steps to set up BUT once it's been done it should be smooth sailing.
    1. Place a dummy entity in the origin of the world. Select that and fly around and select the most important geometry from your level, like the extents of the playable area, or where the framing of the 3dskybox is the most important or whatever.
    2. Paste that stuff into a new 3dskybox instance and place the sky camera on that dummy entity.
    3. Scale it all and align it as closely to the grid as possible (the ref geometry will not be compiled so it doesn't necessary have to be on grid, but I usually make sure that the ref dummy is in the origin here)
    4. Put the reference geometry in it's own vis-group so that you can easily disable the it before compiling.
    5. Place the skybox func_instance anywhere in your level.

    I've found this to be as close to building around the level, but without having to constantly select and re-scale stuff when aligning stuff.

  • laminutederire
    • August 21, 2015 at 1:52 PM
    • #4

    Isn't a paste special even more effective to align things?

  • Evert
    • August 21, 2015 at 1:57 PM
    • #5

    Yeah true, does that work as intended when scaling though?

    Since the scaling is based on the bounding volume of the selection IIRC?
    Never tried it

  • laminutederire
    • August 21, 2015 at 2:01 PM
    • #6
    Quote from Evert

    Yeah true, does that work as intended when scaling though?

    Since the scaling is based on the bounding volume of the selection IIRC?
    Never tried it

    neither did I, that's why I formulated it as a question with ctrl+m it may work!

  • biXen
    • August 21, 2015 at 2:50 PM
    • #7
    Quote from Evert

    Regarding the skybox question:

    I've always found 3d-skyboxes to be cumbersome to iterate on, but now with the instances support in CS:GO I've noticed a pretty decent work flow.

    It requires a few steps to set up BUT once it's been done it should be smooth sailing.
    1. Place a dummy entity in the origin of the world. Select that and fly around and select the most important geometry from your level, like the extents of the playable area, or where the framing of the 3dskybox is the most important or whatever.
    2. Paste that stuff into a new 3dskybox instance and place the sky camera on that dummy entity.
    3. Scale it all and align it as closely to the grid as possible (the ref geometry will not be compiled so it doesn't necessary have to be on grid, but I usually make sure that the ref dummy is in the origin here)
    4. Put the reference geometry in it's own vis-group so that you can easily disable the it before compiling.
    5. Place the skybox func_instance anywhere in your level.

    I've found this to be as close to building around the level, but without having to constantly select and re-scale stuff when aligning stuff.

    I am not familiar with the instances, but this is essentially making the skybox in another file, and the func_instance is referencing the content of that file's compiled result? Or how does it work exactly?

    Quote from jackophant

    1) Could you use coloured light_spots to crudely mimic the colour of the light coming through? It's a bit hacky, but it could work?

    2) Historically I've always built around the map and shrunk after finishing like you suggest. My skyboxes are often quite simple so I've not bothered moving them into a new file, but dont forget there are the "_skybox" props which are super tiny as well you can use.

    3) When starting a map for the first time, the game looks for an associated nav file and if none is found it would proceed to generate one, but only if bots are present. If you run the command "bot_kick" before you choose your team, the bots will never connect and you won't need to build the nav mesh. The file is stored in the same directory as the bsp, and the workshop uploader will automatically package it for you when submitting to the workshop if it exists.

    Cubemaps are automatically saved into the bsp when "buildcubemaps" is run. Make sure you upload the right version of the bsp with the cubemaps inside when uploading to workshop! (and turn mat_specular 0 on when generating and preferably keep cubemaps for players at a height of 64 units to best reflect head height reflections, if you don't know already)

    Thanks, useful info.

    1) I thought about doing something like that, it might work, but I it doesn't work exactly like I want to I Think. I was actually even thinking about recreating the scene, lighting and baking in a 3d program and making a decal of the result. But it's a bit over the top :)

  • jackophant
    • August 21, 2015 at 3:09 PM
    • #8

    Maybe ask @Squad how the light-through-water effect was achieved in the mid/B connector?

    Also, I've jsut realised you are saying coloured shadows from coloured glass... Do you just mean coloured light that has been filtered by the glass, or the ambient light colour for shadows as well?

  • Evert
    • August 21, 2015 at 3:18 PM
    • #9

    @biXen https://developer.valvesoftware.com/wiki/Func_instance

    It's pretty much a vmf inside a vmf so yeah it's exactly what you're describing. They can be handy for organizing levels, but can also make stuff a become a hierarchic mess :P I just found them very handy for seperating the skybox from the level, it's a matter of preference I guess.

  • jackophant
    • August 21, 2015 at 3:30 PM
    • #10

    If you have areas of high repetition, you can use them to keep file size down, as the different instances will be referring to the same vmf, although this may not make a difference post-compilation.

    It really has it's benefits in off grid work as it can be on grid in it's separate file, and then freely rotate it in the main file.

  • biXen
    • August 21, 2015 at 5:41 PM
    • #11
    Quote from jackophant

    Maybe ask @Squad how the light-through-water effect was achieved in the mid/B connector?

    Also, I've jsut realised you are saying coloured shadows from coloured glass... Do you just mean coloured light that has been filtered by the glass, or the ambient light colour for shadows as well?

    I have to check out his map to see what you are referring to.
    No you were correct the first time, just bad wording from me, I meant coloured light casted onto the floor. In regards to your suggestion about the spots, it might actually work if I could make an invisible frame that would block and allow light through in a certain pattern while itself being invisible to the player and not block or cast shadows. Might have to experiment more, surely not the most important part of my work now, but would be a key identifiable area.


    Quote from Evert

    @biXen https://developer.valvesoftware.com/wiki/Func_instance

    It's pretty much a vmf inside a vmf so yeah it's exactly what you're describing. They can be handy for organizing levels, but can also make stuff a become a hierarchic mess :P I just found them very handy for seperating the skybox from the level, it's a matter of preference I guess.

    Thanks, didn't actually know this, might come in handy like jack describes too. Any downsides to it? Except hierarchy mess if you overdo it.

  • biXen
    • August 22, 2015 at 8:27 AM
    • #12

    I noticed this in the wiki for the func instance:

    Quote

    Replace <string $variable> <string value>
    This is a replacement parameter. Any usage of $variable inside the instance will be replaced with value.
    Example: $color 255 0 0

    Does that mean you can use variables to only define light color once for all lights in an area in Hammer? Or is this for something different?

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!

Register Yourself Login
Discord

The Mapcore Discord is our lively IRC channel of the 2000s reborn. Chat about level design, gaming, and more.

Latest Posts

  1. Tangerine

    Harry Poster
    July 18, 2026 at 11:10 AM
  2. Any of the old guard still around? D:

    Warby
    July 12, 2026 at 8:23 PM
  3. About our archived forums

    Thrik
    June 30, 2026 at 2:12 PM
  4. Mapcore Discord

    mason_fan123
    June 24, 2026 at 8:52 PM
  5. [CS2] Valley

    Serialmapper
    June 22, 2026 at 11:56 AM
  6. Free Music / SFX Resource - Over 2500 Tracks

    Eric Matyas
    June 18, 2026 at 12:32 PM
  7. Pango [WIP]

    Elowen
    June 11, 2026 at 10:13 AM
  8. [CS2] Dvina

    Jeremy Rivera
    June 11, 2026 at 10:03 AM
  9. Bridges 2.0 by NEXSIDE, MAP SHOWCASE. ( Steam Workshop )

    MrTrane18
    June 1, 2026 at 7:46 PM
  10. Classic Maps Reborn For CS2

    SillySpaceCat
    May 31, 2026 at 10:33 PM
  1. Privacy Policy
  2. Contact
Powered by WoltLab Suite™