Canven
Once again I'm writting about something I just started working on and why did this happen? Because I started reading another book on my favorite subject which is game programming. This is how Canven was started and the want to enhance my skills as a game engine developer. Working on Canven has been a lot of fun and the last couple of sessions has been more into the realm of game programming then it has been in game engine development.
The different stages:
Stage one when I started working on this engine was to start building a simple and very basic physics collision engine. Once the graphics system was completed and the Entity system functional the first thing I did was put a simple shoot a ball into the air and let gravity and collisions do the rest of the work. Even adding in the ability to let the collisions add to a score didn't make this simulation a great game. So this launched the next stage.
State two I started to work on building a simple space shooter game that has asteroids falling from the sky. The first part of this stage I wrote a ton of comments for the code so that those who were following my development could see a real game design document being created to drive the game development process. In the game design I wanted to add several special effects like particles, lasers, and other type of game features that would be needed to drive the game engine. This stage is still under development and I feel it has gone really far to show how much fun game development can be. Even my kids are starting to take interest in the game and want to play it. I have a long way to go before I could even consider this a game worthy of playing but for those interested you can always pull the source code from by GitHub reposity.
There are still some issues I need to figure out how to handle. Right now if more then a couple hundred objects get added to the game world the physics engine will slow down and take to long to process. I tried to break the physics loop into a different loop so that there are two threads running at all times. We have the graphics thread driven by the request animation frame feature of HTML 5. The physics engine tried to run at a higher resolution so collisions will be detected and not get as many pass through collision misses.
The different stages:
Stage one when I started working on this engine was to start building a simple and very basic physics collision engine. Once the graphics system was completed and the Entity system functional the first thing I did was put a simple shoot a ball into the air and let gravity and collisions do the rest of the work. Even adding in the ability to let the collisions add to a score didn't make this simulation a great game. So this launched the next stage.
State two I started to work on building a simple space shooter game that has asteroids falling from the sky. The first part of this stage I wrote a ton of comments for the code so that those who were following my development could see a real game design document being created to drive the game development process. In the game design I wanted to add several special effects like particles, lasers, and other type of game features that would be needed to drive the game engine. This stage is still under development and I feel it has gone really far to show how much fun game development can be. Even my kids are starting to take interest in the game and want to play it. I have a long way to go before I could even consider this a game worthy of playing but for those interested you can always pull the source code from by GitHub reposity.
There are still some issues I need to figure out how to handle. Right now if more then a couple hundred objects get added to the game world the physics engine will slow down and take to long to process. I tried to break the physics loop into a different loop so that there are two threads running at all times. We have the graphics thread driven by the request animation frame feature of HTML 5. The physics engine tried to run at a higher resolution so collisions will be detected and not get as many pass through collision misses.