Code archaeology: Reading City of Heroes' .bin files
posted 07 Mar 2020 • city of heroes, game dev, programming, reverse engineering, rust
For the past month, I’ve been digging into the data files for a nearly twenty year old MMO. It’s a fascinating journey through not just the juicy details I’m looking for, but also how the original City of Heroes devs thought about structuring the very data for their game and the systems design behind the character data and abilities.
Why? Because it was fun! But it was also frustrating at times. The data structures are directly tied to how City of Heroes represents data in memory, to the point that it has pointer offsets encoded in the data. Without access to the source code, I probably would not have wanted to put in the time to reverse engineer everything to the degree I did, and I definitely would have second-guessed myself a lot. Even with the source, there was plenty that was downright confusing, which is why it’s taken me a month to get this far.
If you’re interested in learning more about City’s bin files and how to parse them, keep reading. If you just want the goods, however, go here. Let’s jump into it!
A decade in review
posted 30 Dec 2019 • personal
As 2020 and a new decade dawns, I thought it would be nice to go back in time for a bit and reminisce about how the 2010s went and also to talk about where I’m at today. Just thinking about it, I’m surprised about how much my life changed in the past 10 years.
Personally, I probably couldn’t be doing better. I have a loving, stable marriage. We have enough money that we don’t have to worry about the unexpected too much. Since I started taking meds for my generalized anxiety disorder a few years ago, my quality of life has improved drastically. I don’t smoke anymore, and I barely drink alcohol (which is far cry from a few years ago, more on that later).
Career-wise, it’s a different story. I’m fast approaching the quarter-century mark in my career, and I find myself facing a crossroads. For the past ten years of my life, I’ve worked in the games industry, which is notoriously rough on people. I’m reaching an age where I can’t work like I used to, putting extra hours and dealing with constant chaos. Work-related stress is a constant factor that affects my mental and physical health. As much as I love what I do, I’m not sure it’s good for me. I think one of the things that’s reinforced that thought lately is that I’ve taken my first large chunk of time off this holiday season in a long time, and I find myself sleeping better and not leaning so heavily on my anxiety meds. That said, I’m not certain I could go back to working in business software or something like that, despite the stable hours and better paychecks.
A few months ago, I considered relocating to Sweden for a new job (still games). It was enticing, I must say. I’ve always considered living and working abroad at some point (I live in the United States). I don’t think it was quite the right opportunity for me, though, and I passed on it. Even now, I sometimes wonder if I made the right decision, or if I will end up regretting it.
So, that’s where I’m at today. Let’s look at the past decade, year by year.
Why don't you just quit?
posted 04 Aug 2019 • game dev, labor, politics, privilege
It can be tempting to simplify the woes of the games industry into “obvious” solutions. “Why don’t you just quit?” is one I hear a lot, many times over the years, and it came up yet again earlier this week. In one of the industry forums that I participate in, we were discussing how studios frequently exploit their QA staff. One person put forth an argument that boiled down to: if they just quit their jobs and go somewhere else, the studios would have to improve because they would be unable to hire people to exploit.
Unfortunately, it’s just not that simple.
Building a retro gaming PC from 2008
posted 14 Jul 2019 • city of heroes, games, hardware, pc, retro
One of my hobbies is collecting retro gaming hardware. I have a modest collection of several different consoles and games: Super Nintendo, Sega Genesis, PlayStation 1/2, Nintendo 64, PlayStation Portable, and Game Boy Advance. Sometimes I just like to kick back with a game from the older generations and appreciate a bunch of different consoles and games I didn’t get the chance to play the first time around.
I mostly gamed on PC through the late 90s and into the 2000s, so it never really occurred to me to revisit older PC hardware. However, my wife is big into City of Heroes, and when it recently came back to life, we started playing together on the Homecoming servers. One of the interesting things about private server MMOs is that the client software largely goes unchanged, so theoretically this MMO that shutdown in 2012 should still be playable on some pretty old hardware.
So I challenged myself to build a decent gaming PC from the mid-2000s that could still run City of Heroes today.
The sound of water
posted 14 Jun 2019 • home devices, memories, personal, zen
The past week or so, I’ve been stuck at home recovering from surgery. One of the features I’ve discovered that I really like on my Google Home is that I can tell it to “play nature sounds.” These are pretty relaxing on their own, and contain some of the typical things like babbling brooks and thunderstorms. What I wasn’t expecting was that these sounds would trigger a memory for me.
When I was really young (like 5 or 6?), I used to spend time at my cousins’ house every once in a while, playing with them and having sleepovers. They were close to me in age, so we got along really well. It was a welcome reprieve, since at home my brother was a good six years older than me, and he mostly tried to pretend I didn’t exist (except for the times when he bullied me instead). My uncle had an aquarium in his living room. I don’t really remember much about it or even what kind of fish were in it. But I do remember distinctly the sound the water pump made, the constant trickle of water cycling in the glass tank.
One of the babbling brook sounds that my Google Home makes is nearly identical to the sound of that water pump. When I listen to it at night while I’m trying to fall asleep, I’m taken back to that time when I was a kid, sleeping in the living room with the aquarium as the only sound. I’m taken back to that short time when I got a trip away from my own home, away from my brother who bullied me and my parents who were arguing all the time. It’s a weird zen moment that brings me peace even now as an adult, nearly forty years later.
It amazes me how something as simple as a sound can trigger so many memories and feelings.