Jump to content

WzMap - The Enhanced Q3MAP2 alternative.


Recommended Posts

Posted

Here is our new enhanced Q3MAP2 alternative.

 

It is made for the Warzone mod, but since it will work for any JKA, I have decided to release it here for you all to make use of.

 

LATEST DOWNLOAD - 20-Nov-2016 update (updated).

wzmap-win64.zip 17-Nov-2016 update.

wzmap-win64.zip 05-Jul-2016 update.

wzmap-win64.zip 15-Jun-2016 update.

 

 

Features:

* Limits are much, much, higher. You can now make gigantic maps that are highly detailed at the same time.

* Can compile Warzone trees directly into your BSP. This BSP will still work outside of Warzone if you include warzone's tree assets in your PK3 file.

        - Currently only supports the tropical climate. Others will be added later.

        - To compile trees into your map, you need to:

                1. Compile your map without trees (no need to do vis or light passes).

                2. Load your map in Warzone mod.

                3. Use the /genfoliage command in Warzone to make a <mapname>.foliage file. You can set density, etc with the command. /genfoliage gives usage info.

                4. Move the generated <mapname>.foliage file to your .map directory.

                5. Compile your map again.

                6. Enjoy your map with trees.

* Much better looking UI, with color, and more information displayed and real time percentage bar displays. You now have a much better idea of when the job will finish.

        - Note: "-v" (verbose) switch on the command line is no longer needed.

* Fixed a bunch of issues that could cause corruption of the BSP, errors, or crashing.

* Experimental: -nodetailcollision feature which disables creation of collision planes for detail brushes.

* Spherical Ambient Occlusion on light runs.

        - Spherical-based ambient occlusion technique (dirtmapping mode 2 and 3), old dirtmapping 0 and 1 was cone-based.

        - Dirtmap parameters for new mode works differently: gain sets additive brighten effect on sharp corners, scale darkens enclosed areas.

        - New: worldspawn keys: _ao, _aoMode, _aoDepth, _aoDepthExponent, _aoGain, _aoGainMask, _aoScale, _aoScaleMask. New: -dirtscalemask, -dirtgainmask, -dirtdepthexponent

        - New: q3map_aoScale controls ambient occlusion intensity (both gain and scale).

        - New: q3map_aoGainScale controls ambient occlusion gain intensity.

        - New: "_ao" key (same as _dirty), _aoGain, _aoScale, _aoMode, _aoDepth.

* Compiled with intel math and parallel libraries for more speed.

* Based on vortex's BloodMap, so nearly all of his added functionality should also work with JKA. More info here: https://github.com/paulvortex/BloodMap

* Still does everything Q3MAP2 does and is completely compatible.

 

 

 

Here is a screenshot of the console window:

 

 

xT1P2rW.jpg

 

 

 

Here is some screenshots of trees baked into a BSP (running in Warzone).

 

 

gwXMAGC.jpg

sYtL1AO.jpg

30noV3s.jpg

tLM8ojb.jpg

KrfiHnN.jpg

5Gw7AFn.jpg

Smoo, Stoiss, Lancelot and 15 others like this
Posted

I'm guessing this is step one in making your new map format you were talking about?

 

Hmm more of a workaround for the crappy limitations of the BSP format... But we will see.

  • 3 weeks later...
Posted

New version uploaded in the main post.

 

New stuff:

* You can now do procedural addition of geometry to your maps. This is similar to what many new games use to add details (see below for more info).

* Procedural geometry system can use up to 64 models. This could be increased if required.

* Nearly all the really slow parts of the code are now fully multi-threaded.

* Various bug fixes.

 

 

 

Procedural Geometry.

 

I have extended the old "forest" system used to add trees to maps, to also be usable for any other sorts of models.

 

There is a now a simple .ini format file that you can create for your map and place with the .map file before you compile to:

* Specify what models to use.

* Specify what scale to use for each model.

* Specify if each model should only be used on low-slope surfaces (you set the max angle in degrees for this object type).

* Specify a buffer zone radius around each model. Other models will not be added within this zone.

* Specify a minimum distance between usage of each model type. No other model the same will be placed within this radius. eg: set it to bigger radius then map and it will only add 1 of that object.

 

 

Here is an example config file that I have been using to test the system...

[GRASS]
// Only used by warzone mod...
grassImage0=models/warzone/foliage/maingrass
grassImage1=models/warzone/foliage/maingrass
grassImage2=models/warzone/foliage/maingrass
seaGrassImage=models/warzone/foliage/seagrass

[TREES]
// Over-all model scale multiplier...
treeScaleMultiplier=1.0

