I've added a 'fog of war' effect to hide areas of the map that have not yet been explored by the player. A grey scale texture contains the data of which areas have been explored, and then this is fed into the terrain shader to darken the areas which are yet to be explored. I'm quite happy with the effect, although objects and trees tend to 'pop' in and I'd rather put a fading in effect as they become visible.
I've also modified the building animation, so a 'scaffold' model is erected first, then the building and then the scaffold descends again. This makes it easier to see where the building is being built, and the progress of its construction.
The last thing visible in this post is the GUI that I have started implementing. The selected units or building are displayed across the bottom of the screen, and their actions are available along the left side of the screen. The minimap is displayed on the bottom left side of the screen.
Below is a video to show the effects mentioned:
Showing posts with label terrain. Show all posts
Showing posts with label terrain. Show all posts
Thursday, August 14, 2008
Monday, May 5, 2008
Update on progress
It has been almost 2 months since I last made a post and a lot has progressed in this time. Below is a screenshot of the latest build:

To briefly go through the features in the screenshot:
- New unit models are featured for the worker, soldier and archer and are all fully textured
- The building model from a previous post is now in-game and fully textured
- Volumetric shadows from units and buildings
- Trees are randomly scattered on the terrain with variations in size and will flutter in the wind.
- There is a new water shader in the game, although I am not yet satisfied enough to display it in full.
Other features under the hood which you can't really see in a screenshot include:
- The first pass of networking code is in and running. Multiple computers can connect to the same game although if any network errors occur the game currently quits on all computers. I am yet to implement the team/player mechanics so everyone can effectively control everything. I haven't noticed any sync issues yet and I am also yet to try over a long distance/high latency environment.
- A database back-end system controls the various game data structures. These include information about models, shaders, textures and materials as well as statistics about various game units and buildings. It is quite trivial to add an extra game unit or building and can be done by editing the database file. This file also specifies which units can build which buildings, which buildings can train which units etc. The database is just an XML file so is easily human readable. I have used the TinyXML library to do my parsing as I needed a simple lightweight cross platform parser and this works quite well.
- The groundwork for the GUI system has been written with button widgets and event messaging systems in place. Font rendering has not yet been implemented which is why this has not progressed much so far.
- First pass for fog of war has been done but I don't like the way the fog looks so I haven't showcased this yet.
My objectives are currently set on the game logic:
- Implement the player/team structures
- Add mechanics for resource collection
- Add build mechanics
- Add training mechanics
- Add the combat system
When these are all in place the game will be playable (although in a fairly crude state) . I will then be able to move on to interface controls and general polish.

To briefly go through the features in the screenshot:
- New unit models are featured for the worker, soldier and archer and are all fully textured
- The building model from a previous post is now in-game and fully textured
- Volumetric shadows from units and buildings
- Trees are randomly scattered on the terrain with variations in size and will flutter in the wind.
- There is a new water shader in the game, although I am not yet satisfied enough to display it in full.
Other features under the hood which you can't really see in a screenshot include:
- The first pass of networking code is in and running. Multiple computers can connect to the same game although if any network errors occur the game currently quits on all computers. I am yet to implement the team/player mechanics so everyone can effectively control everything. I haven't noticed any sync issues yet and I am also yet to try over a long distance/high latency environment.
- A database back-end system controls the various game data structures. These include information about models, shaders, textures and materials as well as statistics about various game units and buildings. It is quite trivial to add an extra game unit or building and can be done by editing the database file. This file also specifies which units can build which buildings, which buildings can train which units etc. The database is just an XML file so is easily human readable. I have used the TinyXML library to do my parsing as I needed a simple lightweight cross platform parser and this works quite well.
- The groundwork for the GUI system has been written with button widgets and event messaging systems in place. Font rendering has not yet been implemented which is why this has not progressed much so far.
- First pass for fog of war has been done but I don't like the way the fog looks so I haven't showcased this yet.
My objectives are currently set on the game logic:
- Implement the player/team structures
- Add mechanics for resource collection
- Add build mechanics
- Add training mechanics
- Add the combat system
When these are all in place the game will be playable (although in a fairly crude state) . I will then be able to move on to interface controls and general polish.
Saturday, November 17, 2007
Terrain rendering

The ambient light map is calculated by using a ray-casting algorithm to estimate the angle of the horizon at various angles for each vertex on the height field. Using these angle values, an approximation of the sky lighting contribution can be made.
The next step for lighting is to calculate the sun contribution. Using the same ray-casting algorithm the angle of the horizon will be stored in a horizon map. This can then be compared with the angle of the sun to determine if a point is in shadow or in direct sun light. The added benefit of using a horizon map is that the angle of the sun can be changed with light and shadow being generated dynamically, so different times of day can be simulated.
Pixel shaders are going to be used to incorporate the lighting and materials. I hope to also support bump mapping to give the terrain a more rough 'feel' to it.
Subscribe to:
Posts (Atom)