This week we have been working on implementing basic functionality into the engine. The first challenge was to figure out exactly how the physics engine works and how to work with it. Creating basic boxes was straight forward but when we came to the issue of terrain we had to consider several possibilities. How do we store terrain data? Should we create models and use or do we generate them from height data. Since the physics engine had methods to handle height maps we went with the latter. Today we implemented a camera system which uses ray casting to prevent the view from being obscured by an item in front of the player. This means that as soon as an object covers the player, the camera will zoom in past the object. The way this is done is that a ray is cast (hence the name) from the players location towards the supposed location of the camera. If it hits anything on the way, we place the camera there.
We have also looked into different ways of rendering stuff. This was also related to the terrain issue. Do we render a model of the terrain or do we create it on the fly. As mentioned earlier we didn’t use a model. The way this works is that we have a rectangular grid of points, each point has a height. This grid is generated from a grayscale bitmap. Every point corresponds to a vertex which constitute our polygon surface. In our current implementation every vertex is colored depending on its height but this will change as we will put a texture on the ground.
Among the various issues we have encountered during the week there is really only one we haven’t really solved: the question of networking. There is a lot of question regarding how to implement this in a way that gives us a good balance between code maintainability and game stability and precision. We have at least decided on a server/client architecture since we believe this is the easiest to start out with. I did some reading on the subject and there is a lot of sources of to do different stuff. Among the most interesting I found an article from Valve which describes how the Source engine’s does network communications.
Other than that I don’t have much concrete news regarding the game but always feel free to visit the project page to give ideas and feedback. Unfortunately all of the design documents are currently in Swedish so the audience may be a little limited. Hopefully we will have time to fix this later on but right now the priority is to make the actual game.