Destroyed robots counter

For Descent, Descent II and Descent3 level editing and modification assistance.
Post Reply
Marvin
DBB Ace
DBB Ace
Posts: 257
Joined: Fri Dec 25, 2009 4:31 pm
Contact:

Destroyed robots counter

Post by Marvin »

Is it technically possible to make such a tool? Would help me (and everyone) a lot with speedrunning. Robots are sometimes destroyed by another robots and if that happens out of screen, then it is impossible to find evidence of it.
User avatar
vision
DBB Material Defender
DBB Material Defender
Posts: 4407
Joined: Thu Feb 18, 2010 1:54 pm
Location: Mars

Re: Destroyed robots counter

Post by vision »

I bet it could be done in DXX Rebirth. I'm not familiar with the source code, but I suspect when a robot is destroyed it can be written to a log file, then you can check the file and get a count. Maybe there is a debug mode with this already in place?
User avatar
Arne
DBB Ace
DBB Ace
Posts: 29
Joined: Wed Oct 31, 2018 12:04 pm

Re: Destroyed robots counter

Post by Arne »

Something like this? It's a small addition, the game already counts robot kills, which is any dying robot for single-player games.
scrn0001.png
I've zipped up my build in case you want to try it yourself (assuming you want it for d1x-rebirth on windows) https://www.arnedebruijn.nl/descent/d1x ... 581ar1.zip

(I once worked on the d1x predecessor d1djgpp, this was a nice excuse to get d1 building again :D )
Attachments
d1_robot_kills.patch.txt
(1.74 KiB) Downloaded 334 times
Marvin
DBB Ace
DBB Ace
Posts: 257
Joined: Fri Dec 25, 2009 4:31 pm
Contact:

Re: Destroyed robots counter

Post by Marvin »

Yes, I need it for d1x-rebirth. Thank you very much for response. Can you explain what should I do to make it working?
User avatar
vision
DBB Material Defender
DBB Material Defender
Posts: 4407
Joined: Thu Feb 18, 2010 1:54 pm
Location: Mars

Re: Destroyed robots counter

Post by vision »

Arne wrote: Tue Dec 18, 2018 2:32 pm Something like this? It's a small addition, the game already counts robot kills, which is any dying robot for single-player games.
Oh wow, that's cool. I looked at player.h and totally did not see num_kills_level. Crazy. Very cool of you to create this patch. Maybe zico will pick it up and make an option?
Marvin
DBB Ace
DBB Ace
Posts: 257
Joined: Fri Dec 25, 2009 4:31 pm
Contact:

Re: Destroyed robots counter

Post by Marvin »

And is it possible to make it working also for demo file?

Thank you
User avatar
Alter-Fox
The Feline Menace
Posts: 3164
Joined: Thu May 24, 2007 12:49 pm
Location: the realms of theory
Contact:

Re: Destroyed robots counter

Post by Alter-Fox »

Well, I mean, D2X-XL already does it so it's definitely not impossible.
But maybe that means Rebirth doesn't want it. :P
Ship's cat, MPSV Iberia: beware of cat.
...
Beware my original music, at http://soundcloud.com/snowfoxden.
User avatar
Arne
DBB Ace
DBB Ace
Posts: 29
Joined: Wed Oct 31, 2018 12:04 pm

Re: Destroyed robots counter

Post by Arne »

From your demo question I guess you got it working?

The counter wasn't recorded in the demo file, also not in D2X-XL. I've added code to record the counter in the demo file. That makes the recorded demo files incompatible with other Descent versions though, hopefully that's not a problem.

If it works good enough I'll try to make an option for the counter and maybe then it will be accepted in the official d1x rebirth.

New zip with binary: https://www.arnedebruijn.nl/descent/d1x ... 581ar2.zip
Attachments
d1_robot_kills_v2.patch.txt
(8.82 KiB) Downloaded 343 times
User avatar
Sirius
DBB Master
DBB Master
Posts: 5616
Joined: Fri May 28, 1999 2:01 am
Location: Bellevue, WA
Contact:

Re: Destroyed robots counter

Post by Sirius »

I greatly prefer this "number of kills" implementation to the "robots remaining" one though. The former doesn't give you any information you shouldn't have, and is still useful for speedruns. The latter is conceptually similar to the full map cheat code.
Marvin
DBB Ace
DBB Ace
Posts: 257
Joined: Fri Dec 25, 2009 4:31 pm
Contact:

Re: Destroyed robots counter

Post by Marvin »

