Giter Club home page Giter Club logo

international-doom's Introduction

About

Small, functional and simple source ports, created with help, efforts and bits of code from people around the world.
The project is based on Chocolate Doom and Crispy Doom, with significant additions from DOOM Retro.

The project is created by Julia Nechaevskaya.

Download

International Doom, version 7.4 (released: March 8, 2024):

International Heretic, version 7.0 (released: March 8, 2024):

International Hexen, version 7.0 (released: March 8, 2024):

Major features

  • Optional True Color render.
  • Up to x6 (1200p) rendering resolutions.
  • Uncapped framerate.
  • Additional, darker gamma-correction levels.
  • Support for OPL2, OPL3, MIDI, Fluidsynth and GUS music playback.
  • In-game keyboard and mouse bindings.
  • Various visual, audible, physical and demo enhancements.
  • Compatibility with vanilla-engine demos.
  • Removed limitations of vanilla engine.
  • Support for nodes in extended format (ZDBSP and DeePBSP).
  • Support for BEX/DEHEXTRA DeHackEd extensions.

Note: BOOM/MBF/MBF21 specifications are not supported.

License

International Doom is Open Source and licensed under the GNU General Public License v2.

international-doom's People

Contributors

jnechaevsky avatar kitchen-ace avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

kitchen-ace

international-doom's Issues

[Feature] Inter-Doom: Extended autoload support

Consequently, after issue #104 has been granted:

Inter-Doom should also support certain official pwads in autoload, namely:

  • Chex Quest 2 (chex2.wad) which works only in combination with chex.wad --> This one is kind of a no-brainer, actually
  • No Rest for the Living (nerve.wad) --> By Nerve Software, so I would say it's official enough

It might also be considered to add the Master Levels to this exception, even though it might become a bit excessive. In that case, following subdirs would be concerned:
attack.wad, blacktwr.wad, bloodsea.wad, canyon.wad, catwalk.wad, combine.wad, fistula.wad, garrison.wad, geryon.wad, manor.wad, mephisto.wad, minos.wad, nessus.wad, paradox.wad, subspace.wad, subterra.wad, teeth.wad, ttrap.wad, vesperas.wad, virgil.wad

Masterlevels.wad would require dedicated support and I dunno if you want to go that far. Currently it only works in ports with some sort of MAPINFO/UMAPINFO support. Woof! supports it, which I think might be close enough to vanilla.

As there are no more official pwads (Sigil 1+2 are not from id or its affiliates), this should cover everything. I understand if you don't want to go overboard with this feature, so I won't ask for more. :)

[Feature] Rename "Fly Center" keybind

IMHO, the title for the "Fly Center" keybind (Heretic/Hexen) is a bit misleading. What it actually does is to interrupt flight mode. Therefore, something like "Fly Stop" or "Fly Pause" (to fit with "Fly Up"/"Fly Down") would be more helpful (also since it's actually a rather important function, which isn't obvious with the current title).

[Bug] Inter-Doom and menu background shading

There is an issue with latest build of Inter-Doom and "Menu Background Shading". As soon as you turn it on, the statusbar will flicker like crazy during demo playback. The effect gets worse the higher you set the value.

Issue only affects Doom. Heretic and Hexen work fine.

[Bug] HEHACKED (partially) not working

It seems that at least some parts of an embedded HEHACKED lump suddenly aren't recognized any more in Inter-Heretic. Used to work fine in earlier builds.

The following code will only show the level names, but not the episode (in this case, ep.1):

Patch File for HHE v1.1

# Note: Use the pound sign ('#') to start comment lines.

Heretic version = 10
Patch format = 1

Text 7096 21
DUNGEONS AND MONSTERS

Text 1240 30
E1M1:  DUNGEONS AND MONSTERS 1

Text 1260 30
E1M2:  DUNGEONS AND MONSTERS 2

Text 1280 30
E1M3:  DUNGEONS AND MONSTERS 3

Text 1304 30
E1M4:  DUNGEONS AND MONSTERS 4

Text 1328 30
E1M5:  DUNGEONS AND MONSTERS 5

Text 1348 30
E1M6:  DUNGEONS AND MONSTERS 6

Text 1372 30
E1M7:  DUNGEONS AND MONSTERS 7

Text 1392 30
E1M8:  DUNGEONS AND MONSTERS 8

Text 1412 30
E1M9:  DUNGEONS AND MONSTERS 9

Tested with various other files, same result. So far, episode names are the only thing I can confirm to be malfunctioning.

