[Gensouband] Another attempt to fix .live crashes

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Cryomaniac
    Swordsman
    • Jan 2022
    • 284

    [Gensouband] Another attempt to fix .live crashes

    It's another crash that doesn't happen on Windows build but regularly occurs on the server - if you play as some unique class characters (representing actual Touhou Project characters), you can't record high score - the game crashes upon attempting it. From my experiments, it fails for unique classes with id over 100; the function attempts to save the class field in 2 digits - apparently on Windows it figures out to write down 3 digits for class ids > 100, but the server build crashes at this point. I tried altering the code - from a quick test, the Windows version still properly works; I made a commit to my github project, it should eventually reach the nightly version
  • Gwarl
    Administrator
    • Jan 2017
    • 1025

    #2
    updated on .live

    Comment

    • Cryomaniac
      Swordsman
      • Jan 2022
      • 284

      #3
      Okay, this looks a bit worse than I thought, still crashes; I think I have to tweak the way high scores are saved in order to accomodate for larger class ids. Unfortunately, this will break compatibility with older scores file, causing it to crash if it tries to parse the score records from previous versions.

      I can try adding a new precompiler directive that will change score file logic to store class id in a larger string for the .live version, while the Windows build retains old logic; what would be a good way to avoid conflict with older scores.raw file? I'm thinking of changing the name of the scores file it's looking for in the .live version - so it won't look at the older file. Is there a better way?

      Comment

      • Gwarl
        Administrator
        • Jan 2017
        • 1025

        #4
        I can just delete the old file?

        Comment

        • Cryomaniac
          Swordsman
          • Jan 2022
          • 284

          #5
          Made the following changes:

          Added new precompiler directive, enabled by compiler flag -DFIX_SCORES_FORMAT. When enabled, it changes the p_c field in high_score type - this field stores player class id represented as a numerical string - to accomodate for 3 digit value. Since this breaks compatibility with older scores saved in old format, I also made it possible to automatically make it look for another scores file; right now, it still looks for the old scores.raw if this option is enabled, so older scores will have to be manually deleted or moved.

          This all only applies to the server build; I updated makefile.std to use the new flag.

          Comment

          • Cryomaniac
            Swordsman
            • Jan 2022
            • 284

            #6
            Does the build for the .live version with my fixes prooperly work? Ideally, it should be fixed, if the problem was where I thought it was, but I can't confirm on my side

            Comment

            Working...
            😀
            😂
            🥰
            😘
            🤢
            😎
            😞
            😡
            👍
            👎