Skip to main content

Programmer

Perfect is the enemy of good

Journal Category

still working on the character movement prototype, adding a few animations and tweaking physics, currently adding push object state, have the jump animations with jump scalled by time the jump button is down, land animation scalled by time in air, and a different set of animation to blend with if the character is moving when they jump. Last blog update alread had mixing of the idle, walk and run animation on the character movement speed. Also fixed the animation blending to be a lot smoother, related to adding some debug text/ hud. Crazy to try and debug runtime visuals without text output.
Animation is a bit more difficult than i remember but starting to get use to doing things in prototype mode where you are are trying to focus on getting something done so you can see it in context rather then get something perfect and need to throw it away as it doesn't fit, thus the comment 'perfect is the enemy of good'. still frustrating to leave things at 80% but after redoing the idle/ walk/ run animation about 3 times it is time to move on, that is a good as i can get it for now, argh
added some soft blob shadows directly under the character to help guage depth. Fixed the animation.
still some tweaking of the physics for movement and step over to go, a generalisation of the player states, then may be up to the next prototype, the combat

limited progress, new engine, Ogre

Journal Category

have changed to using ogre game engine, and this is after a few weekends of mucking around and making content, with smatterings of code

some history. got my own 'from scratch' game engine up to runing but was going to be a pain to support different render hardware and would still need an asset pipeline, so tried out torque.
was unhappy with torque so reworte quite a bit of it, at wich point was only using it's renderer and would need to write asset pipeline as had changed mesh format a lot, and while i have delusions of being able to write asset pipelines, it is not quite what i want to be doing at home, so moved to ogre.

theoretically should have used the python wrapers for rapid prototyping, (kind of the point of ogre) but just using it in cpp mode as like to step through source code to see what is going on.

this weekend was loading a xml scene description, (player and player animation state machine are still hard coded) got shadows back to working and got a perforce repositry set up to make revision keeping a bit easier.

next shall be nailing in a colision system, might try out newton

>edit
forgot to menthion that character design is property of Fred Perry

Submitted by designerwatts on Mon, 17/08/09 - 12:42 AMPermalink

Nice. :)

Did you attend freeplay this year? There was a great little talk given about freeware software that discussed free engines and physics software.

Also, I am surprised anyone else in this country even knew of Gold Digger.

Submitted by davidcoen on Thu, 20/08/09 - 12:42 AMPermalink

thanks for the comments.

did not make it to free play, and i will attempt to show you something more worthy of your time next update Marty, good to hear that you are still alive.

David

More Spore

Journal Category

This is a minor update to the Spore creature demo. I've added a thumbnail view so you can see what the creature looks like when properly rendered. I also removed a crash bug that occurred when trying to render buildings or vehicles.

ToonFighterZ - Hello World!

Journal Category

Hello World!

That's my first post on Tsumea, so I'd like to introduce the game where I spend most of my time lately.
ToonfighterZ is a Nintendo DS game prototype, going to be completed in few months (I guess!)
I'll post some shots of the previous demo, but will update them soon, as the touchpad interface has been totally reviewed (too similar to Bleach DS) as the game and particles system.

Please let me know what you think. Any comment is more than welcome!
D3z.

Submitted by Anonymous (not verified) on Wed, 28/01/09 - 6:24 PMPermalink

Hey there, this game looks sweet!
Well done!

Content for softbody character test

Journal Category

One day to make the model
(lightwave, drew a front and side profile of a Fred Perry character, 'Gina', from his comic 'Gold Digger', it is rather sexist, but also a lot of fun. converted the tga into a point cloud to have in the modelling space while making the model)

this is to make a softbody character test with (each vertex to have different spring constraints applied after skinning) so wanted something relativly low poly (760 tri for the figure, 382 vertex) almost another 300 triangles for the hat, glasses, backpack& gun, but they will not be softbodies.

