DIV ARENA FORUMS

Urho3D

MikeDX - 22-3-2019 at 08:50 PM

So I've been continuing to look at how to shunt DIV into the 21st century (even though we are nearly 20% into it, but i digress)

https://urho3d.github.io/

Urho3d is a full 3d engine that is cross platform, as much as I would ever want for DIV itself.

This engine can be used as a library as well as having its own full editor, but I'm unsure if everything is as straight forward as that.

It would be nice to try to get some simple DIV syntax running some 3d models.

Do we have any budding coders willing to help me out trying to shift some pixels and maybe some full 3d?

dom cook - 23-3-2019 at 06:10 AM

I get the feeling this is beyond me technically. But, if there's anything I can do....

CicTec - 23-3-2019 at 09:36 AM

Urho3D is very good as a 3D engine for games but is not suitable for 2D, of which DIV bases its base.

This like other engines with hardware acceleration works with floating point data, of which currently the DIV compiler does not support (in addition to other features), it is therefore currently not possible to bring such a modern engine to the old DIV code base.

For optimal work it would be necessary first of all to rewrite the core of DIV (compiler + runtime) to see what to keep of the old syntax and what to add again (floating point data, OOP features, etc ...) once the new core is obtained, preferably modular (and with an SDK that allows expansion with modularity) you can think about creating a new modern 2D graphic engine that can intercommunicate with another module like a 3D graphics engine like Urho or others.

If you take a look at some of the most famous game engines like Unity, Unreal Engine, Godot, etc ... they all use this scheme that I have just indicated, as it turns out to be the best for software maintenance and updating.

Without a new core it is not possible as DIV's software-based pixel rendering technology is incompatible with the new rendering technology based on graphics primitives (vertices, geometries, etc ...), texture mapping, etc ... and hardware acceleration.

[Edited on 23-3-2019 by CicTec]

[Edited on 23-3-2019 by CicTec]

dom cook - 23-3-2019 at 11:57 AM

The compatibilty issue is something that I was wondering about. I'd also question whether it is actually in DIV's best interests to be brought into the 21st century, as it were. There are already quite a few 21st century game engines out there.
In my opinion DIV's niche is in the 20th century. If the focus of effort was placed on making it more rubust; upgrading it with, for example a better text editor (with file inclusion,function folding, an undo button etc) or enhancing it with some new built-in tools such as a sound effects generator or a music composer/editor, it could become a popular option for people who want to make 20th century style games.

MikeDX - 23-3-2019 at 12:11 PM

Thanks for the feedback both. I respect your opinions maybe more than you realise.

Yes, I agree DIV is a great 2D engine, should we really care about 3D? What about high colour modes?

I have been looking at compiler design at lately and bootstrapping a compiler. I would love to re-write DIV completely, in DIV itself. I know it can be done, I just am unsure if I have the ability to do such a task.

There are some modern tools we can use to make our lives easier, for example external text editors.

With my limited time and resource, it would be best to take steps in the right direction rather than to keep moving between ideas.

CicTec - 23-3-2019 at 12:16 PM

Quote: Originally posted by dom cook  
The compatibilty issue is something that I was wondering about. I'd also question whether it is actually in DIV's best interests to be brought into the 21st century, as it were. There are already quite a few 21st century game engines out there.
In my opinion DIV's niche is in the 20th century. If the focus of effort was placed on making it more rubust; upgrading it with, for example a better text editor (with file inclusion,function folding, an undo button etc) or enhancing it with some new built-in tools such as a sound effects generator or a music composer/editor, it could become a popular option for people who want to make 20th century style games.

Compatibility can be maintained in part, that is maintaining a 2D software graphic engine (updated in any case to the 21st century, for example by supporting 16 and 32bit of color in addition to the classic 8bit) and other modern features applicable also to an older rendering engine.

This can be used both to maintain and produce old games (especially 8-bit ones) and to have greater compatibility with older hardware, since the new graphics API with hardware acceleration (such as Vulkan or the latest Direct3D version) does not they can guarantee (they are not designed for this), as are the older ones like OpenGL (some models of old or even modern video cards have really bad or limited support).

