-
Notifications
You must be signed in to change notification settings - Fork 126
Levels: Mapper's corner
Welcome to the mapper's corner. Here you can learn about creating levels for qfusion. So far this page is only a collection of various details relatively specific to qfusion mapping, mostly based on information from the Warsow wiki or forums. Feel free to expand or correct this page, and specific tutorials are highly welcome!
As qfusion is an game engine only, it does not include any textures or other media files required for mapping. It is therefore recommended to map for Warsow for the time being. The recommended level editor for Warsow is NetRadiant a stabilized fork of GTKRadiant. It has the advantage that it is easy to install and includes support for Warsow. However likely you can use other versions of the Radiant family of editors also. Additionally you can also use the Quark editor with also supports Warsow out of the box. A much more recent addition to the BSP level editing toolbox is Trenchbroom which you will likely find a superior editing experience, but it does not support Warsow and many of the advanced features of qfusion (yet). It should be possible to make the geometry in Trenchbroom and convert it with Netradiant though (warning, untested!).
Basically level editing for qfusion is very similar as mapping for any Quake3 engine derived game (for example Wolfenstein: Enemy Territory or Jedi Knight Academy). Any feature you find in an vanilla Quake3 tutorial should work almost exactly the same, and most other addons found in later iterations of the Q3 engine should work at least quite similar. As there is an abundance of tutorials and mapping tips for these games available online, this wiki only concentrates on the unusual features of qfusion you are likely to use at some point.
q3map2 is the official level and lightmap compiler for idTech3 engines. It should have been included with your Netradiant copy and supports Warsow (and qfusion) natively. As it is a quite complex and advanced light rendering program, there is a full wiki-book dedicated to its features. However for now stick to the Netradiant included standard presets for Warsow.
FBSP is an improvement on the regular q3 bsp level format, specifically developed for qfusion. It is supported by q3map2 and can be activated with the switch:
-game qfusion
It adds higher quality light-maps and light-styles
Light-styles are a set of different styles on how light entities can behave, allowing them to pulse, flick, etc. Setting up a light with a light-style is as simple as creating a new field inside any light entity called "style", and feed with a number between 1 and 11 (0 is standard lighting).
These are the actual effect names for them:
1. FLICKER (first variety)
2. SLOW STRONG PULSE
3. CANDLE (first variety)
4. FAST STROBE
5. GENTLE PULSE 1
6. FLICKER (second variety)
7. CANDLE (second variety)
8. CANDLE (third variety)
9. SLOW STROBE (fourth variety)
10. FLUORESCENT FLICKER
11. SLOW PULSE NOT FADE TO BLACK
Theses are the classic shaders found in Quake3 that define how a textures looks in the game. The should not be confused with the much more recent GPU based fragment and vertext shaders, even though qfusion has recently included a way to render these directly on the GPU also (which gives a nice speed boost). The original q3map3 shader manual can be found here.
Link to the full qfusion q3 style shader manual
The preferred high level GPU shader language in qfusion is GLSL, specifically the OpenGL 2.0 ES subset. qfusion allows for loading these directly from your hard-drive (instead of embedding them in the engine code) which should allow for relative easy editing in theory. As this is a brand new feature there are no additional details available at the time of writing this Please add any information you might have on working with GLSL shaders in qfusion
Terrain meshes with vertex-color based texture blending and instanced foliage cover is supported. No advanced terrain lods or GPU rendered terrain so far though. Futher details need to be filled
VBO and instancing is supported by qfusion. Further details need to be filled
Needs to be filled
Needs to be filled
Needs to be filled
missing info
qfusion has support for moving and rotating mirror\portal surfaces. However, there are some restrictions on this feature because of the horrible way mirrors\portals work in Quake3 compatibility had to be ensured.
- If your mirror\portal rotates around an axis without moving no restrictions are made on the location of misc_surface_portal entity (however, it should be not further than 64 units at the start).
- Moving portals are not quite working correctly, they act more like mirrors,projecting the portal view on the surface without adjusting it's bias to match the current origin.
Needs to be filled
There is a "hacky" implementation of map scripts. AngelScripts are loaded from "progs/maps/mapname.mp" project files, containing the list of includes (GT scripts are loaded in the same way). Each map can implement spawn functions for custom entities and 4 hooks with hardcoded names:
- void MAP_Init() for map initialization
- void Map_Exit() for map shutdown
- void Map_PreThink() - function which will be called before any world entity has had its think function called and physics run for this frame
- void Map_PosTthink() - function which will be called after all world entities have had their think functions called and physics run for this frame
Note that the implementation is somewhat hacky due to angelwrap API limitations and may not work correctly in 100% cases.