In this article we chat with Jon McEvoy, the lead engineer on Trove.

Could you introduce yourself?

Yeah! My name is Jon McEvoy. I have a beard and I’m usually wearing glasses. I spend my free time playing games (PC, console, board, softball, whatever), drinking or brewing beer, watching TV, and reading. Oh, and I’m the lead engineer on Trove. (Maybe that’s the part you were looking for?)

How did you get started in games development and with Trion?

I’ve always been a huge gamer. It started when I was young with games like SimCity, Super Mario Bros. and the educational classics Midnight Rescue!, and Where in the World is Carmen Sandiego? I moved on to RPGs with Ultima 7, Baldur’s Gate (I still have the BG2 collector’s edition box on display in my house), then WarCraft, StarCraft, Command and Conquer, and… well, a lot more games. Eventually I got into online games with Ultima Online and EverQuest.

In college I studied computer science and continued playing online games, tearing through MMOs as fast as they were released and spending the rest of my time with online, strategy, and/or roleplaying games. I didn’t expect I would be able to get a job in the game industry but I was eventually able to land an internship at the now-defunct Perpetual Entertainment working on Star Trek Online. Years later, I was hired at Trion to work on a project called “Heroes of Telara”.

Specifically what are you responsible for in Trove?

Lead engineer is an interesting role on a small team like we have for Trove. I’m part engineer, part manager, part producer, and part operations. I discovered the hard way my non-programming responsibilities interrupt major feature work too often, so I don’t do much of that any more. I pick up small bugs when I can and will talk through major architectural changes or additions with the other engineers on the team.

Keeping the team happy and productive is another part of my job I take seriously – when we are all in good moods and pulling for each other, work is higher quality and faster. Large parts of my day are working with Ellery and Andrew to triage bugs and plan our schedule going forward. Scheduling can be bumpy for us because we have a smaller team and a very aggressive schedule, and it takes real effort to keep people from becoming overworked.

Finally, part of my work is keeping an eye on our live services and working with our great operations team to keep everything running as smoothly as possible.

How have your tasks or responsibilities changed during Troves lifecycle?

Pretty significantly. I started about two and a half years ago on the team as a senior engineer. At that point we were putting very basic features together on a voxel game that wasn’t anything like Trove. My time was spent creating foundational systems with the goal of making later iterations easier and faster.

Recently, I haven’t been doing much programming, and when I do it’s usually bug fixes and not features. We still put in major systems frequently, but not nearly as often as when I started. I have a lot more interaction with the central support teams at Trion – QA, CS, operations and the platform team that handles Glyph and payment.

Most developers have an online handle for use on the forums, you use your name, any reason for this? Do you have a name you like to use online?

I already have too many handles that I use online! That’s why I decided to just go with my real name: it’s something simple that I wouldn’t want to change after a year or two. When I was working on Rift, I went by NumberEight (you can see I have a few random posts on the forums). That name started on a CounterStrike map when I saw someone using the handle “#1 Sniper”. I changed my name to “#8 Sniper” as a joke, and due to a bug the next time I logged in I was simply “#8”. For whatever reason I found the two character name amusing so I left it alone. Recently in online games I’ve been picking really random handles but I have a feeling that’s starting to annoy my friends.


 

Trove servers report all their crashes to a central crash service. Here you see our game server crashes, including crashes from our test environments (all versions marked MAIN or TEST). Luckily we catch most of our crashes before they make it into the STABLE branch, but you can still see several in the list. It's not perfect, but considering we have 100x the servers running our live environment, it's a pretty good ratio.


 

Does your work involve you implementing things that people ask for, or do you have some creative freedom when adding functionality?

Yes to both! I keep an eye on player feedback to see what improvements we should be making. I’m always doing the mental calculation to figure out how much time requests will take and how valuable they will be to our players. We take suggestions very seriously and the Trove team will regularly discuss our own ideas as well as player feedback in our team chat rooms.

When a player or a developer has a good idea, we’ll fit it into the schedule with someone that’s excited about to work on it. There’s usually a list a few weeks out of stuff we need to get to first, so there’s almost always a delay. Sometimes that’s not necessary because one of the developers will be so excited, they’ll do it all on their own.

Due to my role in scheduling I get some extra input on creative items, but honestly the whole team gets to have a decent amount of control over their work. Of course, there are always less glamorous fixes and features that someone needs to do, but we’re pretty good at letting people have their fun work, too.

What are some of the top things you have been responsible for implementing?

