Lifeless Planet

Lifeless Planet

53 ratings
Hexxing around aka manipulating savegame to get achievements for free or just check what have you missed
By 🦄 lainverse and 1 collaborators
Do you desire to get Expedition Leader, Rocketeer, Survivalist, Geologist or that illusive Planetary Historian achievement but don't want to leave your PC running for 10 hours or go through the whole story once again? Do you want to check what has you missed or how you died or haven't died yet? Do you want to know how game stores data in the savegame file? Do you want to read documents and mission logs unavailable in the game? If so then this guide is for you.

ATTENTION! This guide may contain spoilers. Please finish the game at least once before reading it.
   
Award
Favorite
Favorited
Unfavorite
Intro
If you know nothing about hexadecimal numbers and hex editors you may spent more time trying to use this guide to get the achievements instead of doing everything in a legit way. You will learn something new and useful, though.

BTW, regarding "Survivalist" achievement. It's actually hard to die in this game and even if you do the game is very forgiving and won't save anything about your mistake immediately unless you will press "Save & Quit" in the menu. So, if you want to get this achievement in a legit way then Alt+F4 is your friend.
Savegame file location and hex editor
First things first and that is savegame location.
On Windows 7 savegame are located in the following folder:
%UserProfile%\AppData\LocalLow\Stage 2 Studios\Lifeless Planet\
Just press Win+R while you are on the desktop, paste this path and hit Enter.
Should be similar on the Windows 8. In the worst case go to %UserProfile% and search for lpSave.txt

lpSave.txt is a savegame file. You may not see "txt" part in the Explorer but you will see it as a text document. It's not. Don't try to edit it with Notepad or Word! You will need a hex editor to be able to edit this file without breaking it. What is hex editor? Please read this[en.wikipedia.org]. There is a nice comparison table[en.wikipedia.org] where you can find the one which better fits you. I'm using Okteta from the KDE desktop environment but it's a bit tricky to install on Windows and it will install a lot of stuff you don't need. Try to use Frhed instead.

BTW, don't forget to make a backup of your savegame. If you do something wrong game may not be able to read the file and in the best case game will reset it to initial state. In the worst it won't properly work until you remove the file.
Down the Rabbit Hole
Ok, lets move on. Savegame file consists of multiple variable declarations and their values. Each variable declaration starts with letter "~" and ends with letter "{". I have no idea why these two. Each variable declaration immediatelly followed by the next variable declaration. Each declaration consists of multiple parts.

All numbers are stored in the Little-Endian format which means if number consists of N bytes (1, 2, 3 ... N) then bytes will be stored in the reversed order (N ... 3, 2, 1).
Example: 0B 0A
It's actually 0A 0B and equal to decimal number 2571.

All strings are in ASCII (1 byte per letter) with length of string declared before the string.
Example: 02 6e 6f
  • 02 - string length in bytes, 2 in this case
  • 6e 6f - 2 bytes of data, it's word "no"

