Welcome Guest! To enable all features please try to register or login.
How To Make Maps for Utherverse/RLC Part 1
Tony
#1 Posted : Tuesday, November 27, 2007 10:02:31 AM(UTC)

Rank: Forum Regular

Joined: 2/12/2008(UTC)
Posts: 87
This set of documentation pages will describe how to create new maps for Utherverse. These docs were originally created by John Knight, Chris Appel with some additions and enhancements by Sexy One. The software pipeline and map format for Utherverse is functionally equivalent to the Quake series of graphics engines. Map source data is edited in the Quark level editor and then exported and put through a compilation process. There are separate compile passes to create a bsp, pvs and lighting.

Installation and Configuration of the Quark Level Editor

  • Download the Utherverse version of Quark here.
  • Run the installer QuArK _RLC_6.5.Beta2_v3.exe specifying the path where your exe is located. For most people this will be C:\Program Files\RedLightCenter\RedLightcenter
  • If it is not in C:\Program Files\RedLightCenter\RedLightcenter then you must go into the config menu in QuArK and choose RLC, then change the paths to the new location. Alternatively, you can hand edit the defaults.qrk in the addons directory.
  • In QuArK, go to the pull down menu Options-->Configuration-->Map-->Options and make sure "Don't write floating point coords" and "Use Integral Vertices as Threepoints" are selected.
  • Edit your myinfo.ini file to turn pancake mode on (under the [Machine] tag, insert the string pancake=true ) and make sure you have a prp file for the quarktest map.


Quark and the Utheverse/RLC Engine

QuArK used in conjunction with RLC presents some special problems. This page attempts to document the most common issues that occur when using QuArK to build BSP levels for our application. General information on QuArK is available in the information database at http://quark.planetquake.gamespy.com/infobase/

What you see in QuArK is several steps removed from processed game geometry. Files in Quark should be saved in a QKM file format. This format preserves naming and grouping of polys, grouping of entities, and special purpose objects, like diggers and duplicators. Our engine does not directly access data in the QKM format.

When QuArK builds a BSP, it saves out a text format MAP file. This converts all diggers and duplicators and other special geometry to plain polys. By default it should also truncate fractional vertex position values to make them integral. Groups and names are preserved in the text file, but grouping cannot be loaded back into QuArK from the map file.

QuArK was originally designed to work with engines that use a different world scale and coordinate system from our own. These are converted in the export process, however, there are some problems getting textures to align properly in the engine. These are documented in the Known Issues section.

QuArK runs the MAP file through a series of build tools to create a finished BSP.

The BSP tool takes data from the map file and builds optimized geometry based on the planes of geometry in valid world space. This data is stored in a .bsp file.  It also creates other files which are needed for processing, but not for the engine.

The PVS tool takes the space inside the BSP and breaks and determines what can be seen from any given section, allowing the engine to speed up draw time by eliminating polys that are not visible from the player's point of view. The PVS calculation can be very time consuming, so there are shortcut versions of this process for fast builds, but production builds should include a slow visibility check. This data modifies the .bsp file.

The LGT tool calculates light maps (or more accurately, darkness maps) for the BSP surfaces. This is a secondary texture pass which darkens the texturing based on distance from light and shadows cast by world geometry. Our lighting tools never brighten the world beyond the brightness of the source texture. The light maps are very low resolution and can produce jagged boxy edges from a single source light. There are also various speed levels to calculating lighting but production builds should include a slowest, most detailed setting. This data is stored in the .ls .lf and .dlt files.

Our engine does not support all the functionality available in QuArK. The RLC Engine is roughly equivalent to the Quake 1 engine in terms of limits to geometric complexity and lighting. It is designed to build fairly simple geometry with lots of occlusion of visibility. It greatly prefers to work with geometry that is lined up on integral boundaries. (If you see any mention of integral boundaries in this doc it basically means the vertex positions are integers and not real numbers) Complex shapes, geometry that intersects other geometry at odd angles and high poly geometry can create problems with the BSP build or PVS Build.

Continued...
Tony
#2 Posted : Tuesday, November 27, 2007 10:08:54 AM(UTC)