Hexen: torch goes too dark

When you use the torch, it's supposed to make the level bright, and oscillate the light level a bit. In inter-hexen the light oscillates way too far, with the lowest value being pretty dark.

Also affects crispy-hexen, but only truecolor builds.

Coloured ammo widget

I started working on colourizing the ammo widget, but thought I should ask for your opinion on some questions. Here's a mockup:

HTIC04

Questions:

  • Do we want an option for doing this, or is it enough to colour it if "colored elements" for the statusbar is on?
    If we want a separate option, it should probably be split into "ammo+weapons", "ammo only", "weapons only" items, I think. (Here I am colourizing the weapon letter for weapons that the player has).
  • Do 0s for 'no ammo' get coloured? They should to be consistent with the way statusbar/hud ammo is I guess.
  • Should the ammo totals be colourized as well for the full widget? (Coloring the slash but not the total like I did here looks bad, that can be changed easily though.)
  • I would like to add some indication if the player has the gauntlets. Adding a 'g' is easy enough, but then it only makes sense for it to always appear if the weapon letters are coloured. Also, should it go above or below the other weapon/ammo lines?
  • Any other thoughts?

Hexen sfx attenuatian axis

Helloho :)

i was not sure if the sfx attenuation axis option is not in the Inter-Hexen menu, because Hexen as the most advanced ID-Tech1 game from those three could have the feature built in by default.
So i made a short test with a dark bishop 1920 pixels above me.

The result was, that there is no difference when i stand next to the dark bishop or 1920 pixels below him.

For the case this feature is on your list and i was too early in checking this you can ignore this.

Inter-DOOM mouse-look option

Helloho,

Inter-Heretic and Inter-Hexen both have a mouse-look option in "control-settings".
To use mouse-look in Inter-DOOM i assign a key for the mouse-look toggle under key-bindings and press that key once, or edit the config file.

That was never a problem, because i have a backup of my config-files that i copy in the folder, but for newcomers or the sake of equality Inter-DOOM should handle it like the other both games.

KdiKdizd Demo desync

Hi Julia.

I have found something that you won't find good :(

Unfortunately the attached KdiKdizd demo desyncs in the green acid area.
Tested Inter-DOOM versions were 7.1,7.3 and latest build from today.
I have deleted even my config and did not touch anything in the menu to be sure that it is not an failure of my config.

Woof and Crispy do the demo fine.

The 4files (2WAD,1DEH and the Demo lump) were put on the exe per drag and drop in all cases from the same source folder.

KDiKDi13-342.zip

Hexen: crash on load game after death

Can't reproduce but maybe you have an idea. Was playing this wad: https://www.doomworld.com/idgames/levels/hexen/a-c/cent092b

Saved, died shortly after, pressing spacebar to reload crashed:

P_SetupLevel: MAP01 ("CENTROMERE"), loaded in 5 ms.
P_SetupLevel: MAP02 ("THE AMBUSH POINT"), loaded in 4 ms.
Corrupt save game: Segment [104] failed alignment check

Note that I was still on MAP01.

After starting inter-hexen again the save worked fine, even after dying.


edit: OK got it to reproduce: start a new game with cent092b.wad and On Death Action set to "Last Save", quicksave, die, press space.

gdb doesn't give me anything useful.

[Bug] Inter-Heretic: "Too many mace spots" crash in "The Realm of Parthoris 2015"

When leaving E1M7 of "The Realm of Parthoris" with Inter-Heretic (latest dev build), the game crashes to desktop with the following message: "Too many mace spots."

This PWAD is supposed to be compatible with limit-removing vanilla ports and I didn't have any issue with it until that moment. For testing purposes, I have attached a zipfile containing the following:

  • The PWAD itself (rop_2015.wad), slightly altered by adding a HEHACKED for episode/level names
  • Savegame made right before the E1M7 exit teleporter. You just step onto it and you can experience the crash.

rop_2015-test.zip

[Feature] Heretic automap color for secrets

Secrets in Inter-Heretic are shown as grey lines on the automap. While this works well in Doom with a black background, this is less the case in Heretic's (and Hexen's) map with its pergament look.

Originally, IIRC secret automap lines in Heretic used to be black. While this makes them kinda hard to distinguish from regular lines, it definitely works better than grey. Maybe white could be tried instead if a return to the original color isn't desired.

Since there doesn't seem to be a way to customize automap colors for drawn lines (at least I haven't seen any in the ini file), this would actually be kinda important in order to not having to glue your face too close to the screen to spot those elusive little secret areas. :)

