Jan 16
I’m always refining my flash game development framework ‘XGDK’ and most of this involves reducing the code to the minimum necessary to get a game up and running. At the moment this minimum looks like:
package
{
import flash.display.Sprite;
import XGDK.*;
public class CMain extends CXGDK
{
public function CMain(pParent : Sprite)
{
SetupXGDK(pParent);
}
public override function MainLoop() : void
{
}
public override function OnMouseUp() : void
{
}
public override function OnMouseDown() : void
{
}
}
}
Jul 20
I am proud to say that I used to work for PomPom and helped develop MutantStorm Empire on XBLA. So, I was pleased to hear that they were making a game for the iPhone and it has finally made it into the real world. So, help support indie developers and buy their game!
You can find it here: iTunes
Jul 10
After I left Introversion and had some free time on my hands I thought it was time to sort out my home office which involved a big clear out of everything in the room and then re-arranging the furniture. It all went smoothly, except maybe for a spare room full of piles of books that I now have to sort out and re-slot into the new layout. If I don’t do it soon then Susan will kill me; slowly.
Something strange started to happen. I would put the iMac into sleep mode and then go downstairs. I would get back upstairs to find it on again, not something that had happened before without me explicitly hitting the keyboard to get it out of sleep mode. It happened a few times before I found out what was causing it. My rearrange meant plugging the iMac into a different plug socket and every time I turned the hall light on or off it would wake the iMac out of sleep mode. This was a mild annoyance until the other night I came back to the iMac to find a box on the screen telling me it had crashed and to hold down the power button to re-start. I did so but when it powered back up it flashed a folder on the screen to tell me it couldn’t find a hard-drive. Panic time. This happened for 3 or 4 reboots. Luckily I do regular back-ups so nothing would have been lost but thankfully that wasn’t needed as it eventually recognised that it did indeed have an internal hard-drive.
I’m not an electrician but my theory is that the ring main in this house (and especially that socket) is not a very clean supply and the iMac was being hit by spikes every time I turned the light on and off. I could plug the iMac into a different socket but that would mean a long cable from one end of the room to the other. So I opted to buy a power extender block that also contains a spike protection system. It wasn’t cheap (£129 for a really good one from Monster Power) but I now have an iMac that no longer gets woken out of sleep mode by a light switch - and hopefully no more lost HD’s!
Jul 06
I’ll have to be honest and say that Warship was inspired by the battle scenes in Battlestar Galactica (the new series - not the old) so while it is set in space it does not feature phasers/lasers or any other kind of standard sci-fi fare. This is lo-tech space fighting using projectiles, missiles and nukes.
The first of the weapon systems coded has been the Ballistics system. Ballistics is the name I am using for projectile based weapons and at their most basic they represent a single charge fired from a gun in a direction. These are the cannons designed to shred the hull plating of the enemy. Speaking of hull plating - the ships in this game won’t have shields either.
The other type of weapon available for use is the missile. These are designed for maximum damage and come in various types. The most basic is single trajectory shots which once fired will proceed along the path originally set. More complex missiles track their target. Each type has a speed and maximum range to add to the fun. The only defence against missiles is to either out-run them or use Flak cannons. These cannons fire a barrage of explosive projectiles designed to create an impenetrable wall which will destroy a missile except they are not totally impenetrable as Missiles can still get through. The major disadvantage to Flak cannons is of course that they can take out your own missiles as well.
The last weapon at the players disposal is the Nuke. This is the weapon of last resort. Chances are you will inflict damage to yourself as well as your enemy but it serves as a great way to get rid of the enemy - most will flee when they see a Nuke barreling down towards them. Flak is useless against them as they are just as likely to cause a detonation. I am playing with the idea of allowing the player to launch a Nuke and remote disable it if all the enemy flee.
To add to the tension the player has limited supplies of each of the weapon types so they have to use them wisely.
Jul 03
Early on in my career I had a fascination with operating systems and I had always wanted to write one. This appetite was somewhat satisfied with the early forays into coding on low spec machines because once your demo/game code was running they essentially took over the complete machine and became the OS. In fact, one of my most favourite comments was where I turn off the the task switching capabilities of the AmigaOS and install the demo as the OS. Okay, it’s not like writing a real OS but we could fool ourselves into thinking it was. Later on I was to have the opportunity to write a bare-bones OS for some consultancy work that never went anywhere but the fascination has remained with me to this day. This time it appears as an obsession in game startup and shutdown procedures and a compulsion to get as simple a system as I can.
This is what the main code for Warship looks like at the moment. The game doesn’t do much yet but the startup and shutdown code is not going to get more complicated than this. In fact, the main loop is in this code too:
#include "CEngine.h"
#include "CState.h"
#include "CCameraNode.h"
#include "CHoloNode.h"
#include "CActor.h"
#include "CWorld.h"
int main(int argc, char *argv[])
{
if(CEngine::Initialise(1024.0f,768.0f,false) == FAIL)
{
return 0;
}
// Add a camera
CCameraNode* pCameraNode = new CCameraNode();
CEngine::SetCamera(pCameraNode);
// Create all of our nodes
CHoloNode* pHoloNode = new CHoloNode();
// Initialise the sub-systems
CState::Initialise(STATE_GAME);
CHoloNode::Initialise(64.0f,32);
// Create an actor and add it to the list
CActor* pActor = new CActor();
pActor->Initialise(CVector2(0.0f,0.0f),CVector2(1.0f,0.0f),10.0f,1.0f,1.0f,1.0f,20.0f);
CWorld::AddActor(pActor);
while(CState::GetState() != STATE_EXIT_GAME)
{
CWorld::Update(CEngine::GetTimeDelta());
CEngine::Render();
}
// Shutdown the sub-systems
CHoloNode::Shutdown();
CState::Shutdown();
CWorld::Shutdown();
CEngine::Shutdown();
return 0;
}
All the values are magic numbers for the moment because this code is work in-progress but for the most part it adheres to my obsession with simple systems.
Jun 29
I must admit that I am very pleased to announce that I got an offer of employment from Sega Sports Interactive and I have accepted it.
Jun 12
My time at Introversion is up so I am officially looking for another job. It’s been a hell of a roller-coaster year and I am quite sad to leave but all good things must come to an end. So if you are looking for a coder or a producer I can supply you with a CV on request: dev @ xiotexstudios.com
Jun 01
One of the designers at a previous company once paid me a compliment and told me that I was the only developer he had worked with that got the game up and running as soon as possible using debug drawing functions and this enabled him to see if the game would be fun really early on. I was surprised by this because it seems logical to me to get the game running even if you just use cubes to represent everything and then fill in the details later. That way you can refine the gameplay and actually see something running as soon as possible while the artists work on the art assets. It also meant that the artists did not have the burden of creating a quick and ready prop stand-in but rather get to work on the final straight away. The fact that I have no patience also has a lot to do with it. I want to see the game and I want to see it now!
So today I have been following my usual tradition and getting the game up and running using debug draw functions. So every AI agent (and the player’s avatar) is represented by a circle on top of a plane at the moment. This enabled me to see that the camera model I was using wasn’t quite up to scratch and I need to alter it slightly. If I have to fight the game to do what I want then there is something obviously wrong.
Not long now before I have a playable game. Anybody want to do some early testing?
May 30
The audio in Warship is going to go a long way to completing the feel of being on a Warship. I want the player to hear a constant stream of communications chatter from the various departments as if they were being emitted from a wall mounted speaker system bought through the usual military spend - i.e. very grungy and low-tech and probably salvaged from an even older warship. Each person speaking will also be speaking through an equally grungy microphone thats probably been knocked off its table many times and generally the cheapest and crappiest piece of equipment possible. So in all we are not talking lots of money being spent on the most high-tech audio systems to promote communication throughout the ship.
To get this I record the source audio which you can find an example of here: The original
I then pass this recording through specialist audio modeling software and get: The ‘grunged’ version
I am still playing with the software to get just the right level of grunge but that is really the easy part. The hard part? Getting all the dialogue recorded. Thankfully I can also alter the audio to make it sound like various people to a certain degree so for now the players may have to put up with my bad acting but I may recruit various friends and family to lay down some vocals for me. They don’t know this yet.
May 28
Just confirmed today - got funding for Warship. More than I need to complete it too which provides a nice buffer for ‘just in case’ scenarios that always seem to crop up. On top of this I have the flash game commission which provides even more funds for the game. Life couldn’t be any better at the moment. My priority at the moment is of course getting Darwinia+ out for Introversion as I am determined to get the game out before their predicted release date, but at least the future of Warship is more secure and I have something to occupy those times that I am not working on D+.
The tutorial has been bugging me. I hate tutorials in games and I really love how 2DBoy solved the problem so I have been trying to come up with a tutorial system that fits into the context of the game without seeming like a tutorial. It’s not easy and I just bet there will be calls for a more conventional tutorial.