Rank: Forum Regular

Joined: 2/12/2008(UTC)
Posts: 87
Some powerful functions work within Quark but may produce unknown problems in the pipeline to a production build.  Extruders take predefined geometry and replicate it along straight and curved paths, but how that geometry will work when it is integralized may be an issue.  Diggers allow you to create subtractive geometry which is not removed from the world until the MAP file is compiled. This keeps the QKM file clean and easy to edit, but can create complex cuts in the world that the designer never sees and which can cause unexpected build errors.  Terrain brushes work correctly, but the high poly count produced may cause problems in both bsp and final frame rate.  Curves and Patches are not supported at all.

Procedures for creating a map for RLC


QuArK maps are limited to an area from -8000 to 8000 QuArK units on the X,Y and Z axis. Placing anything beyond these boundaries will cause a corrupt build.

The RLC BSP engine is very sensitive to non-integral geometry. Polygons which require floating point calculations can produce drawing problems and collision detection failure in our engine, as well as PVS calculation failure in large or complex maps. As noted above, QuArK should save MAP files out without floating point values. In order to make sure it is doing this correctly, it is wise to keep the source QKM file geometry integral.

Geometry should be build snapped to non-fractional grid lines.  You can check to see if geometry is integral by using Search-->Find Non-Integral Faces on the pull down menu. Non-integral faces should be snapped to grid when possible.

QuArK 's native geometric primitives are generally integral and but should be checked periodically. Non-integral geometry can generally be fixed by snapping vertices to grid.

  • QuArK's snap to grid functionality, accessed by holding the control key while moving geometry, is based on snapping the center of the object to grid, not the vertices which make up the object. Snapping a poly to grid does not place its faces or vertices on integer boundaries. Warning - Moving a group while holding control will cause all elements in the group to snap to their individual centers, destroying the relative placement of polys in the group!
  • Selecting a face and dragging while holding control down will snap it to grid. This does not necessarily insure integral vertices. Make sure to exit face selection mode before performing any operation on the poly such as copy/paste or rotate. Corrupt geometry can result from performing these operations on a face.
  • Selecting a vertex and dragging while holding control down will snap it to grid, but it may be necessary to select and drag it in more than view window to get the vertex on grid on all three axes. It is sometimes not possible to move a vertex without moving QuArK moving the vertices which are connected to it, making it impossible to get all vertices on grid.
  • Warning - Wedge primitive brushes in QuArK are non-integral and cannot be fixed , use triangular prism and drag a vertex to make a wedge, or brush subtract to build one from scratch.
  • Warning � Don�t have faces from two different polygons in the same plane overlapping and assume that they will be drawn in the same order as you see in your testing. Always offset faces slightly if they are overlapping.


Even if all vertices are on grid, it is possible to create dangerous floating point geometry by intersecting faces at odd angles. This should be avoided whenever possible. When an angled face must meet another face, make sure they are intersecting on an integer unit. Surfaces on perfect 45 degree angles are good for this since they will always intersect integral geometry on integer boundaries...but there's a bug in our exporter which effects texture placement on perfect 45 degree angles. Alternately, calculating the rise over run of a slope to determine safe integral intersection points is an option.

Having two surfaces meet on an odd angle is only safe if they meet vertex to vertex...and maybe not even then. Try to build everything out of rectangular solids where possible and then add details with angled brushes that meet other geometry on a flat surface.

In small maps it is possible to bend these rules, but on larger maps they can cause flaws in the bsp.

Textures should be jpg (or png for transparency) and MUST be scaled to a power of two on each axis (64, 128, 256) for best results, try to keep textures applied at 1:1 scale.  

Textures may be moved on a face, but may only be rotated at 90 degree angles.  

Also try to create as few textures as possible, and keep any textures you do make to a maximum of 256x256 in size to conserve memory.

Sealing Maps

A box made of brushes flagged "sky" needs to be placed over the top and sides of the map so it will seal.  This will not only stop users from going skydiving off the map but allow the BSP to be built correctly for game use.

