wow, this is not a problem I run into that often: the game I want to reverse engineer is, in fact, easy to dig into, with lots of easily decompiled classes!

except I can't read any of them, because they're named in Finnish.

class HuoneenNroPaivitysScripti
class KakkosTalonTapahtumat
class MrspookKontrlScript

important languages to learn for reverse engineering:

* C
* C++
* Javascript
* Java
* x86 assembly
* ARM assembly
* PowerPC assembly
* MIPS assembly
* Finnish

oh my god this localizes too early

so instead of just doing "if (current_room=='kitchen')", and showing different strings for "kitchen" depending on which language the user selected, it has to do:

if (current_room == "Kitchen" || current_room == "кухня" || current_room == "부엌" || current_room == "Cocina"){
...
}

meaning that every time they add a new language, they have to update the logic in a bunch of places or it'll cause basic game functionality to fail in some languages

private List<int> numbersToChooseFrom

oh I'm sure that's just a badly named member and it won't be used terribly. *scrolls down*
this.numbersToChooseFrom = new List<int>((IEnumerable<int>) new int[46]
{
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
....

WHY ARE YOU STATICALLY INITIALIZING AN ARRAY OF NUMBERS FROM 0 TO 50

wait. 0 to 50? and it has 46 elements? uhhhh

you might say "but foone! surely this is just an enumeration that didn't survive decompilation!"

NOPE, THIS IS C#, enumerations come through fine.

according to google translate, this AikaEteneeJaJotainTapahtuu coroutine means "Time Moves On And Something Happens" which is a perfectly valid name, I guess.

oh god this reverse engineering tool (dotpeek) doesn't let me leave annotations/comments.
that's going to make this basically impossible for someone with as much ADHD as me, even before we get to the problem of "I DON'T SPEAK THE LANGUAGE THIS CODE IS WRITTEN IN"

@foone not sure if it supports comments (will go check) but I'd recommend switching to dnSpy. it's basically dotPeek but newer and better maintained, and has a lot of the old Telerik folks working on it after JustDecompile stopped being maintained. it decompiles all the fancy new language features and .NET 7 stuff, too. and has built in assembly editing features so no more relying on old Reflexil plugins.

edit: original dnSpy is archived; look for the dnSpyEx community fork repo.

Follow

@gsuberland @foone Is there a maintained fork I'm unaware of?

Sign in to participate in the conversation
Fuzzy Systems Masto

Instance run by a non-profit association, with a mission to encourage an open internet, welcoming to everyone.