In This Series...
- Prelude to Eternity
- The Tale of Eternity: Part 1
- The Tale of Eternity: Part 2
- Interlude: See-Invisibility Exploit
- The Tale of Eternity: Part 3
- (more to come)
Life Beyond Death
I made a lot of enemies before Eternity even launched. As it turned out, our early adopters didn't just leave their previous servers - they took it upon themselves to hasten the eventual demise. With nothing left to lose, they marched in proud defiance of rules, conducting all sorts of unsolicted behavior. Advertising for Eternity, obvious botting/packet-sending, and DDoS attacks were just a small part of the mess.
I imagined most marketing managers would be ecstatic to have their customers attack their competitors unguided - It would be some sort of pre-emptive victory. I certainly felt this way, and aside from the unconvincing PR speech about how "we shouldn't cause damage on other servers - we're better than that," I did very little to stop it.
Looking back, it's blatantly obvious that my long line of mistakes in this whole ordeal started here. I'm not going to spew moral bullshit and tell you how I should've abandoned my sanctimonious stance. Regardless of whether I erred morally, it's a failure in foresight that haunts me most.
I should have pulled a Gandalf and voiced an epic proclamation that would have echoed for generations to come. "You shall not pass!" - or at least, "We will punish you here for bad behavior on other servers!" is what I should have said. Yet, I didn't. I chuckled at their misfortune, eyes gleaming and mouth watering in anticipation of the power and glory that lay ahead.
You see, back then I believed morality played no role in business - which is not what my Business Ethics class taught me. Though to be fair, I'm not really sure if that class taught anyone anything. Ethics classes tend to ramble on about what some 200-year old skeleton believed - and not once has anyone given me a convincing reason that ethical choices should be practiced in business when these choices are in opposition of obvious benefit (not just immediate profit).
If you're in the same boat as I was, I'll share with you the two most convincing reasons I learned (It's greyed out because it's kind of boring):
- Modern human society is based on a sense of trust. We trust our government (or used to) to enforce the law, we trust our neighbors not to steal our things, and we trust teachers we barely know to take care of our children. It makes sense, that a sense of right and wrong--the fundamental basis of morality--is derived from our survival. One could infer, given this line of logic, that when involving multiple parties in a public setting, morality is also the superior choice. Yes, this argument has logical deficiencies, but this isn't a debate, and I did not describe what I'm trying to say perfectly. Hopefully you'll extrapolate and derive some value.
- Even if your business doesn't prosper, making an unexpected moral choice leaves a profound impact on those around you. Unfortunately, this only really works if it's a heavily publicized decision. I read an article today detailing Benjamin Franklin's refusal to have the Stove patented, because he believed others should have access to it as well. Wow, makes him seem like a good guy! I think it's natural for people to respect genuinely good actions, whether it's something they would've done or not, and having this sort of respect can make you life far easier in the future.
I talk about a lack of foresight, but the truth is, throughout this project, I've made some extraordinary insightful decisions. I've received praise from players, staff, and even previous competitors. Many people say praise is a dangerous beast that consumes its target - but I rarely see a modest man swell with pride. It appears that praise only breeds haughtiness in cases where the praised are already egoistical.
That was me. I did not believe that anyone could make better decisions than I could. I thought I was the smartest guy around, and I could easily account for any amount of steps my competitors were planning. I was sure I could predict the market - and you can't imagine the depth of my smile when a player said, "you're an oracle... you just see everything."
The disaster that my amoral actions wrought were only revealed half a year later when players started to do to Eternity, what they had done to our competitors (I'll get to this in more detail when I get to that part). If I had set precedence for how all servers would handle bad behavior back when we had leverage, Eternity version 1 would have lasted much longer. In fact, it could've been my chance to establish and lead a system akin to patent laws in the United States.
But no. I told myself I could predict player actions, and went on to enforce a set of rules that actually did work... until players adapted. Your users will always adapt if they force any sense of irrationality on them, even if it makes sense on your end. Much like viruses and bacteria, an adapted version of the original can be more harmful than the originating strain. Now armed with experience, I heavily advice against forcing adaptation on your users. I see Apple doing this, and I feel quaintly nostalgic. Much like Apple, I should have found an alternative strategy... kind of like how Diablo 3 plans to deal with gold farmers by introducing a new business model aspect.
What's a Server?
Just so you don't think I'm understating how much I knew - I spent a good deal of time trying to figure out the difference between shared hosting, virtual private servers (VPS), and dedicated servers. I guess some part of me always imagined that RO ran like a regular website. Permissions? Bah! Memory? Who needs that!? Wait wait... what's memory again?
By this time, I was googling things left and right, and trying to find a cheap dedicated server. After browsing around, I eventually ended up with Razor Servers both because they were cheap, and because their servers were based in DC at the time. You see, DC was the perfect spot for a gaming server, and Razor Servers in particular offered very low latency to most areas we were serving. Eastern Canada/USA had 30ms ping, west coast had <100, and Europe had less than 140 - which is much better than people were used to experiencing.
RO relies on reaction speed, and an extra 30ms of ping is often the difference between winning and losing a fight. Latency and reliability were important, and all the marketing materials on their website told me they provided both. Yeah, I realized this wasn't all true, but I also realized that because they claimed it, I could tell my players, who in turn believed me since a server provider can't possibly be exaggerating.
But heck, a dedicated server was going to cost me a lot of money each month.
That's $100 I didn't have. Gosh - time to think outside the box again: time to go to sleep. You see, half of my thinking is done on the border of consciousness and sleep - sometimes enter a blissful state where I can think of thousands of concepts in a split second and analyze them too. I don't know if this is real or just imagined, but regardless, most of my ideas come from either when I'm falling asleep or I'm waking up.
Never before done in the RO world - I asked for pledges. Before I explain the details of this financial instrument (I made more complicated ones later on), let me go over how finances typically work for any given private server:
The Problem with Old Cash Shops
Every server needs money to run, and very few server owners bootstrap their servers. Usually they make an initial investment and either go for a break-even model (rarely by choice) or profit from donations. They're called donations, but they're not really donations. They're payments, in exchange for some type of virtual currency or service. I guess Farmville has made this concept pretty popular, but when we did it, the concept of Cash Shops had just sprung up.
Most servers offered substantial rewards for donating, and gave away powerful items that otherwise couldn't be obtained. Pause and think - what could be wrong with this model? Well, the people with money usually aren't the hardcore players. To put it in more offensive terms: whales are never athletes. Because of this, every server using this method eventually developed a secondary market for the resale of donation items.
There were two forces that eventually drove down the numerical worth donation items even in a heavily inflating market: progression and liquidity. Players will always progress faster than anyone can reasonably introduce new donation items which were at least somewhat balanced. To add to this, once donation points are spent, the resulting item loses a significiant portion of its value because it is now restricted to certain classes and builds (cut in demand). The whales never colluded, which further allowed the hardcore gamers dictate the digital worth of each dollar. This became a pivotal strategy concept for Eternity.
So, by now you're curious. How much money can an RO server make? I'm not going to reveal Eternity's financials (although I will mention them later on), but a server with 2,000 players peak and statted donation items can make upwards of $20,000 a month. Not just a "game" anymore, now is it?
I told everyone we would not have any statted donation items - knowing it would significantly cut potential profit. However, it aligned with our culture, and it served as the first step to the cash shop Nash Equilibrium. Yes, this is one of the reasons we had so many potential players. We screwed over everyone including ourselves in terms of $value/player, but increased our number of players significantly. Worth it? We'll see.
Instead of items that add power, we introduced items that would add aesthetics--pretty hats.. useful and pretty hats. I came up with the idea of synthesis, and you can read my poorly written code here. It's just a NPC script, and anyone with any experience in programming should understand basically what it does. I've never given out a script before (ever), so feel special!
Synthesis was our selling point, and it's an idea that's been used (I don't dare say copied because I have no proof I was even the first to think of it) by various other games that now exist. Essentially, a player could merge a good looking item with the stats and abilities of another item.
Complex Financial Instruments
I went through a phase where I really wanted to be an investment banker. Why? Well, one night, a friend and I were lying in bed chatting (platonic), and I brought up how I don't usually wear formal shoes to interviews even when I wear a suit. She asked me why, and I told her it's because I value performance over appearance, and that formal boots are not really good for anything practical. She hmph'd and declared "Goldman Sachs would never hire you!" I responded, "What's Goldman Sachs?" and from then on, I was hooked. A challenge had been issued, and I was determined to join Goldman Sachs.
In those days, I had the pleasure of reading about the IB industry, and about financial instruments. I think it's from there, that I got my idea for pledges, and later in v2, options. I asked the population for an early donation, on the promise that if we launch, they would be rewarded double. It worked. We fund raised a good $1,000 in the first two days, and I was in financial bliss.
Rush for Substance
Oh boy - now we had more willing customers than we hoped, a ton of money, but no product! This was like the reverse situation of a usual startup, and it sounds better than it really was. As I have mentioned, I had no idea how to set up a RO server, much less how to "fix lag" and make other promised things come true. Ayumi? Autumn? Prodigy? They had no idea either!
Oh right - by this time, we had added a fourth co-founder at Ayumi's request. It was actually the guy she was e-dating. I'm not sure why I willingly agreed to dilute my interest, but it probably had to do with a fear of incessant whining. Regardless, it was done, and he doesn't really play much of a role in this story. The fact remained - no one knew how to do anything.
Enter Articulus - savior, benefactor, and all-around awesome person. Articulus graduated engineering in California, and founded the server I had played on before, so it was only natural to approach him for help. Rather than setting everything up for me, he decided I had to learn to set things up myself... starting from the basics: CentOS. Why CentOS, I still don't quite understand. I struggled and struggled, but eventually got the OS and everything set up to run RO. I set up subversion on the system, and configured the proper settings with a lot of help from him. He's the kind of developer that every company should be looking for. It's genuinely difficult to find someone smart without a massive ego, who goes out of his way to help others with time-consuming problems.
I know setting up Linux and configuration doesn't sound like a lot, but for someone who had no idea what he was doing, and still going through school, it was tiring. I had a few sleepless nights in preparation for launch, and it's safe to say my nightly dreams transformed into a dedicated server committed to configuration. QA and testing became second nature, and I I realized I had a penchant for finding esoteric bugs.
It was launch day, and everything had been set up and tested.
3... I turned on the login server
2... I turned on the character server
1... AWW SO CUTE
Yes, if you ever have the luxury of building connective software that requires multiple parts to function together, please watch how your eager customers spam your login. I swear some people wrote bots just to log in. I had 200 people spamming the login every 5 seconds. It's interesting to note, that we later used this fact to find bots.
After watching with a blissful smile, I remembered I still had to launch map.
0... Map launched!
I watched the character count on the server skyrocket to 350 in the first 2 minutes. Ten minutes later, user count was at 500, and peaked out at about 750 two days later. That's right - 750 people online at once. Our team rejoiced, and we honestly thought the hardest part was behind us. Boy, were we wrong.
More to come... I'll post more as I write it. Follow me on twitter (@zeteg) for updates, or email me if you have questions.