Screenshot to illustrate the issue:
HTIC00

Gameplay features/default skill level option not highlighted.

Hi Julia.

I have found a tiny "issue" in Inter-Hexen, Heretic and DOOM.
Gameplay features, page 3, the default skill level options (normal, hard...) are not highlighted/glowing when selected.
Everything is shining except that option.

Just for the case it's not meant to be so and you've forgotten.

Doom: blinking Tower of Babel

@fabiangreffrath, @rfomin, @bradharding,

Colleagues, I'm seeing things... And issue this happens across all our ports. Have a look at the tower, it's blinking for one frame, right before intermission screen goes to next stage, i.e. to WI_initShowNextLoc() and drawing "you are here":

bandicam.2024-03-06.23-22-54-759.mp4

Easiest way to see it is to finish E2M7. If I'm getting it right, this is happened because of this line - it re-sets animation elements. And in fact, it shouldn't be called again in WI_initShowNextLoc(), since all animations are set on initial initializations of single player, deathmatch and coop. So the fix in this case should be as simple as:

+++ wi_stuff.c
@@ -791,15 +791,15 @@
 	return;
     }
 
     state = ShowNextLoc;
     acceleratestage = 0;
     cnt = SHOWNEXTLOCDELAY * TICRATE;
 
-    WI_initAnimatedBack();
+    // WI_initAnimatedBack();

[Bug] Inter-Hexen: "Randomly Mirrored Corpses" menu option too long

In Inter-Hexen, the new option for "Randomly Mirrored Corpses" seems to be too long in the menu to show which selection you have actually made.

I guess the solution would be to either make the option name shorter (e.g. "Mirrored Corpses") or increase the distance between option names and choices.

[Feature] Global MAPINFO support

I know I'm leaning out of the window quite a bit with this, but here it goes:

Hexen's MAPINFO format is pretty much what ZDoom used in its infancy stage. Even in its original form, it offers a lot of possibilities. If it were available also in Inter-Doom and Inter-Heretic, life for vanilla mappers would become a lot easier. The nightmare that is HEHACKED could be disregarded. More complex episodic structures with secret exits deviating from vanilla would become possible. Support for masterlevels.wad. Just to name a few options.

For Crispy, such a thing is most likely out of scope, but you seem to take a few more risks and liberties here. It could be one, if not THE feature which makes International stand out from the crowd. (I remember someone wanted to bring DMAPINFO from Doom Unity to Crispy, but didn't see it through. Kinda indicates it's not an easy task.)

This is for your humble consideration and probably rather something meant for the time after Inter-Hexen has become final and official. Maybe it can/should be discussed with a few more users here in the meantime. Any sort of opinions are welcome and appreciated.

[Bug] Inter-Hexen compilation errors (demo-related)

Looks like more compilation errors have been introduced with latest commits, I'm afraid...

FAILED: src/hexen/CMakeFiles/hexen.dir/mn_menu.c.obj
international-doom/src/hexen/mn_menu.c: In function 'MN_Responder':
international-doom/src/hexen/mn_menu.c:4899:31: error: 'netdemo' undeclared (first use in this function)
 4899 |         else if ((!netgame || netdemo) && key != 0 && key == key_reloadlevel)
      |                               ^~~~~~~
international-doom/src/hexen/mn_menu.c:4899:31: note: each undeclared identifier is reported only once for each function it appears in
international-doom/src/hexen/mn_menu.c:4910:17: warning: implicit declaration of function 'G_DoPlayDemo'; did you mean 'G_PlayDemo'? [-Wimplicit-function-declaration]
 4910 |                 G_DoPlayDemo();
      |                 ^~~~~~~~~~~~
      |                 G_PlayDemo

Heretic & Hexen: misc feature/minor issues discussion

Since these ports are getting closer to a proper release, here's some random things I've thought about while playing. All of these are very minor and you are well within your right to WONTFIX all of them :)

✅ Heretic: The secret found message overwrites the normal messages while it's up; often I've stumbled into a secret area and picked up something but I don't know what it was because the pickup message is supplanted.
It might be possible to display normal messages on a 2nd line? Or move the secret message back to the center of the screen.

This is also the case with Hexen's "some of the puzzle has been solved" type messages; I imagine special-casing these is harder though.

