The Drag[en]gine is an free software project with a highly modular structure based on the GLEM System. Its design is similar to an operating system. The entire functionality is provided by Modules comparable to device drivers. The engine itself acts like a system kernel managing modules, resources and abstracting the underlying system. Due to the loose coupling of the modules with the system and other modules it is very easy to exchange or improve them without interfering with the rest of the engine. As a result the modularity extends from the developer to the end user who can now choose the optimal module combination for his personal computer even down to per game setups ( and even while running a game ) if required. Developers do not have to worry anymore about low level concerns keeping them concentrated on their game. In contrary to other engines (including high-end commercial ones) the Drag[en]gine provides true 0-Day portability of games with no extra costs and no troubles neither for the developer nor the end user.

Advantages of the Drag[en]gine

... for the Game Designer:

  • Use your Scripting Language of choice.
  • Hardware is fully abstracted. You only have to know how your chosen Scripting Language works
  • Updating the engine and modules is handled by the respective teams. You only have to worry about updating your game
  • No need to write specific content for specific systems. The users choice of modules takes care of this for you

... for the Module Coder:

  • Play around with individual parts of the engine without disturbing any other part. Test easy and fast new algorithms or features
  • Various debugging features help to debug fast and easy modules even during run-time
  • Loose coupling and high encapsulation yields in a more stable game engine
  • Platform specific code is only handled in modules increasing portability

... for the Customer:

  • Choose the optimal combination of modules for your system. The Drag[en]gine adapts to match your system not the other way 'round!
  • Open standards and free file formats ensure unrestricted and easy modding using free software applications
  • Various Launchers allow you to use the Drag[en]gine for more than just gaming
  • The Crash Recovery System prevents a game from crashing to desktop. While CRS is running change parameters or entire modules and continue your game from where it went out for lunch.

For more information check out the Drag[en]gine Wiki.

Features

Due to the modular nature a fixed list of engine features as other engines provide is not possible since it all depends on the customer's choices. To avoid cluttering the summary find the features list in this article:

Image RSS Feed Latest Screens
Solidity comparison Language Pack Editor Preview Image Font Editor Preview Image
Blog RSS Feed Report abuse Latest News: NPC Simulation and Engine Features

About Epsylon with 2 comments by Dragonlord on Dec 7th, 2014

NPC Simulation and AI

Lots of work has been done in the recent weeks so let's keep it short. Most of it are engine internal modifications required for the NPC simulation system to work as intended but this comes below (techincal, so you can skip it if you want).

The main focus is on a dynamic investigation and this requires the world to keep turning while you are busy snooping around. In particular NPCs (good and bad) are kept simulating while offline (out of player area or even a different game zone). This forces the player to re-think his investigation practices since bad things can go down while you are at the wrong end of the city. The video contains a little bit about this system.

Also included in the video a quick peek at the conversation mock-up system. You might know the typical way to mock-up conversations in a text editor. It goes similar like "A: i'm saying this" and "B: i'm saying that". Using this simple system you can now quickly mock up conversations.

So where is this heading?
What will support if you press that little green button below?

You will be not following a pre-written script as in other detective games,
you are going to take on a criminal mind AI.
That's right.
You are on the trail of an ongoing case and the AI is trying to foil with your investigation while you try to foil with it's plans.

Do you have what it takes to beat the AI?


Indie of the Year Awards

Engine Features

The technical side of the show. Lots of work went into optimizing engine speed especially in physics and collision detection (like down from 300ms to 1ms or below). This took a lot of time including wrestling with Bullet Physics not playing nicely with the kids. What's new in the engine (and shown in the video):

  • Tesselation support using 'height' texture property
  • NavMesh debug display (grid/mesh, face normals, non-matching faces, path-debugging and so forth)
  • Added support to load/save navigation test cases in world editor
  • Improving blender nav-space export scripts
  • Improving navigation path calculation especially over longer distances and across multiple spaces
  • Added configurable navigation space snapping for easier and more robust workflow
  • Paste conversation snippet in text form into conversation editor to quickly mock up conversations (see above)
  • Module versioning (work with multiple module versions on the same installation, for example to safely test module updates/betas or dealing with bugs/incompatibilities)
  • Explosion push type for rig editor
  • Collider constraint breaking
  • Adding support to load/save navigation test files (world editor)
  • Massively improving physics calculation speed in bullet physics module
  • Slowmotion support in the rig editor
  • Optimize animator module animation calculation speed
  • Added bone mass from volume action to rig editor
  • Added select all bones with shapes action to rig editor
  • Adding bone import dialog and improving bone importing
  • Added breaking threshold support to constraints
  • Added navigation blocker support

This has been all a large step forward towards the first release. Still a few things to tackle but this one here had been a larger task to finish. So here the technical video and up until next time.


Media RSS Feed Latest Video
Games
Epsylon

