[fixed] Inverted scores
1v1 game, logic.
Step 1, Kill yourself with proxies (It will say you killed the host and give you points)
Step 2, See you have 1 point, Host sees -1. Leave the game to try to fix it.
Step 3, Reenter game and watch as host crashes.
Step 4, ???
Step 5, Profit.
Ok we did the reverse. Host killed himself and committed suicide. But then I kill myself on his mines, and it says on my end he committed suicide but he gets a kill. To its -2 0 for me but its 0 0 for him. I rejoin and it works fine.

FURTHER TESTING: Every kill I make on him reads as a suicide on my end.
Ouch.  Matt filed a Github issue about the strange kill/suicide accounting, but this is the first I have seen of it leading to a crash.  I will attempt to collect a backtrace for this shortly.
If I kill myself in any way shape or form, I will get a kill on him, If he kills me, its a suicide for him (all on the clients screen only). The host sees things right,
My first attempt to reproduce this crashed with a variant of the same bug reported in the homing weapon thread: bad parsing of the bomb target.  After fixing that (which I will push soon), I tried again and got an AddressSanitizer abort when suiciding via smart mine.
ERROR: AddressSanitizer: global-buffer-overflow
WRITE of size 1 at 0x25c0ff thread T0
    #0 0x44d039 in digi_mixer_start_sound(short, int, int, int, int, int, sound_object*) similar/arch/sdl/digi_mixer.cpp:189
    #1 0x21cc3b in digi_play_sample_3d(int, int, int, int) similar/main/digiobj.cpp:211
    #2 0x220615 in digi_link_sound_to_pos2 similar/main/digiobj.cpp:434
    #3 0x220615 in digi_link_sound_to_pos(int, short, short, vms_vector const&, int, int) similar/main/digiobj.cpp:452
    #4 0x20eb08 in collide_weapon_and_wall similar/main/collide.cpp:923
    #5 0x20eb08 in collide_object_with_wall(vobjptridx_t, int, vsegptridx_t, short, vms_vector const&) similar/main/collide.cpp:2591
    #6 0x396d85 in do_physics_sim(vobjptridx_t) similar/main/physics.cpp:569

0x25c0ff is located 1 bytes to the left of global variable 'channels' from 'similar/arch/sdl/digi_mixer.cpp' (0x25c100) of size 64
0x25c0ff is located 47 bytes to the right of global variable 'current_music' from 'common/arch/sdl/digi_mixer_music.cpp' (0x25c0c0) of size 16
The source line is "channels[channel] = 1;", so based on the output, channel must have been -1, meaning digi_mixer_find_channel failed and the result was not trapped.  I must have triggered so many smart mines concurrently that I ran out of sound channels.
Fix crash when all sound channels are in use resolves the crash I saw when suiciding via smart mine.  I do not know if that is the host crash reported above.  Kill accounting is not addressed yet.  I am currently focused on resolving game breaking stability problems.
Matt is also on the scoring bug. And after I'm done with reworking the level progression (kmatrix escaping), I will move into that as well. So no stress. Smile
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!
Update, this glitch still happens. It also happens in Coop. Non host killing themselves in coop will say you killed host. If you die to a robot, it will say the host died by a robot.
The scoring bug should be fixed by Fix kill accounting.
I will test it tomorrow with AFP, thanks!

Forum Jump:

Users browsing this thread: 1 Guest(s)