How did you come to work on EverQuest / EverQuest II?
Before I was hired to work on EQ, I was a player. My brother, my dad and I started playing EQ in 2001. My first character was a half elf ranger. I lost my corpse in West Karana at level 9, and sadly deleted her. I later played a dark elf warrior, but this was before warriors were given better aggro tools in early EQ, and it was really difficult to maintain aggro. I got made fun of for being a bad tank one too many times in a group at level 40, deleted my warrior, and quit the game. A few weeks later, I came back and started playing my level 20 cleric alt. I played the cleric until the Seeds of Destruction expansion, and switched to my enchanter, followed shortly after with switching to a bard.
Later on I was invited to EverQuest's CRT (Community Round Table) program as a player. From there, when I saw an open position for an associate programmer on EQ, I asked one of the developers in the CRT about it, and was encouraged to apply. I may not have without some nudging, because I was scrambling to finish final exams. I was shocked to be given an interview, and I kept getting passed to the next interview stage, and to my great surprise they hired me. I'm still amazed I have this job.
How long have you been working on EQ / EQII?
I started in August 2017, so about 3 years. The first expansion I worked on was Ring of Scale.
What was the first project you worked on for EQ / EQII?
My first player-facing change to the game was adding a chat message when you destroyed an item. One of the other changes I made early on that really challenged me was the outputfile recipes command, which writes all your character's known tradeskill recipes to a text file. This was helpful for the 350 tradeskill achievements that were relatively new at the time. This was challenging as a new programmer because it involved creating a new packet that went from the client to the zone, looked up and packed data based on what qualified as knowing a recipe, and sent it back down. As for big projects, I didn't do one until the following year, and it was a login database conversion, so it wasn't visible to players.
What is the favorite project that you’ve worked on for EQ / EQII?
Most of the projects I've worked on as part of the code team have been internal facing, things like database work, upgrading software, setting up new servers, modifying internal tools, and patching.
I've enjoyed making changes to EQ's chat messaging system - splitting up the My Spells chat filter, adding healing messages, removing a lot of duplicated messages, and making bard songs display the name of the caster. The bard song fix was an odd one that seems like it was never finished in the original game. Sometimes the changes we make break in wildly unpredictable ways. The change to bard song messaging caused a very unusual bug where eating a Chocolate Bar used the same string as the bard song message, so whenever you clicked it, it said you were singing.
Some of the other things I enjoyed working on in the past were adding the rainbow colored name on a character's birthday, improving the sorting of Overseer Agents, and adding information to the spell display window.
How did you break into the game industry?
I went to community college and studied programming. I was lucky in that my school had us doing C++, so I had a lot of courses that translated well to working on EQ. Aside from playing EQ for many years, I was in the right place at the right time. EQ doesn't hire people very often, and I was just finishing school when I saw they had an open associate programmer position.
What advice do you have for someone that wants to break into the game industry?
For programming positions, your resume shouldn't look like one you would use when applying for a software position outside game development. If your resume doesn't reflect any interest in games, it's harder to tell if that's something that you'd be happy doing - working on EQ is very challenging. Tailor your resume to the position you're applying for - match skills you have with what is listed in the job description. If you write a cover letter, say something that isn't already listed in your resume (big plus for what you like about the game/company you're applying to). If you're invited to an interview at a game company, I strongly recommend playing the game(s) that they make. Finally, even if you really are just looking for any job you can get, take some time to think about how you would answer the question - "Why do you want to work here?" For any job, at any company, you should be able to answer this question sincerely if you put some thought into it - try to explain how what you bring to the table will help the team, and what you think you would enjoy doing on the team.
What/Who is your favorite [item/npc] on EQ / EQII?
There are so many memorable NPCs and items in EQ, it's hard to pick. One item that is really special to me is the Shield of Ssraeshza, a priest shield from Luclin with 6 Flowing Thought. When I won it, I was so excited I jumped out of my chair and made a noise. I really enjoyed doing the Artisan's Prize and Tears of Alaris. I also really like the Book of Bad Poetry.
For NPCs, I really like wrulons, owlbears, Othmir, Chetari/Paebala, cragbeasts, and wyverns. One specific NPC I can think of right now is Veltar. He's for the monk shackle quest and happens to sit on the roof of a building directly in between Karnor's Castle and Firiona Vie. Many players have accidentally gotten too close to him, and then trained him all over the groups that would be camping on the path to escape, slaughtering everyone.
What’s the most challenging / most rewarding project you’ve worked on?
Honestly, EQ challenges me every day. A lot of the stuff we do on the code team, there's no instructions, and you have to figure it out yourself. Making changes that seem like they should be really simple is often wildly different from what I imagined. For example, I wanted to change how dynamic zones assign players in a raid so that they would only add the first 54 players, without requiring any extra people to leave the raid first. The problem was, how raids are stored in EverQuest is not what you would imagine - the internal structure bears no similarity to what is seen in game. A lot of the challenge of working on EQ comes from dealing with code that was written a long time ago, which doesn't follow modern practices, and can be difficult to maintain and make changes to.
A really interesting bug I worked on was when Time Locked Progression servers released expansions one hour late during daylight savings time. After working on it several days with a lot of help and no luck, the problem ended up being that we weren't initializing the daylight savings time flag in the structure we use to store time. When compiling in debug mode, which I was using on my work computer, the value was a very large negative number, meaning daylight savings time would be calculated by the system. In release mode, which is what live servers run, the value was a very large positive number, meaning it always considered daylight savings time to be on. Sometimes the solution to a problem can be really simple, but can be difficult and time consuming to find.
Other times you stumble upon a solution to a difficult bug when you aren't looking for it. I was working on changes to the inspect buffs command, which tells players what buffs and debuffs are on an NPC, when I noticed a place where only the first 55 buffs would display in the target window. This was a long time bug that I wasn't expecting to be able to fix, and it ended up being really simple. Changes like that can be really satisfying.
What do you know now that you wish you knew when you started?
Working on EQ has been more challenging than I realized. I definitely felt out of my element working on a codebase with millions of lines of code, when in school I had worked with a few thousand at the most. Things that sound like they would be really simple to do are sometimes really complicated in EQ. I worked on a bug with beam spells hitting invalid targets, like pets and auras. It took a while just to find the function that was detecting targets for this specific spell. Then I had to figure out how to tell if a target is valid or not - is it an NPC you can't attack, like a merchant? Or a corpse? Or a mount? Or a friendly NPC (that you can heal, which for whatever reason is not the same as a merchant)? Are the players PVP flagged? After testing and finally getting it to work, it turned out there was a beneficial beam spell that did healing. It's a spell only used by NPCs, and my code changes made it no longer work, so I had to fix that. At the very end, I looked into another report about shaman rain heals hitting invalid targets. Unfortunately, the way that spell detects targets uses an entirely different function than beam spells do, so it hasn't been fixed.
What’s the first thing that got you interested in working in the game industry?
It was EverQuest. As a player I enjoyed trying to figure out how the game works. What has always really interested me about EQ is how complex it is, and trying to figure out the rules of the game - what's the healing equation, or spell damage? Which spell effects stack? What are the best healing spells to cast, in what order? What do you do if you need to preserve mana? How do you effectively control aggro, or split pull? How does your role change when playing with different classes? Getting to see the inner workings of EQ as part of my job has been an incredible privilege. EQ is continuously being added to. We still come out with new expansions every year, and patch improvements to the game every month. There are a lot of interesting problems to be solved in EQ, and I don't think we'll ever run out of ways to make EverQuest better.