D'Enfent Engine

D'Enfent Engine

Postby alapshin » 26 Jul 2010, 19:34

I would like to indroduce the engine (or just the library) that I'm currently working on. I have never show it at this site, but may be it can be useful for someone.

Home page

License: GNU GPL 2 or later

Implementation: C++

Platforms: Linux (primary), Windows

Target audience: This library was developed with just one mind in my head: "That's a real hell to implement even simple sprite objects in raw OpenGL + X11, so there should be some library that let me or anyone else to do that in several lines of the code without eliminating me with features I am going to implement." So, target audience is game developers (primary 2D games) that could reuse this code in their projects (may be even partly). It could be useful and easy to use for anyone who worked with DirectX (DX10 or DX11 especially), because it uses similar terms. It operates in terms of GPU states. I suppose that anyone who does not want to be bound by restrictions of different libraries could find something in it, because you are able to manage diffferent states of the GPU if you want. If not, engine will do this stuff by itself. Possibly, it could be an intermediate level layer between hardware and high level engine (some map editor, for example), because it contains high level C++ classes for every GPU object: texture, shader, buffer and so on..

Disadvantages: At the current moment I see two primary disadvantages. At first, possibly it is difficult to use, because GPU states concept is not very easy. At the second, currently, there are no visual tools for it. Really, the first point is not a great disadvantage, but, actually, it is, because of unusual approach. Here, at this point, community feedback is mostly needed. What do you think of these disadvantages?

Features
Here I will try explain what's interesting you may find in the library (I am still do not know if it is a library or graphics engine.. In fact, they are the same :))
* Cross-platform library (Linux + Win OS)
* I am trying to make it easy for start: I have prepared 13 sample programs that uses different parts of the library and several lessons that could be useful to start. And still in progress with some new. Lessons cover basic usage of the engine: sprites, shaders, system events, GUI system, tiling, splatting (to form different terrains) and others...
* Font rendering system that generates font maps on a fly. No need to prepare them - just create font and use it in your game. One of the samples shows how this technique works in details.
* Shaders. You may use them to reach any effect you wish.
* Different classes to work with sprites (animation / movements)
* Fully GPU accelerated. You can really use power of GPU to process images. One of the sample shows how to create Sobel's filter using GPU.
* GUI system included. There is no need in implementing boring GUI system for your games.
* Messaging system to support events from the Window System.

I am not sure that I have some really nice screenshots to show..
May be just only example of the GUI:
Image

If you have an idea for sample program or some kind of lesson (for example, about some part of the library or "how-to" style article about some effect) it is highly appreciated. The same is for features.

On this forum you may found a simple game that uses this engine. It is included in the source code archive of the library.

Sources: The latest sources freely available at http://svn.1gb.ru/eengine with login / password: "guest"

In case if you find this library useful for you and will use it for your game feel free to mail me [alapshin87 at gmail dot com] with questions or some proposals relating game or the engine / samples (may be with request of some feature or anything else). I am really very interested in any suggestions.

Thanks to everyone who has already helped me with this project, samples or lessons! And great thanks for anyone who will provide feedback on this project I will really appreciate it!

P.S. Sorry for my English :)
Last edited by alapshin on 31 Jul 2010, 08:25, edited 1 time in total.
alapshin
 
Posts: 39
Joined: 28 Mar 2010, 12:09

Re: D'Enfent Engine

Postby Sauer2 » 30 Jul 2010, 17:58

Hi,

I'd like to post this text to pro-linux.de that they can translate this. Is that okay with you?
(It would be even better you would do this, because you know your lib better. Don't worry, they speak english :) )
Just another question: What do you mean with:
GPU states concept

Could you explain this with an example?
User avatar
Sauer2
 
Posts: 430
Joined: 19 Jan 2010, 14:02

Re: D'Enfent Engine

Postby alapshin » 31 Jul 2010, 08:30

Hi,

Yes, sure.. :) Rendering involves GPU to pass geometry data (even several points for the sprite) through whole graphics pipeline starting from "primitives assembly" stage to "rasterization" stage. Every stage of GPU may be controlled over several parameters / flags. For example, during rendering you want to reject pixels that have alpha channel value greater than 0.3. And someone want to reject pixels that have alpha value lower than 0.2. So, (greater, 0.3) and (less, 0.2) are pairs that describe alpha test stage of graphics pipeline. GPU state is a set of parameters / flags that you may set to vary rendering stage of the same sprite (alpha test, depth test, blending, etc.). At the low level of the library you may set almost any state to get different result from just only one sprite image.

