dark souls in q3 - fpscup03-3

Discussion for Level editing, modeling, programming, or any of the other technical aspects of Quake
Post Reply
KittenIgnition
Posts: 253
Joined: Sun Nov 06, 2011 11:11 pm

dark souls in q3 - fpscup03-3

Post by KittenIgnition »

Hey y'all! I've wanted to make my own thread on this forum for ages, but I've never made a map that's worth posting about, until recently. Not that recent, for several reasons, but here we are. For over a decade, it's been a dream of mine to play other games but with quake 3's physics - strafe jumping, rocket jumps, overbounces, etc. I tried a few times, with Skyrim and Mirror's Edge and some other games, but they were too high-poly (Skyrim) or too inaccessible (basically any Unreal Engine game, like Mirror's Edge), so i did small beta tests locally and never achieved anything worth publishing.

Then came Dark Souls, and all the modding tools associated with it. We have direct access to all the models, textures, sounds, and levels. Not only that, but it's just old enough that the geometry is blocky which makes it perfect for Quake 3's physics, since uneven terrain feels terrible to move on. I set out rebuilding Undead Burg as prefabs, basically i'd cut out the individual structures in Blender, rotate them to line up with the grid, then rebuild them out of brushes in Radiant. I had most of this location rebuilt, but no good ideas for gameplay. Just running through the same level 1:1 is fun for a minute, but not worth the effort.

Undead Burg prefabs, all pure brushwork construction:
Image

Along comes Rain and his fps cup, a defrag competition akin to the Defrag World Cup, but less serious. He wanted me to make another map for the third iteration of this competition (Last year, I made basically a ripoff of Hipshot's is5 for FPS CUP 02, and it was probably the best map in the cup thanks to his great work!). This was the pressure I needed in order to actually get something done, so I repurposed my Undead Burg idea for this event. I blocked out several gameplay ideas, but nothing really felt good, until I ditched the idea of a linear route and decided to just place a bunch of random items throughout the map and have players find their own routes. This let me rebuild what of Undead Burg I wanted, but I could also take whatever liberties I felt were necessary.

v1
Image
v2
Image
v3
Image

It was going great, and I was making really good progress, until about a month before the cup started, when I decided to do a performance test and realized the performance was awful. I was getting around 140 fps on a pretty powerful machine, and others were dropping well below 100. I got kinda panicked, started asking around, and was informed about a technique which is a large part of why I wanted to do a write-up on this map in the first place: q3map_nonPlanar. This was the key that unlocked huge performance gains.

Code: Select all

textures/fpscup03-kitteh/m10_01_wall_32
{
	qer_editorimage textures/ds_m10/m10_01_wall_32.tga
	q3map_normalImage textures/ds_m10/m10_01_wall_32_n.tga
	q3map_shadeAngle 88
	q3map_nonPlanar
	{
		map textures/ds_m10/m10_01_wall_32.tga
		rgbGen identity
	}
	{
		map $lightmap
		blendFunc filter
		rgbGen identity
	}
}
I had a massive number of surfaces, in large part due to all the curved boundary walls. Each face was a different surface, which are different things as far as the engine is concerned. Multiple faces can be merged into one surface, but usually it only happens on flat walls. If you want to merge faces that aren't on the same plane (some might call this a "non-planar face"), you need to add this parameter to your shader. However, it disables marks on these surfaces, which might not be a significant loss for some people, but for me it was a big enough deal that I wanted to be careful where I used this technique. I went around the map and applied this shader to any area that I felt was generating too many surfaces, but where I didn't care about impact marks. This took some time, but it cut down the final surface count by something like 40%, which led to a real-world performance boost of 25-30%, at least for me. I didn't get any performance complaints either, so it was a total success.

After months of rebuilding and re-rebuilding all of the different buildings, creating my own new areas, shader work, moving things around then moving them back, I had a finished product that I felt truly proud of. This is one of my favourite creations, and it really does give at least a little bit of the feeling of playing Dark Souls with Quake 3's physics. I'd like to do more in the future, but for now this is all we get.

Oh yeah, and the map is meant for the Defrag mod. It'll load in baseq3, or wherever else, but the bonfires won't work. Another friend of mine helped figure out a way to get the bonfires working using target_gives and ammo: each bonfire sets ammo for each weapon to either 0 or 200, and when you use the medkit, a global trigger gives you a new one with ammo attached. If you have <200 of one weapon, then when you pick up that weapon's ammo, you get teleported to the corresponding bonfire. This lets you have as many bonfires as Quake 3 has weapons with ammo, but it is pretty complicated to get your bearings and make any modifications or additions. It's an awesome system though, and I'm very grateful to have genius friends. This system makes this map even more special and truly one of a kind.

entity setup for each bonfire:
Image
entity setup for the global trigger:
Image

This was a great project, and I learned a lot from it. I got really comfortable with creating curves and arches out of brushes, and adding bevels to them. I hope at least one person opens this in radiant and browses around a little. I'm very proud of my brushwork.

If you wanna actually play the map, here ya go:
http://kitteh.maverickservers.com/maps/fpscup03-3.pk3

P.S. Another piece of tech that makes this project functional is Cyrax's great work on quake3e. If you try and load this map with quake3.exe, good luck....

P.P.S. Pretty much the entire map is built with brushes, aside from the vines, grass, trees, and iron fences (necessary for performance anyway), the bonfires (would be stupid to try and rebuild those), the stairs (the UVs were weird and i didn't feel like messing with it any more), and the jumppads (I made these myself, using one of the healing spells from the game as reference).
User avatar
DaEngineer
Posts: 215
Joined: Fri May 28, 2010 2:30 pm
Location: Germany
Contact:

Re: dark souls in q3 - fpscup03-3

Post by DaEngineer »

Interesting read, thanks for sharing it. I can't say anything about the gameplay unfortunately, I never got into Defrag and have no idea how the mod or the movement works, so I just flew around with noclip (I did load the mod though).

This must have been a pain in the butt to build, but congrats for pulling it off :)

The ivy models are much brighter for me than in your screenshots when I play with lightmaps. They integrate better with vertex lighting. I haven't looked into your shaders, but I remember there was some magic thing one had to do to make them look the same in both lighting modes. Is there something I'm doing wrong on my end? Some config setting I need to change? I used quake3e and the defrag mod.

I wonder how this map would play in a slower and more realistic team based game like Wolfenstein ET or Day of Defeat. I bet this could be fun with some connections like ladders, walkways and stairs for normal human movement.
Website: https://victorkarp.com
LvLWorld: https://lvlworld.com/author/DaEngineer
YouTube: https://youtube.com/@victorkarp
Post Reply