Friday, March 05, 2010
Wednesday, February 28, 2007
Pistols at Dawn
I haven't been doing anything on Nova Dawn recently as I've been working on my new game Plasma Duel. I'll be back to work on Nova Dawn once Plasma Duel has been released.
I've also been using the break to reassess the gameplay of Nova Dawn. The plan has always been to begin with a single vehicle, working for a faction, and work your way up until you are in command of the faction. I've been wondering if I shouldn't just put the player in the role of the faction commander from the start. The beginning of the game will be important strategically, and if the player is only a lowly operative he has very little control over it.
The compromise solution I have settled on is to stick with the original plan. But when you are promoted to an officer or commander, that allows you to begin new games at that rank. That keeps the gentle introduction of being given missions and following orders. But allows more experienced players to take control of their entire faction from the beginning.
Thursday, November 30, 2006
As one door opens

I've done quite a bit since my last update here. Too much really to comment in detail upon but I'll mention the important updates that I can remember. The screen above shows some of the updates. The bases now have doors that open and close wnd turrets which track vehicles in front of the base. You can also get out of your car now, walk around, and get in a different car if you wish.
One of the most important fixes I made was to speed up the frame rate a bit. Up until a few weeks ago, in busy scenes, in forests for example with rain and headlights, the frame rate was dropping down to 20FPS. This was unacceptable and I spent a lot of time rewriting and optimising my game loop to very little effect. I eventually fixed it ny replacing my multi-purpose blit routine with two specific blit routines for specific purposes. One of these is twice as fast as the old routine and is used for most of the sprites I move around, so performance has been boosted greatly and I'm getting the steady 30fps I'm aiming for.
I also created a custom vector font class which I'm currently using to display the randomly generated base names. Base names have a prefix and a suffix, the suffix being common place name endings like "Ford" or "Ton". This gives about 2000 combinations of fairly convincing sounding names.
Next on the agenda is the crafting system and NPC AI.
Wednesday, August 16, 2006
Screens up
Here's some screen shots from the game so far:


The inside of a base in the game, and a shot of the car leaving the base.


Some outdoor shots showing mild sleet and a dusty desert area.


Exploring randomly generated ruins in the rain.


A shot of dusk and then the middle of the night.
Tuesday, August 15, 2006
Road improvement work
The main news is that I've completely rewritten the code that creates my road network. It makes a much more realistic network now that connects together 30 bases scattered around the map. The old method used to result in roads that ran parallel to each other in a nonsensicle fashion. The new algorithm connects roads and bases together using the shortest route available.
I've also got the bases so that you can drive into and out of them now, lots of weather effects to go with the day/night cycle and a major improvement to the HUD to show the direction of nearby vhicles. That last improvement has settled some worries about how difficult the combat was when fighting other cars. Because of the small screen, enemies quickly leave the viewing area especially when engaged head on. Now that I have colour coded indicators to show where other cars are even when they are off screen, its much easier to engage and fight them.
Next I'm going to be working on the gathering of resources and constructing new components aspect of the gameplay. I'm looking forward to this as its going to be a key gameplay feature and I'm quite proud of the system I've come up with for the manufature of new parts.
I'm getting married in three weeks time and then I'm off on my honeymoon. I'll see if I can post some screenshots inside the base and of the new road networks before that.
Tuesday, March 28, 2006
Headlights, white lines and black tar rivers
As you play Nova Dawn there will be a day/night cycle. Time will be scaled town so that a full 24 hour cycle will take 12 minutes. As it gets to the evening the landscape will become dark and the cars will have headlights to light the way ahead. I've added the code for headlights now and taken a few screenshots.
Friday, February 03, 2006
Grand Designs

