Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

Entries in this blog


Title page

I finally added GUI elements and limited flow control to the event scripting language which means I can now have a title screen for the game.

Not long now and I will have a fully working first level. :)





I felt the need to add more effects so I updated the particles for the alien explosions - the death particles are defined in the alien's script file and in this case there are two particle emitters created on a death.

I also added a 'spark' effect which I have hard-coded into an Alien death to see what it looks like.

Oh, and I added a star-field to the environmental system.

result..... Overload!


Pretty soon I have to stop adding special effects and actually start creating levels for this game.

At least I have a name now... OVERLOAD (okay, a work in progress but I am really have difficulting coming up with a name for this game).

I have been giving some thought to the problem of detecting you are about to hit something when the ship is at the left or right extremes - I am heading towards a hud based overlay that shows a reticule over the thing directly in front of you that shows just how close it is. Its that or remove the funky camera system - and I like the camera system as it is!


Just in case anyone is interested - this is what the script looks like that defines an 'alien'

# The first actor

Name FirstActor
XSI Alien1.xsi
Scale 1.0
MaxTurnRate 300.0
SpinVariables 2.0 0.0
Glow 0.0 1.0 1.0
Shadow 3.0 2.5 3.0
CollisionSphere 0.0 0.0 2.0
PathEndEvent2 DIE
Speed 15.0
AddDeathParticle BulletExplode
AddDeathParticle Frax1
Bullet AlienBullet

# End of the first actor




Wooa... lef..., no... right.... no... LEFT LEFT LE

I added some more 'environmental' stuff today in the form of plynth1. Each level has a set of classified environmentals the form of which can be altered through the event script.

In my first test I had quite a short release delay which meant that the level became quite crowded. Now, this is clearly too much for an early level but might be nice for a later level. It however did show the need for some kind of visual feedback system to alert the player they are about to bump into one of these environmentals.. maybe flashing them red or something. Otherwise when you are looking at the players ship to the left or right its quite difficult to match up whats heading directly towards it. My current thinking on this is to simply raycast directly ahead in an acute cone and mark off the closest to the player

As usual - here's a video of it in action:


Note, the player doesn't collide with anything yet - good job as I would have been dead rather quickly!




Finished texturing

Yay... finished. I have probably over-cooked it, but then again, its the only 'detailed' model in the game so why not? :)

Here are the final images of this texturing adventure. The texture map is high-res in this version just for ease of editing - the final in-game texture will be a lot smaller (and probably lose the detail I spent so long putting in):





This is harder than I thought it would be. I have found an all new respect for the many artists I have worked with throughout my career!

It's very tempting just to cave in and go for a simpler 'tron' style.





Modelling done - now comes texturing. Not finished - but this is how it looks so far:




Time for some artwork

Today I decided to bite the bullet and create some artwork for the game. So I started on the players ship.

Now, I am not an artist so this will be an interesting process as I learn to model in 3D while also learning XSI.

Here's what I have so far (I am working on one side of the model at a time and in the end will mirror the model to create the whole):




Positive reinforcement in action

I couldn't just sit still after adding the dynamic text system so I had to put it to use. The first usage is to display the score you get when offing an enemy. The type of morph used is configurable and I aim to add colour effects later to help distinguish one piece of text from another.

I may have to start issuing epilepsy warnings with these videos soon - getting a bit wild on screen now - and there's more to come!.


The fade to black thing half way through is a simple 'tranistion' animation that is going to be used to mark one level from another or progression through the front-end screens.




Mighty morphing positive reinforcement

While working on our PSP game our publisher kept insisting on us putting in 'positive reinforcement' messages to let the player know that they are doing well. At first I wanted to put my fingers down my throat and gag for a while - but after a while it kind of grew on me and its kind of nice to be told that you are doing well or that you suck.

So, I decided that I would include such a system in this game to give the player messages and to report the scores gained for offing some enemies.

Mighty morphing positive reinforcement in action

After watching Jonny Mnemonic I have decided to model the lightning on the type seen during his journeys throught the net. Not done that yet - but its in the plans.




First pass at some environmental effects

One of the environmental effects I want to add to the game is 'lightning columns'which the player has to dodge. Here is an example movie of the first pass of these effects going in.

Note that this is very first pass, as in only just got it up and running - for example z-order is not being preserved and the look and feel is bound to change.





I always forget sound

Its fatal..

I always forget sound.

Now, I already have one of these

but to be honest I can't play a keyboard to save my life - but I can come up with little sequences.. so I needed a decent sequencer, so I got

Now, why get a second keyboard? Well, mainly because I code on a laptop downstairs and the Karma is a bit too big to put up in the living room but the MicroKontrol is small enough to be on my lap and it works so well with Reason.

On the coding side I have been adding environmental stuff - starting with a column of lightning that has to be dodged. At first I am implementing it with normal lines but I think I am going to have to go to thick line rendering to get the kind of effect I want.

I also fixed the bullet collision so that the enemy actors can now be killed. Here's an updated video




to encrypt or not encrypt

One question I have been toying with is what to do with the data files to my game.

My ultimate aim is to make some money of this game if possible because my day job is due to come to an end at around about June next year when the game the company is working on is released on XBox 360, and my biggest ambition in life is to become an 'indie' developer like my another ex-Lionhead co-worker Cliff (www.cliffski.blogspot.com - go and buy a copy of Kudos or Democracy!).