Yes, it works. Thank you. That counter helped me to make sure my speedrun of L20 is valid (can't prove it tho, because I did it before counter for demo).
But as Sirius said, "robots remaining" version of it would be much better since levels with spiders always have different number of robots (because of randomly spawned baby spiders). Also, is it possible to make that counter ignoring bots from matcen? The rules were set that you can skip those bots in speedrun.
User avatar
Arne
DBB Ace
DBB Ace
Posts: 29
Joined: Wed Oct 31, 2018 12:04 pm

Re: Destroyed robots counter

Post by Arne »

I agree with Sirius that a remaining counter gives too much information about the level.

I've split up the counter in original bots + spawned bots and made a list with robot counts per level (spoiler :) ).

New zip with binaries: https://www.arnedebruijn.nl/descent/d1x ... 581ar3.zip
scrn0002.png
Attachments
d1_robot_counts.txt
(431 Bytes) Downloaded 322 times
d1_robot_kills_v3.patch.txt
(16.15 KiB) Downloaded 316 times
Marvin
DBB Ace
DBB Ace
Posts: 257
Joined: Fri Dec 25, 2009 4:31 pm
Contact:

Re: Destroyed robots counter

Post by Marvin »

I will try how that new one works, when I will have time. Thanks for your time to make these!
The point is to make a tool for checking if the run is valid. I will be completely fine even if I have no counter info while playing, but I would like to check in demo. Sometimes it is not possible to valid an ok run, because lof lack of evidence.
User avatar
LightWolf
DBB Captain
DBB Captain
Posts: 908
Joined: Sat Mar 09, 2013 2:27 pm
Location: Yes

Re: Destroyed robots counter

Post by LightWolf »

What if there were a speedrun mode that activated level timers, robots remaining, etc.?
Whatever I just said, I hope you understood it correctly. Understood what I meant, I mean.
#AllLivesMatter
User avatar
AlexanderBorisov
DBB Ace
DBB Ace
Posts: 319
Joined: Thu Apr 20, 2017 11:57 am

Re: Destroyed robots counter

Post by AlexanderBorisov »

LightWolf wrote: Tue Dec 25, 2018 2:16 pm What if there were a speedrun mode that activated level timers, robots remaining, etc.?
Nice idea! One can have an option in game settings, this way it won't break Rebirth be-true-to-original-game paradigm...
Also, is it possible to make this thing for D2 (preferably for version 0.58.1 as it is known to be most stable, the latest has bugs with some missions like Apocalyptic Factor), and also "show the boss HP" option (D2 also) - I need it for vulnerable-at-the-back-only kind of bosses. I was unable to beat AF L12 boss without such a counter as you have ***just enough*** weapons to beat it (on Insane difficulty), and without the counter you cannot figure out when you did a full hit with a shaker or not (as well as with other weapons), and as I go for Insane no save no death runs it is important to abort early with a critical miss and when the boss cannot be killed. This counter would also help to figure out the most successful strategies against the boss and probably useful for level designers, so they can give the player enough weapons to kill the boss on all difficulties.

BTW D1 Rebirth latest version also had a problem with balance change compared to original game, homers were made easy to dodge (like in D2) and a bit slower, that's why I also use D1 0.58.1
User avatar
Arne
DBB Ace
DBB Ace
Posts: 29
Joined: Wed Oct 31, 2018 12:04 pm

Re: Destroyed robots counter

Post by Arne »

Attachments
d2_robot_kills_v1.patch.txt
(23.2 KiB) Downloaded 358 times
Marvin
DBB Ace
DBB Ace
Posts: 257
Joined: Fri Dec 25, 2009 4:31 pm
Contact:

Re: Destroyed robots counter

Post by Marvin »

I finally tried that third version. It is better and better :). Is it possible to split spawned bots to 2 categories? I mean spawned from matcen and spawned from other bots? Also is it possible to make something like announcement, when all original bots (+ spawned bots from other bots, since these are also required to destroy) are destroyed? Or that is not possible because total number of baby spiders is random?
User avatar
LightWolf
DBB Captain
DBB Captain
Posts: 908
Joined: Sat Mar 09, 2013 2:27 pm
Location: Yes

Re: Destroyed robots counter

Post by LightWolf »

I think a global robot counter would be easier. As the mine loads, add one every time a robot is placed. When a robot dies, subtract one. When a robot spawns, check if it was not from a matcen; If not, add one, else add one to the spawned bots counter.