Here is the basic design for Nova Dawn's gameplay.
The game world is an island, the size of the island is 600 by 800 tiles (although this might be subject to change), each tile is 120x120 pixels in size. Therefore on a QVGA device the game world is 300 screens wide by 300 screens tall. Each tile can be either grassland, desert, tundra, mountain, marshland or water. In addition the tiles can have roads and features on them. Features are rocks, trees, ruins and buildings.
The player travels around the game world in a vehicle. The vehicles available to be used are bike, trike, buggy, coupe, saloon, truck, van and APC. The player can also travel around on foot. The handling of vehicles is affected by the terrain they are travelling over. Vehicles can be customised with different weapons, engines, wheels and armour.
There are a number of competing factions in the game. The player chooses a faction affiliation at the start of the game and begins the game in the capital base of that faction. Each faction begins the game with a single base which is that faction's capital. The game world has over a hundred bases scattered over it which all begin the game as neutral, apart from the faction capitals. Most bases are linked together by a road network. When a faction member, including the player, arrives at a neutral base he can attempt to recruit them into their faction. The status and equipment of the player that approaches a base affects the likelyhood of that base being recruited. If the base refuses to be recruited the faction may decide to conquer the base by force. A base will surrender when it has taken a certain amount of damage.
The player can rise up in ranks within his faction. To begin with he is at the lowest soldier rank. Next comes Squad leader ranks where the player gets access to "wingmen" and better equipment. After that comes Base leader where the player get access to base production and missions. Finally as Faction Leader the player may command any base.
The primary gameplay is the gathering of resources for production into upgrades to your vehicle. Factions will be competing for resources and can be peaceful, hostile or at war with each other. The basic resources are metal, plastic and alloy, with alloy being much rarer than metal or plastic. These resources are scattered around the game world semi-randomly, with concentrations in places such as ruins. Bases have workshops which can combine the basic resource into processed resources. Examples of processed resources are explosives, machinery and electrics. These can be further combined into complex resources such as electronics, high explosive and instrumentation.
The task of exploring, discovering and gathering resources is made more difficult by frequent attacks by bandits. All of the factions begin the game away from one corner of the map. This corner of the map is the badlands where all of the bandits originate. The final goal of the game is to destroy the bandit base and kill their leader.
Monday, January 09, 2006
Back to elementary school
I've just started a new project that I will be developing along side Nova Dawn. The game will be called Elements and is probably going to be as much of a toy as a game. Its going to be half way between a cellular automation "life" program and a sand picture program. You'll be able to add different Elements (Fire, air, ice, oil, water, sand, life and stone) with the stylus and watch them interact with each other. Its a much smaller project than Nova Dawn and I hope to have it finished by about March or April. For Nova Dawn I'm aiming for a Christmas release. Thats a bit optimistic but its good to have a goal.
Friday, December 16, 2005
Bang bang bang
I've been working on the code for weapons over the past couple of days. I've got the machine gun looking very nice now. The guns smoke, bullets stream at high speed, and there are sparks and more smoke when a bullet hits something. I've also got the code for damaging other vehicles based upon where they were hit. I even have bullet holes appearing on the cars (and blood on the pedestrians which Jen thinks is a bit gory) in the location where they were hit.
I'll take some more screen shots to post soon.
Tuesday, December 06, 2005
Nova Dawn in my pocket
The reason I've not posted for a while is that I got a bit stuck at the point of testing Nova Dawn on an actual Pocket PC. For the sake of convenience I've been doing all my development work on a desktop PC and hadn't created a PPC version. One of the reasons behind this was that I'm using STL and I knew it was going to be quite a tricky task getting STLPort working.
I bit the bullet one night a few weeks ago and got the whole thing compiling up using STLPort in the embedded compiler. Thats when I realised the memory footprint the game had. My tiles were too big and I had too many of them. Over the past few weeks I've had a couple of iterations of refining, resizing and optimising and finally last night I produced a vastly slimmed down version of the game that runs comfortably on my pocket pc. The game even looks just as good as the bloated version.
I'm now looking forward to coding the guns and vehicle damage. Other bits on the to do list are a random name generator for bases, which will be fun, and a rewrite of the random map generator.
Whilst play testing the gameplay side of things with bits of card, I've actually created quite a fun board game. I've been spending more time working on that recently than the computer game. I might include it in the final game distribution as a PDF file users can print out and play.
Tuesday, October 25, 2005
Equipment and customisation cont.
Here is another graphic showing the equipment management screen on Nova Dawn.

