TACStrike: weeks of September 14th - 27th

Published on Monday, 28 September 2015 06:32
Written by snake5

Renderer upgrades and miniLD62 were the activities of these 2 weeks, one each.


Renderer upgrades

Everything should look pretty much the same... but be better.



A lot of code was extracted from the D3D9 renderer and generalized to make it applicable to all renderers.

  • Render states
  • Render targets and depth/stencil surfaces
  • Drawable item processing
  • Core structure of the rendering code

This required the creation of some new systems but in the end, renderer code was reduced and made more reliable. These changes also opened some doors regarding options to override mesh data - all materials are now stored in the mesh instance, meshes only have texture paths/shader names/material flags now.

Another interesting product of these changes is the function GR_PreserveResource() - it takes any resource and stores it in a set for exactly 2 frames, preventing constant reloads without an explicit member variable (they aren't a good option in overridable interface callbacks).

Some things still aren't extracted from renderers, such as shader uniform buffers and... I guess that's about it. Also, projectors haven't been fully ported yet. But I'm working on it so upgrades are expected before OpenGL support is finally implemented.



One jam per month seems to be the new standard lately.


Game can be found here.

So this is just a basic unfinished first person shooter. Whoever finds a mistake with it - rest assured that I already know about it and many more.


I decided to build this as a focus shift experiment and it seems to have worked rather well for its purpose. I worked a lot on player action feedback and even implemented a help text renderer to create an intro tutorial. So far no one has said that the game is hard so that's a good thing. Hardness can be built upon when the tools to overcome it are properly presented before.


The project was also an art production experiment. I seem to have mastered two new ways to create textures. One is by drawing a pixelart bumpmap, then scaling and converting it to a normal map. Easy to get fairly decent sci-fi metal surface normal maps.


The other method is to render textures in Blender using composition nodes to route all components to the necessary outputs. This allows geometric/tiled/special surfaces to be rendered easily.


You might also notice that dynamic point lights are now available in the editor. This is another fairly new thing. The editor support was there but level format didn't support it... and it does now.



That's about all for this time. Unfortunately, no advances were made in terms of AI this time. Scripting had some minor upgrades that I didn't get to use, and it looks like there's going to be more of those.

I'd like to keep working on this project just so much to reach a technical-feature-complete version. I'd like to see that the engine can deal with everything I throw at it and more before proceeding.

After that, back to TACStrike AI and perhaps another game jam.


Latest images