Keystone Game Engine
The objective is to create a feature rich framework / engine that I can use to rapidly develop games in multiple genre’s. The API’s I will be using are listed below.
A little history…
The first engine I started to make… well lets just say, crashed and burned. I realized after a bit of self evaluation and brutal honesty that from the very beginning, the project was doomed because of an unrealistic approach to the project. Unlike creating a game, where you know what you want to do and each task has a purpose, the engine did not. It was mired in hopeful functionality that may or may not be needed sometime in the future. Because of this, the design became very cluttered and I found myself stuck before the project started moving.
I wracked my brain to figure out why because I have completed several games and each with very little trouble. Why was it I couldn’t wrap my brain around this problem? I realized that I was looking at the problem from the wrong direction. My problem was, the most basic problem in programming. I had not truly defined the “the” problem was that I was trying to solve. Sure, I knew that I wanted to create an engine but to what end I didn’t not really consider.
So after a few months of thinking and reading up on engine architecture I found the solution (99% sure) to my problem a pretty straight forward and simple one. Instead of putting the proverbial cart before the horse, I have come to the conclusion that I can not solve a problem if there isn’t one.
The solution! Design a series of progressively more complicated games and encapsulate the code into the framework. At some point, the framework will become the engine. As they say, take care of the small problems and the big ones go away all by themselves.
Keystone Game Engine (KGE)
Developers: Steven, Jevar
The KGE is a lightweight game engine that is encapsulated within a DLL for easy version incrementing and maintenance. The concept of placing the engine within a DLL is not a new one and the utility gained is important to the life of the engine. First, backwards compatibility is paramount. By updating the DLL, all existing games will be able to use the updated engine without altering a single line of game code. Code that will be depreciated will go through 2 major update cycles before being stripped from the code base.
The engine is not focused on the “crossplatform” buzz words that have been becoming more popular. This is because, we can’t be all things to all people, and because Microsoft still maintains a significant lead in the OS battles. But mostly because I don’t see the other OS’s as viable solutions for selling software. The linux community is full of open-source zealots that don’t particularly feel they should ever pay for software and Mac… well, Mac is just insignificant.
The subsystems are stand alone systems that can be used in part or in total from the engine. The subsystems are:
-
Core - Timers, and math classes(vector and matrix) implemented
Video - basic functionality for both DirectGraphics and OpenGL
Audio - working
Input - not started
Physics - not started
Networking - not started
Scripting - not started
KGE Main Library - This is a seperate library from the engine and is optional. When used, the developer can use the int main() instead of WinMain()
Game List
Pong: Basic input, animation, scripting, and logic.
Breakout: Collision detection.
Falling Block: Timers.
Maze: Enemy A.I.
Board Game: GUI
API’s
DirectX: http://msdn.microsoft.com/en-us/directx/default.aspx
OpenGL: http://www.opengl.org/
OpenAL: http://connect.creativelabs.com/openal/default.aspx
Scripting
Currently considering creating custom scripts to handle basic functions needed. If we decide to use a prepackaged script we will consider:
GameMonkey Script: http://www.somedude.net/gamemonkey/
Tools
Microsoft Visual C++ Express 2008: http://www.microsoft.com/express/vc/
Microsoft Visual Basic Express 2008: http://www.microsoft.com/express/vb/Default.aspx
TortiseSVN (subversion source control): http://tortoisesvn.tigris.org/
NSIS Installer: http://nsis.sourceforge.net/Main_Page
GIMP: http://www.gimp.org/