I figured out an easy way to save animated GIFs from the Siftulator! Here are some nice ones of Squaresville, the puzzle platforming game I’m developing. More technical info about how my method works after the jump.
This was my 5th Ludum Dare, I was well prepared with a beefed up Frank Engine, my open sourced game engine that I’ve used for previous Dares. During the warm-up weekend I added some nice tile sheet support so I was planning to make a pixel art game to test out that tech. I ended up throwing that idea out the window to go with a cleaner un-textured look. I was able to use a debug display for the lighting system to create the unique visual aesthetic. Looking back I would have done a few things differently but overall I’m satisfied with the final result.
Creating animated GIFs is a great way to show your game in motion without requiring viewers to click on anything. I was having a few issues with both file size and image artifacts. Here’s what I learned about how to make better animated GIFs for when you want to put in a little more effort to make it look as good as possible.
“(R,G,B)” is a minimalist adventure game I made for Ludum Dare 26. The theme was “Minimalism”. My goal was to experiment with pure color values and explore the flat 2D space while keeping the game itself very simple. It scored 42 overall out of 1610 entries and also received 10th in the graphics category! While not my highest overall it is my first time breaking the top 10 in any category so that’s pretty cool.
Hash maps are used to store a mapping from one thing to another. In videogames they can be used to safely keep handles to objects that could be destroyed at any time. A unique handle is assigned to each game object and mapped to it’s pointer via a hash map. We can keep track of objects using handles instead of pointers so when an object is destroyed it doesn’t have to notify anyone else, just removing it’s handle from the hash map is enough. This is more or less the same method we’ve used on many of the industry titles I worked on (Starhawk, Red Faction, etc). The downside is of course is a longer look-up time, but I’ve found with proper engineering it’s negligible.
Perhaps a thought experiment can better help explain this aspect of stuttering. I’ll start with an analogy for triple buffering to show how can we trade latency for the ability to smooth out the occasional long frame. We will build on that to show how measured clock time will always fluctuate between frames and how it can be corrected for.
Squaresville is an open world puzzle platformer for Sifteo cubes that I developed for the EGP Sifteo competition. This was a major challenge both optimizing it to run smoothly and also make the design fun to play under extreme limitations. I am very happy with the results, it may be the best game I’ve ever made actually. I hope that players will enjoy it because it’s somewhat confusing but I have added many new features to help with that.
Every game needs some kind of timers to control gameplay related events. A timer works kind of like a stop watch in real life. There are different ways to keep track of time, this method some nice advantages that will make your life easier!
This months experimental gameplay project was all about making games for Sifteo Cubes. So far I’ve released 2 prototypes, Peong and Twisteo which gave me a good sense of how to leverage the cubes unique capabilities. For my final concept I wanted to really push the limits of what was possible and take it to the next level. Maybe I went a little overboard but honestly I was just having too much fun.
Sifteo cubes are awesome. They are awesome and they are slow. The simple 16×16 cellular automata smoke effect Peong uses was dragging my framerate to the ground. It’s just a 16×16 matrix but the update was eating the bulk of my framerate. I wanted to see how high I could push the fps with some optimization. I finally got it running at a solid 60Hz on all 3 screens during gameplay but this is all running in an emulator so it’s hard to say how it will look on actual hardware. The emulator reports that the screens themselves are refreshing at a maximum of around 35Hz so that may be the limiting factor.