Hacker News new | ask | show | jobs
by munk-a 1733 days ago
I think it's arguable if you even need skill - I believe Toady One has mostly taught himself good project design through having to deal with Toady One's code from three years prior. Changing a fixed 2D legacy game to 3D and completely rewriting fluid dynamics in a shipped title will do that to you.

I agree entirely about motivation though - he's stuck with that project for an immense amount of time. Urist Borushdumat[1] and Boatmurdered[2] are both from 2007 - George W Bush was president then and The Colbert Report had barely gotten started - your nephew in high school was still in diapers. However - over the full run of nineteen years dwarf fortress has been in development[3] he has received pretty tremendous community support - well probably since 2005 or so - I don't know if anyone knew it existed in 2002.

1. http://www.bay12forums.com/smf/index.php?topic=15572.0

2. https://lparchive.org/Dwarf-Fortress-Boatmurdered/Introducti...

3. Wait - wtf - it's older than Firefly! (that's the show that made Nathan Fillion famous before Castle or Dr. Horrible's Sing-a-long-blog FYI) I can now use the line "I'm getting too old for this sh*"

1 comments

And the number of times save compatibility has been broken is surprisingly small for a long-lived one-man project.
I think that’s just more a result of the game style/architecture. I don’t think there’s much hidden state that’s not encoded into the map/entities, and even things like AI is I think ultimately preserved as a simple stack of pending tasks.

So being a proper simulation, and combined with the lack of replay, you can almost entirely discard the past events. The game is largely modeled as f(world-state, sim-rules) -> world-state, and so you simply take the old save and continue running it under the new simulation rules, and no one has to really care how many rule sets the world has seen. It only matters that they produced a valid world-state, every time.

The issue with saves and compatibility is that the saved world state needs to remain a valid world state in a new version. This can be as simple as initialising missing data to sensible defaults or a lot more complex if simulation changes have caused the world state to change significantly. Then to avoid breaking things you need to somehow migrate the old data to the new data. And you may need to do that several times if someone loads a save from eight versions ago.