About speciesUnknown
speciesUnknown's Trophies
speciesUnknown's Archive
I’m In, but its gonna be a short entry
I don’t have the time this time around to take 36-40 hours doing an entry, so my entry will be a text adventure, using C#. I probably wont use any additional libraries, so no need to start work on a starting framework; ill hard code the layout of the world in arrays.
Legendary Lava Escape – post mortem
This has been a hectic weekend. I’ve honestly never concentrated so much on an LD entry before.
Here are some of the good points about my entry:
The physics works perfectly – you can kick around the corpses of dead enemies, and the jumping is quite smooth. You can even bunny hop! This is all thanks to BEPU physics which is a darn good API. The character controller I’m using from it is experimental, but seems to work very well.
Gameplay has at least some depth. You have to escape from the lava as it rises, and that is confounded by the exit being locked (you have to find the blue key to escape).
The level is reasonably large. I was able to speed-run it in about 100 seconds. Some players have reported running out of time which makes me grin.
You can fall in the lava and die prematurely, which adds a tiny extra bit of depth i think.
Now the problems:
Only one type of enemy – I had hoped to implement a couple more. I wanted to have a sniper and give him a laser sight so you could see where he was aiming, and I wanted a lava monster who would wake up and throw lava bombs at you.
No pick-ups other than the keys. I had wanted health and weapons.
No unique weapons – the code supports this but I ran out of time, so I upgraded the default to be fully automatic.
The level wasn’t as finely crafted as I had hoped. I had intended to have a total of 4 keys, the red key just being a “tutorial” on the controls (that’s why its so obviously through the only unlocked door).
The big one… I messed up the graphics on the level geometry. The billboards were just fine, but the level geometry was rendered wrong. I tried to share vertices and thus texcoords between each block, but that proved futile. What I should have done was have one batch for each pair of parrallel surfaces – since my blocks are all axis aligned this would have made sense. Then, I would have been able to light them and have more carefully plotted texture coordinates.
I wish I had time to add more levels – the game code supports it, I just didn’t get the time to build them.
One thing is for certain though – from now on, I’m going to do 3D entries. So, when the next LD takes place, I’ll be using the same tech I’m using now.
Progress so far – physics complete, started working on real graphics

This is the data in the physics engine, drawn using the BEPU physics debug drawer. I’m compressing my tiles into linear batches for the physics, and using a single block for each one.
For the graphics, I’ compressing things further, into a flat list of triangles for each type of tile. Since most levels are more lava than tiles, this should result in a very small number of actual triangles and thus decent performance on even weaker GPU’s.
Progress after approx 12 hours
I don’t yet have the pretty graphics I hoped for, but the physics is nearly finished, which is half the game anyway. The following things work
0) Character moving around the level and aiming FPS style (Thanks to the new release of BEPU physics with its character controller)
1) Floaty enemy who dies when you shoot him enough, and falls to the ground.
2) Physics debug renderer integrated, so I can see everything
3) Level loads from the tiled file format into linear batches of identical tiles
4) Physics side of weapon system finished, and waiting for me to code pickups
Flying Moustach of moustachery!
Yeah baby, this moustache is all like, flying and stuff. He flies around. And he is a moustache. How much more awesome could it get?

Progress as of 3 hours in
Once again, I forgot to start chronolapse until 1 hour in. So my video will be missing a lot of setting up of boilerplate. Not that this is very interesting.
I have now got my internal architecture working, integrated the physics engine BEPU, set up the debug drawer and put a big box on as a temporary level, so I can start on getting a character to run around. Here is my main menu:

