dhewm / dhewm3

dhewm 3 main repository
https://dhewm3.org/
GNU General Public License v3.0
1.81k stars 349 forks source link

Can you add the mod ELDOOM to your project (dhewm3-mods)? #624

Closed Ez0n3 closed 3 weeks ago

Ez0n3 commented 1 month ago

Hi, my name is Ez0n3 and I created the Doom3 mod ELDOOM under the alias elroacho (a friend and I) which can be found here:
https://www.moddb.com/mods/eldoom
https://www.nexusmods.com/doom3/mods/1681

I was wondering if you could compile the dll's for ELDOOM and include them in the dhewm3-mods file? I originally compiled the source about 20 years ago, but have not compiled any source since. It's been a long time since I've compiled anything and can't remember exactly how to do it nor do I have the tools installed to do so.

The source for the original base game can be found here:
https://github.com/Ez0n3/Doom_3/tree/main/ELDOOM/Build_1304

I ported the source to dhewm3 build 1305 (untested) which can be found here:
https://github.com/Ez0n3/Doom_3/tree/main/ELDOOM/Port/dhewm3

If it makes it easier, I have uploaded just the files from the dhewm3 SDK that have ELDOOM changes in them which can be found here:
https://www.mediafire.com/file/59btfso4bdetgew/eldoom_source_dhewm3_build_1305_diff.zip/file

Things to note:
I copied the "Portal Sky" code from RoE to ELDOOM in-order to take advantage of portal skies in the mod. I noticed in the SDK section, there was a pull request to add portal skies here: https://github.com/dhewm/dhewm3-sdk/pull/35
I'm not sure if that will conflict with my code, but I can remove it if so. All instances are denoted with "ELDOOM PORTAL SKY".

Thanks o/

walikor commented 4 weeks ago

hi, i'm not the author of dhewm3, but i tried your mod (with dhewm3) and it starts, but when it loads the first level it's all black. however the author @DanielGibson responds very quickly and converted the desolated mod, these days i'm trying to contact the author of dungeondoom (hellborg Leif Dehmelt) but he hasn't answered me yet

Ez0n3 commented 4 weeks ago

Yeah, I had the same issue. The problem is that immediately after loading into the mod, it uses the custom portal sky code to render a cutscene in space. Because the code is missing (no compatible dll), everything is black.

I'm currently in the process of setting up development environment for windows and linux which will take some time. I'll try to compile the code using the dhewm 3 SDK once it's setup. Hopefully things go well and I'll post back with the results.

Ez0n3 commented 4 weeks ago

So I was able to clone the dhewm3-sdk repo and apply the ELDOOM changes and it compiled without errors which outputs a base.dll file. But apparently dhewm3 doesn't use "\mod\gamex86.dll" anymore, but instead uses "\mod.dll" and "\mod\assets" structure?

Putting the gamex86.dll in a pk4 file inside the mod folder did nothing. Renaming gamex86.dll to eldoom.dll and placing that file along side base.dll and the exe resulted in:
shutting down: wrong game DLL API version

Usually that's when the dll file doesn't match the exe file version. Maybe there were changes to the source/sdk since the last release of dhewm 3? I'll try compiling the whole current dhewm 3 source into a new exe later and see if it works then.

walikor commented 4 weeks ago

So I was able to clone the dhewm3-sdk repo and apply the ELDOOM changes and it compiled without errors which outputs a base.dll file. But apparently dhewm3 doesn't use "\mod\gamex86.dll" anymore, but instead uses "\mod.dll" and "\mod\assets" structure?

Putting the gamex86.dll in a pk4 file inside the mod folder did nothing. Renaming gamex86.dll to eldoom.dll and placing that file along side base.dll and the exe resulted in: shutting down: wrong game DLL API version

Usually that's when the dll file doesn't match the exe file version. Maybe there were changes to the source/sdk since the last release of dhewm 3? I'll try compiling the whole current dhewm 3 source into a new exe later and see if it works then.

I don't know how useful I can be to you, when @DanielGibson converted the desolated mod he gave me a .dll file and I put it in the same location as dhewm3.exe and the mod started.

https://github.com/dhewm/dhewm3-sdk/tree/desolated

DanielGibson commented 4 weeks ago

Assuming your mod data is in the eldoom/ directory, your DLL (built from the dhewm3 SDK patched with your changes) must be called eldoom.dll and be placed next to dhewm3.exe.

Don't worry about conflicts with the portalskies pull request.

Since introducing the dhewm3 SDK, its API has been stable and I haven't changed the API version (unless you're not using a normal dhewm3 release or the master branch, but the experimental high-fps kickstart-my-hertz branch, that one breaks the game API). Have you maybe used (and renamend) the gamex86.dll built with the original Doom3 SDK?

I hope I'll get around to look at your mod in the next days

Ez0n3 commented 4 weeks ago

@walikor
No worries, thanks for trying it out o/

@DanielGibson
Yes, the mod is in the /eldoom/ directory and I removed the old game00.pk4/game02.pk4 files for testing (no dll's are in the /eldoom/ folder). I have been compiling the base.dll using the dhewm3 sdk and renaming it to eldoom.dll and placing it along side the dhewm3.exe with these results:

When I try to merge the ELDOOM changes here https://github.com/Ez0n3/Doom_3/tree/main/ELDOOM/Port/dhewm3 into the "current" dhewm3 SDK https://github.com/dhewm/dhewm3-sdk and try to run the mod, I get:
shutting down: wrong game DLL API version

When I try to merge the ELDOOM changes here https://github.com/Ez0n3/Doom_3/tree/main/ELDOOM/Port/dhewm3-sdk-update into the "stale" https://github.com/dhewm/dhewm3-sdk/tree/update and run the mod, it starts without error but, the portal sky is not working (the sky is all grey). Also, when ELDOOM starts a new game, it renders a 5 minute cutscene with multiple transitions before the player takes control (which can be skipped by pressing Esc). The problem is that on the first transition in the cutscene (transition from outside ship view to inside ship view) or by pressing Esc and skipping the cutscene, it drops the player into a black room and the screen is all black except for the hud and crosshair. I can hear the player moving around and hear the sound of punching the walls, but cannot see anything. It never loads into the mod from there, the cutscene music just plays on the loop with a black screen and the player never gets into the first map.

To better illustrate what is supposed to happen, here is a youtube video from "Simo K" playing the mod. So far, at the 47sec mark in the video, it drops the player into the all black room and they are stuck there from then on rather than the cutscene continuing:
https://www.youtube.com/watch?v=6NquUv2vgoU

I'm not sure if that's due to the portal sky code not working or maybe dhewm3 handles cutscene transitions differently. The portal sky not working may be due to changes in d3xp where I pulled the portal sky code from on the official 1.3.1 SDK. I'll try to poke around d3xp and see if there's any changes to the code that would make a copy and paste from the 1.3.1 SDK break dhewm3.

Take your time and thanks for looking into it. I've been looking forward to playing some mods using dhewm 3 with all the enhancements. I just want to get mine working also :P

Edit: Added the ELDOOM source changes locations for current and stale.

Edit 2: I just noticed that in the console upon startup, it says:
LoadLibrary (./dhewm3/eldoom.dll) Failed! [193 [OxC1]] probably the DLL is of the wrong architecture, like x64 instead of x86
couldn't load mod-specific eldoom.dll, defaulting to base games library!
So it's not even using it even though the game and mod started which explains why the portal sky doesn't work.

DanielGibson commented 3 weeks ago

Edit 2: I just noticed that in the console upon startup, it says: LoadLibrary (./dhewm3/eldoom.dll) Failed! [193 [OxC1]] probably the DLL is of the wrong architecture, like x64 instead of x86

That means that you built the DLL for "x64" instead of "Win32" (when using the official dhewm3.exe which is 32bit). "Win32" used to be the default in CMake, but in some recent(ish) version they made "x64" the default

image

DanielGibson commented 3 weeks ago

I integrated the changes into the dhewm3 SDK, at least on Linux it seems to work: https://github.com/dhewm/dhewm3-sdk/tree/eldoom

DanielGibson commented 3 weeks ago

Here's eldoom.dll for Win32: eldoom_dhewm3_win32.zip

walikor commented 3 weeks ago

Here's eldoom.dll for Win32: eldoom_dhewm3_win32.zip

is working thanks. question i saw this mod that is very interesting can it be converted for dhewm3? i may have found the source code but confirm if it is correct. https://www.moddb.com/mods/arx-end-of-sun this is the mod https://sourceforge.net/p/arxendofsun/code/HEAD/tree/ this is the source

thanks

DanielGibson commented 3 weeks ago

question i saw this mod that is very interesting can it be converted for dhewm3? i may have found the source code but confirm if it is correct. https://www.moddb.com/mods/arx-end-of-sun this is the mod https://sourceforge.net/p/arxendofsun/code/HEAD/tree/ this is the source

As usual: It most probably can if the developers agree to relicensing the source to GPL. Could you try to contact them and ask if they're ok if their mod is ported to dhewm3 and (only its C++ source code) is released under GPL?

walikor commented 3 weeks ago

question i saw this mod that is very interesting can it be converted for dhewm3? i may have found the source code but confirm if it is correct. https://www.moddb.com/mods/arx-end-of-sun this is the mod https://sourceforge.net/p/arxendofsun/code/HEAD/tree/ this is the source

As usual: It most probably can if the developers agree to relicensing the source to GPL. Could you try to contact them and ask if they're ok if their mod is ported to dhewm3 and (only its C++ source code) is released under GPL?

ok I contacted the author of the mod but the last access was on Sep 17 2020.

Ez0n3 commented 3 weeks ago

@DanielGibson The eldoom.dll you posted works great and I was also able to compile it on Linux Mint 22 and Windows 11 after changing the Cmake platform to Win32. Looks great at 4k with all the enhancements, woohoo!

Thank you very much for all the work you and your team did on dhewm3 and for helping me get my mod working on it, you are the man o/

Time to repack the mod and then download a whole bunch more lol.

Thanks again o/

DanielGibson commented 3 weeks ago

Glad it works, thanks for releasing the source :)