PDA

View Full Version : CAST II Game Engine



Mirage
12-10-2007, 05:23 PM
Hello all!

After two years of development it's almost ready for its first release. :) After some testing and additions to documentation a download link will be available here. It's about a week.

CAST II is a free and open source game engine (not only a graphics one). Currently implemented the core (scene graph, items manager, messaging), renderer (2D/3D), input (DirectInput and WinAPI implementations), collision detector, GUI.
A simple sound module is exists but probably will be totally redesigned.

The key points of the engine:
WYSIWYG world editor - you can easily build levels and adjust item properties. Visible items, resources, light sources, material properties including shaders, etc, can be created and modified in real time. All the engine features are available in the editor.

Compatibility - the engine system requirements are lowest - its material system which is based on techniques approach allows to render the same scene with modern video hardware and with such old hardware as Intel 815 integrated video or Riva TnT.

Cross platform, multi API - currently DirectX 8.1 renderer implemented but the engine is ready to have an OpenGL or DX 9c renderer module. The source code is compatible with Free Pascal Compiler and Linux/MacOS X platforms are planned in the future.

Performance - the engine is designed and written to get high performance. Render states/shader/render target changes are minimized, vertex/index buffers are managed effectively and so on.

There are some predefined visible (and non-visible) item classes which represents planes, circles, [sky]domes, landscapes, imported 3D-meshes, particle systems and so on. The list will expand as development of the engine will continue and also I hope third-party classes will follow.;)

To make a game with CAST II engine you have to create some game-specific classes which implements all the game's logic, create artwork and build levels.

I will be happy to answer your questions.:)

A couple of screens:
Lake scene rendered with GeForce 7600:
http://casteng.com/screens/Lake_GF7600_sm.jpg (http://casteng.com/screens/Lake_GF7600.jpg)
The same scene rendered with Riva TnT2M64:
http://casteng.com/screens/Lake_TnT_sm.jpg (http://casteng.com/screens/Lake_TnT.jpg)

NecroDOME
12-10-2007, 05:39 PM
Nice work.

The design looks a lot like our new engine. It's also object extend-able, fully dll based and can run multi threaded.

Can you tell me a bit how you implemented the extend-able objects?

Do you use shader?

technomage
12-10-2007, 06:21 PM
I second that.

Also the InfinitEngine (http://infinitengine.infinitespace-online.net) I'm working on for InfiniteSpace-online (http://www.infinitespace-online.net) is object/dll based , multi API and cross platform. See allot of us are working on similar stuff

Keep up the good work :D :wink:

NecroDOME
12-10-2007, 06:33 PM
Mine is still only windows-based :P

VilleK
12-10-2007, 07:33 PM
The editor looks very nice! I'll definitely give it a try when it is released.

arthurprs
12-10-2007, 11:40 PM
Waiting for the release, to start learning 3d :)

Mirage
13-10-2007, 12:37 PM
Thanks to all for your interest and the good words.:)


Can you tell me a bit how you implemented the extend-able objects?

Inheritance. All classes are inherited from a base one.


Do you use shader?

A material can contain shaders.
For example, the water and landscape on the first screenshot are rendered with a pixel shader. You can even see its source.:)
The second screenshot is FFP only, of course.

Reiter
13-10-2007, 10:54 PM
Really impressive! Can't wait for the download :).

Under which license this work will be published?

chronozphere
14-10-2007, 08:11 AM
Very nice job.. I'm also working on a DLL based Engine (Mostly for learning purposes) :razz:
Editor looks really impressive.



Inheritance. All classes are inherited from a base one.


Is it really that simple :? The problem is that the code in different DLL's is very seperated. You cannot just pass classes and objects to different modules, because that easily causes AV's because DLL's have their own memory manager. Are you using interfaces, or just a bunch of callbacks?

I really like to know how you got this working, because i'm struggeling with elegant and flexible APP<->DLL communication. Can you describe it with a bit more detail?? :razz:

Good luck with the engine ;)

P.S: just re-read your first post..... so it's going to be open source :D
In that case, i just need to be patient, unless you still like to answer my question.

Mirage
14-10-2007, 09:30 AM
Under which license this work will be published?

Not decided yet. Most likely MPL or LGPL. People should be able to use the engine in commercial projects without opening sources etc.


I really like to know how you got this working, because i'm struggeling with elegant and flexible APP<->DLL communication. Can you describe it with a bit more detail?? :razz:

Sure. No dlls no problems. ;)
You just including all necessary units in your uses clause and have no problems.

To allow the editor handle game-specific classes I wrote a plugin system via borland packages (.bpl). Still have no problems (at least with memory management).

NecroDOME
14-10-2007, 10:33 AM
My engine works also with inheritances. Do you also create those classes dynamically. My engine for example: I have a list of all classes that exists within the engine and create them when loading a map. The class name is it's identifier.

In a dll you can create 1 class and inherent all other classes from that one. Simple as that :)