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

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. :)


Byron

Byron

 

Overload

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!

Video

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!

P.S.

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
Navigation PATHSEEKER
PointTo ANIMATED
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
Type ENEMY
PathEndEvent SWITCH_TO_MIDDLE_PATH
PathEndEvent1 SWITCH_TO_END_PATH
PathEndEvent2 DIE
Speed 15.0
AddDeathParticle BulletExplode
AddDeathParticle Frax1
Bullet AlienBullet


# End of the first actor

Byron

Byron

 

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:

Video

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

Byron

Byron

 

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):




Byron

Byron

 

Untitled

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.


Byron

Byron

 

Untitled

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


Byron

Byron

 

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):


Byron

Byron

 

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!.

Video

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.

Byron

Byron

 

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.

Byron

Byron

 

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.

video


Byron

Byron

 

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.

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

Byron

Byron

 

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
EnableFog

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

#Goto LevelTwo

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

# Mark the chapter
Chapter LevelOne

# set the transition type
SetTransitionType FOG
PresetForTransitionIn

# Clear out the previous level data
ClearActors

# 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

TransitionIn
WaitForTransitionComplete
ResetClock

# 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

TransitionOut
WaitForTransitionComplete
ResetClock
TransitionIn
WaitForTransitionComplete
ResetClock

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
TransitionOut
WaitForTransitionComplete
ResetClock

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

# End of list

Byron

Byron

 

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 :)


Please...


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...

Byron

Byron

 

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:

members.gamedev.net/yetanothergamemaker/t.avi

Byron

Byron

 

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...

Byron

Byron

 

Fixed update added

Thanks for the welcome people!

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

http://www.gaffer.org/fix-your-timestep

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
CSystemInfo::AddFrameDelta(fTimeDelta);

// 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(CSystemInfo::ShouldWeBeDisplayingAScrollingBackground())
{
CScrollingFullScreenQuad::Update(FRAME_DELTA);
}

if(CPlayer::GetStatus() == PLAYER_STATUS_ALIVE)
{
CPlayer::Update(FRAME_DELTA);
}

CEvents::Update(FRAME_DELTA);
CPathDatabase::Update(FRAME_DELTA);
CPathEmitter::UpdateEmitters(FRAME_DELTA);
CPathFollower::UpdateFollowers(FRAME_DELTA);
CActor::Update(FRAME_DELTA);
CExplosion::Update(FRAME_DELTA);
CEmitters::Update(FRAME_DELTA);
CParticles::Update(FRAME_DELTA);


}

}


Byron

Byron

 

Fixed rate update

Damn!

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...

Byron

Byron

Sign in to follow this  
  • Advertisement
×

Important Information

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

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!