People ignore design when design ignores them

## KoalaBr8 – ActionScript Development

Originally created by Mark Overmars and Jacob Habgood, Koalabr8 is a puzzle game in which you simultaneously navigate three koala’s around a variety of maps, avoiding hazards and solving problems. The game was originally designed in GameMaker and is available over at yoyogames.com, however as an assignment for my ‘Introduction to game development’ module we had to port the game into actionscrip 3.0. Due to WordPress’s reluctancy to allow  user to embed flash files into their blogs, I’ll have to make the swf. available for download. I’ll update this post with a download link and improved demo later on in development.

## Matrix Transformations in Excel

Matrices are used in computer graphics to help us transform points around in 2D & 3D space. Manipulating points in virtual space is a fundamental concept of computer graphics and thus computer games. Although many software packages allow users to over look the underlying maths by allowing visual manipulations, it is always important to understand what you are doing below the surface. The following transformations can all be done by the use of matrices; translation, rotation, scaling, shearing, reflection and perspective. Below are some examples of matrix manipulation using Microsoft excel.

Abstract 1.0

I was never meant to be an architect, but here is a hybrid between the Sydney Opera house and the taj mahal… or something like that.I have drawn it  from an orthographic front view, then used matrices to rotate it about the point (6,3) in an anticlockwise direction through an angle of 55 degrees. Then reflected the image across the line 3y=x+3.

Abstract 1.1

In this version I have drawn a standard cube in excel, then used matrices to rotate around the y-axis through an angle of 25 and then translate downwards by 2.5 units. The image is then projected onto the viewing plane z=0 and viewed from the point (0,0,3) giving an isometric representation of a 2D image.

## x86 Assembler

I have recently been working on a data decryption program in x86 Assembler language. This being my first project involving assembler language has really taught me the value efficiency.

The original program took in a standard cstring and applied an encryption routine to it, I was then asked to write an assembler routine that would decrypt the new string and return it to its former self, only all lower-case.  I found the lessons learnt while messing around with the assembler code invaluable, as they lead to me learning some great optimisation techniques which could make all the difference when applied to a large complex program. The routine I was working on was not large enough to see massive gains in performance from the optimisation I was implementing, however knowing how to speed up code that may have to be called thousands of times a second is a vital skill to learn in game development. All though the code may be fairly elementary, I’ve found a real passion for this type of programming and would definitely like to develop my knowledge in this area.

```void decrypt_chars (const int ARRAY_LENGTH, char EKey)
{
_asm{
////////////// For Loop - Setup /////////////////////

push	eax					;//Save Registers
push	ecx					;//...
mov		eax, 0				;//Initialise loop counter

//////////// For Loop - Jump //////////////////////////

forloop:							;//Label
cmp		eax, ARRAY_LENGTH	;
jg		endLoop				;//(EAX > ARRAY_LENGTH)
movsx	ecx, EChars[eax]	;//Get and store encrypted character

//////////////// Setup Parameters/Stack ///////////////

push   eax					;//Save regsiter values to the stack
push   ecx					;//...
movsx  eax, EKey			;//Store 'EKey' in EAX register

///////// Modify Encryption Key /////////////////////

and		eax,0x3C			;//Bitwise AND 'EKey' with '0x3C'
ror		eax,1				;//Rotate right EAX, Halving 'EKey'
ror		eax,1				;//Rotate right EAX, Halving 'EKey'
mov		edx,eax				;//Store modified EKey in EDX register
pop		eax					;//Restore character to be encrypted in EAX

///////////// Apply Decryption  /////////////////////

rol		al,1				;//Undo ror al,1
xor		eax,edx				;//Undo xor eax,edx

//////////////// To Lowercase //////////////////////

cmp		al, 0x41			;//ASCII values 0x41 - 0x5A represent Captial Letters, Upper Bound
jl		done				;//Not in range
cmp		al, 0x5A			;//Lower Bound
jge		done				;//Not in range
add		al, 0x20			;//Lowercase equivalent is + 0x20 in ASCII table
done:								;//Label

mov	   bl,al;				;//Store encrypted character in bl
pop    eax					;//...

/////////////// End For Loop  - Setdown //////////////

movsx  cl, bl				;//Store decrypted character in CL
mov    DChars[eax], cl		;//Move decrypted character into DChars[index] array
add    eax, 1				;//Incremenet loop counter

//////////// For Loop - Jump //////////////////////////

cmp    eax, ARRAY_LENGTH	;
jle    forloop				;//( EAX <= ARRAY_LENGTH )
endLoop:							;//Label

///////////////// For Loop - Exit //////////////////////

pop   ecx					;//Restore Registers
pop   eax					;
}
return;
}

```

## Unity Development

Having spent the year butchering games in c++ and ActionScript3, I am now experimenting with the Unity Game Engine. Unity allows scripting in three languages; C#,  JavaScript and boo. Having had experience of both C# and JavaScript, I intend to use a mix of both of these two languages, primarily using C# due to the diverse range of  plug ins and resources available. My development in Unity will be ongoing, but I aim to have completed a game by the fall of this year in Unity.

The initial engine comes with the resources to help build a game called Lerpz, which I completed earlier this month.

This is a 3d platform game that I have created using Unity’s inbuilt assets library.

The player can control the character using the usual WASD keys and use space bar to activate the jetpack. There are collectables and traps set around the world that you can interact with at your will.

I am currently reading ‘Game Development with Unity’ by Michelle Menard which is a very useful book that allows you to quickly access the information you require.

So far I have found Unity very intuitive, much more so than some of the previous development tools I have used in the past. It has great support for various files types and it’s easy to import/export between various programs with instantaneous updates.

I will be posting again when I have developed further games in Unity3D and look forward to creating my very own game over the summer.

## Spud Run Alpha

SPUD RUN

‘Spud Run’ is a platform game I created on Game Maker 8, I unfortunately made all the artwork and assets myself; which explains the lack of eye candy. The player takes control of a convict potato who in order to successfully escape eternal doom, must journey across hostile and violent terrains. The games purpose was principally to test out a platform engine I was working on and the actual game content is pretty transparent.

Screenshot’s from my latest game in development.