SSDs die

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.