Hexen:

  • Jumping while in noclip mode makes your jump height lower/faster. This is a vanilla bug. Really there's no need to jump in noclip, but it looks a bit odd anyhow.

  • ❌ The Heresiarch's floating cubes can disappear. (vanilla bug). This is probably very hard to fix in a demo-safe way, see this discussion from Doomsday: https://tracker.dengine.net/issues/770
    (seems down right now, the gist is that the sectors the cubes get spawned in don't get updated IIRC)
    Here's an example wad to test if you want: hxsorc.zip
    Let him walk towards you a bit and then circle around behind him.

  • ✅ Giving all weapons doesn't update the super-weapon indicators (either the normal statusbar one or the new inter-hexen widget). (vanilla behaviour again.) I don't know if there are situations where changing this would be a problem?

  • ✅ While I like your generic armour icon, is there a reason you didn't want to use one of the armour pieces as an armour icon? You could even make it class-specific: mesh armour for the fighter, shield for the cleric, amulet for the mage.

edit: All games:

  • ✅ option to reload save on death when you press a key instead of going to the start of the level

  • ✅ key to toggle vertical mouse movement on/off. (extremely niche use)

Also none of this is required for a proper release.

Play Freedoom with DOOM assets.

Hi Julia :)

Not an issue, but an Idea for a feature.

I have made an pwad to play freedoom1 and 2 with DOOM assets, because with DOOM monsters and weapons it looks more familiar.
This pwad contains nearly all Sprites (incl weapons) and all Sounds (except music) from DOOM2.

When playing Freedoom with this pwad the result is like a Megawad with new Levels, textures and music.

What do you think about an option for Inter-DOOM to use DOOM assets from DOOM.WAD or DOOM2.WAD for Freedoom?

Optional with or without changing textures, because the Freedoom textures are really nice. That could be another point that differs Inter-DOOM from other ports.

Of course, this assumes that you own DOOM and not just Freedoom.

[Bug/Feature] ID won't load chex.deh in the same dir as IWAD

International Doom does not recognize the required DEHACKED file for Chex (chex.deh) if placed in the same directory as chex.wad. This is usually the expected behavior.

Example launch cmd:
"./inter-doom.exe" -iwad "../../iwad/chex.wad"

../../iwad/chex.deh exists, but Inter-Doom won't find it.

Hexen: demo-safe fix for flechette throwing in tall sectors 🍾

This seems to be a demo-safe approach, though it's not really about demo compatibility, it's about crash prevention.

+++ international-doom/src/hexen/p_map.c
@@ -1669,15 +1669,22 @@
     else
     {
         leady = mo->y - mo->radius;
     }
     bestslidefrac = FRACUNIT + 1;
     P_PathTraverse(leadx, leady, leadx + mo->momx, leady + mo->momy,
                    PT_ADDLINES, PTR_BounceTraverse);

+    // [JN] Fail-safe: if bestslideline wasn't set in PTR_BounceTraverse,
+    // we have a serious problem of referring to a non-existent line in
+    // P_PointOnLineSide, which will cause the program to crash.
+    // To avoid this, do not continue with the bouncing code.
+    if (!bestslideline)
+    {
+        return;
+    }
     side = P_PointOnLineSide(mo->x, mo->y, bestslideline);
     lineangle = R_PointToAngle2(0, 0, bestslideline->dx, bestslideline->dy);
     if (side == 1)
         lineangle += ANG180;
     moveangle = R_PointToAngle2(0, 0, mo->momx, mo->momy);
     deltaangle = (2 * lineangle) - moveangle;
 //      if (deltaangle > ANG180)

Heretic: Crash trying to run Blasphemer

Worked the first time but now usually(?) crashes on starting a new map.

https://github.com/Blasphemer/blasphemer/releases/download/v0.1.8/blasphem-0.1.8.zip

Thread 1 "inter-heretic" received signal SIGSEGV, Segmentation fault.
0x000055555559717d in V_DrawShadowedPatch (x=270, y=192, patch=0x7ffff4a3c120)
    at /home/gxx/Games/doom/src/international-doom/src/v_video.c:390
390                     *dest2 = drawpatchpx2(*dest2, source[srccol >> FRACBITS]);

("Extra level brightness" feature is really appreciated here, this wad is very dark and mostly black & brown.)

Hexen: mouse slider can't go up past 9

Unlike the other inter-ports, you can't move the slider in the mouse controls menu further than 9. It still works fine if you set it manually via config editing.

Heretic: secret/exit linedef colour inconsistencies.

Last thing I can think of for Heretic, after a lot of testing. If you're "done" working on it for now, I can try a patch tomorrow.

