I’ve made a little progress on the video game. A lot of it has been structural changes to include some features now viewed as important. I’ve recorded a video that exhibits these features.
Things I’ve added:
All walls may now be two-sided. It’s so that a wall can have a different pattern on each side – since my engine works on a tile system, having one sided walls would mean that any walls that needed a different pattern on each side would need to be one square thick, which would look ridiculous in a realistic context (although it would be fine for a dungeon crawler).
Fully 3D rendering
As you can see, the game is now rendering in full 3D. The player can rotate the camera.
Camera frustum culling
This was a lot easier than I originally thought. I used theory from this paper to write the code.
All controller movement is now relative to the camera, so moving the stick left makes the player go left. The game currently supports only Xbox 360 controllers.
I used to have mouse control but with the 3D mode it stopped working, as I was using my own maths to calculate the world-position of the mouse pointer. I now use the projection matrix to do that, which is pretty easy to do in OpenGL using a function called gluUnProject.
Much of the recent work has been improving the game engine to run several layers of map at once. It’s more-or-less working now, and even the collision routine is working between layers now.
I think next I will go back to some scenery generation. Part of the earlier work was removing the scenery generation from the individual map segments (which are 16×16 tiles), and into their own system of world-building classes, and it’s pretty much ready to go now. So I can start making roads, houses etc. And now that the game actually supports multiple-storey buildings it’ll be possible to make some really interesting stuff like car parks, malls etc.
I also need to implement some kind of bloodstain system, and I’d like to look into doing some lighting so that the game can simulate day and night.
And yeah… also some gameplay I SUPPOSE