One of my SSDs died yesterday. Working perfectly with no S.M.A.R.T. abnormalities in one second, completely gone in the next.
I didn’t lose anything crucial in that (because if it was crucial it wouldn’t be just on one drive), but it still stings. What’s gone (that I know about so far):
- Unpublished local changes to both GeDoSaTo and PtBI. They weren’t great or done, otherwise I’d have merged them into master and pushed them to Github, but still quite a bit of work there.
- A ton of game screenshots and some older save games without Steam cloud support.
- A lot of smaller development projects I worked on in the timeframe from 2011 to around 2015.
The last point is the one that truly matters. It included the final project that I wanted to post about in my “Graveyard of Forgotten Projects” series. It was a tile-based dungeon crawler I developed for my Galaxy S2 phone a few months after I got that, so in mid- to late 2011. If I hadn’t procrastinated so much with writing that, at least something of that game would still exist now. Well, something more than these two very short youtube videos of amusing bugs I uploaded (because of the amusing bugs):
The working title was “Sorceressry” (as in Wizardry), and the most interesting things I lost were:
- An engine written from scratch in OpenGL ES. Which is of course stupid to do, but was fun. Featured a custom occlusion and visibility culling system for tile-based dungeon crawlers that worked really well and which I was proud of.
- An “optimized” Java codebase which really showed that, at least at that point, trying to reach solid 60 FPS meant that garbage collection was more of a curse than a help. Basically, I remember going from 50 FPS with sporadic drops to 20 to 60 FPS by never doing any dynamic heap allocations and putting everything in manually managed static re-use arrays.
- A full level editor written in C#, which allowed putting together maps with tilesets including corridors, rooms, torches, clutter and decoration parts. You could then designate zones with encounter percentages, BGM choices and so on.
- A ruby script which automatically generated LOD meshes for the corridors using a basic (and really slow, but easily sufficient) recursive polygon reduction algorithm.
- All the assets I made for it, including a complete cave tileset and various icons and UI elements.
- A stupidly complex stat system, with 3 physical damage types, 6 magical damage types, and complex interactions between those and various stats. That’s probably the reason why I dropped the project when it came to implementing the battle system.
- It featured the “look around in-game by moving your phone and using it as a window” feature in 2011 before it got cool.
Well, this sucks even more after I wrote it down like that. At least I showed it to some co-workers who can confirm that it existed and had these things :/
Moral of the story: keep backups even of non-essential stuff, and don’t trust SSDs. Personally, what I’ll do in the future is push stuff to GitHub even more often and early, and when I have something local that isn’t ready but significant enough that I really wouldn’t want to redo it I’ll put it in a branch.
Also, procrastination can bite you.
How sad.
I think in these modern times there’s really no excuse not to have a couple of spare hard-drives on the shelf and a USB docking station with some software performing automated regular backups. It’s what I do, it runs in the background and takes basically no time, except sticking a couple of hard drives in every two weeks, and it nearly doesn’t cost anything.
Please, do it, so that this doesn’t happen again
You are right, though really it might be an even better idea to backup to some cloud service (or Github for source code).
I do that for everything “important” I’ve made since at least 2010 or so, but I just got a bit too complacent with SSDs. And with the idea that losing something is fine when it’s not “important”. I mean, I’d never have made any money with Sorceressry, and it’s not some fantastic achievement of software engineering that the world needs to see, but it being gone is still very annoying.