JNechaevsky / international-doom

Small, functional and simple source ports, created with help, efforts and bits of code from people around the world.
https://jnechaevsky.github.io/inter-doom/
GNU General Public License v2.0
30 stars 2 forks source link

Inter-Hexen is back #62

Closed JNechaevsky closed 10 months ago

JNechaevsky commented 10 months ago

At the moment, it's just as a proof of concept that 6x resolution and true color render is possible, no other changes than in video code has been made.

Note: true color shines with full power when vis_smooth_light is set to 1.

Meerschweinmann commented 10 months ago

Inter-Hexen looks so nice. I did a quick run with Deadkings of the dark citadel before i went to work. πŸŽ‰πŸŽ‰πŸŽ‰

JNechaevsky commented 10 months ago

Oh yes, it looks surprisingly neat. πŸ™‚ Check out foggy maps (like VISIT08), I have implemented more or less vanilla-like fog map, but it still have small potential to be even more vanilla-like.

The only problem I have bumped now is broken bright color translations of text on non-foggy maps (?!) when true color is off: image On foggy it's completelly okay: image

This definitely needs to be investigated, otherwise I will be forced to use different menu items highlighting.

Meerschweinmann commented 10 months ago

I had seen this text problem on DOTDC first map in a non fog area, but in Inter-Hexens current state i won't stress you with such findings, because the port is only one day old, the menu is not ready and you are working on it.

And hell, yeah, map 8's fog looks great. It could be a bit more intense far away, but hey for the moment there are other problems and the best is Inter-Hexen is back :)

Inter-Hexens fog is such a case like Inter-Heretics ghost monsters. The colors are others and the colors shift not so rough in movement, so it is not 100 percent reproducable like vanilla does. But that is not a bad thing, i like it a lot the way it does. Same for Inter-Heretics ghost monsters. It is a more "realistic" behavior. As long as you can speak of realistic in those good old games :)

Btw, map 8 showed me again what potential Hexen had back in the days. We had played it a lot in multiplayer, but then Quake was on the horizon and was released 1996. Even i was fascinated from Quake as it was released, today i am not the big Quake-player. I am hooked with those ID-Tech1 games and the good memories they gave me.

JNechaevsky commented 10 months ago

No problemo, I have fixed broken colors already by slightly different coloring technique. Not really noticeable, but cursor glowing is slightly different. Display Options menu is also back, along with text shadows. 😍

I'll play around with fog more, it's definitely doable to make it more in the distance, but this will be a play with for vector, not with graphics itself, and it's less exciting process.

Frankly, I never was a big fan of Hexen, neither a big of fan of Heretic. But I'm doing what I'm doing probably because of Idea "to make things better" and "to make things better than I did previously". Somehow engine visual and technical improving process is much more interesting than just playing, not really sure how to explain it, even to myself. Oh well, it's all about personal fads, but what is really important here - is to get good port in the end.

Neither I'm Quake player myself. It's good game, but it's... Different. Probably, we simply grown on id-tech1 games, that's why they are still so much valuable for us.

BTW, Heretic is done technically and ready to be published, but @kitchen-ace revealed a bug with some two-sided textures which is silently crashing the game. This is never happening on vanilla levels, but still a case. The best I can do here is to wait for Michael's fix in Crispy tracker, as I simply can't to anything better - simple copy-paste approach from Doom fixes this issue, but skies get broken.

Ah yes, a photo of the moment of birth! It's just a 1.5 hours old, barely ported from Chocolate Hexen to "whoah, it compiles and whoo-hoo, it even somehow works!" condition.