The way that the BSP compiles--in ridiculously simplified terms--is by starting at a point off in the distance and trying to find a path into the map.  It looks for a light entity, since those should be placed inside the live area of the map. If it fails to find any, it can safely clip away all of the exterior faces it found, leaving an optimized BSP made of nothing but the absolute essential faces and ready for a PVS set calculation.  That's what SHOULD happen.

Continued
Tony
#3 Posted : Tuesday, November 27, 2007 10:17:10 AM(UTC)

Rank: Forum Regular

Joined: 2/12/2008(UTC)
Posts: 87
Sealing Maps Continued

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
reached occupant at: (-5808, 896,   0)
no filling performed
leak file written to maps/shop_leather_lake1.pts !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Once this happens, the BSP stops trying to figure out what is the outside and inside of the map.  It also bypasses the PVS stage of the build.  It will try to light the map, usually successfully, and the map will usually run, but none of the extraneous information has been clipped out of the build.  This eats up file space and performance.

If you miss the error message but suspect you may have a leak, you can check the RPT file for the text of the BSP build.  Also, the PTS file contains data--which the current version of the engine unfortunately doesn't display-- on any leak it found.  A successful build should produce a PTS file of size 0k.  Any data size at all indicates a problem was [/list]found.

Texture Flags and SpecialTextures

There are four texture flags used in the RLC engine.
  • Visible - As one would expect, you can see this brush and its textures.
  • Collidable - This brush blocks character movement.  If not visible, it creates a hidden barrier in the world which shouldn't clip out geometry it intersects (knock wood).  Most geometry in the world should be flagged Visible and Collidable.
  • Water - The area of this brush will be filled with water in the build. No other flag is necessary. This brush doesn't clip out geometry it intersects.  The top face will need a water texture applied.
  • Sky - Sky brushes are invisible and, when placed at the borders of our map, ultimately allow us to see through to the sky box.  No other flag id needed. Sky brushes do have collision and cast shadows.


Special Textures

  • CheckerBoard - This is flagged as "don't draw" in the engine.  The face with this texture will not draw, but still clips away any geometry it intersects.  This is also a useful texture for collide only and sky brushes so the BSP doesn't have to look for textures assigned to them.
    Water - We have a number of PNG textures for use on top of water.  Water should be textured only on its top surface.


Tips and tricks
  • If  you're building something that can be reused and may be rotated, try to align the polys to a larger grid scale (a grid unit scale of 4 is recommended where possible, but no smaller than 2).  This will keep the rotation from producing geometry aligned to a .5 grid unit.
  • If editing geometry in the map starts producing errors, try doing a Search-->broken polys and faces.  A bad poly can cause problems throughout the map.
  • Zooming in with a window closes off the selectable area in other windows allowing you to focus on a specific area of geometry.  Likewise, the inability to select polys that appear "grayed out" may be due to window views being zoomed in.
  • If a map becomes too cluttered to easily see what you are doing, open a second copy of QuArK and cut and paste the geometry you are working on into it.  Quark maintains world location as it copies and pastes objects between maps.  When you're done, you can copy it right back in to the original map.
  • Our lighting map is very low in resolution, so shadows can appear very jagged and boxy. Multiple offset lights can be used to soften the edges.
  • Lighting across "curved" surfaces, like columns, is very blocky and shows off the planes of the curve. A busy texture can help hide the effect.
  • Try to break complex shapes into neat, rectangular regions, then add wedge shaped brushes to finish off the shape.  
  • Group and name groups and polys! You can color code groups, make them hidden, non selectable and other handy things to keep your map tidy.  Remember that if you copy a brush from one group it will paste to that same group unless you select another location in your file structure.
  • You can use sky brushes to cast shadows.  You can build a box around a light to make a spotlight effect or force a shadow somewhere you aren't getting one.


Known Issues with QuArK and RLC Engine

GEOMETRY issues:
  • Certain functions can create corrupt geometry. Attempting to copy and paste or rotate an object while a face is selected will only copy the face and create a broken polygon in the map. Maps with broken polygons can confuse the editor and become uneditable until the broken poly is found and removed
  • Using the Integralize Selected Faces command is more likely to break geometry in unexpected ways--or do nothing-- than fix the problem.
  • The grid is not always accurate in the display windows. If geometry appears to be off grid, it is sometimes necessary to zoom in to check it.