Your vehicle, driver and gunner (if you have one) can all be equipped from this screen. Equipment shown includes body armour, various vehicle and hand weapons and a few engines including a V12 which will be extremely rare in the finished game.
Friday, October 07, 2005
Customising vehicles
At the moment there are eight different vehicles available in Nova Dawn. These are bike, trike, buggy, van, coupe, saloon, truck and tank. Each vehicle will have different handling characteristics and will be able to be customised by the player. The plans below are what the player sees for each vehicle when in a garage in a base.

The icons represent wheels, engine, driver, cargo, light weapons and heavy weapons. All the vehicles have generous allocations of weaponry ranging from 2 light weapons on bikes up to 4 heavy weapons on the tank.
Monday, September 26, 2005
Back at it
After a holiday its always a bit difficult to pick up where you left off. I've started with something simple and added another terrain type, marshland. Its quite fun and is another opportunity to show off the water splash effect without having to drive into the sea.
I'm planning to have a good coding session tomorrow night. My target is to get all my heads up display code working. The speedo on the right is done, there will also be a radar display at top left, damage report at top right, fuel guage down the left side and device activation buttons along the bottom of the screen.
Screenshots when its done!
Tuesday, September 13, 2005
Week off
I'm going to be on holiday for a week as from tomorrow. I'm not taking the laptop as I think it will do me good to get away from PCs for a week. I've added in a speedometer and the next thing to put in will be the local radar display.
After that I'll work on the weaponry. Here's the ten weapons that will be available in the game:
Wednesday, September 07, 2005
Back on track
The code to make the car react to the terrain its moving over is all working now and its looking good. The car moves faster on roads, dust flies up when you drive over desert, water sprays up when you move into water and the car slides all over when driving on snow. Its all looking good and I'm very satisfied with it.
Tuesday, September 06, 2005
One down...
I've solved the problem I was having with my vector. It took a lot of searching, but my suspicions were confirmed, iterators on vectors are usually killed by a push_back to the same vector. This is because the vector often has to resize the amount of memory its allocating on a push_back which causes the iterator to reset. The solution was to reserve enough space for the vector beforehand so that the push didn't trigger a resize. Its working very well now and I have clouds of dust being thrown up be the vehicles. I'll use the same method to have spray shooting up when the vehicle enters water. I just need to fix the code to determine terrain type now.
Friday, September 02, 2005
A couple of setbacks
I've been working on the code to make the vehicles respond to the landscape that they are travelling across and hit a couple of setbacks. The first involves identifying what kind of terrain the vehicle is on, I was planning on using the GetPixel function to determine the terrain, but this only works on the screen and not on the backbuffer and by the time I've updated the screen the landscape under the car is obscured from GetPixel. Instead I think I'm going to have to use pointer arithmetic on the tile surfaces to find the colour at a given coordinate.
The other problem I've got is with STL vectors. I'm getting memory access violations when trying to add new items to the vector that stores all of the sprites. I think the problem is that I'm pushing a new item onto the vector whilst iterating through the same vector with an iterator. The iterator seems to lose track of where its current object is. I'm going to investigate whats happening more at the weekend as I find it hard to believe that you can't push a new item onto a vector while iterating through it.
In the meantime, here's a screengrab from the game showing some trees and wrecks.
Wednesday, August 31, 2005
Factions in Nova Dawn
One of my goals for Nova Dawn is to bring together the trading/roleplaying game style with a dynamic campaign going on in the background. Ideally I'd like the player to be able to move up the ranks in his own faction and eventually be able to command the entire faction. How hard this is to do in reality will become clearer later in development. At the very least I want the dynamic campaign to be occuring in the background even if the player can't actually control it directly. Each faction will have their own strengths and weaknesses and vehicles belonging to that faction will be coloured for easy identification.

My goal for the campaign engine is to get something approaching the complexity of the excellent strategy game "Warlords". If all goes well then occasionally you will accidentally come across armies of heavily armed vehicles engaged in an assualt on an enemy faction. You could even follow the force and attempt to loot the wrecks in the aftermath of the battle.
Wednesday, August 24, 2005
Random maps
I've taken a few screenshots of the random maps generated for Nova Dawn:


