|Posted on January 24, 2012 at 10:35 PM|
Game programming is difficult. And by that I mean REAL game programming. Not Flash.... not Blender... I mean sitting down and coding a game. Every single game developer deserves our respect for taking on the task. Every aspect of the game involves huge amounts of logic, graphical code (that's the worst) and more. It's hard for most of us to realize how much work a game (especially a true, 3D one) really requires.
I have, am, and will continue to be reminded of this as I continue my own goals in this field. I'll be honest however, Surviving Dead won't be the most beautiful, smooth or well polished game you've ever seen. In fact, it might even qualify as mediocre.
It's my first game, so I don't have high hopes for an outstanding result. That is mostly due to one simple thing:
The game engine
I made the decision when I began development on this game that I wouldn't deal with reading, rendering and manipulating pixel data directly. I felt that I would be setting a task I'm not ready for. What's the trade off? Accuracy, precision and control.
The Surviving Dead engine is based on the 2DX Graphical Task Distribution Engine (GTD). GTD is designed to be high level, simple and easy to implement. It functions by centralizing the task of rendering 2D objects on screen, forcing every Java Object that wants data rendered to implement the Drawable interface and register with the engine. It calls the draw(..) method and passes the centralized Graphics2D object that everything is being rendered upon to be utilized.
Why this engine is good:
-GTD provides a simple, easy-to-manage way of animating, through distributing the render graphics to every object that wants to draw on them.
-It can be used for more than just games. The engine can be chained to any Grahpics2D object, even if it's some arbitrary BufferedImage. It's really easy to use this engine for simple animations, image creation, and structured graphical task execution.
Why this engine is bad:
-While GTD provies a certain amount of centralization with task distribution, it also decentralizes the act of rendering graphics. Every Object is responsible for rendering its own data, internally oblivious to other Objects and making it a lot harder to manipulate things such as lighting/effects.
-GTD is designed as a high level solution to animation/graphical rendering and therefore does not work well with attempting to manipulate individual pixels. The only way this is possible is by creating BufferedImages and manipulating their data, which can take a significant toll on performance.
-The nature of iterating through tasks limits the engine from being able to handle a high volume of tasks or objects that need to be rendered without decreasing frame rate and general program performance.
What can you expect from Surviving Dead? Well... due to the nature of the GTD engine, most of the rendering is done via BufferedImages, which means the most noticeable defficiency you may notice is collision detection. It's far from perfect. I will keep trying to improve it, but it will never be as good as a game that handles graphical data pixel by pixel.
Will the game still be good? I hope so. I will try as hard as I can and leave that for you to decide.