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.
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.
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.
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.
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.
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 ), 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.
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.