Continued
Tony
#4 Posted : Tuesday, November 27, 2007 10:19:04 AM(UTC)

Rank: Forum Regular

Joined: 2/12/2008(UTC)
Posts: 87
TEXTURING issues:


  • Our engine currently does not support texture rotations outside of 90 degree increments. Errors in texture coordinates will result if textures are given rotation coordinates the engine does not accept.
  • Currently, building a face on a perfectly integral 45 degree angle will cause texture coordinate problems in the engine. This is an exporter issue and is not currently on the priority list.
  • Texturing a face using the wrap functions can cause the face to show up as non-integral on the next check. This is apparently a �feature� designed to produce perfect texture alignment.
  • Moving textures can produce geometry corruption problems, both in the manual placement window and the numeric window. Undo does not correct this.

LIGHTING issues :
  • User defined colors for lights were broken. Fixed 4/26/07
  • Lights seem to affect things beyond their value range, i.e. A large number of small short range lights will light up a huge room, despite the expected short range.
Johnboy67
#5 Posted : Wednesday, November 28, 2007 12:36:52 AM(UTC)


Rank: Veteran Forum Member

Joined: 2/12/2008(UTC)
Posts: 7,284
Location: depends
Wow! �Sexy_One told me this would be an interesting read, but I had no idea..., lol. �I am very interested in learning this for future contributions to RLC, and I guess I gotta start somewhere. �*looks for dictionary*

Thanks Tony, and I look forward to learning more from you.

Sincerely,
~JB

:D

PS.  You may wanna put this up top so it doesn't get bumped and forgotten..
_SexyOne_
#6 Posted : Wednesday, November 28, 2007 5:43:59 AM(UTC)


Rank: Forum Regular

Joined: 2/13/2008(UTC)
Posts: 439
Location: Sexy's Bar
I warned you JB .. hehe
_SexyOne_
Proprietor Sexy's Bar!
http://www.sexysbar.com
vanessa_z
#7 Posted : Saturday, December 01, 2007 2:28:15 AM(UTC)

Rank: Novice Forum Member

Joined: 2/17/2008(UTC)
Posts: 1
Shocked

vansky
#8 Posted : Thursday, December 06, 2007 5:00:21 PM(UTC)

Rank: Novice Forum Member

Joined: 2/17/2008(UTC)
Posts: 1
Medals:
Thank you Tony! Smile
This posting is so good that it's no where near ordinary.
It takes a degree to completely understand all this. Embarassed

Guest
#9 Posted : Thursday, December 06, 2007 9:29:01 PM(UTC)

Rank: Guest

Joined: 2/12/2008(UTC)
Posts: 16,287
0
blondbear
#10 Posted : Saturday, December 08, 2007 8:21:47 AM(UTC)


Rank: Forum Regular

Joined: 2/13/2008(UTC)
Posts: 284
As with any 3d program, learning the ui functions and navigation is the hardest part. I downloaded this in hopes of being able to create some buildings. While i'm no stranger to working within a 3d environment and working with 3 axis, when I first started up this program I was a bit overwhelmed. �Shocked

However, I have no doubt that I will figure it out. Just gotta take one step at a time. Wink
Let go of my ears...I know what i'm doing.
my profile
_SexyOne_
#11 Posted : Monday, December 31, 2007 9:43:18 AM(UTC)


Rank: Forum Regular

Joined: 2/13/2008(UTC)
Posts: 439
Location: Sexy's Bar
While the user interface for Quark is umm interesting, it's not impossible. There are some quirks to watch for, pay particular attention to the vertex locations with regard to the grids as Chris noted in the original doc and you can't go too far wrong. Make sure you save, save, save your work and keep backups. I've gotten myself in trouble a number of times with losing work because I've gone the wrong way with something.

The other main thing is lighting, as noted in the doc, it doesn't always work as expected and takes time to get right, but again not impossible.

