kevansevans wrote:Golly I think I'm ready to share this project here, some of you have saw me talk about this on the Discord though.
Citrus Doom is what's going to be playable. In order to make sure that zero game logic ends up outside of HxDoom, I am keeping this half of the code under a separate repository. Citrus Doom gets it's name from the Haxelib it's being built upon, which is called Lime (Light, Integratable Media Engine). Lime primarily exposes several rendering pipelines, and I'll be taking advantage of that to demonstrate HxDoom's ability to function under several targets. As of now, there is no software rendering code. That might come later as either an Adobe Air app (Again just for demonstration purposes), or utilizing the Cairo exposure. Not a fan of Cairo, but it is a software rendering library. The hardware rendering code that's being used is on WebGL. This may seem confusing at first, but Lime has the ability to take WebGL and convert it to GLES2, and or OpenGL. So while targeting desktop, the rendering pipeline will utilize OpenGL/GLES calls, and on web, WebGL calls (WebGL2 has yet to be supported as the Lime developer is having issues binding to GLES3 which is needed to maintain WebGL2 -> GLES -> OpenGL).
So in laymans terms: Lime is a translation layer that provides the developer with a set of several pipelines that make it usuable to work on different platforms. Something similar to SDL, but more focused on rendering paradigms.
The reason for that summary is because i think most users likely have no idea what most of this means (And by my summary, i also may not know what it means if it contains errors, lol). I knew of HXDoom before, but back then it was a clear port. Now its a library that Citrus uses. (This is how i understand it).
Personally i think such a cross-platform approach (One codebase that can deploy to oodles of platforms) is an interesting one. Something like Unity, but purely for a Doom Engine. I mean, that's exciting stuff. And because the whole thing is open source, it could be a good
base port aswell (Where now Linux Doom/Chocolate Doom and PRBoom are the primarly stepping stones from which most platform ports by people are based upon).
kevansevans wrote:Trying to get down the ability to mimic the original behavior, where once the screen is filled horizontally and what not, but no luck so far. Lot of the code I have written was pulled from here:
https://github.com/amroibrahim/DIYDoom which borrows a lot of code from Chocolate doom. Not quite a source port as I'm only following instructions, but for the sake of transparency, I'm putting this here so I'm not yelled at for not crediting my sources.
If you want another ''DIY'' approach to look at,
here is another one, DJDoom. This one builds it from the LinuxDoom source release instead of Choco. Though DIYDoom is far more extensive, perhaps DJDoom is also useful for you/
kevansevans wrote:Ideally Boom compatible regardless of target. If enough people show interest, I'll definitely start working with them to bring in support for more modern features.
So Citrus as it stands is working towards a complete LinuxDoom 1.10 equivalent that's cross platform, right? Boom compatibility is definitely something interesting, but you can basically go wild: GLDoom's source, for instance. Or how about Doom Classic IOS's GLES renderer that sits on top of a PrBoom based engine? Due to the cross-platform nature, i can see quite a bit of possibilities in here. All that would matter is the HXDoom library.
kevansevans wrote:I hope this is something that sparks interest in the community!
I believe it does, as its definitely a novel idea. However, though you include some nice solid color screenshots, i do think this needs a more profile example for people to understand its
usefulness. One idea could be getting that IOS GLES renderer to PC. Or a Boom heavy mod that runs on multiple devices through Citrus.
So conclusion?It has definitive potential, but it needs a more visible example before i can see lesser tech iterate folks be swayed for this. The concept however is sound.