![image](https://github.com/JNechaevsky/international-doom/assets/21193394/28933f13-5b01-4371-9034-eafdacc6cc03)
Meerschweinmann commented 10 months ago

I have seen that the menu is growing and the failure pixels in the words are gone. You are very busy 😊

Don't stress with the fog. For an initial release it is more than good.

I think i know what you mean. Sometimes i stand still in game and switch between the qol options, change resolutions, truecolor/paletted colors only to see how much the game evolves from how it looked in the 90s and what is possible without changing it too much to get a "faithful more hi-tec retro" feeling to preserve my memories i have with these games. And yes, thats it, we grew up with those ID-Tech1 games and its all about memories/feelings on good times/friends that played them with us.

Sure from those ID-TECH1 games DOOM is the best, but Heretic and Hexen gave my Friends and me many hours of fun too, so i don't want to miss them.

I am sure there are many people that will be happy when you release Heretic when it is ready.

And respect how much you could do in 1.5 hours to get Hexen from its first picture to that what it is now.

Meerschweinmann commented 10 months ago

Inter-Hexen with the extended assets from old Russian/Inter-DOOM looks really good.

Btw, what was the reason to remove them? Legal reasons?

HEXEN04

kitchen-ace commented 10 months ago

Somehow engine visual and technical improving process is much more interesting than just playing, not really sure how to explain it, even to myself.

The enjoyment you get out of making something is different to what you get out of playing/experiencing something, so it makes sense that you are motivated to make these ports even for games you aren't the biggest fan of.

In any case I do really like Heretic (and Hexen too but there's hardly any non ZDoom wads for it) so I really love all the work you've done on it.

JNechaevsky commented 10 months ago

Btw, what was the reason to remove them? Legal reasons?

Not exactly, but this reason too. I like the idea of being truly GPLed and free from any resource dependency. Widescreen assets can't be GPLed since all of them are based on original arts, which were never GPLed. Another case is - there were some suggestions earlier to switch from Nash's art to Scuba Steve ones, so I decided to go with "if unsure, fallback to vanilla", same to default settings.

Sorry, I'm not very responsive these days, grinding Hexen a bit too maniacally, from morning till midnight, even on day job. It's true color is a huge gestalt that needs to be done. I am at final stage of implementing fading effects on finale screens.

As for taking food and water - heh, I really don't need much food, as I have a thin body type and try to maintain it at all costs. But hey, don't worry for me, I know what I'm doing! πŸ™‚

JNechaevsky commented 10 months ago

I'm close to tears and looks likes it is done... 😒 Not really noticeable because of video compression, but fading colors are slightly more smooth than in paletted approach.

https://github.com/JNechaevsky/international-doom/assets/21193394/8adf474e-954d-4d0b-ab6c-87ac2e52a333

Meerschweinmann commented 10 months ago

What do you mean with close to tears and done? That looks very good, even in this compressed Video. Later i will have a look at it in both color-modes.

And hey, no problem about your responsiveness (does that word exist?). I have seen that you are in berserker-mode with Hexen programming. I'm more worried that I'm writing too much πŸ˜€

Meerschweinmann commented 10 months ago

I don't dare to say it and don't want to shock you, but it does not fade whether i choose paletted colors or truecolor.

As test i have deleted my build folder in Mingw64 and let it build new .exe files. "git pull" before says "already up to date" I have made fresh folder for ID and copied a HEXEN.WAD, the new .exe files and libraries in it, but that did not change something.

If the problem doesn't exist for you, please don't dwell on it. I can wait.

With paletted colors i get black pixels where the brightest white pixels should be:

HEXEN00 HEXEN01

JNechaevsky commented 10 months ago

No need to perform such radical actions like deleting everything! Yes, that's correct, original fading was done via tricks with game palette. It will not work with compiled-in true color render, and I committed changes just few minutes ago (https://github.com/JNechaevsky/international-doom/commit/e08d904fd81263d743a3619491d82af3973e367e). And again, this problem with brightest color while turned off true color render... Looks likes I have to investigate what the heck is going on.

What do you mean with close to tears and done?

β€œTears of joy at what has been done”.

Meerschweinmann commented 10 months ago

β€œTears of joy at what has been done”.

Ah that sounds better :)

And sorry, now i got it. The fading effect was not included at that time you posted the video. Because of the video i thought it works and wondered why it wont work for me :) Now it works. And it looks fantastic.

JNechaevsky commented 10 months ago

White color issue is more evil than it could be, see my investigation here... It must be solved, otherwise no one will simply belive that it's a Raven, not our bug. ☠️

Meerschweinmann commented 10 months ago

That's a hammer. You have to realize first that the colormap has been wrong for one color for almost 30 years.

Meerschweinmann commented 9 months ago

