Archive

Archive for February, 2009

Ganbatte Engine Progress Report 1

February 23, 2009 Jendrik Illner Leave a comment

After a long time it’s finally time again to write about the great progress I made with the development of my Engine. As written in some post before I’m working on an Engine called Ganbatte Engine.

Ganbatte is an Japanese word and means something like “do your best”, that’s exactly what I’m trying with this really large, long-term project.

But now lets talk about the technical site of the project.

image

As you can see from the diagram above the project is quite complex right now.

The GanbatteEngine instance contains the PluginManager. It’s up to the Plugin Manager to load the implementation of the different system at runtime. The [..]CoreSystems define just the interfaces to use the functionality but doesn’t contains the actual functionality.

The Implementation gets loaded at runtime. Everything in the diagram shown in blue is the actual implementation of the CoreSystem it belongs to. Because of the way I choose to organize it’s easy to change the Implementation or add new System without the need to Recompile the engine which is just using the Interface which are defined in the [..]CoreSystem.

What is done?

That’s a good question and the most important.

Everything you can see in the diagram is actually implemented. Only the GraphicsSystem is in Progress in the moment.

The pluginSystem is the current core of the engine, because from the begging on my plan was to make the Engine less aware of the actual implementation of the systems.
In think this decision and the time I spend to implement the system and the abstraction will pay back at some point. Especially when developing a game based on the engine I always have the possibility to add different implementations for the UnitTests I’m doing. This makes it possible to use an empty GraphicsSystem so UnitTests can run actual game code without using GPU resources and the need to change any implementation code.

D3D11 Graphics System

As you can see from the picture below the GraphicsSystem is coming along quite nicely. The GraphicsSystem is implemented in D3D11, this means it’s running on TP (Technical Preview) software. D3D11 isn’t finally yet, because of this I have to implement a lot on my own, for example it not yet contains an Effect Framework, so I had to implement one on my own. This is the first time I have worked without the D3DX Effect Framework and now I know how great the Effect Framework is. It’s so much work to to write an Effect Framework. My system is quite simple because I only plan to use my effect framework until the D3DX Effect Framework for D3D11 gets released.

I currently doesn’t support the dynamic linkage feature of D3D11, sine this is dependent on the Hardware support and as we all now there is no D3D11 Hardware normal persons can buy. [at the moment]

Implemented are the following Features. I have support for the EffectFramework, Vertex- and Index- and Constant Buffers.

clip_image001clip_image001[1]

Win32 Window System

The Window System is complete and ready.

Input System

The Core part of the InputSystem is ready. As the System itself is divided in modules, every InputProvider. A InputProvider is responsible to query the States from the different InputDevices. Actually only one InputProvider is implemented, a DirectInput based Provider for Keyboard Input.

Log System

Currently only a very simple Log System is implemented. In some time I will replace it with a new threadsafe implementation but for the moment it’s enough.

ContentManager

The ContentManager Core System is implemented and two ContentLoaders are implemented. The ContentLoader are responsible for loading the file of a specific type. The decision which ContentLoader should be used is based on the file Extension. Every ContentLoader as to tell which extension it supports.

The implemented ContentLoaders are a FxLoader, it is responsible for loading Shaders from .fx files.
The DDSLoader task is to load DDS texture from the file.

Résumé

A lot is already done but much more is coming.
Some work has to go those “Low-Level” components before I can start implementing High-Level Components based on them. (SceneManager, Lightning-Systems, Shader-Management, Mesh-Support …. just to name some that have to deal with the Graphics portion of the engine)

Also missing is complete support for Audio which has to be added some time.

So a lot of work and time will be spend on this project in the future.

Categories: D3D11, Ganbatte Engine

Tips for Visual Studio 2008 Solution Configuration (C++)

February 6, 2009 Jendrik Illner 1 comment

Tip 1: Use relative paths instead of absolute ones.

When defining an include path in Visual Studio by default an absolute path will be used. So take the time and define the relative path.

Have a look at the different macros available to make your life easier at http://msdn.microsoft.com/en-us/library/c02as0cs.aspx

Also have a look at the macro menu showing you what each path will be exactly. This menu can always be accessed when a path gets defined in the properties of a project.

image

 

Tip 2:  Take care that project properties are saved for all platforms and configurations.

Visual Studio allows a solution to build for a lot of platforms and configurations, just take a small example:

  1. Win32 Debug
  2. Win32 Release
  3. x64 Debug
  4. x64 Release

These platform + configuration combinations are very common. So you got already 4 different combinations you have to define the the directories and dependencies for.

So take this example a step further you have lets say 10 projects so you have manage combinations * project = numberOfConfigurationsToManager. This results in  40(!) configurations to take care of.

So always try to configure your projects using [All Platforms] + [All Configurations]. Take at the pictures below to see where you can define those.

configuration1 all_platforms all_configurations

 

Tip 3: When a new project gets added to a Solution it will not contain non default platforms or configurations. Always remember to add them to the project directly after you added it to the solution.

Categories: Visual Studio, all Tags: ,