The Killmail Mk 1.5 Project
The Killmail Mk 1.5 Project
Today we talk about one of the features for the upcoming expansion: the Killmail Mk 1.5 project.
Most of you will probably agree that the killmail system as it stands today is not the most robust of systems. Between sometimes "losing" mails to NPCs or sentries to being truncated off of the end of the mail, the time is ripe for a bit of work on this aging system. Lots of ideas have been bouncing around the office for years now, but it's never been a priority.
Well, one of the neat things about working for CCP is that the bosses like when people say "I want to do this!" and put their neck on the block -- er -- step forward. A little thinking and one short email later I was the new point guy for the killmail system. Armed with nothing but my hardhat and a filename, I got to work.
A little background on the process...
If you're curious how a feature gets approved and starts being worked on, read on. If you just want to know about the killmail system, you can skip to the next section.
Feature proposals go through several stages before they can actually make it into the game. When I asked if I could work on the killmail system, I got a "sounds good" type response from CCP ActiveAlli, the Technical Producer for the EVE group. He coordinated with CCP Explorer, the Software Director for the EVE group, as well as some other guys, to get the project on the map.
We found out that CCP Chronotis, one of our Game Designers, had been separately working on some plans for the killmail system. He and I got together and drew up a rough plan on what we wanted to accomplish. This was then proposed to everybody who makes decisions on what goes into the expansion - the "Project Board" -- which consists of the various directors who run QA, Support, Software, Content, etc.
Once the Board gave their approval on the initial design, Chronotis and I finished working out the rest of the design document and got official approval from the guys who do the Programmer Review and Design Review. With that achieved, I started coordinating with CCP Kalmukaru in QA to make sure he had the design and information he needed to start working up a testing plan for the feature.
After all of that, I got to start programming!
Sounds good, but what are you actually doing?
As it stands, killmails are generated when a kill event happens. The system generates some text and sends it in an evemail to the person who laid the final blow and the victim. The mail itself is pretty boring. Who killed whom, where they did it, and what they used. (I prefer the conservatory with a lead pipe, personally...)
There are two goals with the Killmail Mk 1.5 project. First, shore up the underlying kill event processing code so that kills are stored in the database in a format that is easy to work with. Second, put this newly accessible information in a nice place in the interface so that you can easily see what kill events you've been involved in.
The first part is mostly what I'm responsible for. I've ripped out the code that generated the text mails and replaced it with a new system that packages up the kill into the database in a relatively normalized format. Of course, to prevent the system from trying to store thousands of database rows on a freighter death, we've had to denormalize it slightly.
With the way the data is stored, it is technically possible for us to create interface elements that show all kills for you, your corporation, your alliance, by pilots flying a Zealot, losses to the Guristas, people who have lost Ravens, etc etc etc. We can even show all kills where the person took over a million damage before dying.
If you didn't follow the talk about normalization and such, don't worry. What it means is that with the new system, we can do some neat things to show you all kinds of information that previously wasn't available.
Break it down, what does Killmail Mk 1.5 do for me?
The following problems will be fixed:
- Killmails going to NPCs. Will not happen. If there are any players involved, the player with the highest damage done to the victim will be granted the final blow.
- Truncation. This is a thing of the past. Since we are no longer storing it in the mail system, we don't have limits to contend with. We can now store everybody who participated.
- Translation. Since we are storing the data in the database and not text, we can generate properly translated mails for all viewers.
We are also adding the following bits of functionality you might find interesting:
- Killmails (kills and losses) can now be viewed on your character sheet under a new section.
- Old style mails can still be copied for import into killboards.
- Corporation kills (i.e., structure loss mails, when your POS kills someone) will be available in the corporation interface.
- Rigs will now be included as destroyed items.
- Mails will now show items that are dropped as well as destroyed, giving you the full picture.
- Damage statistics are now available. This shows how much damage each participant did to the victim.
- Kills can be downloaded via the API for automatic import into killboards.
- This functionality will likely come after the expansion's release as part of other API changes.
Yeah yeah, great, now show me the magic!
Well, you asked for it. Here is an image from my development environment as of today. I killed one of my dev alt a few times and took a picture of the output. We're going for a look akin to the skill system - you can hover over an entry for expanded information. Also, the right click menu on each item contains the ways to view the full kill information as well as copy the raw mail.
Please keep in mind that this is what we like to call Programmer Art. It has not yet been looked at by anybody with any artistic talent, so before you scream about how ugly it is - yes, I know! It's nasty. Don't worry, it will be much, much better before it hits the servers.
Changes to the killmail format?
Since we are adding new information to the system, I am proposing a slight change to the way the text mails you are used to are formatted. It'd be great to include the extra data, but we don't want to cause huge problems with existing killboards. To counter this, I've already gotten in touch with the people from the EVE-Development Network as well as Griefwatch and will try to make sure they're ready to go with new parsers before we launch.
We are looking at three main changes. First, to the victim block, a new field that states 'Damage Taken' and reports how much damage this ship took in the engagement before the kill was finalized. Second, in each attacker block, a field 'Damage Done' that functions similarly. The last change is the addition of a new 'Dropped Items' section that contains everything that the ship dropped in the can.
There will also be a slight change to the way items in the destroyed/dropped lists are rendered to improve your ability to decide if something is fitted, in cargo, or in a container.
That's about it from me for now. A big thanks to Chronotis, Kalmukaru, and t20 for working with me on this project. We hope you like what we've got going here.
Until we meet again!