what?

Return of the Obra Dinn saves your game as .txt files
containing XML
which contain a date and a <data> element that's a base64 encoded string.

that sounds like binary with extra steps
I'm trying to Death Generator this game but Lucas Pope is known for two things:
1. really neat games
2. caching all his rendered text
this means that if a game has a message box that says "Hello World!" and you memory edit it to read "Cat Sauce" and re-trigger the message box, you still see "Hello World!" because it's still caching the rendered text
oh
I was worried this game had dynamic justification
but no, it's just that I can't spell.
there's only two Rs in "terrible"
the good news is that I can quit to the menu and re-load the save and it empties the cache
the bad news is that automating this is not going to be easy. this game has its own mouse controls, meaning I can't use absolution positioning
absolute positioning, I mean.
ahh, there's keyboard controls. so this is doable.
There's still a nasty memory-search in there, but I'll manage
okay got it doing a full reset.
the best part is that if I set it up slightly too slow, it accidentally clicks quit instead of begin, and the game closes, and I have to set up the IDs and pointers again
I'm not sure I've ever gotten memory searching to work
got it. the problem was, as always, memory protection
well, that didn't last long. I was trying to skip some steps and figure out what unicode regions are supported by this font, and instead it just hung my extractor
I'll just extract all of unicode!
at 11 seconds a character, that'll take about... 19 days?

there's apparently a timing bug in my script which means that sometimes instead of quitting, it tries to turn down the volume.

this is less than useful

it turned out to be because minecraft was crashing slowly in a multithreaded manner
this is one of the worst ideas for a game to extract to put in the death generator
it has, like, 7 different character sets in it?
english (plus extra characters because there's some danish and german in there), hindi, traditional chinese, russian, and probably several more I'm forgetting
frankly I'm lucky this game didn't just invent its own conlang and stick the alphabet up in the private use area somewher

also every time it renders text it looks different.

literally every time.
there are randomly missing pixels. this is intentional and part of the game's aesthetic

I have now crashed two asset extractors
interesting discovery: although the game is monochrome, the textures aren't. They seem to be mostly red/pink, with some green used.
The monochrome stuff seems to be done in a shader, but I'm wondering if the colors in the textures are being used for some in-game use?
GitHub - AssetRipper/AssetRipper: GUI Application to work with engine assets, asset bundles, and serialized files

GUI Application to work with engine assets, asset bundles, and serialized files - AssetRipper/AssetRipper

GitHub
@foone As someone who did exactly that, where else would you put the damn things?
@kawa my own codepage, of course. Fuck unicode
@foone been there, done that too.
@foone wait, what does Minecraft have to do with this?
@oblomov nothing! It was just running at the same time, and it crashed in a way that ate all my cpu
@foone pouring gasoline on the fire meme, but it's foone pouring timing rubber bands into the automation
@foone maybe it's just trying to find some passive aggressive middle ground, ok.
@foone Now I want to come up with what "absolution positioning" would look like. :-D
@static @foone Your mouse's y-axis depends on how forgiven your sins are.

@foone

absolution positioning:

a cursor mode that does what you should have done, not what you told it to do

alternatively: any system for fluffing a resume in preparation for a religious interview.

@foone that depends how pirate-y ye arrrrre today
@foone he’s on fedi you could ask him
@foone Did you ever Death generator the GameCom Castlevania proto? It released shortly before you exited the bird app.
@biggestsonicfan nah, I never did. I'll have to look into that
@foone binary you can copy paste?
@agatha @foone binary you can transfer over connections that can only do text unless properly configured

like ftp used to love to just make everything a text file unless you set it to binary mode.
@agatha @foone and on windows particularly, if you open a file not explicitly as a binary file, any 0x0A (line feed in ASCII) would become 0x0D 0x0A because windows converts normal line feeds
@ada @agatha @foone if they were going for historical accuracy they should have used UUEncode or HQX/binhex

@foone It’s binary, you see.

Every data format out there is either binary (increasingly rare), or binary with (increasingly) extra steps.

None of these extra steps would exist if our ancestors just agreed on an endianness.

@foone no shit, there was a serialization pipeline that turned out base64-encoded binary embedded as a stream of xml <char>0</char><char>A</char>…etc
@hanlsp @foone ok this makes me feel a bit better ahout Pope's auteur status
@danhon @foone to be clear this was something I encountered in heavy-duty commercial gamedev, not Obra Dinn
@foone a game about a cursed ship deserves a fittingly cursed file format
@foone If you think about what Obra Dinn is then the encoded string makes sense. Most of the entries in the log will be represented as bitflags, and when not they’re low-value integers. Pack em together and encode.
@foone I wonder if the base64 encoded data is itself another xml string...