After playing Hexen some hours with Inter-Hexen, i have to say that truecolor is a really win for this game. The fog levels are so atmospheric and look great. Even when the first level starts and you press no key you can clearly see the difference on the colored windows in the background and the brown pot in front of you. Btw it is really playable in its current state. Thank you for all your efforts πŸ˜€

JNechaevsky commented 9 months ago

Thank you for kind words. We have finished proper true color implementation with Fabian, but few small extra improvements should be done in Crispy. Should not take much time, but only after it I will be able to return back to Inter.

kitchen-ace commented 9 months ago

Did you want help with any of the grunt work for inter-hexen? I could probably implement the key/mouse bindings menus for instance, assuming that it's mostly copying over from inter-heretic and adjusting as needed.

JNechaevsky commented 9 months ago

Thank you very much, but nothing needed for now. Bindings are in progress in separated branch, I'll finish it soon. I wrote simple vanilla-compatible bindings code back in active CRL days, and it's very simple to copy-paste in vanilla Doom/Raven menu, but despite of simplicity, it have own disadvantages like only one key per bind, keyboard and mouse are separate types and no controller support. Technically, actual controller code has been pulled from Chocolate, but it does nothing. I have only simplest two-bucks controller at hand and zero knowledge about what to do about in the code. Maybe one day layer, but honestly, newer was have any interest for it.

After bindings probably automap should be fixed/upgraded, as it's the only critical thing for the moment. Then need to understand what kind of widgets needed here, as there are no K/I/S meanings exist in Hexen. But probably, "total kills" could be interesting? Level Select doesn't needed, it's a mind-blowing menu, and features should be easy to port. Pr+ optimizations are easy to port as well, I did it couple of times already, but AFAIR, some of them are not friendly with polyobjects.

Ah yes, status bar is a different story, but Heretic's code will help as it wasn't changed much. I will also need to draw another, better generic armor icon. Assembled weapon widget is also possible, but gfx patches will be non-scaled, so it will took slightly more space.

And that's it. πŸ™‚ Of course, a lot of attention to small details is also needed, like more Doom-like menu keypress handling (already done in Heretic), resetting automap zoom scale on level changing and etc., etc., etc.

kitchen-ace commented 9 months ago

No problem! And not sounding like I'm trying to rush you, there is no hurry after all.

Total kills might be interesting. KIS counters aren't as relevant for Hexen, though the Hexen level format does support markings sectors as secret and some wads occasionally use them. And also there are some "max" demos for Hexen episodes on dsdarchive, I'm not sure what is counted as a necessary kill in those cases though.

Meerschweinmann commented 9 months ago

Wow, Inter-Hexen makes big steps every day. Endscreen is working and the menu is growing. Oh, and Heretic has the Medusa fix, too. Was this the missing fix for Inter-Heretic you mentioned for completion? Nice to see so much love for these two games whose name is not DOOM :)

JNechaevsky commented 9 months ago

Oh yes, finale screens revealed small problem with whole true color, this is because of that difference between game palette and color maps. It it never noticeable in paletted render due to the way how it work.

Automap now working on Hexen, but there is still some potential for improving. At the moment it's just working and may support big maps, have rotate and overlay modes, marks (kept in saved games) and can be zoomed via mouse. Almost a carbon copy of Heretic's behavior.

Yep, medusa was the last serious problem for the engine, but Michael accomplished the impossible and fixed it. Looks likes Heretic is in release-ready state now, but @NightFright2k19 pointed out for exotic bug with music. I'm afraid I can't do anything with it, as whole WinMIDI code was written by Ceski and Roman Fomin and comes from Crispy.

These games must get love and dedication, at least while development process. Otherwise, what the point of doing all of this. πŸ™‚

NightFright2k19 commented 9 months ago

Regarding the music issue, I'm still trying to confirm it in Crispy. All I can tell is that I had it with custom MIDIs and one official track (from E3M6) so far.

Meerschweinmann commented 9 months ago

I had tried Nightfright2k19's sound setup. Its an interesting and better sounding setup in comparision to the default ms sw midi device, even i prefer the IDKFA soundtrack for DOOM. It sounds like i have my Yamaha wavetable in mind that was on top of my Soundblaster back in the days. I will use it for Hexen and Heretic. Thanks Nighfright for writing down this setup on Doomworld.