In any case, to do this you need to keep the engines separate (2D software that works alone or intercommunicate with a 3D software always) and a 2D engine with hardware acceleration that works alone or intercommunicates with another 3D engine with hardware acceleration, in any case they must be separated, it is not possible to mix the two technologies (hardware-based software y or vice versa) as there would be limitations in the features, things that are impossible to implement, important loss of performance, etc ...

In any case, all this depends on the new core, if for example you have to use a 2D physics library, and work with vectors, matrices, quaternions, floating point data, etc ... if you don't have the language, the compiler and the runtime that support this, clearly you can't work on it and have other more advanced or related things.

CicTec - 23-3-2019 at 12:24 PM

Quote: Originally posted by MikeDX  

There are some modern tools we can use to make our lives easier, for example external text editors.

With my limited time and resource, it would be best to take steps in the right direction rather than to keep moving between ideas.

Based on my experience, which you partly know, on the development of game engines, DIVs, 2D graphics engines, etc ... I could give some indications on which guidelines to follow based on the resources currently available to avoid errors that force a future re-design.

If you want we could talk about it in this or another public thread, or privately in another place.

BreadCaster - 6-4-2019 at 02:28 AM

Quote: Originally posted by MikeDX  
Thanks for the feedback both. I respect your opinions maybe more than you realise.

Yes, I agree DIV is a great 2D engine, should we really care about 3D? What about high colour modes?


3D - Yes, but its not really a main priority right now - kinda trying to get Div running before its walking (right now its kinda stumbling imo, haha).

Perhaps a goal of integrating a 3d engine of comparable abilities to say, IdTech3 - for now its safe to say that professionals are not going to be using Div, this is a great language for hobbyists but itd need SO much work to be a competitor to say, Godot or Unity.

The other issue is that because Div is a 2D language (despite the protestful cries of my many attempts at mode 8 projects :lol: ), it doesnt currently have anything even vaguely standard regarding 3D physics and objects - say, movement vectors, rigidbodys, etc - so the language should really have a whole new suite of commands. Otherwise, its kind of like using a 2D language to control a bunch of 3D features, and it wont be anything even vaguely comparable to the conventions of 3D graphics in other languages/engines...

High colour modes - DEFINITELY. Currently, its very hard to justify using DivDX when forks like Bennu are out there. I'd at least match the capabilities of Div forks (without use of DLLs, as Im aware that both Gemix and Bennu have some 3D capabilities using external libraries) before considering anything else. Getting the bugs ironed out and getting 16 and 32 bit color modes, alpha/additive/subtractive blending in is right now, the main roadblock to getting Div back out there with a shiny new coat of paint and a substantial amount of new users.


Buuuut~ thats just my two cents :)


CicTec - 6-4-2019 at 10:55 AM

Quote: Originally posted by BreadCaster  

High colour modes - DEFINITELY. Currently, its very hard to justify using DivDX when forks like Bennu are out there. I'd at least match the capabilities of Div forks (without use of DLLs, as Im aware that both Gemix and Bennu have some 3D capabilities using external libraries) before considering anything else. Getting the bugs ironed out and getting 16 and 32 bit color modes, alpha/additive/subtractive blending in is right now, the main roadblock to getting Div back out there with a shiny new coat of paint and a substantial amount of new users.

Buuuut~ thats just my two cents :)


Hi BreadCaster.

About the Gemix 3D, I can answer you, since I am its main creator and programmer of Gemix, it currently supports an advanced mode7 mode, a very advanced 2D including 16 y 32bit colour support, but it has no real 3D engine and indeed, some 3D engines are being developed by collaborators / users such as coldev, but nothing can be used at the moment, however there is support for mathematical functions for 3D and a modular SDK capable of adding motors and more easily.

As I have already explained to Mike, the first fundamental thing is that DIV completely rewrites its core (compiler, runtime and SDK) once this is done, then it is possible to expand the program gradually with what you want.

[Edited on 6-4-2019 by CicTec]