EverQuest II: Weekly Developer Diaries

EverQuest II: Rise of Kunark – Weekly Dev Diaries, Tradeskills

Every week, we plan to bring you a set of journal entries from someone on the EverQuest II team. This week, we begin our series with the worlds of Emily “Domino” Taylor, a Game Designer who specifically works on tradeskills specifically in the upcoming Rise of Kunark expansion. She records her work for us.


EverQuest II Dev Diary: Tradekills
Written by Emily “Domino” Taylor (Game Designer, EQII Tradeskills)

Monday, September 24, 2007
Today starts the last week before our beta cut off date, which is the 28th. I’m feeling more than a little worried about how ready tradeskills will be. The whole team is very helpful, but also all very busy, and none of them have actually been a tradeskill developer through an expansion cycle before either. I thought I was pretty much on track, but I discovered about 2 weeks ago that I’d seriously underestimated the time it would take to generate all the recipes for all the items. So I’ve been working extra hours for the past week, trying to get them finished off. Chalk it up to optimism and newbishness, but I’d only allowed about 1 week and it’s taking about 3, so I’m feeling a bit frazzled.

So, I spent a relaxing Sunday yesterday watching DVDs and creating recipes and recipe books for woodworkers! I’m finishing up tailor books today and then that just leaves carpenters and the secondary tradeskills (and then adding in the extra stuff that I had planned to be adding in last week instead of still doing recipes). It may have to go in later in beta, unfortunately.

imageTo make a set of recipe books isn’t a quick task. First I have to have the items done — these were completed a little while back, with the exception of a few special additions that we’re waiting on code requests or art requests for, but the basic items that are just upgrades of the ones they got from 60-70 are done. Next I make up an Excel sheet, or more likely modify an existing one. Every column in the sheet is a piece of information that the recipe will have, and every row is the recipe for one of the items I’ve made. So, for example, the tailoring spreadsheet I’m doing at the moment has 243 rows and 62 columns. Who knew one simple recipe required 62+ different bits of information! I sure didn’t, before starting work here.

I start out by listing all the item names in the first column of the spreadsheet, and the file names of the pristine quality product that they’ll create in the “pristine product” column. Then the real work begins – filling in the other 60 colums on all 243 rows. For each, I have to enter the quality tier (common, or rare), the recipe level, the icon if it needs one, the technique and knowledge used, the crafting station type and name, how much progress is required to get to each of the 4 quality levels, and all the build components (both what the database needs to find them, and what the player needs to see displayed on the recipe). Then quantities of each, what each quality level returns and how much, and so on and so on…

Much of this can be automated off lookup tables with formulas, but certainly not all of it. For a class like sages where all the recipes are pretty much the same, it’s much faster; but tailors have lots of different types of recipes. They may use either leather or roots as the primary; they may make armor or charm slot dolls or containers or range items (which count as weapons) or ammo containers or fancy dresses (in a no-stat category of their own) or cloaks (filed in with jewelry). Almost all of these can be either common or rare, and many of them can also be imbued. What type of item something is, and whether it is common or rare, and whether it is imbued, all affect what the build components should be, what products should be returned on failure to make pristine, the quantity of fuel, and lots of other stuff too. Which means reading and rereading every line for a common sense check each time to make sure I didn’t give the wrong components to the wrong recipe type – one misplaced copy/paste and a recipe could return 10 rares on a crude instead of 10 fuels. This is of course the kind of error that QA and then beta testing should catch, but nonetheless avoiding it in the first place is definitely preferable!

Once the spreadsheet is complete — which, for tailors, took well over a day’s work — then I run a perl script that reads in each line of the spreadsheet and spits out each recipe. There was an old script that my predecessor had used, but it didn’t work for all recipe types so I had to modify it. I have taken only one perl training course, and that was about a year ago, so I am still pretty slow at that type of thing.

The recipe files are just created on my local machine, so I copy/paste them into the appropriate folder for that type of recipe and give them a quick look to make sure nothing too obvious is wrong. If I do spot something wrong — which has happened quite often, even if it’s a small thing like forgetting to enter the recipe level or marking something as a common when it’s a rare — then I go back to the spreadsheet, fix things up, and re-run the perl script.

Recommended Videos

