Sabge game engine

don’t worry and thanks for stopping by to tell your impressions. Reducing the presence of effects on the screen to make them more subtle is absolutely not a problem. I know I tend to keep the intensity a little high to highlight them and because while I work I can see them better and therefore I understand better how to improve them. Unfortunately I notice that bad color banding appears in the videos, probably due to video compression …

yes, even the bloom I should keep it lower when there is a lot of light to avoid that fog effect you are talking about (the settings are in the auto exposure), while I like it a little blinding in the dark …

Precisely. I was watching the video again and i think the video compression makes that blur effect that one doesn’t catch at a first glance… but all this happens because the compression process goes mad … it cannot handle such a firework of colors :heart_eyes:

About the walls, did you kept the simple textures ? They should shine a bit more (or maybe because in comparison, the ground is glossy ? )

Nice showcase ! When i see the windows mirroring the map in the beggining. I cant believe you are doing all this on a gtx1050 mobile :dizzy_face:

Are you planning to make a test on a map like an office room with CRT screens and neons ? Would be awesome

1 Like

Experimental work in progress screen space water volumes.


No needs to re-render the scene just reusing screen space data.

4 Likes
6 Likes

decals test - depth based cut off

2 Likes

lol, i wonder what this map will looks like in 2 months x)
Are you planning to make a documentation or anything that let people know if they would be able to use your engine ?
Is the goal to create a game engine and let it go or are you interested to make a game project ? I see that you are into the italian national hero :slight_smile:

maybe modify the material of the walls ? Make them more specular/shine and white. The bright green grass light emission seem strange next to these walls acting like black holes. Those walls should illuminate the scene with white light

I will do tutorials and release templates/demos to allow anyone to learn how to use it.
I’m not going to do a mario game, it’s just a basis for testing features and then debugging as I implement things

No, look that you are wrong, it is physically correct, because in that video the main light source is the sun which is exactly at the zenith (look at Mario’s shadow), therefore the vertical walls are basically in shadow and a surface in shadow cannot radiate light. You only see the green radiation from the ground because, in this specific case, it is only this that is radiated by sunlight and consequently radiates the rest, in fact the ground / sun incidence value is 1.0, while the walls / sun incidence value is 0.0.
It is a particular case, in reality it is difficult for the sun to be perfectly at zenith. Here in the game engine, it is set so as the default value, but you can give to it any orientation you want.
Look that at sunset, the walls / sun incidence value is higher the ground/sun incidence then are the walls to radiate more then the ground!

However, as working on demanding techniques such as SSGI and others is taking me some time, I wanted to release a version of SABGE with a simpler and therefore lighter rendering pipeline, deferred but with only some effects for the moment (SSAO, BLOOM, LENS FLARES and little else) so I was reading things about the licenses but i have read something that give me some doubts.
I would like to be comfortable saying that, using SABGE, we can freely create and sell games even without necessarily providing the source codes because this was one of the important aspects that differentiated sabge from bge / upbge.
This game engine and tools that will be used by the game devs use some third party libraries and one of them is mathutils which I have read that it is licensed under “GPLv2 or later as this is part of the Blender project”.
I’ve read that if you write and distribute a software/game (sell or free) and in your software/game there is a link to any third party GPL library, then you are required to release the entire source code of your software/game but I still haven’t figured out if this is correct or not.
If so, mathutils would be the only licensed library so restrictive that I’m using, and I would therefore have to replace it with my own math library… I find mathutils very user friendly, and we are used to using it for years with bge / upbge so i’d be a little sorry, and i’d have to waste time fixing a lot of things anyway…
I would appreciate if someone would give me some clarification … maybe @wkk , @Cotaks or @BluePrintRandom or someone else probably knows more about these things than me …

I think if you could give away a ‘base’ level of the engine free, and sell drop in assets that use the pipelines you created ,
the assets / shaders / external stuff should probably be generic anyway -

so give away ‘lite’ version of the engine(GPL’D) and sell a ‘full’ kit that extends it with most of your work in it(not GPL)

1 Like

ok, but if you are actually confirming that, then this solution still does not solve the problem when developing a game. I have to make available a library to make translations / orientations etc to be used to develop the games, if it were the mathutils that is called up and used by the game, then the game must also be open source… :thinking:

1 Like

Obligatory “not a lawyer”, but from what I understand: Blender is GPL so the Python modules bge, bpy and mathutils are GPL. If you create a script that links to it, even dynamically like Python, makes the script GPL too. Scripts then linking to those will also be GPL. This is why we compare GPL to a virus, because it applies quickly to all linked part of a project. LGPL would allow dynamic linking to be a different licence, but nothing is LGPL in Blender AFAIK. So yea, making games in UPBGE/BGE is troublesome when you want to keep the sources closed.

For more information, I recommend either reading the GPL licence, or going to https://www.gnu.org/licenses/gpl-faq.en.html

Ok! Also reading those things that you linked me, I seemed to understand this way, but not being very practical, before changing a few things, I just wanted to be sure … if you have understood this too, (and probably you know English better than me) then I would say I can start brushing up my old math library, a little sadly, saying goodbye to mathutils!
Thank you very very much for your reply!

1 Like

mmm… that concerns the bge specifically and then in my opinion this trick does not make much sense, because anyway you are forced to link .blends that are an open format and anyone can inspect them, so in the end what level of protection do you get more? You could get it by zipping the .blends in password protected zip and recalling them through the libLod after having virtually unpacked them through a script.
But when you produce python scripts to which you connect blender / bge libraries you are required to release the sources, so all this speech no longer makes any sense.

However, as far as sabge is concerned, I have completely eradicated mathutils, replacing it with my own c math library. But I’m working on a python API for it in order to make it more user friendly
through the dot notation (just like the mathutils does)
However in the end, not all evils come to harm, within this library in c I am also inserting several more specific functions that will give a further speed up to sabge under different aspects :slight_smile:

2 Likes

You might be more committed to madness than I am.

1 Like

In that case I wholeheartedly support madness xD

1 Like

haha i don’t know XD
…now i’m working on the editor and i was thinking of putting the whole game engine API inside a text editor integrated inside the game editor
Also i would like to implement a node based system for both logic and shaders and the conversion algorithms from nodes to scripts:
shader_nodes to glsl
logic_nodes to python


Perhaps the madness seems to get even worse :joy:

PS: ah in case you are reading the code “lopasMathUtils” seems a bit egocentric as a name for the math library, so it will simply become “sabge.Vector” :roll_eyes:

1 Like

Yes and it will. You’re well past the point of no return!

My only advice is don’t overwhelm yourself like I did. Burnout is real, maan.

silly question maybe, but why don’t you just rewrite the BGE and keep the Blender’s UI ?