I’m still alive.

Posted in Uncategorized on November 6, 2009 by Aengus

Hey just letting all you readers out there know that I apologize for not updating in a while. After my last post I had sort of started losing motivation about actually developing my Game Engine (I am definitely better about researching stuff than not doing anything about it : p) and writing on the blog but from here on out I will try and remember to post something every week even if it is just about the fact that I have been having a blank as to what to do. : )

Quite a bit has been happening in my life lately. My birthday was a little while after my last post, I started doing a martial art called KaJuKenBo(Karate-Judo/Jujitsu-Kenpo-Boxing), I became a lighting design apprentice with a teen acting program in my area, I almost completely lost interest in OS design : p,  Unity indie became free and I got that, I started a MMO GDD,I developed an interest in mmo architecture and started looking into web server software like Glassfish or Tomcat, I just had an amazing Halloween and I am annoyed because day-after-tomorrow I have to take the SAT : (. pant pant pant

Like I said I will try and keep everyone better posted from here on out and after I dig a little deeper into mmo architecture and web servers I will try and make a tutorial on using a web server with Unity.

Guide to starting a game engine. Part 2.

Posted in Game Engine on August 1, 2009 by Aengus

Welcome back to my series of posts on starting a game engine. In part 2 i will go over setting up a visual studio solution with a dll engine project and a console application for Unit Tests.

First of all I am using UnitTest++ for my unit testing framework. So you can get that here(along with a tutorial to get you started), or you can try to port the  guide to the framework of your choosing, or you can skip unit testing all together and just make the console application run like a normal app. Unzip UnitTest++ to the directory of your choosing, load up the build solution, and build it. In the UnitTest++ debug directory there should now be a file called UnitTest++.vsnet2005.lib.

Step 1. Now that that is done you can create the projects. Create an empty dll project(this will be the engine so name it correctly) and select create directory for solution. To the same solution add a empty console application(for either the unit tests or just as a test game). Open up the directory where the dll project is located. Add three folders: src, include, and lib. Open the directory where the console application is located. Add a src and an include folder.  Now open visual studio again and to the dll project add EngineRoot.cpp and EngineRoot.h(make sure that you add the .cpp to the src folder and the .h to the include folder). To the console app add either Tests.h/.cpp or Main.h/.cpp(same as before with the folders).

If this will be a Unit Test project also add a 3rd_party folder in the console application directory alongside src and include, to that 3rd_party folder add a include and lib folder. Now go to the location where you built UnitTest++ and copy the .lib file from the Debug folder to the 3rd_party lib folder, now copy the entire contents of the UnitTest++ src directory the the 3rd_party include folder.

Step 2. Time to setup both projects settings. First to setup the dll project settings. In Configuration Properties->General set both Output Directory and Intermediate Directory to _Debug for the debug build and _Release for the release build. In Configuration Properties->C/C++->General add include\ to Additional Include Directories. Under Linker->General set Output File to ..\_Build\$(OutDir)\$(ProjectName).dll.

Now time to setup the console application. To start right click on the console app and select Set as Startup project, then go into the console app properties. Under Common Properties->Framework and References press Add New Reference and select the dll project. In Configuration Properties->General set both Output Directory and Intermediate Directory to _Debug for the debug build and _Release for the release build. In Configuration Properties->Debugging set the Environment to PATH=..\_Build\$(OutDir) . Next you will need to go into C/C++->General and under Additional Include Directories add ..\(dll project name)\include;3rd_party\include. Then under Linker->General change Output File to ..\_Build\$(OutDir)\$(ProjectName).exe and Additional Library Directories to 3rd_party\lib. Don’t worry almost finished, now you need to go into Linker->Input and under Additional Dependencies add UnitTest++.vsnet2005.lib. Lastly you will want these tests to automatically run after you build so go to Build Events->Post-Build Event and under Command Line enter $(TargetPath) and under Description enter in a description like Running Unit Tests…

Step 3. Now you should probably test everything out with some prerequisite code. Open up EngineRoot.h and enter in the following code(or equivilant):

#ifndef ENGINE_ROOT_H
#define ENGINE_ROOT_H

class __declspec(dllexport) EngineRoot
{
public:
bool Run(){return true;}
};

#endif

Open up EngineRoot.cpp and enter:

#include "EngineRoot.h"

And then open up Tests.cpp and enter:

#include "UnitTest++.h"
#include "EngineRoot.h"

TEST(HelloUnitTest++)
{
CHECK(true);
}

int main()
{
return UnitTest::RunAllTests();
};

If you build this it should compile and there should be output similar to this in the visual studio output window:

1>Running Unit Tests...
1>Success: 1 tests passed.
1>Test time: 0.00 seconds.

If there are any problems just post a comment and i will try and help.

Thanks for visiting my blog and i hope you are enjoying my guide to starting a game engine. Please give feedback and come again.

PART 1 OF THIS GUIDE.

New guide to getting started on a game engine.

Posted in Game Engine on July 27, 2009 by Aengus

I am starting a guide to making a game engine. Please feel free to check it out and comment on the article here.

Long Time Overdue Post

Posted in Game Engine on July 24, 2009 by Robert

1st_pic

This image has been sitting on my hard drive for a while now. It’s the Blender monkey drawn from a mesh file. I worked on it so that we have something showing on the screen.

For the next couple of weeks, I’ll work on the scene graph. It’s a subject that interests me a lot so I’m very excited about it.

Multi project acquisition syndrom.

Posted in OS Development on July 6, 2009 by Aengus

Has anyone ever had a major problem sticking to a single project? On my recent vacation to California i was bored and wasn’t able to do any developing. But I did have access to the internet every now and then. Because of this combination about a week into the vacation i was bored and decided to check out Operating System development. I started doing some research and was hooked. So basically what i am saying is, expect to see both posts about the game engine as well as my ventures into OS Development and Assembly language from here on out. :)

