1. Welcome to the Starbound support forums. Please check the support FAQs before posting: http://playstarbound.com/support

Closed Corrupted (lost) character, and how to recover

Discussion in 'Starbound Support' started by Roadkill4545, Dec 28, 2015.

Thread Status:
Not open for further replies.
  1. Roadkill4545

    Roadkill4545 Master Chief

    I've seen a lot of complaints of losing characters on the boards, and I've had it recently happen to myself, so I thought I'd post what I did to recover mine.

    In my case, my PC crashed while playing the DirectX version of the game on Windows 10. I think that's a pretty well-known issue now. In my case, the crash corrupted my character file, making it "disappear" from the menu when I went back in.

    This probably happened because the PC crashed while the game was writing to the character file. In my case, I was able to recover it by do the following:

    1) Go to your game directory, in my case: E:\SteamLibrary\steamapps\common\Starbound\giraffe_storage\player
    The .player files are your character files. The .bakx files are backups.
    2) Identify which one is your character.
    You can do this by either opening each .player file with a text editor, and searching it for details related to your character. I use NotePad ++, and the entry you are looking for looks something like this:

    upload_2015-12-28_18-40-19.png

    You can see my character's name, Snazzy Starpants, after the name field in this case.

    Or, you can use Windows PowerShell and this code. Just paste it into a Windows PowerShell window:

    Code:
    function Get-StarboundPath()
    {
      (Get-ItemProperty -Path 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 211820\' -Name InstallLocation).InstallLocation
    }
    
    function Get-StarboundCharacter()
    {
      [CmdletBinding()]
      param
      (
        [string] $Name
      )
    
      $characterFiles = Get-ChildItem -Path (Join-Path -path (Get-StarboundPath) -ChildPath "giraffe_storage\player") -File -Filter "*.player"
     
      foreach ( $charFile in $characterFiles )
      {
        $id = (Get-Content -Path $charFile.FullName | Where-Object { $_ -imatch "^parameters.*player.*type.*$($_.Name -ireplace ".player").*name" } | Select -First 1) -split "[^\w ]+"
        $player = "" | Select-Object -Property Name,Id,Race,FilePath
        $player.Name = $id[9]
        $player.Id = $id[6]
        $player.Race = $id[5]
        $player.FilePath = $charFile.FullName
       
        if ( !$Name -or $player.Name -ilike $Name )
        {
          $player
        }
      }
    }
    
    Get-StarboundCharacter
    
    You'll see output like this:

    upload_2015-12-28_18-36-47.png

    Obviously, use this at your own risk and I've only tested this on my systems, not all possible other systems out there.

    3) Once you've figured out which is your character, rename the .player file to .player.corrupt.
    4) Then rename the newest-dated .player.bakx file to just .player. It's probably .player.bak1.

    Once I did this, I restarted the game and my character was back!

    Hope this helps people out.
     
    The | Suit likes this.
  2. Roadkill4545

    Roadkill4545 Master Chief

    Ah, silly. they already posted how to do this in the common issues thread. I read the thread, so im not sure how I missed that. At least the code I posted is new...
     
  3. MrVauxs

    MrVauxs Giant Laser Beams

    Don't worry about that at least you have nice intences :)
     
Thread Status:
Not open for further replies.

Share This Page