Thoughts on a modern game engine

Status
Not open for further replies.
Now I heard on IRC that this sort of thing has been discussed in the past, so hopefully the thread won't make everyone go "uhhh, not this again". I especially wanted to make it since I've been taking a better look at srb2 during the last days, and at the same time playing with various game engines, making the thought recurrent.

The reason why I haven't tried srb2 more frequently is that while I really love part of it, I kind of hate another part. The part I love is everything you see from the perspective of a player: The visuals, sounds, music, gameplay, levels, characters, etc. But I hate what you see from the perspective of a developer: An extremely outdated engine struggling to keep basic functionality updated (such as the renderer) while stuck with a 2.5D map format which doesn't even let you customize the full 3D environment. Whenever I play srb2, I continuously tell myself "this game could be so much more, if only it could be ported to any kind of modern engine".

Before people yell at me: I'm aware of why this hasn't happened yet! First of all, it's not an easy task to port any game to another engine, which is something I see many projects trying but barely any succeeding so far. The second reason is that most of the existing content wouldn't be compatible with the new engine... especially the maps, which need to be converted from the weird 2D schematics used by Doom into real 3D geometry.

The kind of port I'm thinking of isn't a complete replacement! Rather a successor which could be maintained in parallel to the current srb2, while part of the same community. The project would have to rise from the ground up, by picking an engine then slowly adding bits and pieces of functionality until it gets to the same level of completion. I'd see it reusing all assets from the existing game (textures, sprites, sounds, music, gameplay) while only rewriting the gamecode, whereas the maps would either be converted with a tool or rewritten manually. The end result would probably look very similar, just that a lot of mods currently not possible would be doable (eg: properly animated skeletal player models).

I believe the task to be possible... mainly since I've seen more complicated projects with smaller communities take out such challenges, in cases where they don't even need it as badly. The FPS games Xonotic and Red Eclipse are good examples: Both are planning to move to a new engine (Darkplaces to Daemon, Cube 2 to Tesseract). Although they're staying in the same engine family and hope to keep some of the existing code, they have a lot of mechanics to worry about in comparison. srb2 doesn't have complex attacks (enemies deal damage when you touch them and shoot projectiles that travel in a straight line), no advanced AI (they just roam around or walk toward you), while the health system just tracks a number of rings that drop when you take damage.

Frankly, I've considered attempting such a port by myself. Problem is that every popular FOSS engine wants you to code your logics in C++, and I only have knowledge and energy for projects I can at least write entirely in a scripting language. If someone else takes the initiative, I might help, although I couldn't promise without knowing. I'm curious what others think for now: Does anyone else want to see a srb3 implemented in a good engine, and hasn't anyone attempted it so far?
 
First things first, no, we are not moving away from the Doom engine, and we don't have any plans to move to a different source port.

A "spiritual successor" to the game doesn't sound like a bad idea on paper, but you're gonna have a very hard time finding people that are willing to help. Programmers are pretty few and far between here, and that sort of thing is a massive time sink. Even if you did reuse the assets, rewriting the game logic is much more difficult than porting the assets. If you had someone willing to go through all that, you'd be better off porting the game up to ZDoom. It should also go without saying that every single mod for the game will break, as well.

Sure, porting the game is definitely possible! Though I should mention that the examples you're using are in a far different situation from SRB2. To go through with your idea, we likely wouldn't be able to keep any of our code. To do that, we'd need to move to another source port, even then it's still pretty unlikely. A lot of things in SRB2 are much more complex than you might think, and porting them would be far from easy.

Yes, people have attempted this sort of thing before. Not a single attempt was successful. I'd also like to add that experience with scripting languages is extremely far from what you need to port a game to an entirely different engine. I wouldn't touch an idea like that with a 10 foot pole without experience in C and C++.

It seems to me that you really don't like the Doom engine. Sure, people have their preferences, but I'd really like to point out that SRB2 doesn't benefit much from a newer engine. Most of the faults we have in the game are in rendering and netcode, two issues that would be much easier to fix on their own rather than rewriting the entire game. A newer engine also means that a sizable portion of the community with old, toaster-esque computers would become completely incapable of playing the game. 3D models are alluring, but they're not worth leaving half the community behind. Even on the off chance that we did move to another engine, our art style would remain the same and we'd still be using sprites.


Moving to another engine might sound like a great idea, but I really, really can't see something like that working.
 
