Question: Reverse engineering a lua game?


Code converted to binary is effectively protected against reverse engineering & theft. But it's my understanding that high-level interpreted languages aren't really compiled (even when they sometimes seem they are). A common complaint about Python is that its 'compiled version' is effectively a glorified zip file - where anyone can reverse engineer it. This is one reason people give to not use Python in a production environment where users/customers have access to the executables.

Since Lua is a high-level interpreted language like Python I'm lead to ask: When I 'build' a .pdz version of my Playdate game am I making a theft-proof binary? Or is it a glorified .zip file like Python? And if it is a glorified .zip file, then if I share my game (on, for example) am I effectively publishing the source code?

A compiled PDX is just a folder containing your compiled assets and compiled Lua bytecode. The Lua bytecode is stored in .pdz files in the pdx folder. The bytecode itself is not human readable, but it technically might be possible to decompile the bytecode using a Lua decompiler. You can see more about the Playdate file formats here, thanks to @jaames reverse engineering:

Code converted to binary is effectively protected against reverse engineering & theft

FWIW it's possible for a determined individual to reverse a binary to produce something similar to the original source code. There are even efforts to recover meaningful variable names using AI. Once your game is in someone else's hands, there's no way to stop them from copying some or all of your source code/assets if they really want to. You can make it more difficult by using obfuscation techniques, but that will only slow someone down.