I did most of the work for clubs. Further back, the underlying ability system (although other engineers took over that long ago and expanded it way beyond what I thought we’d be able to do with it), crafting, adventure world portals, the player class system, the way we stream worlds to clients, and a number of other smaller, less interesting things.

Can you take us through a typical workday or task?

I know it is clichéd, but there really isn’t a typical workday.

On patch days, the mornings are usually about the same: I check in with our operations team and make sure servers open up without a problem, and then react to anything that might come up. Sometimes we’ll have emergencies that show up overnight even without pushing a patch, and I’ll have to address those as well.

Once those have been solved, I’ll check on what QA has found on our test environments (they get in a few hours before the rest of us because they’re based in Austin), and distribute any engineering bugs that aren’t obvious where they belong. After that it’s programming, emails and meetings.

I have enough meetings that I don’t work on big features any more, as my time is too variable. Most of my programming work is fixing bugs, cleaning up old code, or adding new features requested by our artists or designers. I also keep an eye on all the code that’s submitted to our code base, in case something goes in that’s redundant or conflicting.

When debugging and testing clubs, I save my creativity for something other than the club names.

What is the most time consuming part of your job?

This sounds weird, but it’s context switching. I’m constantly jumping from one thing to other, and it often takes me a few minutes to get up to speed. Since I’m going back and forth so often I end up spending a lot of time just reminding myself of what I was previously working on. I’m not really proud of this but I have a text file (literally called todo.txt) that’s about 15 lines long and constantly in flux. I regularly just cram things into the file as they come up or else I’d end up forgetting them. As a result, I really appreciate the rare 1-2 hour blocks where I get to just work on one thing.

What is different about working on Trove compared to other projects?

For me, it’s the small team we’re on. We’re at 15 full time developers right now, so everyone knows each other and is nice, friendly, and wildly inappropriate in our work chat room. That size allows us to have team pride in all the features and work we put out – even if it’s not something a person directly worked on – because they know and sit next to the people who did work very hard on that specific thing.

What task or feature are you most proud of, and what was the most challenging?

I think the clubs system is the answer to both of those questions. For the technically minded out there, we use a NoSQL backend to store our game data. Without relational systems, writing code that would be consistent and fault-tolerant to reference clubs, players, and worlds was difficult. Players have been happy with the system, and even though there’s a ton of stuff I’d like to go back and add, I’m pretty happy with where we ended up with it, too.

 

Are there any changes to the game engine that you can talk about which are coming up?

The marketplace was a huge change. It involved adding a new database, server type, and complicated UI. PvP is coming in fast and is another huge change. For the past 18 months or so we’ve been building a game that’s exclusively PvE. That allowed us to avoid a lot of the major (and minor) problems a multiplayer PvP game has to face. It’s touching almost every part of our core gameplay code, from ability processing to movement simulation to world generation. And we’re doing it all while maintaining current gameplay for PvE. It’s really an enormous task.

Are there any hard limits to what the client can do, or do you set your own limits?

We mainly set our own limits because we try to target low end hardware. Since the game engine is almost entirely custom, the only things holding us back are our time and what computers can do.

Our (trimmed) population graph - the first graph I check in the morning and I always have it updating in a tab. You'll notice the server "breathing" (Grumpntug coined that term) with each challenge starting and ending. It's pretty neat behavior.


If you could add one change to the server functionality or client with no resource constraints, what would it be?

Here’s the server engineer coming out in me: I would change our network protocol to use UDP for at least some of our traffic (perhaps all of it). That’s such a major change to a fundamental system of ours that I doubt we’ll ever be able to make it.

As far as the client goes, I’d really like it if we could add in better transition effects between worlds.

Outside of Trove and Trion products, what games / hobbies do you enjoy?

I’m primarily an RPG guy, but I’ll enjoy any good game. I’ve been on a World of Warships kick recently, mixing in some Rock Band 4. Since I discovered Crusader Kings 2 a couple years ago, I keep going back to it every few months to try out a new strategy. Apart from games, I watch a pretty good amount of TV, read a ton of books and graphic novels, play board games when I can gather up enough people, and sometimes will brew up some beer.

Which Trove class do you enjoy playing the most at the moment, and why?

I like to stick with whatever class we released most recently but my all-time favorite is the Candy Barbarian, if just for all the great monsters, costumes, and puns it gives us. The Knight will always be special to me because it was the first class we ever put in Trove.

If you had to live in one biome for the rest of time, which would it be?

If I got to live forever, I’d go with Candoria. I’d eat so much candy that without immortality my lifespan would be dramatically reduced.

Comments and Likes Comments 0

You must be logged in to add a comment.

No comments or likes yet!