// Per-model filenames...
treeModel0=models/map_objects/vjun/vrock2.md3
treeModel1=models/map_objects/vjun/vrock2.md3
treeModel2=models/map_objects/warzone/standingstones2.md3
treeModel3=models/map_objects/rift/crystal_floor.md3
treeModel4=models/map_objects/rift/crystal_floor.md3
treeModel5=models/map_objects/rift/crystal_floor.md3
treeModel6=models/warzone/trees/uqpalm1.md3
treeModel7=models/warzone/trees/uqpalm2.md3
treeModel8=models/warzone/trees/uqpalm3.md3
treeModel9=models/warzone/trees/giant1.md3
treeModel10=models/warzone/trees/anvilpalm1.md3
treeModel11=models/warzone/trees/manfern.md3
treeModel12=models/warzone/trees/willow.md3
treeModel13=models/map_objects/vjun/vbridge.md3
treeModel14=models/warzone/trees/uqbigtree2.md3
treeModel15=models/map_objects/rift/crystal_floor.md3

// Per-model vertical offsets...
treeZoffset0=-4.0
treeZoffset1=-2.0
treeZoffset2=-48.0
treeZoffset3=0.0
treeZoffset4=0.0
treeZoffset5=0.0
treeZoffset6=-512.0
treeZoffset7=-128.0
treeZoffset8=-128.0
treeZoffset9=-64.0
treeZoffset10=-64.0
treeZoffset11=-64.0
treeZoffset12=-64.0
treeZoffset13=192.0
treeZoffset14=-64.0
treeZoffset15=0.0

// Per-model scales...
treeScale0=1.0
treeScale1=0.5
treeScale2=1.0
treeScale3=1.3
treeScale4=1.0
treeScale5=2.0
treeScale6=5.0
treeScale7=5.0
treeScale8=5.0
treeScale9=4.0
treeScale10=4.0
treeScale11=4.0
treeScale12=4.0
treeScale13=1.0
treeScale14=4.0
treeScale15=1.4

// Per-model maximum slope...
treeForcedMaxAngle0=0
treeForcedMaxAngle1=0
treeForcedMaxAngle2=18.0
treeForcedMaxAngle3=0
treeForcedMaxAngle4=0
treeForcedMaxAngle5=0
treeForcedMaxAngle6=0
treeForcedMaxAngle7=0
treeForcedMaxAngle8=0
treeForcedMaxAngle9=0
treeForcedMaxAngle10=0
treeForcedMaxAngle11=0
treeForcedMaxAngle12=0
treeForcedMaxAngle13=18.0
treeForcedMaxAngle14=0
treeForcedMaxAngle15=0

// Per-model buffer ranges...
treeForcedBufferDistance0=0.0
treeForcedBufferDistance1=0.0
treeForcedBufferDistance2=256.0
treeForcedBufferDistance3=0.0
treeForcedBufferDistance4=0.0
treeForcedBufferDistance5=0.0
treeForcedBufferDistance6=0.0
treeForcedBufferDistance7=0.0
treeForcedBufferDistance8=0.0
treeForcedBufferDistance9=0.0
treeForcedBufferDistance10=0.0
treeForcedBufferDistance11=0.0
treeForcedBufferDistance12=0.0
treeForcedBufferDistance13=512.0
treeForcedBufferDistance14=0.0
treeForcedBufferDistance15=0.0

// Per-model distance from same type ranges...
treeForcedDistanceFromSame0=0.0
treeForcedDistanceFromSame1=0.0
treeForcedDistanceFromSame2=8192.0
treeForcedDistanceFromSame3=0.0
treeForcedDistanceFromSame4=0.0
treeForcedDistanceFromSame5=0.0
treeForcedDistanceFromSame6=0.0
treeForcedDistanceFromSame7=0.0
treeForcedDistanceFromSame8=0.0
treeForcedDistanceFromSame9=0.0
treeForcedDistanceFromSame10=0.0
treeForcedDistanceFromSame11=0.0
treeForcedDistanceFromSame12=0.0
treeForcedDistanceFromSame13=8192.0
treeForcedDistanceFromSame14=0.0
treeForcedDistanceFromSame15=0.0

 

... and here's a few screenshots of how a map looks with added randomized models.

 

rmWAQ3d.jpg

Ut0plPw.jpg

Vd3P5la.jpg

hRc5C02.jpg

Posted

any update on the bloodmap alpha-blending and what that looks like in your warzone mod?

 

I had a look at the code for it, and honestly have no idea how it is supposed to be used. The code does not seem to match up to the pictures of it shown on the bloodmap site.

