Skip navigation

Monthly Archives: February 2012

Dev Blog:
Just looked back over the initial research and realised i’d lost almost all of the original feel I was aiming for… dammit all! Got other projects to work on for the next couple days but back on track with ¬†SpaceHawk Wednesday where it’s gonna undergo a game-play overhaul and try to get back to my original vision rather than messing about with vertex painting and other sillyness which has sidetracked me the last week.


Dev Blog:

Alright so it’s 8am saturday morning, been working on Spacehawk Death/dying code for the last 3 hours and it’s hit me; why am I Using Pawn for the ship… why am I not using actor! After writing maybe the 5th workaround of the day to avoid pawn camera issues on death it really makes me wish that it’d started this extending actor and done it from scratch, wouldn’t have had half as many quirks to deal with!

Still torn on weather to scrap the EXP system or use it in conjunction with Score cos atm it looks silly running both side by side, so one of them has to go.

Now, if only I could think up a good reason why the ship transforms and has super weapons then it’d be a good day ūüôā

//Play Dying instead of using Event Death or the state for it
simulated function PlayDying(class<DamageType> DamageType, vector HitLoc)

 //This Pawn:
 bIsFirstPerson = false;
 //Hide all mesh components

 //And make sure the explosion is cleaned up after

//SuperClassed Pawn:
 bPlayedDeath = true;

 //and then do the Controller stuff:
 foreach AllActors(class'SpaceHawkPlayerController', SHPc)
 //restore defaults to avoid problems


 SHPC.bStopSpam = false;
 SHPC.bDisableInput = false;
 SHPC.bChanged1 = false;

 SHPC.IgnoreMoveInput(true); // stop you moving about when dead


 //And Finally, move states So we can respawn:

Really is just a massive list that goes “DO THIS TO AVOID PROBLEMS” ¬†-.-‘ oh well, more coffee makes everything better, even sloppy code!

Dev Blog:
Seriously considering canning the Exp system¬†entirely¬†in favour of a score system, where you level up based on score and can use those points to purchase items instead and make each level timed instead of “do this till it’s done”. Implemented the Score system basics, get 100 score for a kill, and +4 per second you’re alive, which is much more similar to the original flash demo. Think this might work better than the Exp system so gonna implement the Score system for now and run both side by side until i’ve made a decision.

Dev Blog:
Had some serious help from James again concerning vector maths and gimbles for flight controls, and while it was easy enough to get two cameras implemented, it was a right pain getting the 2nd cam to orient around the player, so, vector maths away! Ended up with much cleaner code than I started with here and managed to drop a lot of the old vector instances. Work ethic has dropped through the floor though after a couple hours working on this, thankfully I still have The Darkness II to occupy me in the mean time.
Basic control layout and Frontend / HUD have undergone some changes lately as well,¬†largely¬†to include a kill counter and the basis for a score system, although i managed to ruin the base HUD class¬†entirely¬†and had to revert to earlier code, it’s all good now. Will begin working on an actual “Score” system tonight, and possibly a “timer” system to work out how long you spend on each level and award a score accordingly.

Revised Frontend -> HUD -> Cameras:

SpaceHawk HUD_NEW

Revised Camera Code:

//Extract From SpaceHawkPlayerController.UC

//Part of Project SpaceHawk ~ Matt Tonkinson 2012

simulated function bool CalcCamera( float fDeltaTime, out vector out_CamLoc, out rotator out_CamRot, out float out_FOV )
 local SpaceHawkPlayerPawn SHPP;
 local vector CamStart;
 Local Vector AX, AY, AZ, Offset;

Offset = Vect( -1024.0f, 0.0f, 64.0f );

 bIs3rdPerson = false;

CamStart.Z = 2048;
CamStart.Y = 0;
CamStart.X = -512; // 0 is topdown - 512 is offset correction for Pitch adjustment

 out_CamLoc = Location + camstart;

out_CamRot.Pitch = -13384; //-16384 TOP DOWN // X offset adjusted to compensate
 out_CamRot.Yaw = 0; //side to side
 out_CamRot.Roll = 0;

If (bIsFirstPerson == false)


If (bIsFirstPerson == True)

foreach AllActors(class'SpaceHawkPlayerPawn', SHPP)
 out_CamRot = SHPP.Rotation;

 GetAxes( Out_CamRot, AX, AY, AZ );

foreach AllActors(class'SpaceHawkPlayerPawn', SHPP)


 out_CamLoc = SHPP.Location + ( AX * Offset.X ) + ( AY * Offset.Y ) + ( AZ * Offset.Z );
 out_CamRot.Pitch = -8; //-16384 TOP DOWN // X offset adjusted to compensate

out_CamRot.Roll = 0;

 `log("CameraSwitched THIRD PERSON");



return true;


It’s Here!¬†SpaceHawk pre-alpha¬†V0.68

 Dev Blog:
The last couple of days have been great for progress, been sleeping long hours and working nights so had plenty of chance to get things done without interruptions. had a huge amount of help with cleaning up references and understanding how the hell DeltaTime works from James Wild  .
Spent a good few hours staring blankly at the Beyond Unreal vector maths page  trying to wrap my head around the lot, seems to be getting there though since nearly all of it makes sense now!
Progress is steaming ahead now on the flash front, and as much as I despise AS 2.0 I cant deny it’s not effective or easy to use, still, be nice to see an AS 3.0 update for scaleform coming soon.
Map wise, still cant build the maps using Lightmass due to “OUT OF MEMORY” errors, despite having a tonne of ram and being able to build without it in 2-3 seconds, oh well, legacy lighting it is =)


Scaleform Frontend Implemented (N.Y.C)
Quest Objectives Added
Quest Markers Added
Homing Missiles Added
Shields system implemented
Repairs system implemented
EXP Gain  implemented/effects added
Heads Up Display (HUD) updated to include revised graphics and a contextual abilities menu (N.Y.C)
Basic “Level Up” system working (N.Y.C)
Sound Effects Revised (N.Y.C )
AI Revised  again (N.Y.C)

Not much done lately tbh, been busy working on SirenSong and other projects:
SpaceHawk 0.65:
Meshed the rest of the rocks and some more buildings.
Added post processing chains for the default world and for “hyperdrive” mode, which switch on button press, also added a proper Trail effect for the engines when in “hyperdrive” mode.Changed up the AI code a bit so it doesn’t require the damage hack anymore.
Got bored and spent some time polishing an early Flash-based prototype, will upload here in the next few days for your playing pleasure.

%d bloggers like this: