TheEasterPlatypus@Posted: Sat Dec 01, 2012 3:06 pm :
Hello there, I know there are probably about 100 threads about "how to start modding", but I didn't find a single one of them (and I hope I'm in the right section for this :x)

So far I did some level mapping for Doom 64 (for the Doom 64 PC port) and while it's fun I want to try out something newer. I saw all the great Doom 3 mods which are currently in development, so I wanted to give Doom 3 modding a try. I already have some big plans but I know that there is a long way to go, so I'd like to start with small things.

I downloaded the Doom 3 SDK but now I'm unsure what to do next. Either getting into Doom 3 mapping or learning scriping/coding.
I've heard that D3's scripting is a lot like C++ (which I'm also interested in), I did a lil bit of C++ before, but that's just the very basic stuff.

I'm undecided what to next and heard from a modder that this forums is a great starting point, so I ask here what you suggest me to look into first. I've alreadys seen that there are many tutorials for levelediting, but nothing about coding/scriping.



BloodRayne@Posted: Sat Dec 01, 2012 3:31 pm :
If you want to start mapping, the best place to start is jumping right into the editor. I suggest focussing on one thing first. Trying to learn both might be a lot to handle at once.
The trick is to take it one step at a time, start very simple. For instance customize an existing Doom map and learn how to they've set up the lighting, brushwork, static meshes, sounds, clipping etc.. From there you can build your own rooms and continue on to full maps.

I learned mapping best by creating a goal: A very small 4 room fully detailed map with monsters and some gameplay and one cinematic.
That covers a lot of areas, e.g. monster pathing, brushwork, lighting and light overlapping (and how you should avoid that) etc..etc..
Then when you find out you can't do things in the editor move on to map scripts and build from there.

Ok. So onto the groundwork.
Bookmark http://www.iddevnet.com it's a good reference site. Mind the 'reference' and not 'tutorial' part of that sentence. ;)

Create a new folder which has your mod name in lower case (e.g. mymod) in the doom3 directory.
Open up and unzip the PK4 files into this directory.
Now set the shortcut for Doom 3 and add this :+set game mymod
(where mymod is the dirname of your mod).

Now you can fiddle.

File structure
I will skip self explanatory folders.

af - Stands for articulated figure this holds the flat text file definitions for articulated figures a.k.a. 'ragdolls'. Advanced stuff, crash proned.
dds - Holds the DDS versions of the textures
env - Holds cubemap environment textures such as skies
fx - Holds the flat textfile FX declarations
glprogs - Renderprogs, advanced.
guis - Holds the flat textfile gui declarations.
materials - Holds the flat textfile material definitions.
particles - Holds the particle effects definitions.
script - Holds the flat textfile scripts that entities use.

Ok, so the basic structure is this.
Everything in 'the world' is an entity for the Doom3 engine.
Every entity has so called spawn arguments 'spawnArgs' which are checked when the entity is spawned.
Most of these arguments are checked only once, meaning that when they change the objects needs to be spawned again.

Every entity is defined in a declaration file called a DEF file. This tells the engine what kind of entity it is, what kind of spawn arguments it has and so forth. Each entity can have a script object attached to it. This is handy because it allows for code to be changed outside of the compiled engine. But scripts tend to be slower and ask for much more resources so it's always a trade off. (My rule of thumb is that I move code to the SDK as soon as it involves routines that are called each frame or very regularly). You can do very advanced things in script, I've done thing with it I initially thought were impossible to do with script. But it's always limited compared to what you can do with the SDK. The tradeoff there is that when you code the SDK wrong you get 0 error messages just a crash and when you script wrong you get readable error messages.

You can edit DEF files by hand in notepad or any text editor and reload the definitions by issuing the 'ReloadDecls' command in the console.
Remember that the settings will not take effect unless you respawn the entity or restart the map.
With the DEF files you can change simple things such as weaponry & projectiles, how they react, ammo counts, damages, playerspeed, monster health etc..etc.. Most of the stuff that's put into a variable can be configured from the DEF files. When Doom3 was just released many mini-mods were released that only had DEF file changes, nothing more. These mods boosted up weapon damage, added ammo, increased health & speed etc..etc..etc.. There were also some 'realistic' skill mods that lowered ammo counts, health for the player and made the game harder.

Map editing.
There are a ton of map editing tutorials available on this site so I won't dive much into that. The main thing I will tell you is to FIRST learn how lighting works before you start anything else.
Learn it's pitfalls in the D3 engine and learn how to map around the lights instead of seeing light as an afterthought. There are many more tips, but lights are usually your biggest concern when mapping.

The last tip I can give you is to learn how the basic principles of the engine work.
Once you understand those principle then you can deduct how anything works in the engine simply by following the right logic. Make small testmaps to test out just that entity, make a testmap and figure out how to have monsters follow a path. Or create a small map then let monsters in it without any monster clip and see how their AI becomes insta-stupid and you need to carefully create paths for them using monster_clip and AAS obstacles.

I hope you fare well in D3 modding when you have specific questions don't hesitate to create a thread in the appropriate sections.



Douglas Quaid@Posted: Sat Dec 01, 2012 4:32 pm :
What he said! :)



TheEasterPlatypus@Posted: Sat Dec 01, 2012 5:30 pm :
Ok, that was a fast and detailed answer, thanks ^^

But I haven't even started and run into the first problem <.<
The game won't just let me start it in windowed mode... or better said, it won't let me change anything in the option menu. After a restart everything remains the same.
So, every time I try to open the editor, my whole changes to a 320 x 480 resolution (mine is 1440 x 900) ...

I also tried alt + enter to switch in window mode but that only made the game restart and has no visible effects as well.


Help D:



chimueloeldragon2011@Posted: Sat Dec 01, 2012 6:32 pm :
You can copy doom 3 exec and add the following in target tab:

"...\Doom3.exe" +set r_fullscreen 0 +set r_mode 5 +set r_multisamples 0 +editor +set com_allowconsole 1 +set fs_game yourmodfoldername +set developer 1 +vid_restart

Good luck and mod on ;)

BTW you can adjust r_mode to your preferences I use mode 5 which is 1024 x 768



BloodRayne@Posted: Sat Dec 01, 2012 6:41 pm :
^You don't need the vid_restart in the shortcut, that will just delay the engineload. Instead of 'set' use 'seta'.

In the console, you can also type:

r_fullscreen 0

and then

vid_restart

To restart the video, which will throw you to windowed mode.



TheEasterPlatypus@Posted: Sat Dec 01, 2012 7:01 pm :
Ok I got it now (it was a weird and different solution, but now it works xD).
Btw. I'd like to note that many of the links of many level editing tutorials don't work anymore, so I'm following the tutorials made by coderotgamers ( http://www.youtube.com/watch?v=pkutzrMl_fk ) which look quite decent.

Oh, and I got a last question. Now, that the id Tech 4 source code is open source, are there some projects to improve the engine? I know about iodoom3 and Dante, but both of them look quite dead...



TheEasterPlatypus@Posted: Sat Dec 01, 2012 3:06 pm :
Hello there, I know there are probably about 100 threads about "how to start modding", but I didn't find a single one of them (and I hope I'm in the right section for this :x)

So far I did some level mapping for Doom 64 (for the Doom 64 PC port) and while it's fun I want to try out something newer. I saw all the great Doom 3 mods which are currently in development, so I wanted to give Doom 3 modding a try. I already have some big plans but I know that there is a long way to go, so I'd like to start with small things.

I downloaded the Doom 3 SDK but now I'm unsure what to do next. Either getting into Doom 3 mapping or learning scriping/coding.
I've heard that D3's scripting is a lot like C++ (which I'm also interested in), I did a lil bit of C++ before, but that's just the very basic stuff.

I'm undecided what to next and heard from a modder that this forums is a great starting point, so I ask here what you suggest me to look into first. I've alreadys seen that there are many tutorials for levelediting, but nothing about coding/scriping.



BloodRayne@Posted: Sat Dec 01, 2012 3:31 pm :
If you want to start mapping, the best place to start is jumping right into the editor. I suggest focussing on one thing first. Trying to learn both might be a lot to handle at once.
The trick is to take it one step at a time, start very simple. For instance customize an existing Doom map and learn how to they've set up the lighting, brushwork, static meshes, sounds, clipping etc.. From there you can build your own rooms and continue on to full maps.

I learned mapping best by creating a goal: A very small 4 room fully detailed map with monsters and some gameplay and one cinematic.
That covers a lot of areas, e.g. monster pathing, brushwork, lighting and light overlapping (and how you should avoid that) etc..etc..
Then when you find out you can't do things in the editor move on to map scripts and build from there.

Ok. So onto the groundwork.
Bookmark http://www.iddevnet.com it's a good reference site. Mind the 'reference' and not 'tutorial' part of that sentence. ;)

Create a new folder which has your mod name in lower case (e.g. mymod) in the doom3 directory.
Open up and unzip the PK4 files into this directory.
Now set the shortcut for Doom 3 and add this :+set game mymod
(where mymod is the dirname of your mod).

Now you can fiddle.

File structure
I will skip self explanatory folders.

af - Stands for articulated figure this holds the flat text file definitions for articulated figures a.k.a. 'ragdolls'. Advanced stuff, crash proned.
dds - Holds the DDS versions of the textures
env - Holds cubemap environment textures such as skies
fx - Holds the flat textfile FX declarations
glprogs - Renderprogs, advanced.
guis - Holds the flat textfile gui declarations.
materials - Holds the flat textfile material definitions.
particles - Holds the particle effects definitions.
script - Holds the flat textfile scripts that entities use.

Ok, so the basic structure is this.
Everything in 'the world' is an entity for the Doom3 engine.
Every entity has so called spawn arguments 'spawnArgs' which are checked when the entity is spawned.
Most of these arguments are checked only once, meaning that when they change the objects needs to be spawned again.

Every entity is defined in a declaration file called a DEF file. This tells the engine what kind of entity it is, what kind of spawn arguments it has and so forth. Each entity can have a script object attached to it. This is handy because it allows for code to be changed outside of the compiled engine. But scripts tend to be slower and ask for much more resources so it's always a trade off. (My rule of thumb is that I move code to the SDK as soon as it involves routines that are called each frame or very regularly). You can do very advanced things in script, I've done thing with it I initially thought were impossible to do with script. But it's always limited compared to what you can do with the SDK. The tradeoff there is that when you code the SDK wrong you get 0 error messages just a crash and when you script wrong you get readable error messages.

You can edit DEF files by hand in notepad or any text editor and reload the definitions by issuing the 'ReloadDecls' command in the console.
Remember that the settings will not take effect unless you respawn the entity or restart the map.
With the DEF files you can change simple things such as weaponry & projectiles, how they react, ammo counts, damages, playerspeed, monster health etc..etc.. Most of the stuff that's put into a variable can be configured from the DEF files. When Doom3 was just released many mini-mods were released that only had DEF file changes, nothing more. These mods boosted up weapon damage, added ammo, increased health & speed etc..etc..etc.. There were also some 'realistic' skill mods that lowered ammo counts, health for the player and made the game harder.

Map editing.
There are a ton of map editing tutorials available on this site so I won't dive much into that. The main thing I will tell you is to FIRST learn how lighting works before you start anything else.
Learn it's pitfalls in the D3 engine and learn how to map around the lights instead of seeing light as an afterthought. There are many more tips, but lights are usually your biggest concern when mapping.

The last tip I can give you is to learn how the basic principles of the engine work.
Once you understand those principle then you can deduct how anything works in the engine simply by following the right logic. Make small testmaps to test out just that entity, make a testmap and figure out how to have monsters follow a path. Or create a small map then let monsters in it without any monster clip and see how their AI becomes insta-stupid and you need to carefully create paths for them using monster_clip and AAS obstacles.

I hope you fare well in D3 modding when you have specific questions don't hesitate to create a thread in the appropriate sections.



Douglas Quaid@Posted: Sat Dec 01, 2012 4:32 pm :
What he said! :)



TheEasterPlatypus@Posted: Sat Dec 01, 2012 5:30 pm :
Ok, that was a fast and detailed answer, thanks ^^

But I haven't even started and run into the first problem <.<
The game won't just let me start it in windowed mode... or better said, it won't let me change anything in the option menu. After a restart everything remains the same.
So, every time I try to open the editor, my whole changes to a 320 x 480 resolution (mine is 1440 x 900) ...

I also tried alt + enter to switch in window mode but that only made the game restart and has no visible effects as well.


Help D:



chimueloeldragon2011@Posted: Sat Dec 01, 2012 6:32 pm :
You can copy doom 3 exec and add the following in target tab:

"...\Doom3.exe" +set r_fullscreen 0 +set r_mode 5 +set r_multisamples 0 +editor +set com_allowconsole 1 +set fs_game yourmodfoldername +set developer 1 +vid_restart

Good luck and mod on ;)

BTW you can adjust r_mode to your preferences I use mode 5 which is 1024 x 768



BloodRayne@Posted: Sat Dec 01, 2012 6:41 pm :
^You don't need the vid_restart in the shortcut, that will just delay the engineload. Instead of 'set' use 'seta'.

In the console, you can also type:

r_fullscreen 0

and then

vid_restart

To restart the video, which will throw you to windowed mode.



TheEasterPlatypus@Posted: Sat Dec 01, 2012 7:01 pm :
Ok I got it now (it was a weird and different solution, but now it works xD).
Btw. I'd like to note that many of the links of many level editing tutorials don't work anymore, so I'm following the tutorials made by coderotgamers ( http://www.youtube.com/watch?v=pkutzrMl_fk ) which look quite decent.

Oh, and I got a last question. Now, that the id Tech 4 source code is open source, are there some projects to improve the engine? I know about iodoom3 and Dante, but both of them look quite dead...