This should give you some idea of how terrible awesome my graphics will be. Yeah.
XNA Camera Class
wazzup dawgs
For any of my fellow XNA using peeps, here is a 3D camera class
public class Camera
{
protected Vector3 position, target, up;
protected float fov;
public virtual Vector3 Position { get { return this.position; } set { this.position = value; } }
public virtual Vector3 Target { get { return this.target; } set { this.target = value; } }
public virtual Vector3 Up { get { return this.up; } set { this.up = value; } }
public virtual float FOV { get { return this.fov; } set { this.fov = value; } }
public Camera(Vector3 position, Vector3 target, Vector3 up, float fov)
{
this.Position = position;
this.Target = target;
this.Up = up;
this.FOV = fov;
}
public virtual void rotate(float xdeg, float ydeg)
{
Vector3 direction = (Target - Position);
Matrix yrot = Matrix.CreateFromAxisAngle(-up, MathHelper.ToRadians(ydeg));
Vector3 xaxis = Vector3.Cross(up, direction);
xaxis.Normalize();
xaxis = Vector3.Transform(xaxis, yrot);
Matrix xrot = Matrix.CreateFromAxisAngle(xaxis, MathHelper.ToRadians(xdeg));
direction = Vector3.Transform(direction, yrot);
direction = Vector3.Transform(direction, xrot);
Target = Position + (direction);
}
public virtual void forward(float distance)
{
Vector3 direction = (Target - Position);
direction.Normalize();
this.position += direction * distance;
this.target += direction * distance;
}
public virtual void left(float distance)
{
Vector3 direction = (Target - Position);
direction.Normalize();
Vector3 xaxis = -Vector3.Cross(up, direction);
xaxis.Normalize();
this.position += xaxis * distance;
this.target += xaxis * distance;
}
public virtual void upward(float distance)
{
this.position += this.up * distance;
this.target += this.up * distance;
}
public virtual void move(Vector3 direction)
{
forward(direction.Z);
left(direction.X);
upward(direction.Y);
}
}
Peace out
Yay Escape!
So, i signed on to do a doom clone – i was hoping for escape, because now I can make a system of rising lava to act as a timer for getting out of each level. My game idea is pretty simple:
1) level is full of monsters which shoot or charge you
2) you must find keys to unlock doors. Expect ambushes.
3) When you get to the final switch, you must flick it to open the door
4) The lava starts to rise!
5) GTFO before you burn and die.
I plan to have 3 enemies:
1) Lava Monster – throws lava at you.
2) Sniper – static, hides behind cover, can only be hit when he is about to shoot you.
3) Flying Moustache – is a moustache which flies. Obviously.
I’m hoping I can make enough levels – I’m thinking it will be easier to do a few large levels than many small ones.
Who likes this plan? Any suggestions? I’ve already started.
Starting Framework for Doom Clone
Hey,
My game is going to be a doom clone. I got dared. I cannot resist a dare. Its a bit ambitious, but nowhere near as ambitious as my previous attempts, both of which were RTS games and unsurprisingly failed. I am determined that one day I will do a proper RTS though…
Anyway, my starting framework is XNA with some windows specific hacks I worked out, and a game state system. I also made a crude tiled file loader, but didn’t really test it with any kind of renderer, only inspected its results in the debugger. It seems to work.
http://dl.dropbox.com/u/7274197/LudumDare21StartingFramework.zip
There are two application projects. The first is code I ripped out of a real game, i wrote it for testing content pipeline extensions. Ive done this so I can stick breakpoints directly in the code and not worry about how VS insists on using msbuild on my content extensions. If you run it in the debugger you can put breakpoints in and test that the tiled map file is loaded correctly.
The other is a blank screen. Warning: it captures the mouse. This is because I plan to do a 3d FPS and capturing the mouse is necessary in this situation.
[edit]
I forgot to say what stuff I was using
So yeah, here is a list:
XNA for everything code side
My own tmx map loader which I just wrote in the last few hours
tiled for building the worlds
paint.net for doing graphics
sfxr and audacity for sound stuff
VS 2010 express IDE
BEPU Physics engine for the vehicle sequences. Only joking. No vehicle sequences. That would probably suck, but i do need it for ray casting (shooting) and for the collision and stuff.
SVN, hosted on unfuddle, for backup (yes, source control is useful)
XACT for formatting the sound so XNA can use it.
IM MOTHER FRICKEN IN!!!
i was too shy to do the IM IN video but this is me saying i’m in.
I’ve been challenged to do an FPS this time around. It will have to be in the style of wolfenstein, because that simplifies level design (I can use a tile editor) but I’ll be able to have articulated meshes for the enemies.
I’ll be using XNA this time around. The last two attempts were opengl / SDL / fmod / god knows how many small API’s plus I’m now bored with c++ for small games.
I’m constructing my starting framework over the next couple of days, it will support my usual “lazy loading” scheme for textures materials meshes and sound. I’m using tiled as the level editor – am going to release an XNA .tmx file loader in the next day or so for all to use.
Progress report and screen shot
Progress report:
1) I have build the assets for 2 items: the tank, and the laser turret.
2) I can now load a tilemap from file, and build the map in the editor Tiled
3) Code for drawing vehicles is finished – along with a “team colours” shader which does a pallette replacement.
4) I have set up the state machines for the behaviour of objects
5) I have build my vehicles – which consist of a vehicle body and a turret. You put one on the map using the vehicle factory.
Here is an awesome screen shot:

Note how I can colour each tank in its team colours, Its pretty
Battle Plans:
My battle plan is as follows;
Hour 1: mess around to think of an idea *done*
Hour 3: Have a tile map loading from the editor Tiled with a basic set of tiles.
Hour 5: Have tanks appearing on the map, constructed by a factory (factory pattern).
Hour 6: Have tanks shooting at each other, and using the basic pathfinding my framework includes.
Hour 10: Have selection of single or multiple items working.
Hour 12: Have user placement of buildings on the map.
Hour 10: Mock up of basic GUI elements completed.
Hour 12: C&C style building of stuff and then placing it works.
By that time ill be in a position to plan the next few stages. I have left 6 hours in the first day for contingency, in the hope that day 2 can be mostly focused on content creation.
Discovery – Ancient Ruins
I’ve decided that my game should be about discovering ancient ruins! Gameplay will go as follows;
1) You land from space and have to build your base. You are attacked by waves of enemies coming from points around the map.
2) You have to find where the ancient ruins on that map are: the main way to do this is to randomly explore, the the enemies around the map may make this difficult. Alternatively, you can destroy all the enemy bases and then the location will be revealed to you.
3) Fog of war! The fog of war covers the whole map and will grow back unless you post sentries nearby. Sentries have a relatively long line of sight. I’ll achieve the “fog of war” effect with a large texture and a post process effect, which blackens areas you didn’t yet find, and greys out areas where the fog of war has grown back.
I’m going to do this RTS in the C&C style: a panel on the right of the screen contains the controls for building structures and units.
Updated starting framework
I’ve made an updated version of my starting framework; anybody can use this for LD19 compo or the LD19 jam. The main differences are as follows:
1) I now have a polymorphic render list of self drawing items, each with a material
2) A material consists of a shader, a texture, and a load of properties.
3) When drawing, I iterate the render list, and tell each item to draw itself.
The framework I have linked includes some placeholder artwork which should be OK to use, but obviously due to the rules cannot be in the final version. Its just there to test that my tile map and animation are working.
Already got my starting framework for LD19
This is basically my framework from last time, with a few extra things added in from LD18. I spent some time during the competition re-inventing the wheel, and this time around I will be starting out with the following things pre-built;
- Crude animation system. This is the animation system I invented for LD18 with anything remotely game specific removed. It supports an idle loop, temporarily “hitting” an animation so that when its done, it returns to the previous one; “terminating” on a given animation; that animation will run once and then the sprite will *not* return to its idle animation; andthis animation cannot be interrupted by any hits. This is useful, for example, with a death animation, which cannot be interrupted and is the final state.
- Sprite Factory. A sprite is a set of animations; each animation has its own texture (although there’s no reason they cant share) but the sprite factory will instance a sprite for me. I may use XML for the sprites this time around, but last time, I just hard coded the prototypes for the factory (its that kind of factory) in the factory’s ctor.
- My basic “lazy loading” resource table. The purpose of this class is to allow me to lazy load a resource by name and then grab an integer ID for it; no need for fancy streaming or additional threads, each resource to be loaded is loaded directly from disk, resulting in a blocking wait. I wont have the time to be messing with streaming files.
- Crude pathfinding. Given a current square, and a destination square, this will decide what move the creature of object should move to next. There is no “creature” class as I don’t know if the game will even have creatures, so I’ll need to modify this when the competition starts.
- Crude 2D Renderer. This has features such as “draw square” and “draw text”. I wasted time deciding how this should work in LD18; I should be able to dive right into gameplay this time around.
It also has the features of my previous starting framework;
- Texture, and shader loading each into class Texture and class Shader. I never bothered with shaders last time; I may not this time, although its possible that I will have the time this time around.
- Crude wrapper around fmod for playing sounds.
- Windowing, keyboard and mouse input from SDL
- Image loading (into textures) using SOIL
Here is a download link for anybody to use it; I cant see this hackish, undocumented and incomplete code being commercially viable, but don’t use it for anything commercial please. Thanks.
I didnt finish in time, but here is where I got to
The problem was, I ran into a pathfinding bug, and while fixing that, didnt get time to do any artwork. I also didnt make use of any kind of level editor, the level is just a flat piece of ground. The picking is still a bit funny, if you select a minion you can’t select the necromancer without right clicking, but you can swap between monsters. I actually wrote this with support for multiple selections, but having run out of time, I didnt bother with it. You also can’t tell the difference between the types of enemy, because I only created one sprite.
I’m now going to submit this as a Jam entry, but I’m going to still stick to the rules of the compo, just without the time limit. Ready for the jam entry, I will complete the following, currently missing, things:
0) art for all 5 kinds of monster
1) Impassable terrain
2) upgraded camera with zooming, restriction of movement to the level only, and rotation (I planned for rotation at the start but didnt get around to it)
3) monsters rotate to face the direction they are heading in
4) group selection with a draggable box
5) the remaining 2 spells (absorb and consume) will be working
6) The level will be a small city with automatically respawning cops / civilians.
7) There will be a linear “tutorial” at the start.
The cursor will be replaced with a dynamic cursor with move, attack, select, and cast spell animations.
Controls:
Select a monster: left click
Clear selection: right click
Move screen around: drag with MMB
Move monster around: select it and then click the square you wish to move to
Make monster attack something: Select it and then click what you want it to attack
Hide / show the bottom menu: Click the blue border at the top
To cast a spell, select the necromancer (the guy at the top left who looks the same as all the other guys) and press S (to make a skeleton, which will look like all the other guys) or D (to make a zombie, which will look strikingly familiar to all the other guys) and then click a corpse (which will look like all the other guys except dead)
To cancel spell casting, right click.
Progress… not looking so good now
I’ve started doing the pathfinding: this is going to be difficult, ive never done pathfinding before.
The following things have been finished:
KB / Mouse input
Loading textures
Layout of GUI
renderer set up pre-shader
Animation(VERY IMPORTANT)
Picking (logic laid out as psudocode and partially implemented)
Tileset Rendering (brute force right now, with lots of glVertex calls. Will refine once game logic is working)
Moving around of camera
Placeholder artwork (everything is [1][2][3][4][5] images in various colours)
The following things have not been finished:
Detection of game conditions such as game over
Pathfinding (this might be the end of me)
Any real art (
Looks like it’ll be programmer art, but im not going to touch artwork until the game is playable)
Objectives in game
Sound (This wont take long, thanks to the framework I started out with)
Spells (
this is a problem, you need to resurrect / consume / Discard monsters)
Attacking (some enemies shoot, others are melee)
Loading of levels from disk; right now they are all solid blocks of passable terrain with random tiles set on them.
I’m thinking I should go with a procedural level generator, which goes through the following sequence:
Create a grid of streets with larger gaps in random places
Line each street with small buildings
In the larger gaps, put an enemy base
Here is a screenshot:
It’s not actually as bad as it looks; if I can get the pathfinding working, I’m on the home stretch.
Second meal of the day
Progress is going well, the animation system is fully setup, the renderer is fully setup, I know that the sound system will take no time at all because of the preparation I did (see my initial post to a link to the framework I started with).
Right now I have zero assets, I do have placeholders for my animations, but they look like this:
Imageshack Gallery of some dodgy artwork
This is enough for testing the basics of the animation stack; I can confirm that when a creature is hit it plays its orange “pain” animation and then continues with the white “idle” or green “walk” animation, and that when it dies it plays the red “death” animation and then freezes on the last frame.
I’ll do some screenshots when ive done the HUD. I need a readout of the stats of what you currently have selected, and a row of buttons, one for each ability of the selected character, as well as a readout of mission objectives.
My second meal of the day is not as elaborate; boiled brown rice, chilli con carne out of a can, and my typical addition of grated cheese.
I added a ton of chilli powder though, because the stuff out of a tin is never spicy enough for my liking. Actually, this meal was so good, I ate it while still writing this post.
Lunch time / progress report
HI!
The last 12 hours have been rather productive – although I slept for 5 of them.
The engine is half done – I have yet to add animations, and picking, but animations are prototyped as a skeleton. I’m going to go with frame by frame animation, using multiple cells in one texture.
Here is what i had for lunch:
Its salad, with various leaves (the salad part is not important) with basil and chilli marinaded, pan seared salmon, a mustard and vinegar dressing of my own creation, a dollop of ceaser sauce, and a grating of chedadar cheese. I asked in the shop if they had salmon which was in the shape of an L and a D but they told me I would have to cut it myself, so I didnt bother.
Here is my desk:

The monitor on the left is the one which im recording, the one on the right is currently dedicated to IRC (still a time sink even when you arent chatting
)
[edit] fixed images. Stupid imageshack.
Necromancer
For a while now I’ve wanted to do a prototype RTS; i had this idea in my head for a very simple Baldaurs gate style RTS / RPG thing.
The protagonist is a necromancer! The player has only one attack of his own; the neck break. You have to creep up behind an enemy and break their neck. Very simple really. However, once you have a corpse in your posession, you have the ability to resurrect that corpse to do your bidding, absorb the corpse to recharge your health, or divide the corpse’s energy between your other minions. The more minions you have, the less powerful each minion will be; when a minion dies, it cannot be resurrected again.
The levels will be tile based, viewed from a top down perspective, and all enemies will be viewed top down; enemies are either resurrected as zombies (who retain the abilities of the creature they were in life) or skeletons, which are tough melee soldiers, but do not have the abilities of the creature they were in life.
I’ll take this basic set of gameplay mechanics and flesh it out as im working; my first task will be to get the renderer and animations working.