Example of the boolean variable: 7e 08 6e 6f 44 65 61 74 68 73 03 00 00 00 09 01 7b
BTW, Boolean variables can have only 2 possible values: True (1) and False (0)
  • 7e = ~ (section start)
  • 08 - variable name length in bytes (8 in this case)
  • 6e 6f 44 65 61 74 68 73 = "noDeaths", variable name
  • 03 00 00 - variable value size in bytes (3 in this case) starting from the next one
  • 00 - delimeter
  • 09 - data type index? boolean in this case
  • 01 - value of the variable
  • 7b = { (section end)

So, when I will say to set noDeaths to 0 it will mean to change it like this:
7e 08 6e 6f 44 65 61 74 68 73 03 00 00 00 09 01 7b
7e 08 6e 6f 44 65 61 74 68 73 03 00 00 00 09 00 7b
Rocketeer and Expedition Leader achievements
They both are based on the one single value in the savegame file and it's timePlayed. I haven't figured out exact time format, but it seems like noodel did. Thanks to him for that.
Originally posted by noodel:
I examined the fields timePlayed and timeElapsedSinceStartOfGame more closely within each of the save files a friend of mine provided. I discovered that the values for these fields are most likely stored in the interchange format binary32 described by the IEEE-754 standard (single precision floating point) using little endian byte ordering.

So knowing this, here are the values that timePlayed (or the other field,
I'm not sure which really!) probably should be for the these achievements:

Expedition Leader:
greater than 00A00C47 for 36000 seconds
so 00A10C47 for 36001 seconds might work

Rocketeer:
less than 00006146 for 14400 seconds
so 00fc6046 for 14399 seconds might work

I should also clarify that the time fields are measured in seconds.

So, here[www.h-schmidt.net] is one of the online-converter for this format.

However, it's strange how did I manage to get Rocketeer achievement with value AF 51 8B 46 which stands for ~17832 seconds, which is clearly higher than 14400.

Example of usage: 7e 0a 74 69 6d 65 50 6c 61 79 65 64 06 00 00 00 06 AF 51 8B 46 7b
BTW, seems like data type 06 stands for dates.

So, how to get these two?

To get "Rocketeer" set timePlayed to something below 00 FC 60 46... actually 00 00 00 00 will do the trick. Now go to the last map in the game and finish it. You should get Rocketeer when you will see the City. I haven't tested this method since I got this achievement in a legit way, but it should work.

To get "Expedition Leader" set timePlayed to anything above 00 A0 0C 47. You can be boring and just set it to something like FF FF FF 59, though. Now start playing from any section and it will pop-up in a few seconds.
Survivalist and Lifeless Astronaut achievements
These two are trickier since they are based on a multiple values:
  • deathByOxygen
  • deathByBomb
  • deathByFlower
  • deathByZombie
  • deathByPike
  • deathByRock
  • deathByFall
  • deathByFire
  • noDeaths
Each of them could have value 0 or 1. For deathBy* 0 means you haven't died this way yet. For noDeaths 0 means you have died at least once in any way. So, you won't get Survivalist at the end if noDeaths are equal to 0.

To get "Survivalist" you have to set all 8 "deathBy" values to 0 and noDeaths to 1. Then go and finish the last section of the game. You will get it when you see the City.

For "Lifeless Astronaut" you have to do quite opposite thing. Set noDeaths to 0 and all "deathBy" but "deathByFall" to 1. Set "deathByFall" to 0. Now start the game and fall to death. Achievement will pop-up in a few seconds. If you never fallen to death yet then "Gravity Kills" will be unlocked too.

Actually I recommend to use "deathBy" as a checklist and perform missing deaths in the game. It's easy and already described in the other guides. There are achievements associated with a few of them and I'm not sure that they will unlock if you just set specific "deathBy" to 1. At least I haven't tested this.
Quick way to get the Rocketeer and the Survivalist achievements
  • make a backup of the original savegame file;
  • start a new game;
  • save;
  • open your new save in a hex editor;
  • change the last bytes (curChapter) from 00 00 00 00 7B to 14 00 00 00 7B;
  • launch the game and press Continue.
  • quickly open the menu and reload from the last checkpoint since you will appear in the mid-air;
  • safely finish the last chapter (it's easy: no traps, just a few more jumps).

Kudos to Lars for sharing this method.
We need to go deeper
Example of an array of numbers:
7e 07 63 6f 6c 54 79 70 65 13 00 00 00 51 02 03 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 7b
  • 7e = ~ (section start)
  • 07 - variable name length in bytes (7 in this case)
  • 63 6f 6c 54 79 70 65 = "colType", array name
  • 13 00 00 - variable value size in bytes (19 in this case) starting from the next one
  • 00 - delimeter
  • 51 - data type index? array in this case
  • 02 - array type index, array of numbers
  • 03 00 00 00 - array size (number of declared values)
  • 00 00 00 00 - 1st element in the array
  • 01 00 00 00 - 2nd element in the array
  • 00 00 00 00 - 3rd element in the array
  • 7b = { (section end)

Example of an array of strings:
7e 07 63 6f 6c 4c 6f 67 73 2d 00 00 00 51 01 03 00 00 00 09 70 64 61 5f 69 6e 74 72 6f 0d 6d 69 73 73 69 6f 6e 6c 6f 67 31 5f 31 0d 73 75 70 70 6c 79 5f 6d 6f 64 75 6c 65 7b
  • 7e = ~ (section start)
  • 07 - variable name length in bytes (7 in this case)
  • 63 6f 6c 4c 6f 67 73 = "colLogs", array name
  • 2d 00 00 - variable value size in bytes (45 in this case) starting from the next one
  • 00 - delimeter
  • 51 - data type index? array in this case
  • 01 - array type index, array of strings
  • 03 00 00 00 - array size (number of declared values)
  • 09 - length in bytes of the following string (9 in this case)
  • 70 64 61 5f 69 6e 74 72 6f = 1st string, "pda_intro"
  • 0d - length in bytes of the following string (13 in this case)
  • 6d 69 73 73 69 6f 6e 6c 6f 67 31 5f 31 = 2nd string, "missionlog1_1"
  • 0d - length in bytes of the following string (13 in this case)
  • 73 75 70 70 6c 79 5f 6d 6f 64 75 6c 65 = 3rd string, "supply_module"
  • 7b = { (section end)

Journal messages are store in the 3 arrays in the savegame file:
  • colType - stores message types, 0 = DOC tab, 01 = LOG tab, 02 = SCI tab
  • colChap - stores chapter numbers where message were added into the journal
  • colLogs - stores internal message names (actual messages are stored in the resources.assets file in the game's LifelessPlanet_Data folder)

All of them always contain the same number of elements and these elements are connected by their index. So, 2nd journal message "missionlog1_1" in my example have colType[2] = 1 (shown on the LOG tab) and colChap[2] = 1 (first chapter in the game). Absolute order of documents there is not important and they are stored in the same order as you found them first time. So, document from 5th chapter could easily end up after mission log from chapter 20. It's fine.
All chapter names and their indexes
colChap
Menu ID
Title
01
1
Landing Site
02
2
Foothills
03
3
The Town
04
4
Research
05
5
Chasm
06
6
Power Station
07
7
Wasteland
08
8
Badlands
09
9
Nightfall
0a
10
Last Stand
0b
11
Dead Forest
0c
12
The Portal
0d
13
Cliffs
0e
14
Hot Springs
0f
15
Inferno
10
16
Crater
11
17
Ancients
12
18
Terra Incognita
13
19
Abyss
14
20
Green Lands

Menu item with ID 18 is not available in the New Game menu and you can't unlock it there simply because it's not implemented yet there is a text message declared in the resources.assets for zone 18 to display on enter. It seems like terrain or at least some objects associated with zone 18 (including spawn point) does exist in the level7 file, though. I've tried to modify Assembly-UnityScript.dll to load level 18 instead of level 19 when "Abyss" menu item is selected but it spawns player at the beginning of the "Crater" zone (level 16) instead which is located in the same level7 file.

There are no documents, mission logs or scientific reports associated with chapter 18 "Terra Incognita".

All documents and mission logs associated with chapter 14 the "Hot Springs" are missing.
All records available in the Journal
DOCuments
22 in total, colType = 00
Length
colLogs
colChap
Title
09
pda_intro
01
Welcome to Holo-Tab
0d
supply_module
01
Oxygen Supply Vehicle
0f
securitycode1_1
03
Lab Security Code Part A
0f
securitycode1_2
03
Lab Security Code Part B
0a
manifesto1
03
Director's Report 25.06.1978
0d
things_i_miss
03
Things I Miss
0a
lab_report
04
Lab Report 322: Virus
0b
lab_report2
04
Lab Report 394: Patient 23
0c
final_report
04
Final Report
0a
manifesto2
05
Director's Report 12.08.1978
10
incredible_power
06
Report 71: Incredible Power
0b
robotic_arm
06
Report 92b: Robotic Arm
0b
crane_notes
08
The Crane
0e
portal_changes
0a
The Portal Changes
08
vladimir
0a
Dr. Vladimir Audio Log
0c
shapeshifter
0b
A Boy in the Woods
0f
portal_disaster
0c
Portal Disaster
0a
manifesto4
0d
Director's Report 19.10.1978
0c
test_subject
10
The Test Subject
0d
hugemeteorite
10
Huge Meteorite
08
ancients
11
Identity of the Ancients
0b
portal_time
14
Portal Time

If you are standing at the beginning of the last level then last document won't be shown in the Journal. You will have to collect it again if you want to see it there.

Mission LOGs
25 in total, colType = 01
Length
colLogs
colChap
Title
0d
missionlog1_1
01
Hard Landing
0d
missionlog1_2
02
Jetpack Functional
0d
missionlog2_1
02
No Signs of Life
0d
missionlog3_1
03
A Strange Discovery
0d
missionlog3_2
03
Shallow Graves
0d
missionlog4_1
04
Research Facility
0d
missionlog4_2
04
A Vision of Home
0d
missionlog4_3
04
Mining Operation
0d
missionlog5_1
05
Jetpacking
0d
missionlog6_1
06
Power Structures
0d
missionlog7_1
07
Crew Confirmed Dead
0d
missionlog7_2
07
Footprints
0d
missionlog8_1
08
Time for Answers
0d
missionlog9_1
09
Pikes
0e
missionlog10_1
0a
Dead Bodies
0e
missionlog10_2
0a
Massive Structure
0e
missionlog11_2
0b
Shapeshifters
0e
missionlog11_3
0b
Dead Forest
0e
missionlog11_4
0b
Portal Creators
0e
missionlog12_1
0c
Stuck
0e
missionlog15_1
0f
Unusual Biology
0e
missionlog17_1
11
Alien Artifacts
0e
missionlog18_1
11
Comm Error 0021
0e
missionlog19_1
13
Tracking the Monster
0e
missionlog20_1
14
Aelita's Sacrifice

If you are standing at the beginning of the last level then last mission log won't be shown in the Journal. You will have to collect it again if you want to see it there.

SCIentific reports
19 in total, colType = 02
Length
colLogs
colChap
Title
0c
chalcanthite
02
Chalcanthite
0d
rhodochrosite
02
Rhodochrosite
06
sulfur
02
Sulfur
0c
meteorcrater
03
Meteor Crater
09
almandine
05
Almandine Garnets
07
garnets
05
Garnets
06
basalt
07
Columnar Basalt
05
roots
07
Roots
09
celestine
08
Celestine
0b
rose_quartz
08
Rose Quartz
0c
rose_quartz2
08
Rose Quartz
0d
yellow_quartz
08
Yellow Quartz
09
wulfenite
08
Wulfenite
08
autunite
09
Autunite
08
crocoite
09
Crocoite
06
quartz
0a
Quartz
04
coal
0b
Coal
03
ice
0b
Water Ice
08
obsidian
0f
Obsidian
All missing documents with their content
I haven't managed to find following documents in the game. Part of them declared in the level files but either very well hidden or bugged. Another part is only declared in the resources.assets file.

Status: 3 missing or bugged, 6 unavailable
colType = 00
Declared
Length
colLogs
colChap
Title
Document content
resources.assets only
0d
we_are_aliens
03?
Are We Aliens?
A new world, a new conspiracy. The children speak of aliens. They measure the distance of this world from our own as some sort of progress, that we might be closer to discovery. They do not understand the vast emptiness of the cosmos. Still, the very fact that we stand here does raise an interesting point. The books, the movies, the radio programs, they always speak of monsters arriving from outer space. But in this instance, are we not the invading alien race? (Auto-Translated from Russian)
level2 and resources.assets
03
dam
05?
The Dam
The dam is sturdy and our reservoir will sustain us. It marvels me how little the tactics of colonization have changed in hundreds of years. We still require food and water to live; wood, stone, and steel for shelter. It does not matter if we build on a distant planet or an island in the North Sea. It's all the same: survival. (Auto-Translated from Russian)
resources.assets only
05
bread
0a?
Yearning for Bread
They started handing us bread today. This was not a foreign concept to us, but it was something we all thought we left behind. Where are the supplies? Why haven't they sent us food? If we knew it would have been like this, we would have planted crops. Surely with all this plant life, we could have grown grain for bread. (Auto-Translated from Russian)
resources.assets only
0a
manifesto3
0c?
Director's Report 08.10.1978
The latest shipment from home arrived today. Men, food, and copper. But it was all lost. They appeared in an explosion of bright light and a thunderclap, ashes of their remnants fading off on the wind. A horrible sight! The ground surrounding their arrival is but a rock, which is quickly becoming commonplace. It seems as though the more Green Fire that is lost to our electrical production, the less I recognize the landscape.

But this is merely a test. Our people face a long history of trials and difficult choices, and we understand anguish better than any culture. In the end, we always emerge stronger and wiser than before. It will be no different, here. It can be no different, here.

I will rally the scientists together. Somehow, we must return home. Our rations run low. The children look hungry. But we will prevail, even if I must return to Mother Russia and retrieve the supplies myself. (Auto-Translated from Russian)
resources.assets only
0a
manifesto5
0d?
Director's Report 02.11.1978
There is nothing I can do to stop the chain reaction. Soon, this world will be lost. I cannot fathom my part in this catastrophe, or the blind arrogance with which I carried out the planet's execution. Separated from the motherland, I will never know the outcome of the great conflict between Moscow and the West, but I earnestly hope that they never stand on similar grounds and witness the destruction they have wrought, as I must.

I watch as this vibrant world rots to dead rock.

I so desperately wanted to hand triumph to our people. I could have been a savior! But now, I cannot face them. I am glad that we can never return. Our people will never know what happened here. They will never know why their families never came home.

They will never know it was my fault. (Auto-Translated from Russian)
resources.assets only
0a
manifesto6
0d?
Director's Report 17.11.1978
I thought I found a survivor today. A hand reached up from the dirt, yearning for help. When I rushed toward the charred, dying flesh, it struck me deeply in my abdomen. It was a horrible remnant of our interventions, somehow still alive. The native life sought its revenge on me, and soon it will be victorious.

I am responsible for this madness. We did not belong here--the planet did not deserve this. The distant worlds are kept from our reach because we have not yet earned the right to be there. And somehow, I fear that when the time comes, man will seek these treasures in the heavens not because of wonder. He will do so because because he has destroyed his original nest.

We are fools. (Auto-Translated from Russian)
level6 and resources.assets
0a
travertine
0e?
Travertine
I have entered an area of beautiful limestone terraces formed by intense geothermal activity. I'll have to watch my step in this region since there is hot magma not far underground.
level6 and resources.assets
0a
geothermal
0e?
Geothermal Springs
More geothermal activity here. I'm concerned the area ahead may include volcanic hazards. Where there's smoke, there's fire, as the saying goes...
resources.assets only
0a
manifesto7
10?
Director's Report 06.12.1978
I am not likely to see another day. The wounds I carry are a constant reminder of the pain we have inflicted on this planet. Our original purposes here were pure and good! But maybe that is the curse of a species far from home: we cannot adapt, so we destroy. Instead of cultivating, we upset the natural order of the new world. It has always been this way and always will be such. And there is the arrogance--to think it should be any different for our generation!

I am sorry, Aelita. I did not see until it was too late. If my name is ever again called to mind, I hope it will be as a lesson for those who come after me.

Do svidaniya. (Auto-Translated from Russian)

colChap values in this table are only my own guess on chapters where these documents were supposed to be.
All missing mission logs with their content
I haven't managed to find following mission reports in the game. Part of them declared in the level files but never triggers. Another part is only declared in the resources.assets file.

Status: 2 missing or bugged, 2 unavailable
colType = 01
Declared
Length
colLogs
colChap
Title
Mission log content
level2 and resources.assets
0e
missionlog5_01
05?
A Woman or An Illusion
Out of the underground research facility now, I've had another hallucination, but this time in the bright of day: I saw a woman--apparently the source of the green footprints. She isn't the most sociable imaginary friend, however--shouting at me in Russian and running away. I wonder if she's some passerby I met one day in the past, some memory of my time on the space station with Russian cosmonauts. Or maybe this is all due to residual trauma from the loss I suffered back on Earth... Still, for an illusion, it all feels remarkably real, right down to the glowing soil emanating from her footsteps. I'm not sure if I'm more unsettled by the idea that I'm hallucinating a woman able to survive in this world, or that such a being may actually exist.
resources.assets only
0e
missionlog11_1
0b?
Saved
Whatever these terrible creatures are, the woman saved me from their attack. But still she doesn't fully trust me--she aids me but doesn't let me get too close. And I still don't trust her, either. I'm worried she is using me for her own purpose, or perhaps is leading me to some other danger. I'm continuing to proceed with caution.
resources.assets only
0e
missionlog13_1
0d?
A Helpful Guide
Though I don't speak a word of Russian, the woman is guiding me through this dangerous area. By paying close attention to her motions, I am able to follow her directions to move left or right, to walk slowly forward, or to stop. I'd rather not become plant food, so I'm doing my best to follow her directions.
level6 and resources.assets
0e
missionlog14_1
0e?
Water Park
I've entered an area with unusually high geothermal activity. There are hot springs all around and geysers shooting up out of the crust. I'm not as nimble as the woman at climbing rocks. I wonder if I could make use of these fountains to boost me up? My suit should protect me from the scalding hot water, but it could still be quite a ride...

colChap values in this table are only my own guess on chapters where these documents were supposed to be.

There are no missionlog16_1 even in the resources.assets file.
Achievements controlled by Assembly-UnityScript
Library Assembly-UnityScript.dll which you can find in the game's folder controls many aspects of the game including game menu and some of the achievements. I've described here all achievements which I found there. Seems like all the other achievements are controlled in a different way.

Rocketeer (id: rocketeer) is activated right before credits.
Game compares timePlayed with 0x3840 (14400 seconds, 4 hours) and activates achievement if it's lesser than this value. I haven't figured out yet how is it conected with 4-byte time format in the savegame.

Expedition Leader (id: expeditionLeader) is activated during the gameplay on character's current state update. On each update game compares timePlayed with 0x8ca0 (36000 seconds, 10 hours). If it's below this value game adds to it time which passed since previous update. Value of the timePassed stops being updated when it reaches any value above that one or exactly that one. If it's above that value game tries to activate this achievement and then stops checking state of the variable entirely.
Seems like here is a very small chance to not achieve this achievement if normal method (waiting 10 hours) were used and timePassed variable will became equal to exactly 0x8ca0. In such case it will stop being raised but won't trigger the achievement activation sequence either. If I'm not mistaken time is stored as floating point number with seconds in the integer part and milliseconds in the fractional part. So, there is 1 out of 1000 chance to hit exactly that value.

Survivalist (id: survivalist) is activated right before credits.
Game checks only value of the noDeaths variable and activates achievement if it's True (1).
BTW, "Last checkpoint" menu option instead of loading last checkpoint actually kills character by setting his health to 0. That's why it sets noDeaths to False (0) and must not be used if you want to get this achievement during normal playthrough.

Lifeless Astronaut (id: lifelessAstronaut) is activated on character's death.
Game checks all 8 deathBy* variables and activates achievement if all of them are True (1).

Burned (id: burned) is activated during the gameplay on character's death.
Achievement is activated in case of instant death caused by fire (lava does such damage). Game does not checks state of deathByFire variable and actually sets it to True _after_ giving the achievement.

Gravity Kills (id: gravityKills) is activated during the gameplay on character's current state update. On each update game checkes if character just slided or fall to his death and grants the achievement in case of such death. Game does not checks state of deathByFall variable and actually sets it to True _after_ giving the achievement.

Rock Hound (id: rockHound) and Geologist (id: geologist) both are activated on addition of a new entry into the Journal. Game makes sure that type of the newly added item is 2 (scientific report) before proceeding any further. To check activation conditions game goes through colType array and counts items with value 2 (scientific reports).
If there are 8 such items game tries to activate Rock Hound.
If there are 17 such items game tries to activate Geologist... which is strange since there are 19 scientific reports in the game and none of them are unobtainable.

Planetary Historian (id: planetaryHistorian) is activated on addition of a new entry into the Journal. Game makes sure that type of the newly added item is 0 (document) before proceeding any further. To check activation conditions game goes through colType array and conts items with value 0 (document).
If there are 23 such items game tries to activate Planetary Historian.
The problem is that there are 25 documents in the game but 3 of them seems unobtainable.

Ambidextrous (id: ambidextrous) is activated when monolith is powered up by the glowing stone (player insets any glowing stone into any monolith using a minupulator, impossible to miss during normal playthrough).
Rock Hound and Geologist achievements
It's possible to achieve Rock Hound and Geologist achievements in a legit way but it's a bit too booring if you haven't did it on the first playthrough. Also some of the rocks are very well hidden and some people has problems to locate them even with the guide. So, if you can't locate one of them or just don't want to go through locations once again then this part of the guide is for you.

Game doesn't check exact document names when unlocking these achievements. Well, it does checks the document name and type but only to make sure it's a new document which you haven't found on the previous playthrough. Then it simply counts number of collected documents of specific type when you picking up a _new_ document of the same type. All 3 types of documents are stored in the same array, so it's possible to make it think that there are more documents of specific type than you actually collected. How to do it in a reltively easy way?

I haven't tested this method myself but according to my knowledge of the code which unlocks these two achievements and my experience with Planetary Historian achievement it must work.
  • make a backup of the original savegame file;
  • add into savegame file 7 scientific reports;
      (skip this step and all sub-steps if you already unlocked Rock Hound)
    • make a backup of modified savegame file;
    • collect one rock which you haven't found yet;
    • save & quit;
    • restore the backup of modified savegame file;
  • rise number of scientific reports in the savegame to 16;
  • collect one rock which you haven't found yet (the same one as before);
  • restore original savegame file.

I'd assume that you have finished this game and collected at least 17 documents of any type including the mission logs. Go through the steps proposed above and when you reach position which will request you to add more scientific reports open your savegame file and find there colType array. How many "02 00 00 00" blocks are there? Count such blocks and change existing "00 00 00 00" and "01 00 00 00" blocks into "02 00 00 00" to reach necessary number of scientific reports.

When you will reach point where you will have to pick up a new rock, which you haven't found yet then try to use following reccomendations:
  • If you were lazy and haven't went much out of the way then most likely you won't have the "meteorcrater" report located at the very beginning of the "The Town" level since it's not directly on the road but to the left from it deeper in the sands. You might even missed 3 rocks in the "Foothills". Use one of these rocks.
  • If you already found most of the rocks then replace one of them with any other document which have colLogs name of the same length. I've added length into separate column in all tables to make it easier. I'd recommend to use names from the "missing" sections since you almost certenly haven't them in your possession unless you already added them into your savegame manually. In such case you already don't need this guide. ;)

BTW, make sure to pick up only that "trigger" rock. Otherwise you may reset type of one of the documents which you has modified.
Planetary Historian achievement
As far as I know this achievement is bugged. I've asked those who already has it and as I understood they all have used Steam Achievement Manager to get it. The point of my guide is to get all of the annoying achievements in the game without using 3rd-party tools, though. I haven't found the location of any of the 3 possible documents which may exist there but I have found a way to unlock the achievement, though. BTW, achievement description says "Read every document." You have to "collect" rocks but you need to "read" documents. If you already seen all 22 documents in the game and all documents from the missing documents section in this guide then you already achieved it. Now you just need to unlock it. ;)

So, if you already found all 22 known documents then there is a very easy trick for you. Locate "supply_module" document name in your savegame and replace it with "we_are_aliens". Now start the game from the first chapter, go to "Oxygen Supply Vehicle" and pick up the document located there. If you did it right this achievement will pop-up in a few seconds. Just make sure that you have 22 documents in your savegame. I've used this method and got the achievement. If it doesn't work for you then you are doing something wrong.

If you haven't found all 22 documents in the game but want to get this achievement then try to adapt method from the previous section about Rock Hound and Geologist achievements. It should be the same. You will need 21 documents of any type in your posession (it's easy, you most certainly already have them unless you avoided them deliberately). Also you will have to replace document types with type 00 00 00 00 and you will have to pick up a new document to trigger the achievement instead of a new rock. All the rest is the same.
The End
Yes, it's cheating in a some way but waiting 10 hours is just ridiculous and going through this game all over again for Survivalist is really exhausting. It's a good game but from my point of view it have almost zero replayability except for locations where you can go out of the way with extended jetpack. Also it's not an online game, so it's impossible to damage someone else's game experience this way.

Bye and thanks for the fish.
25 Comments
Dangerous Beans Nov 16, 2020 @ 3:01pm 
Thanks a lot for these instructions! Two clarifications:

1. There are two different (32-bit float) timers: timeElapsedSinceStartOfGame counts the seconds elapsed in this playthrough, timePlayed counts the accumulated seconds in all playthroughs. The former is used for the Rocketeer achievement (must be less than 14400 sec = 4 hours), the latter is used for Expedition Leader (more than 36000 s = 10 hours).

2. The various deathBy* flags are only used for Lifeless Astronaut . They are not reset when restarting the game, so they don't need to be zeroed out to get the Survivalist achievement. For Survivalist , set deathsSinceStartOfGame to 0 and noDeaths to 1.
mR | maxgb2000 Apr 28, 2018 @ 1:35pm 
AAAAAAAAA MATH
The Undeceased Mar 30, 2017 @ 8:33pm 
Just wanted to say thanks for putting this together. :approved:
R14__Lib Dec 13, 2016 @ 7:39am 
I can't quite figure out how do I hack the geology-related achievements and the Expedition Leader.
For the last one, which value should I change, timePlayed or timeElaspedSinceStartOfGame? Should I also mess with isStartOfGamePlaythrough to get it?
And for the geology ones, which array(s) I am to modify? Only the colLogs or all of them?
Any help, including something like RTFM, is appreciated :) never dealt with hex hacking before.
Eviction Notice Mar 22, 2016 @ 6:22am 
Thanks for taking the time to put this together. It's a very nice beginner tutorial on understanding the fundamentals for programming and taking a look under the hood to see how it works behind the scenes.
Leon  [author] Nov 30, 2015 @ 8:36am 
The Geologist achievement process is messy: I didn't get how to change it, so I had to collect them all by myself.

As for the rest, well done, lainverse, you truly get my respect
Leon  [author] Nov 29, 2015 @ 8:08am 
Thanks a lot.

As for the Rocketeer and Survivalist achievements, I made it a lot easier:
0. Moved my savefile to another directory
1. Started new game
2. Saved.
3. Opened save in hex editor
4. Changed the last bytes (curChapter) from 00 00 00 00 7B to 14 00 00 00 7B
5. Launched the game, pressed Continue
6. Appeared in air, quickly pressed Reload from the last checkpointed
7. Safely finished the last chapter (it's easy: no traps, just a few more jumps)
8. Got both the achievements in 5 min
🦄 lainverse  [author] Aug 27, 2015 @ 2:31am 
Well, sounds logical, but I actually had slightly different scenario in mind.
1. Start the game.
2. Go through the game to the last chapter.
3. Save and exit.
4. Start the game.
5. Load save and finish final chapter.

So, it will be the first playthrough yet, but the game will be restarted right before the end.
noodel Aug 26, 2015 @ 5:49pm 
Another thing I suspect is that the Rocketeer acheivement is
dependant on timeElaspedSinceStartOfGame while Expedition Leader
is dependant on timePlayed.
noodel Aug 26, 2015 @ 4:54pm 
My friend provided to me four more saves:
Two of which he started a new game on, and
the other two, he started from the final chapter.

There seems to be a field called "isStartOfGamePlaythrough"
and I suspect that it keeps track whether you started from the beginning or not.
From first two saves I saw had this at 01 whereas the second two
(where he started from the last chapter) had this at 00 so I'd suspect
that this value is checked against for the rocketeer achievement
preventing people from simply starting on the final chapter and getting the
achievement more easily.