IMO none of these display as I would expect:

Linedefs of secret sectors:

  • are never coloured if they are 2S and there is a height difference between the sectors front side and back side. Moving sectors (e.g. lifts) will show them coloured if the sector moves to the height of adjacent sectors, until it changes height again.
  • are never coloured if they are flagged to show as 1S
  • are never coloured if flagged to not show on the automap. Normally this is fine, but they aren't coloured even if IDDT is used. Also if you implement colouring secrets that have been found, I'd suggest the found-secret colour still shows on invisible linedefs.

Exit linedefs:

  • switch type linedefs are never coloured if they are on a 2S line

Teleport linedefs work fine, and I haven't noticed any problems with doors that need keys. (I would hope not since key-coloured doors are in vanilla, but with Raven's code that doesn't mean too much!)

test wad:
ht_linecolours.zip

[Feature/Issue] Automap keys on TNAWN

When playing on the lowest difficulty in Heretic, the location of keys is apparently not shown on the automap. A comparison with Crispy Heretic shows that it works there. Is this an intended change that needs to be manually activated via setting?

In any case, this should be on by default since it's a vanilla feature.

[Feature] Inter-Hexen: Customizable savegame path

It seems I'm unable to change savedir path in inter-hexen.ini. Whatever I put there, it wouldn't find my savegames unless the default directory (Inter-Hexen dir\savegames) is used. Also, any edits made would be reverted to default whenever the game is launched.

Also, relative dirs apparently aren't supported, e.g.

autoload_path                 "autoload"
music_pack_path               "musicpacks"

Always uses full path instead, i.e.
savedir "C:\Games\Doom\sourceports\inter-doom\savegames\"

Since Hexen produces a lot of savegames, even if user is only creating one or two by themselves, it'd be great to be able to create a subdir to separate them from the rest, i.e. Doom and Heretic.

[Heretic] End screen of E3M8 doesn't scroll properly

Very minor bug: when you beat Heretic's E3M8, after the text screen there's a two-part graphic that is supposed to scroll up. In inter-heretic it simply jumps from the bottom graphic to the top. Also if "text casts shadows" is enabled, during the time that the screen should be scrolling, the shadows flicker.

Here's a wad that makes it easier to test, on E3M8, just step forward to exit. End text message is replaced with just .

e3m8h.zip

Hexen: drawsegs overflow

not sure which commit it was but one of the new ones is now giving me lots of game ending errors
R_DrawPlanes: drawsegs overflow (###)

using -warp 7 should trigger it easily if you wander around the map, here's a savegame that will trigger it if you just strafe left a bit:
hex0.zip

Feature request (maybe): Fade animations

In GlBoom+ there is a GL option called "fade animations" that fades animated textures and flats from one frame into another. AFAIK no other port supports this, and I really like the look of it.

With the inter-ports having truecolor support, it should be possible for this to happen and look nice, in theory.

I have no idea how hard this would be to actually do though, it might be way too much work to even consider since you can't use the GL implementation, and that's fine. Just thought I'd ask.

There's also the issue of swirling liquids; I guess swirling should take priority over fading.

add '-shotdir' command line parameter

There's people (like me) that use the '-savedir' parameter to specify custom savegame folders (tipically, dedicating one to each iwad/pwad combo).
With other ports we can do the same with screenshots by using the '-shotdir' parameter, thus saving all content generated by the same play session being in the same directory.

It would be nice if inter-doom/heretic/hexen made this possible as well, either by forcing screenshots to be written to the same folder as the savegames (when the user has specified a custom/specific one) or by adding the '-savedir' parameter proper.

Thank you!

Heretic: Random segfaults

About once every 10-15 levels I get a random segfault that I can't reproduce. So far I've just been ignoring them. However playing E2M7 of htchest I seem to get them quite frequently (which may mean it's a different issue, but one that should be fixed if possible anyhow).

I made a debug release with -DCMAKE_BUILD_TYPE=Debug, I don't see it giving me any extra info though, just Segmentation fault (core dumped) like usual. Is there anything I can do to help figure out the cause?

Hexen: load game on death prefers manual saves over start-of-level saves

Normally in Hexen, if you die, pressing space will take you back to the start of the last level you were at, where the game auto-saves.

With inter-hexen set to "last save" for on-death, these autosaves at the start of maps are not considered, even if they are newer that the player's last manual save. Since you can't load them from the normal menu either, they effectively don't exist.

Hexen's save system is dumb :p

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.