For one thing, I should probably be more specific about why I find the current engine weird and limited. Since it's what the community used for years, it's understandable if some are okay with it... whereas in my case I work with a lot of FOSS game engines, and that shapes my view on how a decent engine works differently.

  • The map format is the first thing I can't get my mind around; Every 3D engine lets you create geometry in full 3D, with absolutely no distinction between the X Y and Z axes, letting faces and vertices be manipulated in any direction. gtkRatiant / netRadiant is one of my favorite map editors and example (Quake engine). In Doom you only draw the horizontal geometry of maps in 2D, with the start and end height set as values! Slopes just recently became possible, but they're done in a rather hackish way (by averaging two 2D brushes together) instead of at least letting you set the height per individual vertex. Even for a game as visually simplistic as srb2, I find this a very painful limitation.
  • The renderer is very outdated. I didn't dive into this aspect yet, but I'm aware it still relies on an old software renderer. OpenGL support exists (I use it exclusively) but people said it's poorly implemented and barely even works. Shaders for instance are supposedly impossible.
  • Doom is very strict about how you pack your data; Everything needs to be put in a wad file, which has to be lumped / unlumped with specific tools. Editing the game and testing mods must quite painful for this reason! Modern engines can work with data directly from subdirectories (maps can be data/maps/mymap.map, textures data/textures/someimage.png, etc). When it's time to distribute something, you can also pack mods in generic formats... such as pk3 / pk4 which is a renamed zip archive.
  • srb2 seems to depend a lot on outdated tools, themselves struggling to stay up to date. I read that only recently someone was able to put together a Doom map editor that people could use without problems. I also couldn't find any working lump editor for Linux altogether!
  • While 3D models are possible via the md2 format, there's not even support for animated skeletal meshes! Animated md2 models are possible, but they use vertex animation, which is typically more costly to compute as well as a lot more limited... try attaching an object to a character's hand for instance. This matters less for the default game which uses directional sprites, but more for mods adding 3D player and enemy models.
There might be more points I've missed, but the above is why I wish this lovely game didn't have to use such a not lovely engine. Of course, an alternative and more ideal solution would be to implement modern formats in the existing engine: Support *.map / *.bsp maps, *.iqm / *.md5 models, and *.zip (*.pk3) archives... without removing any of the existing formats, allowing both new and old things to work! But implementing and maintaining such changes would be halfway as hard as moving to another engine. If at least that was considered though, I'd definitely be quite hyped about the future of the project now!
 
A lot of those are pretty superfluous. PK3 support would be nice to have, but it's not needed. I would've agreed on outdated tools if not for Zone Builder being released and maintained well; both SLADE and ZB support SRB2 fantastically (don't know what's there on the Linux front though). Wolfy just said that even if the switch to another engine happened, it'd still use sprites, so 3D models would probably still be either optional or not there at all in this theoretical new engine.

The point I object to the most is the map format. Part of the charm to mappers (such as myself) are those limitations; it's rewarding making an engine do things it was never meant to do. I feel having a different map format would be alienating, too, since most people are accustomed to the current one. It might not be true-3D, but FOFs and slopes* (and not to mention sloped FOFs), makes it feel close enough. I don't buy "support both!! :3" argument either, since either way you'd have to have someone willing to code support for it. Besides, if I wanted to work with Quake's map format, then I would've moved to Quake, not ask a Doom source port or a game based on Doom to support Quake.

Also biggest thing to consider is this is way more work to do than you make it out to be. The game's been through development... what, 17, maybe 18 years? Right as the game is nearly complete, let's add an engine transition to pad that length out as long as we can. It's just so not worth it at this point. I, and I'll bet many others, have gotten comfortable with this engine, and like using Doom's map format, SOC, and Lua scripting to make stuff. What you gain in a more complex engine, you lose in accessibility.

(*also there's actually vertex slopes. they're done in a less than desirable way imo, but you're wrong in saying they aren't possible to do yet)
 
Last edited:
I Honestly think SRB2 is fine the way it is, The Pixelated look completely fits the Retro feel in the game, You could ask for help from some professional programmers and maybe try porting the game logic to GZDoom ? Which converts the geometry of levels to Polygons, And then do the rest of Modelling, animating .. etc .

I Don't understand what's the point of porting a game Aimed at recreating Pure (8Bit-ish) Feel to a 3D Engine anyways, That's like trying to create a brand new game .
 
Huh. I knew the game has been around for a while, but not since 1998. The only other project I know of that's even older is the OHRRPGCE engine (an engine for 2D RPG games written in Freebasic). I can imagine that at the time, Doom might have been a good choice... I believe not even Quake 1 was open-sourced back then?

I read on the wiki that SLADE is the best lump editor currently available. I went on its download page yesterday... but while there are downloads for Windows, a source code is the only option for Linux. I tried to compile the latest version from Github, but quickly ran into a compilation error (something about wxWidgets I think).

Regarding the current map format: At the end of the day, I could actually see it as a good implementation... if however its idea was modernized, and it could do things that full 3D formats can't. Such as the ability to make maps out of PNG or SVG images altogether, without even needing a map editor! Imagine opening Photoshop or Gimp and painting a series of islands in multiple png files, with colors representing their height... pixels then converted to vertices to generate the map geometry. That would definitely make the idea of a 2.5D map format useful, even turning it into an unique feature! Perhaps I should make another thread for this idea?

As for why I was inclined to think a port might be easy, it's because compared to other things I've seen, the mechanics of srb2 appear rather simple... to the point where I could imagine doing them in JavaScript even. Of course I don't know the functionality behind the hood, so I'm not one to give verdicts here! But if for instance I was trying to re-implement player movement: To implement dashing, I'd simply make pressing the "dash" button give the player X velocity relative to the camera, while setting the sprite animation to spin (2 lines of code). To implement flying, pressing the "jump" button would simply suspend gravity, and give the player a constant upward acceleration while "jump" is being held. Or to code enemy movement: Enemies simply go toward a random direction for X seconds every Y seconds to roam. Once a player is near and they attack, their sprite faces that player while they slowly move closer instead.
 
Quake was open sourced back in 1997 i believe, Although SRB2 isn't based exactly on Doom engine, It's based on Doom legacy (A Sourceport that enhances Doom) which "stole" codes leaked from Quake code before the Code itself was Released to public (back when it was still New), It doesn't matter now anyway since The code is released .

For Map format there is already a few tools out designed to convert Doom maps to 3D Models (or even Quake .bsps) .
 
For Map format there is already a few tools out designed to convert Doom maps to 3D Models (or even Quake .bsps) .

That's good to know! If an engine port ever happens someday or the devs found a way to make the existing engine support .bsp, that would allow keeping the existing maps too, therefore fixing the game code would be the main challenge! Can it convert them to .map files however, and make every piece of geometry an individual brush?

As for your other post, which you happened to write while I was replying so I didn't catch it: My idea was to only use the same assets, so the retro pixelated look would stay. That is for the default game and existing mods; The point of a new engine is that you could also do advanced mods with modern graphics, which could be played from the same engine as the default!

Imagine the engine supporting custom campaigns of the same scale and visual quality as Sonic Adventure DX for a comparison... even better if we got as far as allowing optional GLSL shaders and skeletal models! True, the default game isn't intended for anything like that, and the rule "if you want that make another project altogether" can be referenced. But if there's already an engine supporting all of the gameplay mechanics, just limited by reliance on ancient code, it's natural to think of just lifting those limitations and reusing what's already there. I'm not saying this to insist on doing a port faster... just to explain why I think there's definitely a purpose that can generate motivation.
 
Serious offer: If anyone else is down for pooling funds, I'm willing to pitch ≈$1,200 toward hiring a professional coder to accelerate the engine's development right now. I'll leave it to the devs to vet for compatible (and reliable) talent, preferably some old source port guy from the Doom community. My priority is OpenGL and any feature that significantly impacts gameplay, like a 6DoF camera and full 3D geometry/collision. I want to see Sonic standing on a rolling cube within the next 5 years.
 
Serious offer: If anyone else is down for pooling funds, I'm willing to pitch ≈$1,200 toward hiring a professional coder to accelerate the engine's development right now. I'll leave it to the devs to vet for compatible (and reliable) talent, preferably some old source port guy from the Doom community. My priority is OpenGL and any feature that significantly impacts gameplay, like a 6DoF camera and full 3D geometry/collision. I want to see Sonic standing on a rolling cube within the next 5 years.

The world of open-source software salutes you, and needs more people like you! It's sad although understandable that money is needed to bring motivation and make things happen even in FOSS. Sadly I can't help there right now... me and my mother are kinda on the verge of being sued for not paying the administration, so there's that.

But there are pretty much two options: Either moving to a new engine, or implementing modern capabilities into the existing one. Both would have their own challenges, though the second would definitely be easier! I'm hopefully not being evil or ignorant by saying this... but snatching the code for bsp maps and md5 models from any Quake engine and integrating it in srb2 should seriously not be that agonizing for anyone familiar with the code, and could probably be done in mere days. File format interpreters tend to be generic, so the code can probably be copy-pasted then referenced in the proper functions from srb2's gamecode... unless of course unforeseen circumstances pop up, like Doom's old renderer having problems understanding how md5 deforms meshes or how bsp does lightmaps.
 
