Jump to content


Doom 3 modding

  • Please log in to reply
2 replies to this topic

#1 General_101



  • Member
  • Pip
  • 2 posts

Posted 06 March 2017 - 08:20 PM

I know this forum is for The Dark Mod but this seems to be the only place with an active technical side to Id Tech 4 so I'm kinda not sure where else to look.


So I've been trying to compile the Doom 3 source code to make some edits to some game mechanics in Resurrection of Evil. Thing is though I keep running into issues with errors in Visual Studio and I'm not exactly sure on how to solve them. I've been following this guide in order to compile the Doom 3 source code but I get issues with DoomDLL, MayaImport, and Game-D3XP.




MayaImport doesn't matter as the issue for it seems to be that I don't have Maya to begin with and I'm assuming isn't needed for me to compile anyways. DoomDLL fails however with errors about Win_input.cpp with errors about things being in a constat and identifiers. Game-D3XP fails due to a problem with the script_compiler.cpp with it complaining about constant char as well. 


I can get Game-D3XP to compile if I replace the script_compiler.cpp with the one from Game and it seems to work fine. While I managed to compile a DLL for Doom 3 and ROE they were much larger than the vanilla DLLs that come with the game. I know some things changed like something different about the shadows to avoid a problem with a patent but are they supposed to be almost twice as large? I removed the default DLLs from the game files and used my own which seemed to run fine which gets me on to the point.


The goal of this is essential to make some engine changes to allow the player to get ammo_souls like they did in Doom 3. I tried adding the Soul Cube and changing the Artifact to use ammo_souls so that it would be usable in custom maps that don't have the Artifact charge pickups. Killing enemies won't get you souls in ROE even if you have the Soul Cube in your inventory it seems and I've found this in the code.

void idPlayer::AddAIKill( void ) {

#ifndef _D3XP

	int max_souls;
	int ammo_souls;

	if ( ( weapon_soulcube < 0 ) || ( inventory.weapons & ( 1 << weapon_soulcube ) ) == 0 ) {

	assert( hud );

	ammo_souls = idWeapon::GetAmmoNumForName( "ammo_souls" );
	max_souls = inventory.MaxAmmoForAmmoClass( this, "ammo_souls" );
	if ( inventory.ammo[ ammo_souls ] < max_souls ) {
		inventory.ammo[ ammo_souls ]++;
		if ( inventory.ammo[ ammo_souls ] >= max_souls ) {
			hud->HandleNamedEvent( "soulCubeReady" );
			StartSound( "snd_soulcube_ready", SND_CHANNEL_ANY, 0, false, NULL );

From what I've been told the #ifndef _D3XP skips the code if D3XP is defined somewhere but I'm not a code expert and this is just my guess from reading what the statement might mean online.


The other problem after this is that I want to use Sikkmod on top of these changes with my Doom 3 mod list. While Sikkpin released the source to his mod I'm not 100% on how to use it. I assuming you just plant it on top of the vanilla Doom 3 source code and compile it that way but doing that gives me issues with player.obj and calling external objects.


Error 1015 error LNK2019: unresolved external symbol "public: __thiscall idGrabEntity::idGrabEntity(void)" (??0idGrabEntity@@QAE@XZ) referenced in function "public: __thiscall idPlayer::idPlayer(void)" (??0idPlayer@@QAE@XZ) C:\Users\The_OId_AI\Downloads\doom3.gpl-master - Copy\neo\Player.obj
Really, all I want help with is compiling it all properly so that I can look into what I need for the Soul Cube and the Artifact.
1. Is the guide I'm following correct? Are there any extra steps I need to take that the guide may not have mentioned due to maybe the author thinking it was obvious?
2. Is the compiled DLL supposed to be about twice as large as the vanilla counterpart? If not what exactly should I do to make sure it is?
3. How can I resolve the issues I am having with Sikkmod 1.1 ROE edition source? What steps do I need to take in order to compile it.
4. Is it a bad idea to do what I am doing with script_compiler and D3XP? Is there something I should look into for a proper solution?
More info here but I think I covered everything here.
If there is anything I'm missing that you need ask and I'll see if I can give you an answer.


#2 nbohr1more


    Darkmod PR, Wordsmith

  • Development Role
  • PipPipPipPipPip
  • 8676 posts

Posted 06 March 2017 - 08:56 PM

That's a lot to unpack.


To start, any Game SDK code used to make Doom 3 DLL mods prior to the GPL release is probably going

to run into problems because the GPL code diverges from Doom 3 (v1.3.1).


Best if you diff the mod you are trying to integrate with the vanilla SDK code then identify the changes and translate

to the Game folder code in the GPL source.

Please visit TDM's IndieDB site and help promote the mod:


(Yeah, shameless promotion... but traffic is traffic folks...)

#3 General_101



  • Member
  • Pip
  • 2 posts

Posted 06 March 2017 - 11:33 PM

I didn't even know the SDK was a thing. I downloaded the SDK and now it compiles fine without needed to do any weird file swaps. While that fixes the vanilla compile process I still get the same error when trying to compile Game-D3XP with the Sikkmod source code on top. There is also still that file size difference between the vanilla DLL and the compiled DLL so I'm going to assume at this point that it's normal.


Error I get if anyone doesn't mind explaining this to the layman. For full understanding I'm just grabbing Sikkmod Roe 1.1 src and placing those files into the Doom 3 1.3.1 SDK D3XP folder and hitting compile.

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users