Things i've made

Looking for more? See a list of everything i've made.

Wednesday, February 11, 2015

Stunts car models in Blend

So, its been a while since I've worked on my stunts remake, but not too long ago I when on a blend rampage and created the models for a bunch of the original cars.

Learning to use blend was something I always wanted to try, but its difference from 3DStudioMAX and my lack of a project kept me working on other things.

I'll let the screenshots talk for themselves. Bonus points if you can guess which cars these are.

Thursday, May 23, 2013

Island of Secrets QBasic port

When I was a kid, my brother had these books with code listings in them, that once typed into the ol' TRS-80, yielded an adventure game. The one that stuck in my mind most is Island of Secrets published by Usborne. This is a basic text adventure game in a fantasy world filled with danger.

I did play the game a few times when I was a kid, but I was too young to get the hang of it and make any real progress.

I recently remembered the book and found a few copies of it for sale. Not wanting to type in the source code, I also found some very old archives containing the complete listing.

I didn't really want to run a TRS-80 emulator or any other just to play one game, so I thought I would see if there was anything linux that would work with this old BASIC code. The best advice I could find after searching was to use QBasic under dosbox, which kinda violated my no-emulators goal, but I already had dosbox installed so it was a go.

QBasic didn't like the code as-is, so I patched it to come into line with newer methods of programming.


I'll make the patch available next time I am with the code.

Wednesday, February 13, 2013

Furniture Frenzy for PC

I recently rediscovered a mobile phone game I wrote some years back and seeing it again reminded me how much time I once spent working on making my own games. So, I took it upon myself to bash together a quick reimplementation of furniture frenzy for the PC.

Level 4 from furniture frenzy
Since I had the original game, I was able to salvage the image assets and use them directly. Unfortunately, the source code was long lost, so I needed to write it from scratch. I wanted to remain as close to the original as possible, just adding some minor features, still keeping it very simple. I ended up adding a high score system and tracking of the time it takes you to solve each level.

All up, the game took about a day to write. This time, I'm making the game even more free so that the source code is never lost again. Enjoy!

See Also:
Side note: Rush Hour is owned by thinkfun - obtain a license if you intend on doing anything with their ideas. Consider this source code as educational material.

    Wednesday, January 23, 2013

    Porting Torque3d to linux

    Torque3d is a game engine published by GarageGames. Recently they started a campaign to have the engine ported to Linux . Seeing this, I wondered how difficult it would be to perform the port. Knowing a bit about game engines myself, I thought I would see how difficult it would be

    In not too long, I was able to have most of the base engine running. No tools, no editors, etc, just the basic game engine. I did hack round some bits, just to try and see a result. Obviously I didn't do any real QA and I really only tackled the easy 85% of the code and left the rest, so the remainder would take a lot longer.

    Will be good to see their porting project complete and the full game dev environment available. More native linux games on the way...

    Old-School J2ME Game

    In what seems like a previous life, I developed some J2ME games and applications. I recently rediscovered one of the games I worked on sifting through old backups looking for useful code. The game is called Furniture Frenzy which is in the same style as Rush Hour or similar move-box-to-exit navigation games.

    The objective of the game is complete a collection of stages in which a blue coffee table is incontinently stuck inside a room full of other furniture.  Furniture can only be pushed or pulled on its shortest side, not pushed along on its longest side. This ensures that you will have to repeatedly move furniture around until you are able to free the coffee table.

    Typical Furniture Frenzy stage. The hand is used to move furniture while trying to get the blue table out the exit.

    Simple stage. Move the piano up, book case to the right, sofa, down, then blue table out the exit.

    More complicated stage.
    I always offered this game as a free download, but the website I was hosting it on went under, or I should say, I took it down. So, here it is, back again for your retro enjoyment!

    FurnitureFrenzy.jar Download

    iPhone/Android port an option ?

    Update:  Found a site that was hosting my FurnitureFrenzy along with the original description I wrote for it - historic.

    Monday, July 30, 2012

    OpenGL and Freetype

    As part of a project I have been working on, I have been upgrading a font system in an OpenGL application. I decided that the old glx/wgl based system could be moved to use freetype and at the same time improve the visual appearance. You see, glx/wgl allow you to use fonts but they are very strict about their use and only give you 1-bit images - sad. Using freetype allows you to have smooth font edges and a lot more flexibility with newer OpenGL pipelines.

    To begin with, there are a lot of tutorials out there on how to use freetype with OpenGL so I won't be covering what they already have, instead I'll review what they did and provide some insight on an improved implementation:
    (Details are for OpenGL < 3.0, determine for yourself what it correct for your target version)


    Texture Format

    The first common shortcoming of OpenGL font code is to use a texture format that requires excessive processing. Some implementations/tutorials will say to use GL_RGBA as the internal format and GL_INTENSITY_ALPHA for the data format which requires some shuffling of data from freetype to OpenGL. The correct type to use is GL_ALPHA* for internal and GL_ALPHA for the data format.

    Using GL_INTENSITY or GL_LUMINANCE will appear to work correctly for black/white text and backgrounds but when you have colored text you will notice that the edges of each glyph are a little dark. This is because the color value for each pixel in the font texture should be (1.0, 1.0, 1.0) and instead you have color = alpha. When you alpha blend, color = alpha will darken the color as the alpha goes toward zero - not what you were after.


    When determining how many pixels are between the start of each character you should include x-advance, glyph bitmap left positioning, and kerning. Many implementations only use one of these factors and end up with text with spacing that just doesn't seem right.



    Freetype supports unicode glyphs well. Rendering these glyphs to a texture for later use that isn't big enough to hold unicode glyphs will limit you use of text. Adding even simple unicode support is a great way to increase the global appeal of your application.


    Sub-optimal Rendering

    To get good performance when rendering, I like to do a sort of batch processing for my fonts and store the quads for each font I use for a single frame in an array until I am done with all font rendering and then call glDrawArrays over the buffer. Using multiple glTranslate, glBegin, etc calls is terrible for performance. Even though font rendering may only account for a small percentage of your screen rendering time, it should be negligible if you are aiming for a high frame rate.

    Tuesday, April 10, 2012

    Just a short note about the reprap I was playing with the other day at the Gold Coast Tech Space. Pretty awesome for doing prototype work at home and quite affordable. I was told that the total price to construct your own reprap came out to about $350-400 for this one.

    Check out the official site for more details:
    reprap awaiting its next 3d printing job