Archive for December, 2010

Pick-o-Mania puzzle game in alpha

December 30, 2010

Hope you all had a great Christmas, and I’m looking foward to next year. I’ve already managed to roll out my first game this year, just before the year is over. It’s Pick-o-Mania, a straightforward puzzle game on matching colored pieces. It’s still in an early alpha stage for now…there’s no scoring system and menus aren’t in place yet. But most of the interaction is there, and I want to have it tested to see if it works properly (no crashes) with other people. Aside from what I just mentioned, some other game rules would be added, and graphics will surely be different in the final product.

This game was made on my graphics engine, which I will continue to develop as I learn more from this experience. Some of the features that the game uses from the engine are:
– Incremental loading (3D models are loaded as smaller chunks to keep a consistent framerate in loading screens)
– Entity handling and smooth movements of 3D models
– Per-instance culling (although it’s barely used in a game like this)
– Support multiple shader effects
– Color picking system (entities have unique ‘invisible’ color IDs that get detected when the mouse clicks on them)

Pick-o-Mania puzzle game

Wanna try it out? Download it here: http://www.box.net/shared/2ozqm6rf2m

Simply click on the pieces that match two or more of the same color to remove them from the board. In the play screen, press “enter” to go back to the starting screen, and load the game again with a different set of pieces.

It’s for Windows only, and uses DirectX/Direct3D for graphics. So you may want need to download the Visual C++ 2008 runtime library, but I didn’t include it in order to save download time for those that already have it.

Hardware instancing in effect

December 18, 2010

Right now I am just testing the efficiency of the rendering code with thousands of instanced objects, and half of them being updated individually in rotation and position in each frame. There are over 770,000 polygons in the scene. At 854 x 480 resolution, my ATI HD 4650 card runs it at a reasonable 87 frames per second with all objects in view.

Currently, the engine is capable of hardware instancing, and frustum culling per instance. Which means only renders objects that fall into the camera’s view. No further scene optimization has been done yet.

In a future post I will go more in-depth on the components the engine currently uses. Meanwhile here’s a cool picture showing part of a scene of 4000 instanced objects.

Culling test

 

Quick summary of engine in progress

December 18, 2010

This game engine in progress is based on a few things I’ve worked on before:

– State management framework
– Various small Direct3D programs

The engine uses SDL for windowing and input, and Direct3D for graphics.

The state management framework is a simple way to keep track of discrete application states. Initially it was made to manage a stack of multiple states, but I found it unnecessary for my needs and simplified it to just have one state in memory and swap itand it has been made to only handle one at a time. It can be API independent, but I’ve currently written it to work with SDL, for initializing and shutdown, and for the GameState abstract class in handling input during frame updates.

 

Ah, a new start

December 18, 2010

I am reviving this blog for game development purposes. From now on, The 32 Bit Shell will be a game development blog until I move to another blog or change its name. And for starters I don’t like the name much anymore, but it will stay until I am set on something better…

What am I starting out with for now? As you may notice from posts a few years ago, I was exploring “rolling marble” games. I consider them a great blend of platforming action and puzzles. Well for a couple months now I have been working on a game framework to make one just like that.

Along the way, however, I may release other, more basic, games to tack on more progress and experience with making games. Developers too often get burned out by working on the same projects and sticking with the same goals. Making other simple games would be a good way to show progress of my coding and design process with game engines. The next post will be going into more detail in the actual start and progress so far with my work.