Wednesday, January 18, 2006

Angry, Drunken Dwarves


I packaged up Joe Wreschnigs Angry, Drunken Dwarves for windows today. Using py2exe and the NSIS installer.

You can download it here:
http://rene.f0o.com/~rene/angrydd_win_1_1.exe


If you play it please leave a comment on my blog.

update: it looks like piman has put the .exe on his page now.

Sunday, January 15, 2006

What I've been doing?



A few interesting game related things.

I have begun doing a series of pixel art tutorials in order to make my pixel art skills better. The result is this face. The face has been blown up 2x to make it easier to see. The idea is to do some pixel art tutorials every week this year. When I am learning something I like to do it by doing a small project. So my pixel art learning project is going to be to update my bleten game. Bleten was a game I made for a 48 hour game dev competition(using python and pygame to code of course). Due to lack of time(and poor pixel-fu) most of the pixel artwork in it is pretty average. Including some stick-sheep.

Also game related, I am working on a milkshape character animation library written in C. I have converted it from some C++ code I had lying around. The conversion from C++ to C code is in order to make it easier to port, make it easier to use as a library, to simplify it, and to reduce code size. I will be wrapping it up with python bindings once done. It should weigh in at 10-20KB once finished.

The current C++ cal3d library I use for character animation I am having a few problems with. Firstly when I update milkshape the exporter needs to be recompiled. Also I need to export models, I can not read directly from the milkshape files. Another problem is that the cal3d library in the last few versions has been using more template features. Which are anoying to use from python. Finally it is quite large. All up(including the python bindings) cal3d weighs in at about 500KB. This is about 1/10th the total size of a 5MB game. 5MB being the magic size small enough for modem users. Another reason for the change is so that I can optimize the character animation code for my needs. Cal3d is quite large, and I have found it hard to optimize. I want to be able to cache frames to speed up playback, as well as to change data types to suit the models I use. I also want to support some features that cal3d does not. Like scaling in animations, and only animating certain bones. Eg only animating the hand with a hand animation.

I am going to wrap the C animation library up with the ctypes wrapper. Hopefully pyopengl will finish its transition to ctypes as well, so that I can save some more space with the reduced size of the pyopengl wrappers.

Pygame patches have also been going in. Someone asked about when a new release would come out... maybe in a couple of months. The only feature I want to add is per pixel collision detection. Also need to expose some new SDL functionality from the last SDL release. There have been enough bug fixes to make it worthwhile to make a release.

For web related things, I have been working on a few sites in php for work. A new version of the antipoda design site(unreleased yet), as well as some improvments to an existing site www.nicholsoncartoons.com.au I have also been doing some more things on www.pretendpaper.com using python.

Dane has mostly completed a new look for the site. Very similar to the old site, but lighter with less dark lines. It makes pretendpaper somewhat cleaner. The new design should come online in the next month I reckon. Hopefully at the same time I finish a new set of changes.

These new changes include new edit screens. I have just started changing the edit screens around. During so I ran into problems with the session implementation that I use. I need to change the session code around to support multiple readers and writers better. The session bugs pretty much stopped me in my tracks.
*Update:* I hacked on the session code, adding locks for each session rather than for the whole lot. The session code was designed for one request per session owner, not multiple ones. I also made it a memory based session that stores its data occasionally to disk(and on shutdown).