Really? O, RLY?
Well, no, probably not – but this is the kind of opening statement I often make at industry-conference parties. In this rare case, at LOGIN this year, I was showing something on my laptop at the time and happened to *type* my opening salvo, rather than just say it.
(partly because I was so drunk I wasn’t confident I could form the words correctly; not *that* much alcohol, but I was mid-jetlag and I’d naively skipped dinner to go to meetings)
For those of you in the industry that I run into at conferences, you know this is standard fare past a certain point in the evening (when I get bored of beating around the bush). This could also be a taster for the TRULY AWESOME conference talk I’ll be giving at AGDC this year, along with Marty Poulin, Rick Lambright, and Joe Ludwig … more on that later (once it’s been accepted), but briefly: we’re constructing a head-to-head session where we all argue the most extreme MMO tech viewpoints possible. I’m particularly looking forward to the “UDP vs TCP” Deathmatch…
The original 4
Anyway…unchanged except for the brackets added for clarity:
- XSLT is your data(-handling) language
- Almost everything (serverside) is written in fn programming
- When you write your client, interface to the (functional) server cluster via Entity System
- …and a corollary…
- ANT is a sin against mankind if you think about the above 3 statements
Which is great, except … it misses out whole swathes of things, because of the context at the time: I was in a conversation with a bunch of other lead programmers / CTO’s / tech directors / etc, and the *obvious* stuff wasn’t even worth mentioning. And our conversation was at the time about the “technical expert” facets of MMO development. I think.
A few more
For completeness, there’s a few more I would add now:
- 2,000 players-per-server
- Your build system must be Perfect (mathematically)
- Your tests are AT, running as CI and CPT (performance testing)
Oh, and of course – YOU HAVE TO COME TO OUR AGDC SESSION! ;)
11 replies on “Everything you need to know about being an awesome MMO Tech Director”
So your talk is more about implementation and techs than architecture I gather?
Also, your choice of technologies seem to lean towards non-highly-interactive systems, ie. systems that don’t require synchronisation on a sub second basis – not action games in a (few) word(s). Is that a voluntary omission, or maybe do you consider that such systems require completely ad-hoc code anyway?
OK, you’re wading into the topic of “what (good) does a Tech Director do, anyway?” :), which probably needs some serious explanation (usually it just gets ad-hoc hand-waving IME).
Making some assumptions – e.g. the team is large enough to justify a TD (must be more than one programmer team + team-lead), must have some heavy-duty technology work you’ll be doing, etc – I expect the TD to be making up for the likely shortcomings of the programming teams.
(that’s a gross over-simplification)
With good teams, that’s generally going to mean “keeping an eye on the tech stuff that’s disproportionately critical / difficult / easy to get wrong”.
If you’re doing an FPS, I’m sure you’ll have hired at least one (probably several) programmers into the team with significant netcode experience. If not, why not? What are you playing at? Everyone in the industry knows the job title and importance of “Network Programmer” as of 5+ years ago! It’s been well-known as one of the highly paid specialities (like Physics Programmer) for a long time now. *cough* Tabula Rasa *cough*.
Unfortunately, with – say – SQL … huge chunks of the programmers in the online parts of the industry still have no idea what it is, how it works, why it’s useful, why it’s *correct*, how much faster it is than their hand-written code, etc(*). Which is why you make sure you have a TD who does – he/she is *probably* going to have to (re-)educate the leads, and one or more of the individual programmers.
(*) – even now, I regularly meet coders who seriously tell me (**) that they “benchmarked” an SQL RDBMS against their own flatfiles implementation and theirs was faster. Question 1: how many multi-table joins on multi-million-row tables did you include in your benchmark? None? Oh. How many players do you intend to have in your game? Interesting. (sigh).
(**) – we’re going to include “SQL vs Flatfiles” in the AGDC session. MUAHAHAHAHAHAHAAAAA! Flatfiles, yer goin down…
It’s amusing and somewhat disappointing that some of the same “X vs Y” debates are still happening on the MMO server front, after what, 15+ years of the “modern” MMO era. Sure, there are always newcomers that need to learn the ropes, but that doesn’t preclude discussing things that only experienced developers may not be fully aware of.
A database vs flat files – seriously? Anyone not using a relational database of some kind these days is doing it wrong and deserves to fail, ideally in the most publically humiliating way possible. End of discussion.
TCP vs UDP – both work, both have been done, it doesn’t really matter all that much. If you use UDP you will in due course reimplement TCP, perhaps poorly, so watch out for that and make sure to have (even more) load testing to profile and optimize the network layer. Better question – what about SCTP? Will it ever be deployed widely enough to use?
I fully expect that the session will include more meaty stuff. Things that, say, a person who has written a few MMO server engines in their time would find interesting and educational. In any case I’ll be there, because it’s in Austin. :)
You’ve got enough unexplained acronyms there to choke a horse. I have no idea what ANT or CPT are, and I have a bad feeling I know what DTP you’re talking about and think you’ve gone terribly wrong. XSLT… you’re just trying to get potential technical directors hurt right there.
So, in a nutshell, you’re avocating a good MMO TD as a counterbalance against the hand-writing hackers that typically populate game developers?
I too despair when I hear about ppl reimplementing database systems, base protocols, base services, etc.
BTW, you’re aware than there are quite a few other database systems than SQL based ones right? (just teasing, I know you do… But probably worth a mention somewhere that commercial/industry supported databases doesn’t necessarily mean relational dbms)
Olivier – At least they need to be implimented, and so are. Too often designers get left with implimention systems which are…yea, not-so-good is an understatement. I admit I’ve been a bit spoiled because I worked with a proprietary, mature visual scripting system for three years, but there’s a huge gap in the market there too.
Tools for the designers, rather than tools for the coders, so often get overlooked on the intial plans, it seems.
ANT = a well known build system. Possibly (?) the most widely used build system after Make (shudder), since it’s used almost universally by java programmers.
CI and CPT = continuous integration and continous performance testing
Well … if I’m going to be precise, I’d say you need an SQL DB. You may *also* use other kinds of DB for running some of your game.
For instance … metrics. Logs / chat … etc.
@Matt pt 2 (just noticed)
If you don’t know what DTP is, and what it can and can’t do, and how much of it you’re going to be able to use, and what you can get away with caching, etc … I think you’re going to end up with lots of duping bugs, and tearing out a lot of your hair. No?
There seem to be a lot of people who re-make the same mistakes to do with e.g. inventing their own locking protocol(s) (why? couldn’t you be bothered to google the options and the well-known pros and cons of each?). Like there seem to be a lot of people who try to recreate TCP in UDP without including most of the protocol states, and end up with a rather fragile implementation.
Adam: OK, thanks. As is perhaps clear, I don’t really bother with acronyms much (just take a look at my blog posts on continuous deployment – no CI, CD, CPT, AT, to be found). And Ant is not an acronym, it’s just a proper noun. :-)
“If you don’t know what DTP is, and what it can and can’t do…” You know I can’t answer that until you say which DTP you’re talking about. It’s an acronym in English, not a unique identifier.
Seeing a bit more context to know you’re talking about distributed transactions, I have to admit I thought you were talking about a completely different acronym. So I actually agree, being familiar with handling distributed transactions is important – but bothering with knowing acronyms… I’m predisposed to rate that low on the scale. :-)
Fair enough – I’m duly chastened :). Most people are happy to adopt acronyms in a context-sensitive manner, and in the context of a tech director, I’d expect these to be par for the course. For instance, it’s almost impossible to read any webpage, document, discussion, email / forum thread etc about CI without seeing it referred to as CI many times over.
Normally I only expect people to know acronyms where “if you know this subject matter intimately enough, you’ll have been beaten over the head with that acronym already”. For the OP, I was trying to re-create something of the opinionated flavour of my original statement at the conference – keep it to a couple of words, with no explanation. Oops.
Certainly *everything* in the OP that is presented as fact is very much open to debate and argument. Perhaps the best that can be said for phrasing it the way I did is that I’ve given a very clear indication of where my values and intent lie (if you’re familiar with the debates) – the path I’ve charted through those topics is, I think, pretty self-consistent.
(for instance, it’s clear that I rate “data issues” as one of the highest priorities in tech for an MMO)