Once the recipes appear to be correct I check them in, and move to the books. I’ve created blank recipe books for each class but I still need to put the recipes in them. I have another spreadsheet open where I plan the layout of the recipe books: columns are for crafting class, and rows are for recipe book level. I’ve copy/pasted the list of recipe names in here also and sorted them out so that the recipes are distributed between levels in what is hopefully a somewhat reasonable way. Where it seems appropriate I’m trying to keep the same general layout of recipes, so that if tailors are always used to getting their cloak recipes at level 33, 43, 53, 63, etc. then they should also get recipes in the level 73 book I create. In other cases though some things have not made much sense and I’ve rearranged the recipe order, or perhaps the recipes I’m giving them have changed so the old recipe order no longer applies. Just working out how to distribute the recipes takes a while, but when I have them all divided up by recipe level, I start adding the appropriate recipes into the appropriate books; 243 recipes and 20 “normal” books, plus some additional books that will be earned in different ways. It’s a lot of clicking. I think the process could be automated more, with better spreadsheets and cleverer perl scripts to save more time, but with this short time before beta starts there is simply not enough time to try and get clever. I hope that by next expansion I’ll have had time to streamline things a bit more. But there’s still quite a long tradeskill “wish list” to fill up my time after the expansion is out of the way!

When the books are done I will check their names and other details like the level at which they can be scribed, and then check those files in also. I also update my recipe layout spreadsheet into our local documentation system so that QA will be able to refer to it and see what recipe is supposed to be in which book. Finally, I send a release note email listing what books were created and giving any special instructions to QA, who will start looking at the books and making sure they contain the recipes they’re supposed to contain, and that the recipes work. And then I start all over again on the next class!

imageAfter several hours of staring at these spreadsheets my eyes start to go cross, so I try to take regular short breaks – just looking out the window, or walking to the kitchen for some tea, or checking what mischief people are getting into on the forums. My officemate Jason (Fyreflyte) loads up the new monster or weapon models every time the art team send out a release note with a new one, so we take a quick break to ooh and aah over whatever fantastic new beast or weapon they’ve come up with now. Today we were looking at the dragons, and I have to say Xygoz is pretty amazing. It makes me wish I had any artistic talent!

It also makes me want to get back in game, which I haven’t had time to do for over a week since my evenings have been filled with recipe book spreadsheets instead. I’m leveling up yet another alt, nearly 50 now. However, that is going to have to stay on hold for a while, as my spreadsheets are calling and I need to finish off these books, lest I be hunted down by packs of angry tailors waving sharp pointy needles!

Tuesday, September 25, 2007
imageFinished up the woodworker recipe books last night while cooking birthday cake… Today is Ilucide’s birthday and Wednesday the 26th is mine, so what a great excuse for some home made tradeskilled goodies to keep everybody going on a sugar/chocolate high!

Today was carpenter recipe day, slightly problematic as only about half the carpenter items are available — much of the art work for those items is still being made. Still, I needed to get the recipes that already exist into books so they can go onto the beta merchant and start testing.

Also discovered this week that somehow, the provisioner recipe books I created last week crash the player to desktop when examined … go me! Who knew that was even possible. With Silverfrost’s help today the culprit was discovered to be a stray line in the recipe files, which shouldn’t have been there. Unfortunately this means I now have to check all the recipes I’ve made to this date to make sure the problem doesn’t exist in them also. Started on this, fixed the provisioner books, but decided to finish the remaining recipe books first before going back to check the rest.

In the late afternoon Liz had put together a helpful overview of LUA, our scripting language, with some basics of structures and so on, and then some more specific examples. It looks pretty similar to other similar languages I’ve used, but of course there are little tricks of syntax and inheritance structure that are unique to it, or at least different from what I’ve used before. Since my last job involved application development using LotusScript, I didn’t really need refreshers on things, but the syntax and examples will be very useful. For tradeskills, I haven’t had much need to do much scripting yet; the folks designing lots of quests are doing a lot more of it. When I get time to look into quests more, I’ll need to learn a lot more about it. But that’s not going to happen for a while, at this rate!

imageAfter the LUA tutorial I finished up a few more things and then headed home to work some more. I don’t have access to quite as many tools from home as I do at work, but I can stretch out on the couch, and keep the cat company! I’ve just checked in the carpenter recipes and recipe books, and have a few bug fixes to check in in the morning once I can test them at work, so it’s time to head to bed for now. Another day of tradeskills completed, another day closer to beta!

Wednesday 26 September
My birthday today, so I came in a little later than usual, which is to say about 8:30 instead of 8. While doing the recipe books last night I was watching “Bridget Jones’ Diary” (for at least the 20th time) and I now have a faint feeling as if I should preface this dev diary with statistics like she does:

cigarettes smoked: 0
recipes created: 297
weight gained… on second thought, let’s not go there!

It was a pretty productive day today, which made me happy. With all the recipes for the 9 primary tradeskill classes complete, today’s plan was to work on recipes for the secondary tradeskill classes, tinkering and transmuting.

Before starting this however I checked my bug queue – which is getting extremely long thanks to QA carefully testing all the stuff I’ve been submitting! A lot of it is minor things such as items with the wrong icon, or typos. Still, it all needs fixing at some point; though I hope the early beta testers will be tolerant of typos or wrong icons here and there, since I need to tackle more urgent things first…! I’d fixed the provisioner books yesterday, and today I fixed the weaponsmith and woodworker recipes. None of the other class books seemed to be affected, for which I’m extremely grateful!