Posted

* Limits are much, much, higher. You can now make gigantic maps that are highly detailed at the same time

 

Would you be able to elaborate?

Might try this for compiling some of my WIPs

@@UniqueOne -- derived it from Vortex's BloodMap enhanced q3map2...

 

https://github.com/paulvortex/BloodMap

 

..I think these are some of the numbers:

 

MAX_MAP_MODELS 4096 (was 1024)

MAX_MAP_BRUSHES 65536 (was 32768)

MAX_MAP_PLANES 2097152 (was 1048576)

MAX_CUST_SURFACEPARMS 1024 (was 64)

Szico VII likes this
Posted

@@UniqueOne -- derived it from Vortex's BloodMap enhanced q3map2...

 

https://github.com/paulvortex/BloodMap

 

..I think these are some of the numbers:

 

MAX_MAP_MODELS 4096 (was 1024)

MAX_MAP_BRUSHES 65536 (was 32768)

MAX_MAP_PLANES 2097152 (was 1048576)

MAX_CUST_SURFACEPARMS 1024 (was 64)

 

Oh, I went way beyond those limits with WzMap.  :ph34r:

 

MAX_MAP_BRUSHES 1048576

MAX_MAP_PLANES 67108864

 

MAX_MAP_NODES 8388608 (was 262144)

MAX_MAP_BRUSHSIDES 15728640 (was 1048576)

MAX_MAP_LEAFS 8388608 (was 131072)

MAX_MAP_LEAFFACES 8388608 (was 1048576)

MAX_MAP_LEAFBRUSHES 8388608 (was 262144)

MAX_MAP_PORTALS 8388608 (was 131072)

 

MAX_MAP_DRAW_SURFS 2097152 (was 262144)

MAX_MAP_DRAW_VERTS 67108864 (was 8388608)

MAX_MAP_DRAW_INDEXES 67108864 (was 8388608)

 

MIN_WORLD_COORD -524288 (was -65536)

MAX_WORLD_COORD 524288 (was 65536)

 

 

Really the only limits are in the game itself and game ram usage now. I believe the artists should be the ones to choose how much complexity they want from their work, not arbitrary built-in limitations.

 

It is possible to generate maps that base game won't be able to load (eg: base game probably will not like maps bigger then -65536 -> 65536. It will probably load them but stuff will not work right). I have pushed it as far as possible and allowed for almost anything to be compiled, mappers will need to find the limits of what their mods or basejka can allow depending on what they are using.

 

Warzone has been patched to allow for much higher limits, and OpenJK could easy be patched (already pointed out to Xycaleth how he can easy allow for the majority of the new limits).

 

 

So, yeah... Get out there and make what you want to make... and watch it compile faster then ever before with the multi-threading I have also added to most of the code   :rolleyes:  ... add trees and extra details (rocks? imperial shuttles here and there? whatever you want...) semi-automatically to save you time and make the maps look better. You control the limits, no longer let them control you... hehe

Posted

I wonder if that lightmap compilation issue is fixed?

(The one where if you had a lot of lighting and used complicated things like -samples 3 and low _lightmapscales the whole map would come out borked from a lighting view with odd shaders everywhere)

Posted

I wonder if that lightmap compilation issue is fixed?

(The one where if you had a lot of lighting and used complicated things like -samples 3 and low _lightmapscales the whole map would come out borked from a lighting view with odd shaders everywhere)

 

Hmm. Not sure. If it was something to do with a limit, then possibly.

Posted

MIN_WORLD_COORD -524288 (was -65536)

MAX_WORLD_COORD 524288 (was 65536)

 

Woah, if the assumption that 64 units = 1.80 m, that makes maps potentially 29 km wide.

Posted

Hmm. Not sure. If it was something to do with a limit, then possibly.

I suspect it was a problem with q3map2 not being able to keep all the calculations in its memory properly

Posted

Woah, if the assumption that 64 units = 1.80 m, that makes maps potentially 29 km wide.

 

But you'll hit the game's limits on basejka anyway. And even if you can run it, it doesn't mean that you'll get decent fps

Posted

I suspect it was a problem with q3map2 not being able to keep all the calculations in its memory properly

 

If this is the case then it quite possibly might fix the issue. Needs to be tested I guess.

  • 1 month later...
Posted

Any chance of a version compatible with processors that don't support F16C functions, or will we just have to recompile on our own?

Posted

Any chance of a version compatible with processors that don't support F16C functions, or will we just have to recompile on our own?

 

Try this exe. You might still need the other files from the original archive.

WzMap.zip

  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...