Guess who’s back.

Posted in Personal on June 30, 2009 by Aengus

My vacation is over. After three long weeks of climbing, hiking, camping, hotels and a awesome day at Great America i am finally home. I plan to try to make up for the lost weeks of posts(bows to you and begs for forgivenis for leaving my poor readers hungry) by going over any of my recent decisions and development updates over the next few days.

Gone to California, be back soon

Posted in Personal on June 8, 2009 by Aengus

Actually for about three weeks. So don’t expect many more updates for a while, because i am heading to Cali for almost a month of fun. Some of the awesome things that i will be doing on this trip include checking out San Francisco, going to Six Flags, fly fishing, hiking, rock climbing, and checking out the sites, towns and cities.

My thoughts on Infamous

Posted in Video Games on June 3, 2009 by Aengus

I recently bought Infamous and one of the first things i have to say is that this must be one of the better purchases i have made for the PS3(along side LBP). This game has a great gameplay system that flows smoothly, gives a lot of freedom, and allows you to fight enemies that actually seem to know what they are doing. I am pretty sure that even after i finish this game i will be starting another character to try different play styles.

At the moment I have an evil character and so far though I really love the moves and the high level of destruction, at least for me the evil deeds are not that satisfying(though i am sure that there are plenty of people out there of a darker mindset that would love the mean things that can be done :P ).

Electricity is a great super power to use for a game because it can be destructive, be useful, and can be recharged from almost anywhere in the city. The types of powers vary from sniping, to bombs, to even having shields. Allowing a large set of possibilities for combination’s and strategy in the fights.

The game character is a guy named Cole who just so happened to previously be into city exploration. Because of this he is skilled at jumping and climbing around on just about anything in the city. This leads to amazing gameplay that has been refined to allow for smooth actions and transitions between movements. The amount of freedom in the city may be familiar if you have played games like Spider Man or Assassins Creed.

The story is amazing! Probably one of the more intense and emotional stories of just about any game i have played, with a few hard decisions to be made that can determine the outcome.

Overall i would highly recommend this game to anyone who likes: free roaming games, insanely awesome super powers, or anyone who wants to have fun. :P

The sourceforge project is now going!

Posted in Game Engine with tags on May 24, 2009 by Aengus

There is now a BMGEngine project on sourceforge.net! A couple days ago i got that setup with a subversion repository so anyone who wants to follow the progress of the project feel free to check out the code and make suggestions here on the blog.

So far I have: Created the base structure for the components and component manager, started on a octree for the Render System and setup the Render System to display a blank window.

And Robert has: created the Graphics Device, started on a mesh loader(code not uploaded yet), and changed the Render System update function to use the Graphics Device to clear the game screen a blue color.

Change of Plans

Posted in Game Engine with tags on May 17, 2009 by Aengus

Quite a bit has happened with the group since the last post and has called for a bit of a change of plans. Yesterday in after a meeting for this other group I am in, one of the members asked if he could be in the group. So after I accepted (you might see a couple of his posts under the name Robert), we decided on a couple things. We decided that we should probably try and recruit one or two more programmers so if you are interested in a non-paying group feel free to apply (for now just comment on this post to apply). We also decided that at least for now we will make the feature list a little bit more realistic. Most of the features will still be here but for now the cross-platform, plug-in manager, and multi-threading are on hold. We will start with a DirectX 10 build using windows features and a dx10 Render System. Here is a little more structured list of the current planned feature set:

REQUIRED

ENGINE:

  • Component based entity system
  • Graphics, Physics, AI, Audio, and Input Systems
  • All Systems are independent
  • Windows operating system support
  • Engine Messaging system that allows the different Systems to communicate
  • State Manager that manages all game states. These game states each have a copy of a component manager that allows it to store it’s objects.

GRAPHICS:

  • Scene Graph
  • Render Queue
  • Octree Culling
  • DirectX 10 support
  • Everything programmable pipeline

PHYSICS:

  • Collision System
  • Wrapper around premaid library(eg. Bullet, Ode, or Newton)

AI:

AUDIO:

INPUT:

  • Mouse and Keyboard input

WISH LIST FEATURES

ENGINE:

  • All Systems multi-threaded
  • Scripting
  • Toolset to support object creation with components
  • Cross-Platform support

GRAPHICS:

  • DirectX 9, DirectX 11 and OpenGL support

PHYSICS:

  • Custom physics library

AI:

AUDIO:

INPUT:

  • Game Controller input
  • Joystick input