Now, as I mention below the engine is totally data driven which means by altering the main event script they could effectively turn the game I release into a totally different game. However, I also like the idea that people could mod the game and release their own levels - creating a sort of mini-community (I can dream can't I?)

There is also the issue of online scoring - if anyone alters the scripts they can make the game easier to achieve a higher score. One possible solution to this is to somehow checksum the released script and if the script the game ran with does not match the released script then the score doesn't go to the online boards... but then that screws up any (*ahem*) patches that are needed.

Just in case anybody is interested here is the script I am using to develop the game (its not a long game at the moment - been concentrating on finishing the core tech):

# --------------------------------------------------------------------
# Global stuff
# --------------------------------------------------------------------

# Turn on fog

# --------------------------------------------------------------------
# Debug zone
# --------------------------------------------------------------------

#Goto LevelTwo

# --------------------------------------------------------------------
# Level One
# --------------------------------------------------------------------

# Mark the chapter
Chapter LevelOne

# set the transition type
SetTransitionType FOG

# Clear out the previous level data

# Install actors
InstallActor First
InstallActor PlayerBulletBasic
InstallPlayer Player
InstallActor AlienBullet

# Set the overlays
BitmapOverlay 0.0 0.0 1024.0 32.0 Game\Textures\ScoreBanner.tga

# Set our background
#SetScrollingBackground Game\Textures\Wires1024.png 0.0 -0.36 0.0 0.0 3.0 3.0
SetScrollingBackground Game\Textures\BlueLava1024.png 0.0 -0.06 0.0 0.0 0.6 0.5

# Place the player
PlacePlayer 0.0 0.0 0.0


# Set the emitters to spawn
SpawnEmitter 0.0 1.0 10 Path_1 Path_2 Path_1 FirstActor

# Attach some firing patterns to the last emitter
Fire 0 ONE_SHOT 1.0 0.0
Fire 1 ONE_SHOT 0.8 3.0
Fire 5 ONE_SHOT 1.5 3.0

WaitForAllActorsDead 1.0


SpawnEmitter 0.0 1.0 10 Path_2 NULL NULL FirstActor

# Attach some firing patterns to the last emitter
Fire 0 CONTINUOUS 0.3 0.0
Fire 1 CONTINUOUS 0.3 0.0
Fire 2 CONTINUOUS 0.3 0.0
Fire 3 CONTINUOUS 0.3 0.0
Fire 4 CONTINUOUS 0.3 0.0
Fire 5 CONTINUOUS 0.3 0.0
Fire 6 CONTINUOUS 0.3 0.0
Fire 7 CONTINUOUS 0.3 0.0
Fire 8 CONTINUOUS 0.3 0.0
Fire 9 CONTINUOUS 0.3 0.0

# Dont proceed untill everything before us is dead
WaitForAllActorsDead 1.0

# --------------------------------------------------------------------
# The end chapter
# --------------------------------------------------------------------
Chapter End

# End of list




Need a name!

The core game code is complete. All I need to do now is add the nice bits - environmental effects and other such candy before getting down to adding all the content.

So, I thought to myself 'I know what, for a change I will work on the title screen'*

And then it hit me - I don't have a name for the game.

Take a look at the very incomplete game footage and come up with a name for it and get yourselves into the credits :)


Pretty please....

* - The engine is data driven so in reality it doesn't know the difference between a title page, options page or even in-game... its all a script to it...




A small video of my home project

After sorting out the fixed frame update issues I finally made my little movie. Usual disclaimers (i.e. programmer art and by no means finished code) apply:





Defeating lag

My day job involves writing the multiplayer code for a XBox 360 shoot-em-up game over Live.

My biggest hassle revolves around having to deal with Lag.

Now, normally we can tailor the multiplayer side of a game around the fact that it will be played on a network with some bad lag. This might involve lowering the number of actors or applying some special rules to help get around some of the technical issues we encounter - all aimed to giving the player a smooth ride.

However, by a sheer accident a single sentence was left in the design doc that committed us to implementing full co-operative single player levels over live - and to make matters worse our publisher announced this at a trade show and on television.

So, rather than go find the nearest oven and stick my head on gas mark 7 I rose to the challenge. Now all I have to do is come up with a method of coping with hundreds of actors on the screen at the same time with 2 players running around shooting them.

How do we keep all those actors in sync? Well, for the most part we can rely on events happening on both sides to produce the same results on both sides as long as no random values are used - or if they are used it is the same random value. Another method I will be using is deferred actions.

A deffered action in our case is the server saying to the client 'in 3 seconds I am going to launch a new beastie - you do the same'. If the server/client handshake has sucessfully negotiated what the lag time is then both sides should launch the beastie at the same time.

All I have to cope with now is actors tracking the players and players shooting actors.

It's all fun at the end of the day...




Fixed update added

Thanks for the welcome people!

Well, I added in the fixed rate update after reading:


my version is not identical (I don't lerp states for instance) and to be honest - this is the first round of this going in - I will see how it handles before going further.

Here's the code I used:

void CTitle::FrameUpdate(float fTimeDelta)

// Add the delta to the record

// Clamp the delta if necessary
if(fTimeDelta > 0.25f)
fTimeDelta = 0.0f;

m_fAccumulator += fTimeDelta;

while(m_fAccumulator >= FRAME_DELTA)
m_fAccumulator -= FRAME_DELTA;


if(CPlayer::GetStatus() == PLAYER_STATUS_ALIVE)







Fixed rate update


After some nagging from an colleague I used to work with at Lionhead I decided to use Fraps to make a small movie of my little game in action.

You know what I found?

The framerate drop introduced by Fraps when recording the movie totally blew the numerical integrators used in my AI update functions - things seeking paths were having a little difficulty staying on path because the steering functions just lost numerical stability.

Where I work currently the game engine uses a 100hz update for all AI and physics. I used to be against this but now I have seen my own numerical instability and what that looks like - I am all in favour of it now.

So, now I am on a quest for a decent method of achieving a 100hz update...



Sign in to follow this  
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!