Also IMO there should be a numeric boss HP meter in addition to a graphic one.
Whatever I just said, I hope you understood it correctly. Understood what I meant, I mean.
#AllLivesMatter
User avatar
AlexanderBorisov
DBB Ace
DBB Ace
Posts: 319
Joined: Thu Apr 20, 2017 11:57 am

Re: Destroyed robots counter

Post by AlexanderBorisov »

Thanks, will check the thing tomorrow, and I also agree that numeric boss HP counter should be present (as it will be hard to see whether an earthshaker did 900 or 1000 damage looking on the bar in the middle of the fight...).
User avatar
AlexanderBorisov
DBB Ace
DBB Ace
Posts: 319
Joined: Thu Apr 20, 2017 11:57 am

Re: Destroyed robots counter

Post by AlexanderBorisov »

Ok, thanks a lot! tested the boss HP counter, first thing - it does not appear immediately when I see the boss, probably only on the first hit? If so, it is ok. And yes, numeric counter is essential. I tried a fight against AF L12 boss, hit with all my missiles and stil did only 50% damage to it, when the other guy killed this boss exactly this way - and I can't see what I am doing wrong and which of my hits were not "direct hits" without the numbers... Breaking the demo file compartibility is not a good thing also (but not so critical if it is too hard to fix), maybe you can compute #of robots killed without saving it in the demo? Just by incrementing the counter each time the robot is destroyed during playback? And the option to show the counters during the game AND demo playback (2 separate options) would be nice - if it is not a speedrun, I don't want to see the counters in my recorded video (most of which I record from demos). However this option is of less importance than demo compartibility to me.

Edit : also there is no way to know when all robots spawned by other robot (not by matcens) are destroyed, which is important for 100% runs and speedruns. Maybe change spawn counter to non-matcens "remaining" spawn counter? Although it gives some advantage to know that some spawns are there to attack you - there is no way to validate 100% run without it especially in D2. Matcens robot counter can be an optional thing, but I don't need it at all.
User avatar
Xfing
DBB Fleet Admiral
DBB Fleet Admiral
Posts: 2022
Joined: Mon Jun 15, 2009 3:03 am
Location: Ringing Satan's Doorbell

Re: Destroyed robots counter

Post by Xfing »