rather than use biped like usual, i made a custom skelton, and rather than get annoyed with recreating a mirror of each of the 'handed' bones, (and rather than look up a max script and pray someone else had writen a good one) took another day to write a max pluging to mirror the skeleton. (actually, took 4 hours to set up the plugin, the gui, make a mirror of the hierarchy, then a day to track down a max memory leak on attaching a child node to a node with the 'i am a bone' flag set plus other mucking around to get the bones made in code to behavour like bones. max does some amazing things, but the most amazing thing is that it even works, code and concepts are a bit of a mess.

so the top and bottom left are sceen shots of lightwave (where i made the model) and on the right is a screen shot of max (with the mirrored skeleton)

shouldn't be that long to see this running around in game, though might be a while to get it running around in game and looking 'good' as have been trying to shoot a bullet through all the tasks to get some gameplay from the silly little game i have been working on.

Submitted by Anonymous (not verified) on Thu, 15/10/09 - 12:52 PMPermalink

Could you not have just used the mirror function in animation>bone tools? Or is there something in that that doesn't work for what you need?

Submitted by davidcoen on Wed, 28/10/09 - 9:47 AMPermalink

thanks for the comments, last time i looked at max's inbuilt bone mirror it was swapping the determinant (applying a negative scale)
Programmers sometimes choose the solution that is most technically interesting, the one they will learn the most from, rather than the quickest/ easiest solution.
So yeah, i felt pretty stupid when gushing to an animator at work what i had done and they just clicked a button to effect a similar result.

3 days back in Nov08, pac man clone

Journal Category

an interesting little exercise that i did back in november, was to make a pac man clone.

it was good to actually 'finish' something, but a pain in the kahoonas to make something on the pc not using directX (as i already knew how to use that, and wanted to brush up on openGl) also a pain that it was intended to be a one day exercise, so by the 3rd day was kind of getting sick of it.

it works, however stopped before implementing the ghost eyes running back to center of the map (they just teleport), didn't do the different colour ghosts and fruit, and 'speedy' doen't increace speed each level.

also taking a bit of a compatiblity hit for having writen everything from the ground up, as some performance booste things that i did to get it to run faster than monitor refreash rate on my home computer seem to have broken display on other computers (will sit down one day and look at how glut does things, or go back to directX)

of the 3 days, most of the time was spent on content (bit over 1.5 days) then something to display sprites (and text) then thorwing a half doesn't state machines together for game state, and pacman/ ghost behavour... good fun.

1000 ai paper zombies

Journal Category

tsumea 1000 ai challenge

although the event has officially past the final submission date, i would like to submit what i would consider an entry.

it's the magic world of paper zombies.

purpose -

you are in control of two hordes of zombies. you must use your imagination here a wee bit because all you can do is move them around, and ultimately make one horde eat the other one.

controls -

arrow keys will fly you around. use the mouse to look while holding the middle mouse button. use the scroll wheel to zoom in or out.

use the number pad to control the paper zombies. the zombies will move in formation to the part of the play area which corresponds to that key. hold shift while using the numpad to move the other team.

zombies can interact with one another. when a zombie detects another body directly in front of it, it has a chance to execute a callback function. different callbacks can be used, depending on the team of the other zombie, and how far away it is. in this example only one callback is used. the blue zombies can 'eat' the white zombies. if they get close enough, the blue zombie will jump to the white zombies position and the white zombie will cease to exist

modification -

user modification is entirely possible. the example data set up in the scripts are completely open to being edited for different results. some examples of changes that can be made:
- different skybox or world geometry
- changing the amount or formation of zombies
- changing the speed, turn rate and 'wander amount' of each zombie
- adding more detailed interaction callbacks
changing the starting parameters will affect the ai results in different ways.

download link - http://tiny.cc/HHYWS

NOTE: the original paper zombie pattern is a custom design of Matt Hawkins's paperdude design. unfortunately im not responsible for this wonderful art.

Update: THQ Challenge Entry - Manix

Journal Category

REALLY glad that it was stated that the graphical quality wasn't important!

Ok, so a month left and this is what I have.
The community that has one Leader. Depending on this leaders attributes, the members of the community do different things. At the moment there are not many actions that they can preform but that is the next update I am going to do.
There is a tech tree that is working but you cannot interact with your followers yet.
We will see what I can get done in a month I guess!

Submitted by Daemin on Sun, 23/11/08 - 3:16 AMPermalink

Hey that's not too shabby, you're actually using textures.

Personally I'm going for the geometric shapes with pretty but plain colours.

Particle system and collision

Journal Category

Have the visuals for the particle system and the collision objects loading and saving in the scene.

image is scene with sphere tree rendered, and several hundred particles in a line, and textures. (wanted to see the performance hit of moving so much vertex data around)

the texture alias code worked first try (pack 'n' textures onto giant texture to avoid swapping), the dynamic geometry did not, and ended up re-writing it twice, though it was occasionally pretty having the position of the particle being used for the colour.

next is the scene force system, and a scene 'game object' to drive the particle visuals, as well as some physics components for the particle movement and collision.

Some more short steps of progress

Journal Category

just finished the scene database sorted camera query (put in camera, get depth sorted visual objects to render which are inside the camera sphere and fustrum) other fun involved improving the stablity of the barrel distortion math in the vertex shader, as well as getting lighting to be independant of the current model transform also in the vertex shader (thankyou opengl for multiplying vector variables in light struct with the model matrix, i don't actually want that...)
Also added drawing of scene sphere tree and convex hulls...

the image is testing the render order of alpha objects.

next is collision, thinking of also making a particle system to help check collision and because particles are fun (^_^) though trying to sleep of a cold still so have to remeber not to push myself too hard, sick again, damn it.

problem with showing the progress with something from the begining, is, well, there is nothing much done yet

Journal Category

well, missed a week (was going to do weekly updates of progress) this was due to travel, sickness, and most of the work being non-visual.

do have a world system (or scene database) loading and saving, this required support of loading and saving virtual pointers. Changed the generic geometry class, to allow data stream reuse between render stages/ topologies. Rewrote the scene database sphere tree so that it actually worked.

the image is a screen shot on the start of a 'world viewer' application, loads scene and renders (opengl still, but putting in provisions to have multiple renders of different types off a scene database)

Wanted to get collision/ dynamic systems in next, then game objects (items under animation or user control etc) perhaps by end of month? then need to look at writing an exporter so can actually have some interesting visual data (one lathed column object was enough to generate in code and save out, instanced by the scene several times but, gosh darn it, exporters/ translators are not that difficult, just not done yet)

Render To Texture

Journal Category

A reoccurring question in my inbox over the last few months is "how do I render to a texture", frame buffer or something in between. Not to disappoint fans, even I was in awe at just how simple this sample turned out. This sample both illustrates the technique and provides a simple reference implementation. So, what do you think?

Show Reel

Journal Category

I’ve been meaning to post this video for a while, so without further delay, please enjoy. Hit me back with comments - good, sucks, boring? Let me know.

Submitted by Rado on Sat, 09/08/08 - 9:22 PMPermalink

Most impressive demo I've seen in quite some time. Is it all by yourself or part of teamwork ? I'd really love to put my hands on that engine

Submitted by StephenWade on Sun, 10/08/08 - 10:35 AMPermalink

Nice work! good start on the physical side of things too, did you use ogre or start from scratch?

Must remember to come up with a blooper reel myself some day :)

Vertex Shader barrel distortion

Journal Category

this week's update has limited visual improvment, have been playing with emulating barrel distortion in the vertex shader (slight radial scale on vertex)
the intent is that with a more detailed world the effect should be more noticable, however only halfway through the save/ load code for the world system/ geometry ect.

intend to get a world loading before next weeks update.

a tiny bit more progress

Journal Category

wow, barely getting 20hours a week to work on this so progress is slowwwww (>_<)

finishing up first pass on the renderer (including refactor of generic data store for geometry to pass to openGl to turn into VertexBufferObjects)

fun things included writing my own vertex shader to get the lights/ material to behave as i liked (i REALLY want to be able to have alpha in vertex colours from geometry and diffuse material colour with alpha and have lighting, this is not a permutation opengl seems to like), fun also being i have a 5year old graphics card which is just at the start of opengl support of vertex shaders (have a more modern card for when i add normal maps/ play with fragment shader) ~wanted to use the openGl shader language rather than cg... guess that was the other mistake, though playing with openGl extentions is fun...

so this again is some lights, some geometry, a texture with alpha on geometry with vertex colours (with alpha) and material with alpha... cough, i really wanted to be able to easily fade out objects in a single pass of the render...

next is onto some 'world systems' to be able to have some slightly more interesting visuals, ie, a light system and geometry system, then collision, dynamic, game object systems....

A creature designer (how could you steal my idea, Spore?)

Journal Category

Okay, so the truth is that they didn't steal any ideas from me or my team that worked on this project last year (obviously...)

Anyway, for my final year project I joined a team of six people and put together a program called "Game Creature Designer" (and yes, the title needs some work).

For those of you who've used the Spore Creature Creator, the program we made was basically that but in 2D.

The user would connect to a server set up to handle connections by this program.
Then you'd have a choice of editing "parts" or creating a "character".
A "part" could be anything. Most of the time though it was a torso, arm, hand, head or something along those lines.
Essentially, a "character" is a collection of "parts".

When you access the part menu, you can either choose to load a part from the server, or create a new part from a bitmap file.
Once you've loaded the file, the part editor appears along with the image that represents the part.
From the editor you can add "pin joints" which essentially means the points on which you can attach other parts. The first of these points is called the "anchor point", the point on which each part will rotate around.

Let me give an example, say you have an image of an arm.
To work out where the pin joints are, think about how your own arm works. When you lift it, your arm moves but your shoulder stays in the same position.
This means that our anchor point should be on the shoulder.
There could be other points on the arm as well. It all depends how detailed you want your character to be.
We can just add a single point at the shoulder and another at the wrist, where the hand will attach itself to. We could go crazy and add another point somewhere on the shoulder to add some kind of shoulder guard and another on the forearm for some kind of wrist guard. The complexity of the character is only limited by how much effort you want to put into it.

On to the character designer now. Like I said earlier, a character is a set of parts.
When we start the character editor, we're given a list of parts stored on the server.
We choose a part which then becomes our "base part". Usually this will be a torso or the main body part of whatever creature you're making.

We then attach more parts to the pin joints of parts already on the screen.
Once we've put the character together, we can animate it! This is the most fun part. :)

Animating is quite simple. It's exactly like the frame bar in graphics programs like 3DS Max and other 3D applications. You set the number of frames and the time between each frame. Then you set "key frames". Key frames are basically points in time where the character needs to match a position that you set.
When you press play, the program looks at the time to the next frame and tweens or lerps each part accordingly.

My first animation you ask?
A tauren doing a cartwheel.
It was 2AM in the morning.
And I'd gone a little bit crazy. :)

Anyway, I've uploaded the user manual if you'd like to check it out.
http://rapidshare.com/files/133193583/User_Manual.pdf.html

This manual was pretty huge. I have to thank Lindsay for compiling it all. While I did most of the programming, Lindsay was working tirelessly formatting every paragraph and proof reading til the early hours of the morning.

Thanks to everyone else who helped out as well.

- Have fun.

Looking for work.

Journal Category

I found this site through a comment left on the ScreenPlay blog on The Age website.

Anyway, I guess I'll do the mandatory "about myself" here.
I finished studying my Games Technology course at La Trobe at the end of last year.
The day I finished I was offered a casual job writing web code for a company
(not that I'd really written much web code before...)
I finished with that job a month ago today. Now I'm looking to get into games.

I did study to make games after all...

I'm finding it hard to even get a foot in anywhere though.
The best luck I've had is when I've applied for jobs directly through the companies themselves
(recruitment agencies really suck).
But when I say luck, I mean I get a reply email saying:
"We'll forward this off to the appropriate department." or something similar.

My biggest hinderance would be the lack of connections (read: no connections) I have within games companies.
Another one would be that I don't think my programs are polished enough to really generate that much interest.

I know I have the skills necessary.
I just need a foot in the door to show someone.

The images I've added are from the game I developed last year called NET Assault.

- Have Fun.

slow, basic progress

Journal Category

nothing that fancy to show&tell, just openGl rendering in a window, some winGUI debug text on top, some lights, boxes, a display list unit sphere, and a arbitary piece of geometry called out as a plane with a texture on it. some of the things behind the scens are more interesting, registing custom winclass, icon from tga, cursor from tga, code interface abstracted from dealing with message loop or opengl commands (the main application has just asked for a window, some boxes, some debug triangles and lines, a sphere and defined a piece of geometry as static and requested it rendered with a texture...)

the usual first steps...

and here is the current task list, numbers are rough hour estimates which are know to explode...

todo
texture alias 2
material 8
spline test 4
skinning test 4
world system
lights 8
geometry 8
scribe level (load, human write?) 8
animation 8
collision 8
dynamic object 8
game object 8
move sphere 4
trigger 4
camera 8
export max (build collada for max5?) 16
character 16

just finishing up a dirtly little texture alias (pack images onto one big texture), attempt to save texture switching but im doing it pretty low tech....

will try to update this blog as the project continues (though now i have input and camera, i should resurect the recent attempt at a real time raytracer, though on my 5year old computer at home, the fps was looking a bit slow.... anyway, will see what happens

Submitted by griever on Tue, 29/07/08 - 1:16 PMPermalink

This looks good so far.
Are you using vertex shaders on the objects?
How much experience have you had?

Computational Maths for Dummies series #2

Journal Category

Computational Maths for Dummies pt 2

Well, here is the next article in the series, it's a hefty one! Covers a different method for solving the same equation, however it lays the foundation for the next couple of articles which will be more implementation oriented.

It might change a little over the next couple of days as I edit it somewhat, but it's 90% done.

Any feedback, fire away people !

- Stephen

Back at it again

Journal Category

Well, it has been AGES since I last did any hobby stuff, but in my spare time I have been reading columns about game engines and really finding it interesting so here I am, AGAIN!!!
This is the first version of an Graphics Engine that I'm putting together, more of a proof of concept.

Update: Have added billboarding to this project as well as increased the size of the height map that can be read in. It now splits the terrain into chunks and renders each separately. Next task is to implement LOD

Update: Fixed a couple of glitches with sky box edges and the chunks were not being built correctly. Added a more advanced shader for the water (The water is not using a texture, this is being made in the Shader),

Update 26/8/08: Added Frustum Culling

Update 2/9/08: Pretty much done with this project now. I have learned a lot so I am going to uses this to better define an engine that I can use to make other stuff (Actually implement game mechanics).

Submitted by StephenWade on Fri, 11/07/08 - 5:13 PMPermalink

Any details about where you'd like to go with it, what things you are looking at trying and testing etc?

Always good to have actually got something happening though - i find it so easy to get bogged down with big plans and end up achieving 1% of what I have in mind.

Submitted by Manix on Thu, 24/07/08 - 11:48 AMPermalink

I basically want to develop something that I can use as a base to develop advanced concepts. At the moment I'm looking at different LOD algorithms (ROAM, Geomipmapping) that I can use.
Also, want to add a bit of scripting to it so that I can make a nice looking demo.
At worst, I'm learning a lot from it (the hard way)

Computational Maths for Dummies series

Journal Category

Computational mathematics is not mathematics as you know it! As I have learnt, you don't need to know every mathematics trick in the book to start using this, and you can take some of these ideas and start approximating a lot of physical phenomena.

This is a small work-through of how to model a diffusive process using a very simple computer code. It purposely doesn't cover some of the finer points, but it's a good start for those who maybe have always wanted to include different, interesting physical effects in their code but have been scared of the mathematics behind it.

I will add more to the series, hopefully allowing people to start feeling equipped to use more and more computational mathematics.

Computational Maths for Dummies 1

Submitted by Anonymous (not verified) on Thu, 12/02/09 - 7:16 AMPermalink

Well thanks much for such a wonderful ebook, I'd really help me in getting over my maths screw up thing, anyways, i am an engineering student and I find maths quite tough could you kindly tell me where can I find an ebook which goes by the name "Engineering maths for dummies" or just basic engineering brain massage. Thanks.

Submitted by StephenWade on Thu, 12/02/09 - 12:22 PMPermalink

Hmm - difficult question. I think what you need is not so much to look for a book that makes engineering mathematics accessible to dummies, you need to start thinking that you are actually smart enough to work it all out (i.e. not a dummy). I guess that still leaves you with the problem of finding all the resources to further your understanding - hence your original question.

It depends what level of maths you are finding the most challenging. Developing an understanding of the first year mathematics is different from the second year mathematics which has a more applied feel (in engineering at least), and third year and so on.

Assuming you are at university, my bestest advice - is to work hard at each problem - get stuck - then speak to lecturers or tutors (if any are provided by the university). I tend to find that textbooks for engineering mathematics are really laborious to read, I've never found one that teaches mathematics in a concise readable, enjoyable fashion - and I've pawed through quite a few.

Sorry to be so useless for ya :(

In reply to by Anonymous (not verified)

Submitted by Anonymous (not verified) on Mon, 01/06/09 - 5:30 PMPermalink

The ebooks aren't really meant to match the print book (since they need to "reflow" for different screen sizes - http://www.ebook-search-queen.com/ ), though if you view the PDF version in Adobe Reader it will match the print version.