White areas are snow covered, yellow areas desert and dark grey areas are mountains. Trees, rocks and ruins are represented by green, brown and black dots respectively. The rest should be self evident.
These maps are only 80 x 60 tiles as thats the size of map I'm using to test the game. The maps in the final game will be much larger. Each tile takes up two bytes so a 1000 x 1000 sized map would take up two megabytes of system memory while the game is running. I think the final maps will be about that size but I might make them bigger depending on how much memory I use elsewhere.
I'm quite pleased with the roads. I wanted them to consist of lots of nice long straights. They seem to fit in with the road warrior theme nicely and hopefully combat along the roads will be similar to the wonderful arcade game "Spy Hunter".
Monday, August 22, 2005
I have roads
I finally worked out my algorithm for creating road networks, and got it coded up and working. It still sometimes barfs at junctions that I don't have tiles for, but I don't want to make a tile for evry single combination as the memory requirements would be huge. I'm being clever wherever I can and coding it to use existing junction tiles. Its really cool being able to drive from base to base along roads and exploring the random road network that is created every game.
Last night I put in stylus control for the car. I was going to rely on joypad control for steering so as to free up the stylus for aiming weaponry. After testing I've decided that stylus control for steering is needed at least as an option. Devices and weapons are going to be activated by icons along the bottom of the screen. I'm going to add a steering wheel icon that when activated switches control to steering. However, when other devices or weapons are selected, the only way to steer will be using the joypad. This will give an easy control method for novice players, but only by learning to use the joypad for steering and the stylus for aiming will you be able to maneouvre and fight at the same time.
I'll post some screenshots of the randomly generated maps here soon.
Monday, August 15, 2005
Progress report
Been doing a lot of work on Nova Dawn recently and I can now drive around a randomly generated world complete with grassland, deserts, snow, mountains, coastline, forests, rocks and ruins. The car physics and collision detection are pretty much there with the cars skidding and bouncing off each other in a nice way. I've been struggling a bit with putting in roads, I'm toying with implemeting a A* algorithm for pathfinding which I can then use to route roads. I've given up on that for the time being and started writing some simpler code to route and join up highways but left my laptop on standby without saving it and lost a few hours work. I watched Lowestoft carnival fireworks on Saturday and it made me think that I want the explosions and stuff to be really pretty. I've already worked out how to do a night mode in my head and combat at night should be quite cool.
Monday, March 07, 2005
Nova Dawn - New Diary
Don't know whether I'll manage to keep this up but I guess even if I make just the occasional entry in this blog it'll be interesting for me to look back on when (yes when not if!) I get Nova Dawn completed. I've started quite a few games that are on a similar epic scale to Nova but usually I get to just after the "character generation" phase and then lose interest and move on to something else. I've had the concept for Nova Dawn in my head for about 10 years now so I'm thinking that it might be safe to now start doing some serious work on it.
My platform of choice is the Pocket PC, the main reasons being that the PPC games market is not yet dominated by all singing all dancing 3D engines, so a single developer top down 2D game still stands a chance of being relatively successful. It also helps that there are some decent libraries and community pages around for Pocket PC games development and that Microsoft Embedded C++ is a free download.
My development environment is as follows:
Microsoft Visual C++ for development on the PC and Microsoft Embedded C++ for development on the PPC.
PocketFrog game libray - gives a nice framework and means I can get stuck into writing my game loop without worrying about windows and message handlers, etc.
PocketHal hardware abstraction layer - nice fast abstraction layer for graphics that allows me to write my C++ code independantly of the target platform. This means I can develop and run the code on the PC and simply recompile it for an ARM processor when I want to deploy it to the Pocket PC.
Hekkus Sound System - Nice sound library that will handle playing all the music and sound effects for me.
Paint Shop Pro - Pretty much all my artwork.
ModPlug tracker - Easy to use tracker program for making mod files which Hekkus can then play.