I know that it is difficult to understand all these flags and control them, so you may set nothing and engine will set default values for you. Also, currently I'm working on several game classes that will help to use GPU states (that are usually used) even without any knowledge of them. They are just to cover general usage of the library. For example, I suppose that most of the programmers uses only "greater than 0" rejection rule for alpha stage (just to not render absolutely transparent pixels for their sprites). Soon I will add, for example, Layer class that will help to arange sprites on the screen without knowing about Z tests and blending that are running on GPU each frame.

As for post on pro-linux.de.. Could you point me where I should post this (I was able to register myself)? It is a bit difficult to navigate without any knowledge of German :)
alapshin
 
Posts: 39
Joined: 28 Mar 2010, 12:09

Re: D'Enfent Engine

Postby KIAaze » 31 Jul 2010, 11:17

For submitting news it's here:
http://www.pro-linux.de/news/10/1/news-mitteilen.html

But I don't know if you can write in English in this form.
Otherwise, just use the forum. Here's the news section:
http://www.pro-linux.de/forum/viewforum ... ac44dade2c

Here are a few translations:
News mitteilen = submit news
Schlagzeile = headline
Newsmeldung = news contents
Relevante URL = relevant URL
Registrieren = register
Neuer Beitrag = new thread (literally: "new contribution")
Vorschau = preview
Absenden = submit (literally: "send")
Benutzername = username
Titel = title
Board-Sprache = Board-language!!! ;)
User avatar
KIAaze
 
Posts: 85
Joined: 08 Dec 2009, 17:34

Re: D'Enfent Engine

Postby Sauer2 » 31 Jul 2010, 12:17

So, if I understood you correctly, you first put some filter effects to the gpu, then the image data for each image?


BTW: No need to register. It should be ok to write a mail, I made good experiences with that. It may take 1 or 2 days to translate your message to german. But mostly the PL-Team does a good job here.

info@pro-linux.de
User avatar
Sauer2
 
Posts: 430
Joined: 19 Jan 2010, 14:02

Re: D'Enfent Engine

Postby alapshin » 31 Jul 2010, 14:21

KIAaze, Sauer2
Thanks for help! :) I will send e-mail to the given address today.

Sauer2, I suppose you got the general idea. At first I set some parameters (filtering parameters, for example), then set textures that should be used and finally send data to GPU to get resulted image. This is is how any GPU works. I mean that filtering pixels using value of alpha component was not implemented by me. These tests are implemented in any GPU card and only thing we may do with them is to set some parameters and flags to control filtering. CPU spends no time for filtering, because they are fully performed on GPU side.

Old GPU adapters that we had many years ago provided us only memory block that was named video memory and the only one useful command was "copy this data to this place at the video memory". Now, every GPU works in a very interesting way: there is a pipeline like in fab and you just control some paramters (of alpha filtering, of color mixing, for example) and then get resulted product ("rendered image"). I have prepared two simple lessons where I am trying to explain how any GPU works in basic terms. You may try to read them, may be that will help to understand general idea better. If it does not help, that means that these lessons are not good and I will try to express what I mean in other words. :)

But that's in a very low level of how library works. If you take a look at different sample programs like "sprites" or "sprite_animation" (in the source code archive) you will see that there is no need to control different states and flags. You just need create sprite, set size, position and image and finally you may render it without any additional preparations. If you are trying to build some program with the library just point me to your sources and I will help with usage. :)
alapshin
 
Posts: 39
Joined: 28 Mar 2010, 12:09

Re: D'Enfent Engine

Postby Sauer2 » 31 Jul 2010, 18:59

Thanks, that was revealing. :)
User avatar
Sauer2
 
Posts: 430
Joined: 19 Jan 2010, 14:02

Re: D'Enfent Engine

Postby Sauer2 » 02 Dec 2010, 19:50

eengine.org seems to be down and A. Lapshin wasn't online for about a week.
Does someone know the reason why?
User avatar
Sauer2
 
Posts: 430
Joined: 19 Jan 2010, 14:02

Re: D'Enfent Engine

Postby charlie » 02 Dec 2010, 22:14

Works for me... just clicked the homepage link in the first post.

http://downforeveryoneorjustme.com/eengine.org
Free Gamer - it's the dogz
Vexi - web UI platform
User avatar
charlie
Global Moderator
 
Posts: 2131
Joined: 02 Dec 2009, 11:56
Location: Manchester, UK

Re: D'Enfent Engine

Postby Sauer2 » 02 Dec 2010, 22:22

Thanks, works for me, too, now. Maybe a short server downtime.
User avatar
Sauer2
 
Posts: 430
Joined: 19 Jan 2010, 14:02

Who is online

Users browsing this forum: No registered users and 1 guest

cron