Unfortunately i could not reproduce the hanging notes with Inter-Heretic after about 60 minutes of Heretic gameplay, and listening about half an hour to the E3M6 song on my laptop during i tidy up and cleaned the kitchen. It is not the best song to do this :) Testequipment was an AMD Ryzen latop with onboard Realtek soundchip.

But i had noticed something different. Why is it possible to change the music device on the fly in Inter-DOOM and in Inter-Heretic i have to restart? Not really a big problem or a deal breaker, because those options were not changed so often, but it astonished me a tiny little bit.

JNechaevsky commented 9 months ago

Thank you for checking! Heretic and Hexen using slightly different music handling in it's (not upper) code, and I was never lucky to properly handle it. Neither in 2017, nor now. :(

You may wish to try out FluidSynth music, it's much simpler to setup, and all you need is sample bank. I highly recommend to try this out: https://github.com/trevor0402/SC55Soundfont/releases/tag/v1.2b, it was assembled from Roland SC-55 samples if I'm not mistaking. Just download SC-55.SoundFont.v1.2b.sf2 and move it into the folder with inter-* executables. Then, provide this file name (or full path, if sound bank is in different folder) in config file as simple as:

fsynth_sf_path                "SC-55.SoundFont.v1.2b.sf2"

Finally, change music in the game to FluidSynth, restart program if you are in Heretic and Hexen and ta-da, it's done! And it is working exactly the same way in Crispy.

Meerschweinmann commented 9 months ago

As i said, it is not a problem with audio-device and restart. Inter-Heretic and Hexen don't need hours to restart :)

I will have a look at fluidsynth. Roland SC55 soundfont sounds promising.

And hey, you have fixed these walls on map02 (Seven portals). They looked partly misaligned, reached into the floor and parts of the texture moved when the player moved before it. Now it is gone.

HEXEN00

JNechaevsky commented 9 months ago

Oh yes, it comes from Crispy Hexen (and still happens in released 6.0) where small technical improvement was missing. Now it's fixed in both ports. 🀩 I will finish limit-removing and game world render optimization soon, but probably they won't give a lot of performance improvement, as they mostly notable on complex scenes with lots of sprites and geometry. But the idea of having "slightly more effective engine than needed" is always templating.

Just need to check everything carefully, AFAIR polyobjects was living their own lives, but after recent Michael's improvement things gets much, much easier.

Meerschweinmann commented 9 months ago

You don't need to hurry. You are programming faster, than my oldest son and me find time together to do a Heretic multiplayer playthrough and Hexen is getting better and better every day :)

Meerschweinmann commented 9 months ago

Something i have noticed. The "number of sfx to mix" option jumps back from 16 to 8 when i restart Inter-Hexen. Heretic and DOOM works. Only for the case you did not have noticed it yourself and it is not already on your list.

JNechaevsky commented 9 months ago

My oversight, should be fixed in https://github.com/JNechaevsky/international-doom/commit/23a08121a2555842d7c8a6224c6390f6cf914ed8. Thank you!

JNechaevsky commented 9 months ago

It's not really a programming now, at the moment it's just a copy-paste of code from Heretic. Same procedure was done in Heretic, but code was copy-pasted from reviewed and polished Doom code, as render almost same in all three games. Bigger challenge was to rewrite or reimplement some features, and fortunately, since there are no changes or "bug fixes" in play state, with very few exceptions for physical features which all are demo/netgame safe, it's all going pretty smooth now.

Real challenge was implementing true color for Heretic and later Hexen. First one took 10 days and Fabian helped a lot with writing some very complicated code (automap background and chain shading beneath gargoyle mouths), second one took just 7 days, but all 7 days were spent in maniacal dedication, probably too maniacal. And I feel I'm missing it already... πŸ˜•

Meerschweinmann commented 9 months ago

I have noticed that you seem to have a passion to get into berserker-mode when you are programming πŸ˜€ There were no long Intervalls between the commits. And hey, the three games look great in truecolor, so it was totally worth it.