The mechanics of building takes time to learn, getting it to look right and work visually is the hard part IMHO. But it is fun and very rewarding when you're done. Stick with it!
_SexyOne_
Proprietor Sexy's Bar!
http://www.sexysbar.com
1 user thanked _SexyOne_ for this useful post.
x_Papi_x on 8/22/2015(UTC)
sloppy_sam
#12 Posted : Monday, January 28, 2008 3:41:07 AM(UTC)

Rank: Rising Forum Member

Joined: 2/13/2008(UTC)
Posts: 11
Medals:
A couple questions if someone is willing to answer them.  When I set the pancake mode.  I get an empty room.  No matter what I put in it.  I am sure this is because I am not saving my files in the correct location.  Any guidance here.

Also. Are we allowed to take and edit the maps already in RLC?  I know we don't have the source for them, only the compiled version of the maps.  But it we are allowed to do so, can Quark import them from the compiled maps.

Thanks,

sloppysam
1 user thanked sloppy_sam for this useful post.
x_Papi_x on 8/22/2015(UTC)
Rider_one
#13 Posted : Tuesday, January 29, 2008 6:07:06 AM(UTC)

Rank: Novice Forum Member

Joined: 2/15/2008(UTC)
Posts: 8
Medals:
Since the pancake mode does not handshake with the server, it is handy to use on the client side for such things as texture customization and map building.

Decompliling an existing map is possible.
1 user thanked Rider_one for this useful post.
x_Papi_x on 8/22/2015(UTC)
sloppy_sam
#14 Posted : Tuesday, January 29, 2008 6:40:05 PM(UTC)

Rank: Rising Forum Member

Joined: 2/13/2008(UTC)
Posts: 11
Medals:
Ok, thanks Rider.  

My real question after playing around some more is how to do I test, or walk through a map that I made.  I noticed from the drop down that there a set of actions available from the RLC menu bar.  Which one of these will let me walk through a map that I have made?

I have tried several of them and RLC just crashes.  I looked at the debug and it says that it can't find something.  Is this perhaps an issue with the paths that I have set in Quark?  I have specifically tried the move test files and start RLC and it looks like RLC is going to start up and then, poof it is gone.

I can post the debug.log if that would help.

********************************************************************************

I fixed the above problem.  I had a different version of the Quark Build Tools on my computer.  Using the ones that come with the RLC package fixed this.  However the log says that I am missing a Quarktest.prp I assume this is the prop file.  I know it says above that I need one.  How do I make one, I can't find one for any of my other maps?

For anyone interesting in doing this, selecting the Convert+Move Test Files to RLC + RLC will let you walk in the map that you built.

As for the other issue.  I have tried opening the RLC maps, importing them and I get a message stating that it is not a valid Quake Map.  Any Suggestions.

Finally, I am looking for information on how to add, props. I think Quark calls them entities to the map.  Any tutorials on this?

Any help appreciated.  
1 user thanked sloppy_sam for this useful post.
x_Papi_x on 8/22/2015(UTC)
sloppy_sam
#15 Posted : Wednesday, January 30, 2008 8:25:14 AM(UTC)

Rank: Rising Forum Member

Joined: 2/13/2008(UTC)
Posts: 11
Medals:
So I figured out the prop xml file.  Is there an easier way that manually editing the text file?  Can you add these props through Quark?
1 user thanked sloppy_sam for this useful post.
x_Papi_x on 8/22/2015(UTC)
_SexyOne_
#16 Posted : Wednesday, January 30, 2008 5:11:22 PM(UTC)


Rank: Forum Regular

Joined: 2/13/2008(UTC)
Posts: 439
Location: Sexy's Bar
See this thread for more information on managing props and using maps offline.

http://bb.redlightcenter...h-YaBB.pl?num=1201737948

_SexyOne_
_SexyOne_
Proprietor Sexy's Bar!
http://www.sexysbar.com
1 user thanked _SexyOne_ for this useful post.
x_Papi_x on 8/22/2015(UTC)
Users browsing this topic
Guest (4)
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Clean Slate theme by Jaben Cargman (Tiny Gecko)
Powered by YAF | YAF © 2003-2010, Yet Another Forum.NET
This page was generated in 0.343 seconds.
TC-IIS-7
3.138.120.136