Tuesday, March 25, 2008

Circle Man

Finally, spring break is here and I can devote some time to game development!

This semester has me fairly busy with web development, fuzzy inference output analysis, and so on. Which is why I'm excited to start working with Gosu to build some quick PC games. This project is also going to use Erin Catto's Box2D library. If you are not familiar with either of these, you owe it to yourself to take a look. Myself and Mike Daly (who worked with me on the DS homebrew 2d physics project) are the only ones working on this project.

The premise of this game is that you are this stick man stuck in some sort of bubble. You are able to roll it around, and are for some reason in these environments with wall portions ("interactives") that physically alter your movement. As of now, there are four types of interactives:
Bounce - propels the player away from the wall
Magnet - alters gravity to pull player toward wall while against it
Push - keeps the player from touching it
Sticky - player will stick to these, and be able to swing from them to access certain areas
With these, we hope to create an interesting play experience. The goal of the game is to find all of the "keys" (right now I don't care what they are, just that you collect something) to escape from your spherical prison.

With this project, we finally get to use C++ and test our previously inactive knowledge of the language. So far, I've established a simple class hierarchy for our levels, player, walls, and "key" objects. From a brief standpoint, these classes have four main member functions: the constructor, update, render, and destructor. I'm hoping to keep the high level logic very clean, and keep all the actual play logic inside the classes. This entails that the level objects handle any and all wall object logic (all physical operations that do not operate on callbacks, and rendering). There will likely be some helper functions created, and some variants established during the optimization phase of development.

Tuesday, March 4, 2008

the Web, and its desire to be useful

It turns out that this semester is a busy one, leaving me with no time to persue game development (thus far). In the meantime, I might as well document some of my web development.
Currently, I am working at the Center for eResearch here at Mizzou. I am basically an intern hired to develop a video sharing web application for the University that will soon go beta. So far, I've written Ruby scripts making use of ffmpeg to automate encoding of submitted videos into FLV, MPEG, MP3 and iPod compatable MP4 formats, and a fully functional web application to facilitate sharing. Here is a quick rundown of the requirements for this application:

Students and Faculty are allowed access and can be granted administration to channels for upload of videos. Channels are delegated to schools, departments, student groups, major events, among other things. Only through owning or being a contributor to a channel can you upload video. Anyone can register an account to subscribe to channels. A subscription lets you keep up to date with a channel so you know when new videos are uploaded, new events are scheduled and the like.

As far as technical details, I will briefly discuss those here. This project is a Ruby on Rails project, effectively this means that it is a rapid development, rapid prototyping, web 2.0 eager application. The one problem with the use of "rapid" here is that this is my first Rails project, so it has taken me six months to build it up this far. Albeit, I could not have done so much in PHP given my student work schedule (10 hrs/week). Aside from Rails, we are using MySQL and of course the Prototype and Script.aculou.us Javascript libraries as these are included in Rails.