Unlock the unobtainable achievements the way the developers intended

Unlock the unobtainable achievements the way the developers intended

UNACHIEVABLE

// Hey Players! Yes, You're Supposed To Modify This To Get The Achievement!

Unlock the unobtainable achievements the way the developers intended image 2

⚠️ While this method is intended by the developer (read more below), it still violates the 100Pals’ rules on achievement hunting, specifically the rule “Not Allowed 3”: Do not modify game code.[achievementhunting.com]

There have been no previous rulings similar to this situation documented on the website, and until an exception has been explicitly approved, it’s not recommended to unlock this achievement if you want to retain the tracking status on achievement tracking websites.

As the name of the achievement says, the achievement is unachievable under normal circumstances. No in-game action will ever unlock it. But when looking at the source code of the game, specifically at the line that defines the achievement for the game,[github.com] you can see the following comment: [highlight mine]

{ ID: "UNACHIEVABLE", Condition: () => false, },

The comment clearly implies that you need to edit the game code to unlock the achievement. But because of the way the game is built and published to Steam, you won’t be able to find the file linked above when you browse the game files on your computer.

There are two ways to approach this:

Modify and rebuild the game using the source code on GitHub.[github.com]

Modify the finished compiled bundle and set the file as read-only until you unlock the achievement.

Option 1: Modify and rebuild the game yourself from the sourceThis method is not recommended as by default you’ll be building the latest developer version of the game, which is not the same as the latest version published on Steam. On top of that, this method also requires technical knowledge on how to build (desktop) web applications using complex tooling.

In the context of the guide, featuring the step-by-step guide on how to build a web application wouldn’t be really useful and unless you have the necessary technical knowledge, it’s better to skip to the following method below.

Detailed instructions on how to build the game from scratch can be found in the repository itself.

Option 2: Modify the compiled bundle and set it as read-onlyThis method is recommended as you’re editing the latest version released on Steam without having to install any other dependencies into your computer.

Step 1: Locate the game codeOpen your Steam library.

In the game list, look for Bitburner.

Click on the gear icon (⚙️) on the right-hand side of the screen.

Select “Manage”.

Select “Browse local files”.

Once the Explorer window opens, click on folders in the following order:

resources → app

Find the main.bundle.js file and open it in your favourite code editor.

(If you don’t have any code editor installed, your best option is to install Visual Studio Code.[code.visualstudio.com] )

Step 2: Find the achievement definitionAs you can notice, the game code looks a lot different from what’s in the repository. This is the result of an automated process (called ‘minifying’) that is done while the game is built for release. Don’t be scared though, the game code is still exactly the same as to what’s on the repository, just combined into one file and without any unnecessary bits so the file will take less space on your computer.

Search for the following line in the game code: [the function returns false]

{ID:"UNACHIEVABLE",Condition:()=>!1}And replace it with: [the function returns true]

{ID:"UNACHIEVABLE",Condition:()=>!0}(In other words, replace the number in the definition function from 1 to 0.)

Once you’ve changed the code, save the file and exit the editor but do not close the Explorer window.

Step 3: Make the game code read onlyStaying in the directory you opened by following the first step, right click on the main.bundle.js file.

Click on “Properties”.

In the file properties window, in the “Attributes” section at the bottom, check the checkbox next to “Read-only”.

Click on the “OK” button.

Step 4: Open the gameAfter you open the game, wait a bit and the achievement should now unlock. Now close the game and don’t forget to reinstall it to restore the game code to its latest official version.

Exploit: Edit (the Save File)

// To The Players Reading This. Yes You're Supposed To Add EditSaveFile By // Editing Your Save File,
Unlock the unobtainable achievements the way the developers intended image 36
Unlock the unobtainable achievements the way the developers intended image 37

There are two achievements named with the same name (“Exploit: edit”) but with different description. For clarity, here’s the full achievement name and description we’ll be unlocking in this section:

Exploit: edit

Acquire the EditSaveFile Source-File -1⚠️ While this method is intended by the developer (read more below), it still violates the 100Pals’ rules on achievement hunting, specifically the rule “Not Allowed 3”: Do not modify game code.[achievementhunting.com]

However, in this case there have been previous rulings where editing the game save file was allowed and considered ‘not cheating’ if developer intended for the player to unlock the achievement by editing the game save file, as is in case of Microtransaction Simulator.[achievementhunting.com]

This achievement is also unachievable under normal circumstances. As both the achievement description and game code comment says, to unlock the achievement, you have to edit your save file by adding an exploit named “EditSaveFile” to your player data.

For clarity, here’s what the comment says in the game source code:[github.com]

export enum Exploit { [...] yes you could add them all, no we don't care // that's not the point. EditSaveFile = "EditSaveFile", }

Step 1: Export the save fileOpen the game.

On the side menu, select “Options”.

Click on “Export Game”.

On the other window select the folder where you want to save the exported save file.

Click on “Save”.

Although the file has .json extension, the file itself does not directly contain a JSON string notation.

Step 2: Add the discovered exploit to your save fileIn your favourite plain text or code editor:

Open the exported game save file (ends with .json) in your favourite plain text or code editor.

(If you don’t have any code editor installed, your best option is to install Visual Studio Code.[code.visualstudio.com] )

Select all the text and copy it to the clipboard. Most editors should let you copy all the text by pressing Ctrl/Cmd + A followed by Ctrl/Cmd + C.In your favourite Internet browser:

Open a new tab or window on your favourite Internet browser.

Go to “about:blank”. Do not add http:// or any other protocol behind the web address. The address bar should look like this:

Open Developer Tools. Right click on the blank space and select “Inspect” or “Inspect element”.

A new window should appear at the bottom of the screen. In this window, click on the “Console” tab.

A console should appear at the bottom of the screen. We need to copy the game save data first. Type in the following command:

// The game save data must be followed by quotation marks. var saveData = "<paste the game save data here>"; Convert the Base64 string into a proper object:

// This save data string parser was taken directly from the game’s source code. var saveObj = JSON.parse(decodeURIComponent(escape(atob(saveData)))); By exploring the save data object, you can see the save data is split into individual objects. Convert the player save data from JSON string into a proper object, as that’s where the discovered exploits are saved:

var playerSave = JSON.parse(saveObj.data.PlayerSave); Add the “EditSaveFile” into the list of discovered exploits:

playerSave.data.exploits.push("EditSaveFile"); // Convert the object back into its JSON string notation. saveObj.data.PlayerSave = JSON.stringify(playerSave); Convert the object back to the Base64 string:

saveObj = btoa(unescape(encodeURIComponent(JSON.stringify(saveObj)))); Copy the game save data string to the clipboard:

copy(saveObj); Back in your favourite plain text or code editor:

Open the original save file.

Select everything by pressing Ctrl/Cmd + A and delete it.

Paste the copied text by pressing Ctrl/Cmd + V.

Save the file.

Step 3: Import the save fileOpen the game once again.

On the side menu, select “Options”.

Click on “Import Game”.

On the other window select the modified game save file.

Click on “Open”.

You will see a message warning you importing the save file will replace your game data. Since you want to do this, click on “Confirm”.

The game will restart and after a moment you’ll unlock the achievement.

Source: https://steamcommunity.com/sharedfiles/filedetails/?id=2710381850					

More Bitburner guilds