Epsylon Epsylon

Updated 1 week ago TBD Single Player Adventure

Epsylon - The Guardians of Xendron takes the player on a journey to a futuristic world investigating a very special Science-Fiction setup. With a team...

Post comment Comments  (50 - 60 of 88)
Bahl
Bahl Nov 21 2010, 12:43pm says:

I really like the entire approach of this project. I would like to use this technology for an anticipated project, but after reading the homepage and wiki, I understand that it is in a premature development phase. Do you have any sort of project communication like quakenet IRC? The epsilon forum seems to be down.

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Nov 22 2010, 5:35pm replied:

Currently this is done using the ModDB page. The forum is indeed down since the forum software fails to run with the new PostgreSQL server version for some unknown reason (only application on my server right now breaking down on this version). Fixing this forum did not have priority so far but I can try changing this if people want a forum already now.

+1 vote   reply to comment
Bahl
Bahl Nov 26 2010, 12:15pm replied:

Not necessary. I am mostly interested in some technical information concerning how the game logic can be plugged in. there seem to be modules to support dragonscript and two others, but I will probably want to plugg unscripted. that probably means, I'll implement an own 'script' module that implements the game logic, and there I'd be interested in the API.

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Nov 26 2010, 5:04pm replied:

For the game logic you choose a Scripting Module. This choice defines which language you use for your game scripts as well as how the engine is abstracted (ranging from mostly wrapping engine classes all the way to point and click). If you can manage you should choose an existing Scripting Module and start from there. If you want to use a new language not supported yet you can create a new Scripting Module. The module itself has to be available online though so every user (using their launcher of choice) can obtain it to play the game. People are always welcome to add more Scripting Modules.

In general the Scripting Module sort of defines the API you access the engine with and the Scripting/Programming language to use it. So unless the language is not supported there is no need to write a new module since you get with the existing modules (all three languages) already full wrapper access (engine API mostly wrapped 1-to-1). Hence by writing a new Scripting Module one does not gain much more customization. I hope this explains it a bit already otherwise just keep asking.

+1 vote   reply to comment
Bahl
Bahl Nov 27 2010, 12:11pm replied:

well, it confirms my expectations :-). It is good information though, that all engine classes are wrapped as an API by the three existing script modules.

What I would want to do, is implement more high level game logic facilities inside compiled code (unscripted) and then probably add a different script on top that makes use of these facilities. maybe you could call it a game logic tool box. As long as I don't know what is already part of the API, I can just guess, that I would want such a tool box.

Is there some sort of documentation available of the current API wrapped by the scripting modules?

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Nov 27 2010, 12:53pm replied:

Such a documentation does not yet exist. In general though one can look at the Wiki which contains a more descriptive description of some basic building blocks provided by the engine (and exposed more or less 1-1 by the Scripting Modules) as well as the Doxygen of the C++ Engine API (http://dragengine.rptd.ch/docs/dragengine/latest/index.html, that said, I should update it again). Since the Scripting Modules wrap the Engine API one can get an idea there. In the scripts it's simpler since C++ related problems like memory management or type safety is taken care of there already.

Concerning un-scripted. In general you should be able to do complex game logic using scripts only in a fast way (I'm doing this with the Epsylon project). The way the engine is designed all the number crunching stuff is done by the engine and made available to the scripts through the wrappers. Hence by combining the building blocks properly one should be able to delegate all time critical computations to the engine modules which in turn optimize them.

Otherwise Python has support for byte code generation in general (*.pyc). I did not check out yet how to incorporate this into an embedded Python session but this is similar to JIT like in Java. Hence if you plan to do number crunching not handled by the engine this language should provide you with a pure scripted solution which still runs fast without having to worry about compiling.

+1 vote   reply to comment
Bahl
Bahl Nov 28 2010, 1:05pm replied:

Thanks for the information, I shall patiently wait for the doxygen update :-).

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Nov 28 2010, 3:54pm replied:

Updated the DoxyGen at the URL given above

+1 vote   reply to comment
Bahl
Bahl Nov 29 2010, 4:05pm replied:

Thanks for updating the doxygen :-). Let's see if I can summarize the API in a few handy words.

- under common the folders curve, math, shape for base geometry, color data classes and operations on them.

- the folder filesystem plus under common the folders string, xmlparser, file for base text persistence classes and operations on them.

- the folders logger, errortracing plus under common the folders exceptions for cross cutting error handling.

- the folder resources which seems to include mid and high level visual entities, artificial intelligence, physical and networking.

- the folder systems, containing the folder modules, containing interfaces for all modules, which then probably during runtime get their different implementations plugged at the will of the user.

All in all a neat setup :-). Maybe slightly unbalanced folder tree and a bit inconsistent sorting of the related structures, but oh well, systems grow and have a life ;-).

Now taking a look at the scripting:

- first impression is, it seems to be heavily relying on events and the implementation seems to be required to implement a lot of callbacks for AI, physics, rendering, network... . That sure covers the necessities for game logic, but seems quite cumbersome as a base layer.

- first idea is, I'd want to provide base game logic entities like avatar, tool, material, product, monster, machine, and some abstract game facilities to bind all the nuts and bolts together to something easily accessible. But maybe my short skim over the documentation made me overlook some gems that possibly already fulfill such desires?

+2 votes     reply to comment
Dragonlord Creator
Dragonlord Nov 30 2010, 11:35am replied:

Moves this to an article.

+1 vote   reply to comment
Bahl
Bahl Nov 30 2010, 2:02pm replied:

Aye sir ;-). Moddb.com

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Nov 30 2010, 5:47pm replied:

Sorry, you misunderstood me. I meant that "I" moved it to an article including the answer (see "Features" in this profile).

+1 vote   reply to comment
Bahl
Bahl Dec 2 2010, 2:59pm replied:

Oh right, thanks! I hope some other avid fan of your concept will soon replace this long wall of text in your engines comments first page soon :-).

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Dec 4 2010, 11:15am replied:

Nah, sorry, I don't "use" brainless zombies or lemmings :D

+1 vote   reply to comment
AniCator
AniCator Nov 18 2010, 12:39pm says:

Too bad there is no Engine of the Year contest.

+1 vote     reply to comment
Gen.Kenobi
Gen.Kenobi Nov 8 2010, 4:18pm says:

Amazing particles! Keep it up dude! They look really great!

Hmm...just a suggestion... but... do you plan you make refraction levels? The glass...the water...

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Nov 8 2010, 5:09pm replied:

Yes I do. Currently you can use the texture property "refraction.distortion" which simulates Fresnel refraction behind transparent objects. In the video in the previous news post the glass window uses this property to simulate an uneven glass. I'll though also add a Fresnel texture property later on for more accurate refraction. In general all these properties can be also applied to particles. Distorted particles are though more costly since full transparent rendering is required and here I use a speed hack for the more common case of particles.

+1 vote   reply to comment
Medevila
Medevila Oct 17 2010, 1:15am says:

Amazing engine, but skyboxes could be improved. How are you doing them right now? It might just be the material is low res, but it seems a bit dull.

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Oct 17 2010, 1:00pm replied:

It is a texture problem. It's an image (Mercator mapped) I obtained from the Internet for testing purpose and the resolution is not optimal (1024 for 360° is not much). I've done some additional photo shooting of real sky around my home place but I have not got around so far to process the images for actual use.

Concerning the how it is done in general you can use multiple layers with each layer containing an image, optional any number of bodies (sun/moon for example), lighting properties and own color/transparency/orientation. Images can be spherical (Mercator mapped), box (cube map) or planar (typical for clouds, I'll show that some time later). So you have various ways to make static and dynamic skies.

+1 vote   reply to comment
Gen.Kenobi
Gen.Kenobi Oct 1 2010, 6:52pm says:

About "SG HQ - Blender Portal System"

It's amazing, but i have a question...if the models are textured...how do plan to solve this probleman?

The engine is looking great! I can't wait for it! Keep it up!

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Oct 1 2010, 8:36pm replied:

The rendered mesh and the portal system are two different meshes/objects. The rendered mesh is a "Model" resource (and exported as .model file). The portal system is a "Portal System" resource (and exported as .posys file). They are independent so the model is as you expect it while the portal system mesh just requires two textures to indicate which face is a wall and which a portal. So you can edit the two individually at any time.

+2 votes   reply to comment
Ragora
Ragora Jul 4 2010, 5:12am says:

Ah, I was wondering because I am accustomed to Torque. I was thinking of writing a similiar language module when I learn CPP (I have 0% experience in cpp, so not anytime soon)

+1 vote     reply to comment
Dragonlord Creator
Dragonlord Jul 4 2010, 8:55am replied:

That would be nice. The idea behind having different script modules is that different people are accustomed to different languages so they can choose what suits them best.

+2 votes   reply to comment
Post a Comment
click to sign in

You are not logged in, your comment will be anonymous unless you join the community today (totally free - or sign in with your social account on the right) which we encourage all contributors to do.

2000 characters limit; HTML formatting and smileys are not supported - text only

Platforms
Windows, Linux
Company
Team Epsylon
Contact
Send Message
Official Page
Dragengine.rptd.ch
Licence
L-GPL
Release Date
TBD
Engine Watch
Track this engine
Share
Embed Buttons

Promote Drag[en]gine on your homepage or blog by selecting a button and using the embed code provided (more).

Drag[en]gine
Drag[en]gine
Statistics
Rank
20 of 676
Last Update
1 week ago
Watchers
185 members
Games
1
News
54
Features
7