Damn, I've wanted something like this for a long while now! But it won't open for me at all. It just waits for a few seconds and then fails to launch :(

I've gotten a new OS installation recently and 0.59 didn't work for me in much the same fashion, so I had to revert to 0.58, which works just fine. I wonder what the issue could be here.
Descent 1,5: Level layouts done: 52/54 Secret level layouts done: 1/6
User avatar
Xfing
DBB Fleet Admiral
DBB Fleet Admiral
Posts: 2022
Joined: Mon Jun 15, 2009 3:03 am
Location: Ringing Satan's Doorbell

Re: Destroyed robots counter

Post by Xfing »

Ok nvm, I just replaced the executable, leaving the dll files be. It works now :D It's definitely a nice feature to have! I'm especially happy with the boss health meter, it's quite badass - though arguably the lack of it could constitute additional difficulty in and of itself, such as frustration and fear for having enough ammo to finish the job etc.

As for a countdown counter for robots - I disagree with the opinions that it gives too much information about the level. A speedrunner going for 100% will most likely have examined the level in the editor beforehand anyway, and know exactly where all the robots are. Knowing how many remain provides no essential info beyond that, nor does it affect gameplay in any way, or give the player any sort of advantage. For instance, everyone knows that D1L1 needs to be finished with 18000 points on the counter, otherwise you've missed something. I think a countdown-style counter would just encourage curiosity and thoroughness for regular play too.

I would personally postulate for a toggleable version where you can choose a kill count or a countdown, whichever you prefer. Spawned robots would of course stay as they are, with a positive counter (not much for other options here I suppose :P). I can see this feature being cool in that it could allow creating new run categories, where you have to kill a certain quota of spawned robots to meet the run's criteria, for example. I think that could be a fun little challenge factor and add variety to recorded runs.
Descent 1,5: Level layouts done: 52/54 Secret level layouts done: 1/6
User avatar
Sirius
DBB Master
DBB Master
Posts: 5616
Joined: Fri May 28, 1999 2:01 am
Location: Bellevue, WA
Contact:

Re: Destroyed robots counter

Post by Sirius »

Countdown counters can tell you that secret areas exist, as they would in D1 level 1 because there are robots behind optional secret doors. It's a minor advantage but it is an advantage, and you don't need to pick up a full map to get it.
User avatar
AlexanderBorisov
DBB Ace
DBB Ace
Posts: 319
Joined: Thu Apr 20, 2017 11:57 am

Re: Destroyed robots counter

Post by AlexanderBorisov »

I personally don't care about any advantage given by robot counter or boss HP counter, if I record any kind of 100% run I check the level in the editor anyway, otherwise I only care if I finished the level or not. When it gets too difficult, again I first check the editor if I missed important powerups or weapons, or use ASTRAL/full map cheat to find the stuff (this happens rarely; another reason is to find the secrets AFTER completing the level). Don't want to spend too much time peeking every wall. And yes you can call it "advantage", but it is like having good stereo sound to know enemy positions, or hi-res graphics, or good responsible controls/mouse - not having it does not make the game any better, but makes it more frustrating. I fully agree that both features are extremely useful, but would like to see boss HP in numeric form too. I remember frustration from my youth when I tried to kill CS L24 boss with shakers, and the bastard just didn't die... Ofc I did not knew that he is vulnerable from the back only, had no Internet those days, and probably did not even knew English so well at that time :) You can imagine how I was feeling about it, and the single number on the screen could give me the right idea what was happening!
User avatar
Xfing
DBB Fleet Admiral
DBB Fleet Admiral
Posts: 2022
Joined: Mon Jun 15, 2009 3:03 am
Location: Ringing Satan's Doorbell

Re: Destroyed robots counter

Post by Xfing »

The L24 boss is vulnerable from the back, even though the glowing spot is best visible from the upper back. It's a bit misleading, but once you figure out the correct spot, even primary weapons can take care of him. From what I've noticed, he spawns cloaks spontaneously when damaged enough, I suppose that should help a big deal.
Descent 1,5: Level layouts done: 52/54 Secret level layouts done: 1/6
User avatar
AlexanderBorisov
DBB Ace
DBB Ace
Posts: 319
Joined: Thu Apr 20, 2017 11:57 am

Re: Destroyed robots counter

Post by AlexanderBorisov »

In fact he spawns (sometimes) cloaked diamond claws that drop the cloaks. Another misleading thing about this boss, I never figured out when a shaker hit counts as full direct hit (it is 1000 damage based on Calmarius AF L12 vid where he added numeric boss HP counter - quite easy for him as he plays it on Linux). Sometimes it does less damage (some bomlets fly away or smth else happens). So I need this numeric counter dearly (not as dearly as to install Linux however) - to figure out what is happening in my case. Yes when you have some extra shakers like for CS L24 boss (especially if you know all secrets in the level, have map editor etc), it is no problem, most times you kill it, but for AF L12 boss, it does not work, you need direct hit with all available missiles + some damage from primaries.
User avatar
Arne
DBB Ace
DBB Ace
Posts: 29
Joined: Wed Oct 31, 2018 12:04 pm

Re: Destroyed robots counter

Post by Arne »

Ok, here's a small tweak of the d2 version with a numeric boss shields indicator: https://www.arnedebruijn.nl/descent/d2x ... 581ar2.zip

BTW with msys2 it's almost as easy as in linux to build descent on windows, thanks to the included pacman package manager which has all the libs. I can write down some setup steps if you like.
Attachments
d2_robot_kills_v2.patch.txt
(23.39 KiB) Downloaded 346 times
User avatar
AlexanderBorisov
DBB Ace
DBB Ace
Posts: 319
Joined: Thu Apr 20, 2017 11:57 am

Re: Destroyed robots counter

Post by AlexanderBorisov »

Thanks a lot Arne!! Will try it on weekends, having quite busy week... Would be nice if you can write a small instruction to compile D1/D2 on Windows (I have Windows 7 x64 if it makes any difference), starting from where to get 0.58.1 version code. Probably I will try it for figuring out one annoying bug that I found (some bosses refusing to teleport and make sound on rare occasions). And probably you can share the code for robot and boss HP counter, too...
User avatar
Arne
DBB Ace
DBB Ace
Posts: 29
Joined: Wed Oct 31, 2018 12:04 pm

Re: Destroyed robots counter

Post by Arne »

Here's the build guide: https://www.arnedebruijn.nl/descent/build-d2-win/

If you want to use my version replace the d2x-rebirth source url with: https://www.arnedebruijn.nl/descent/d2x ... src.tar.gz
User avatar
AlexanderBorisov
DBB Ace
DBB Ace
Posts: 319
Joined: Thu Apr 20, 2017 11:57 am

Re: Destroyed robots counter

Post by AlexanderBorisov »

Ok thanks! I tried the numeric counter, great! Was able to beat the problematic AF L12 boss with it, only problem (very minor) is that in "no cockpit" mode the counter is not right at the top. But it does not really matter until someone really integrates it into dxx release. Instruction to compile the code seems clear but I still not tried it - but will certainly do it soon!
User avatar
AlexanderBorisov
DBB Ace
DBB Ace
Posts: 319
Joined: Thu Apr 20, 2017 11:57 am

Re: Destroyed robots counter

Post by AlexanderBorisov »

Arne, I tried it, first thing scons -j3 option does not work
scons: *** Do not know how to make File target `–j3' (/home/Sasha/d2x-rebirth_.58.1-src/–j3). Stop.
without -j3 it gives the following error
gcc.exe: error: ▒fwrapv: No such file or directory
Should be smth trivial, but I was unable to Google it quickly...
User avatar
Arne
DBB Ace
DBB Ace
Posts: 29
Joined: Wed Oct 31, 2018 12:04 pm

Re: Destroyed robots counter

Post by Arne »

Oops, I drafted the guide in Word and it 'helpfully' converted minus-signs to en-dashes. I though I had recovered them all but missed those two :(

I've fixed the guide, you might have to reload the page in your browser. It should be -j3 and -fwrapv (both with regular minus sign). The -j3 is optional, just to make the build faster.
User avatar
AlexanderBorisov
DBB Ace
DBB Ace
Posts: 319
Joined: Thu Apr 20, 2017 11:57 am

Re: Destroyed robots counter

Post by AlexanderBorisov »

Thanks a lot! Although the page didn't changed when I reloaded it (probably cached or smth else), I changed dash to minus manually, it worked.

And I found that nasty boss bug at last, problem is that Last_teleport_time is never reset except in teleport_boss function, and as you restart the level, game time is reset to zero, and the condition (time > Last_teleport_time) in do_boss_stuff is false (unless you play the level for very long time, i. e longer than saved Last_teleport_time... And so the boss does not teleport. And probably this bug can also affect Last_gate_time, I did not checked it... Not sure how to fix it cleanly, obvious quick fix is to reset Last_teleport_time (and cloak start and end times, too) every time the level starts or you load a save; but it will slightly modify boss behavior on load (but for me this works nicely). And the best way is to save game time (still need to reset Last_teleport_time and some other variables in the level start function) - but it will modify saved game format.
User avatar
Arne
DBB Ace
DBB Ace
Posts: 29
Joined: Wed Oct 31, 2018 12:04 pm

Re: Destroyed robots counter

Post by Arne »

Great to hear compiling works for you now!

Good find on the teleport bug. It appears somewhere in the d2x history a fix was made for >9 hours game time bugs and initialization of the Last_teleport_time / Last_gate_time / Boss_*_time variables got overlooked. They probably should be reset to 0 in init_robots_for_level in ai.c. They are already saved however, in ai_save_state in ai.c. But of course if Last_teleport_time was bugged at the start of the level the save game will also be bugged.
Marvin
DBB Ace
DBB Ace
Posts: 257
Joined: Fri Dec 25, 2009 4:31 pm
Contact:

Re: Destroyed robots counter

Post by Marvin »

About that Kill counter for D1: I realised, if you play (or watch demo) with cam without cocpit and without bar at bottom, then kill counter is placed at same position as text saying you are invulnerable or cloaked. Can you please move the location a bit? Or is it possible to have option to hide that kill counter? I would like to upload new run to youtube and it would be good to not confuse spectator by unreadable mix of text. Thank you:).
User avatar
Arne
DBB Ace
DBB Ace
Posts: 29
Joined: Wed Oct 31, 2018 12:04 pm

Re: Destroyed robots counter

Post by Arne »

I finally got around to create a proper distribution on github for the patches and I've fixed the kill counter location and added an option to enable/disable the indicator (Speedrun Indicator in Graphics options). The option/location fix is D1 only for now.

Someday I hope to change the counter to include robot drops (I had misunderstood your rules), remove the second part, change to countdown and play a message beep when it reaches 0.
I've also found a way to keep the demo files compatible with other Descent versions so I can change that as well (the solution is to store event values with high bit set so the values are ignored as invalid events when the event is not recognized).

https://github.com/arbruijn/dxx-ar/rele ... 0.58.1-ar4
Marvin
DBB Ace
DBB Ace
Posts: 257
Joined: Fri Dec 25, 2009 4:31 pm
Contact:

Re: Destroyed robots counter

Post by Marvin »

great, thank you :-)
Post Reply