Okay, I guess this falls to me to say: Never.

I guess I'm acting as a proxy for comments made by Mystic on IRC, but they're still important. We would never willingly accept paid submissions to the game. This is in dicey legal territory as it is - the entire game is a trademark infringement - and the best way to stay away from lawyers and Cease & Desists is to have plausible deniability. No donations of anything other than freely licensed or provided code/assets explicitly for use in the game itself which have no explicit monetary value have ever been accepted from the community.

You want SRB2 to still be around, don't you? Friends don't let friends get money involved.
 
Okay, I guess this falls to me to say: Never.

I guess I'm acting as a proxy for comments made by Mystic on IRC, but they're still important. We would never willingly accept paid submissions to the game. This is in dicey legal territory as it is - the entire game is a trademark infringement - and the best way to stay away from lawyers and Cease & Desists is to have plausible deniability. No donations of anything other than freely licensed or provided code/assets explicitly for use in the game itself which have no explicit monetary value have ever been accepted from the community.

You want SRB2 to still be around, don't you? Friends don't let friends get money involved.

Ouch... I forgot about that. As long as srb2 uses the Sonic characters or remixes of the original songs, money must never be involved or it will spell trouble. Even if Sega is cool and doesn't send C&D orders to Sonic fangames... like evil Nintendo does with Pokemon fangames. In any case, the idea is certainly welcome for other FOSS games that rely on their own IP, so definitely keep that money :)
 
And the discussion is basically already over, but for the public record, we're entirely within our legal rights to do this, provided:


  • There's precedent for commercial games being developed on the engine. This may complicate development or necessitate a full source port anyway if you want to be really anal about auditing for code that may constitute infringement, but it's viable.
  • The branch in development is stripped of all infringing content- enter Cube Zone. We legally launder code into SRB2 via Cube Zone.
  • It's virtually impossible to police a private one way transaction between two parties. A lawsuit is only a likely risk if you're selling a product- funding the development of open source code completely independent of IP is safe.
It really just boils down to paranoia and not wanting to deal with the headache of Serious development.
 
Last edited:
...Wait, you were serious when you said you wanted Sonic standing on a rolling cube?

More to the point, you were serious about the funding to hire a professional coder? Not like we're totally desperate, we're just doing this in our free time. I'm one of the people working on the source code currently, I'd feel a bit cheesed off if I'm just shrugged off for someone who was paid to program, because the rest of us are already developing the game without being paid for it at all. I'm sorry, I just can't see how one can be totally serious about this.
 
...Wait, you were serious when you said you wanted Sonic standing on a rolling cube?

More to the point, you were serious about the funding to hire a professional coder? Not like we're totally desperate, we're just doing this in our free time. I'm one of the people working on the source code currently, I'd feel a bit cheesed off if I'm just shrugged off for someone who was paid to program, because the rest of us are already developing the game without being paid for it at all. I'm sorry, I just can't see how one can be totally serious about this.
I was being facetious in the sense that I was expecting to get shot down right away, but yeah, I'd totally foot the bill for anyone who wants to make SRB2 their minimum wage day job for a month or two. It's a last resort for getting OGL up to speed within the next decade when apparently nobody on the current team has any clue how to code for it- therein lies the true answer to this thread, I guess!
 
I don't think it's wrong to offer donations to coders in general, especially those who do the kind gesture of dedicating their time to keeping such projects going for free. Except in this case because as toaster pointed out, srb2 is a fangame and can only be legally covered as long as it isn't used commercially.

Ahem! Of course now, the coders could simply work on something like an engine port for free. A few weeks or months later, the person who does it privately receives a donation from a friend, who's just sending them gift money out of nowhere or maybe commissioned some art from them or something... who knows ;)

In any case, I think further discussion on modern map and model formats is worth it! Especially if the devs could go the way of modernizing the existing Doom engine, money doesn't need to be involved. I might actually take a quick look at DarkPlaces tomorrow (I've been a Xonotic contributor so I worked with it) and maybe see how reading the map format is done there... of course I don't know the srb2 code enough to figure how to call the functions from its map loader.
 
Final word on this- 1K bounty on the features I requested up there. First come, first served. Offer expires in 2 years. Permaban if I don't make good on the deal. This shall heretofore be known as Ritz's Fortune™. Somebody tell DoomWorld.
 
Status
Not open for further replies.

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)

Back
Top