While checking the bug list I also cleared up several other issues that were either urgent or could be fixed very quickly. Looking through my sent mail for today it looks as if I fixed about 15 bugs today, mostly beta stuff though there were a couple ones that will be flagged for an immediate push to live. These are pretty minor things like, for example, a crude quality level 50 tailor-made cloth cap is apparently flagged “lore”. It’s probably been flagged “lore” since it was made but nobody ever noticed and bugged it till now … so not urgent, but a very quick fix, so that’s one thing off my list! I still have three pages more bugs waiting for fixing even after the ones I did today though, so I can’t get too smug.

When I started looking into the transmuting recipes, I got a really nice surprise — I’d already done them! I had in fact created all the transmuting recipes and recipe books back when I did the adornments, probably two months ago. But I’d completely forgotten I’d done it. All I had to do today was double-check they were all correct and check them in. How nice a surprise is that — I gave myself a little birthday present and didn’t even know it. If it were possible to kiss myself-of-two-months-ago, I would! Some time during beta I’d like to take a closer look at the adornments, there’s a long and very helpful thread on the forums discussing the topic and there are lots of good suggestions, but I simply haven’t had the time yet. For now though, at least the standard recipes expected from previous levels is complete and in place.

With those done, I was able to take a little time to add all the new recipe books to the tradeskill beta buffer and tweak his dialog a bit, before starting in on the tinker recipes. Tinkerers don’t get as many recipes per level as the primary crafting classes do, so this was a much shorter task. I should be able to check them in tonight or tomorrow morning first thing, depending how late I stay tonight. Normally I’d carry on at home till they are done, but since it’s my birthday I’m going out for dinner with a friend, so it’ll depend what time I get back — and how much wine was consumed. As Gallenite occasionally reminds us, drinking and game designing are not a good mix! …Though actually, a few glasses of wine might have helped me to invent some of the weird and wonderful ideas required for tinkered items, come to think of it. But, I think we have a couple of unusual and amusing ones that people will enjoy. And I’m sure drinking and recipe books do not mix, considering that I already managed to make crash-to-login-screen recipe books without the benefit of alcohol!

It’s half way through the week and people are already looking a bit worn. I was still seeing release notes email being sent out from several of the art and design team members as late as 11pm last night, and there are more than a few people looking in need of a holiday. On Wednesdays recently the design team have been trying to go out to lunch together, to have a chance to chat about what we’re up to instead of staying holed up in our cubicles. Today’s lunch had only 10 people though and was quite a brief one, compared to previous weeks. Jindrack, Vhalen, and Ilucide, who share an office, seem to have a constant stream of the less experienced designers flowing in and out of their door to ask questions about how to do things. All three of them, are real veterans and between them know all the best tips and tricks, which makes their office a very popular place to go for help, but certainly doesn’t help them get their own work done. I know I spend my share of time pestering Ilucide for tradeskill advice – he’s been a most excellent tradeskill mentor since I started. And I still find it unspeakably cool that Vhalen (the great, the legendary Vhalen) is working only a few yards down the hall from me, and I can go ask him lore questions any time I want. Do I sound like a starstruck fanboi? Oh ok, maybe a little. But I’ve been enjoying Vhalen’s stories and lore since I started playing EQ1, so I reckon I can be excused for thinking it’s pretty darn cool now to be working with the guy. 🙂

Fyreflyte, my officemate, has been creating the guild mounts today and he just got slightly sidetracked into playing with the saddle colors. A bouncy mount with a hot pink saddle is the result! I helpfully suggested he should put on some hot pink clothing and that sparkly erollisi charm that trails pink stars when equipped, so he’s been running this vision in pink around his local test server and we’ve both been laughing our heads off. Such short diversions are good for the sanity … what’s left of it, anyway!

It may not sound like the most enjoyable way to have spent a birthday, but it’s actually a happier birthday than I’ve had for the previous few years. I may have been able to take the day off in previous jobs, but I’d still have known that the next day I’d only be going back to a job I wasn’t enjoying and co-workers who would look at me like some kind of alien if I said I killed a dragon last night. Tradeskill design may be a lot of work at the moment, but I know there’s an end in sight to the long work days once Kunark releases, and I enjoy the work I’m doing, so I wouldn’t trade it for the world. 🙂 However! It’s now coming up to 6pm, so it’s time to do a bit more work on the tinkering scrolls before heading out for dinner. More tomorrow!

About the author

Jack Thompson Burnout: Can We Stop Now?

Previous article

Breaking News: Gods and Heroes Canceled

Next article