Archive for February, 2009

Accounting Challenges Presented by Virtual Currencies

Wednesday, February 4th, 2009

Say someone gets ahold of your credit card information. Then that person goes and opens up a Click and Buy account and funds that account with your credit card. In addition, he funds it with other people’s credit cards as well. Then he goes and spends that cash at 14 different online retailers. Then, 3 weeks later, after you notice a those fraudulent charges, you initiate chargebacks for each one. At around the same time a few other people whose credit cards were used to fund that Click and Buy account also initiate chargebacks. However, not every charge the fraudster made gets noticed and charged back. Some of the cash remains uncontested.

How does Click and Buy decide which stores to subsequently pass those chargebacks on to? Never mind that Click and Buy would likely see the pattern and simply reverse all charges from the obviously fraudulent account.

As it turns out, our friend the First In First Out accounting method comes to the fore. You have to do some scripting on top of very solid transaction logging tables, but it traces everything back as best as one possibly can. It’s still entails an assumption that cash is spent in the order in which it was deposited, so one can point it out it’s not perfect.

As a side note, if you’re developing a system like the above, do yourself a favor and maintain lookup tables for every column in every table… well, of course, only for those columns that don’t have, like, potentially unique values for each row. You can then simply point SQL Server Analysis Services (SSAS) right at those tables, and voila, you can make your reporting life easy as pie.. theoretically of course ;)

A Quote

Tuesday, February 3rd, 2009

Damion Schubert tossed out a great quote in the MUD-DEV list that to me encapsulates something that only an MMO can really deliver:

“Nothing your NPC
is going to say is going to be as interesting as the fact that your raid leader is cybering your guildmaster’s girlfriend, and everyone knows but him. Creating an interesting context to make the space sticky is great, but at the end of the day, an MMO’s real content is other people. If it’s NOT — well, then your MMO probably shoulda been a single player game. Woulda saved a lot of money.”

That’s why I want to figure out how to design mechanics that allow for emergent behavior systems rather than ones that define behavior. The kind of storytelling that will work in MMOs is not going to be like in the movies, or in books, or in choose your own adventures, or in tv shows, or in single-player games. Storytelling in MMOs will be like herding cats. At best. And on occasion, if not on all occassions, you’re going to find it better to change the story as it unfolds… keep changing things as players respond to the story… take that to the limit and you have what amounts to you actually being drawn into the in-game world and behaving as what amounts to an in-game faction or entity. Heck, let’s just embrace that and have several each GMs controlling some given faction of creatures or NPCs in the game. Better yet, let them be able to control members of their faction in a way that approaches a Real Time Strategy game, albeit at a slower pace. That could result in some good stuff.

What I’ve Been Doing

Tuesday, February 3rd, 2009

I’m in Data Warehousing here at K2. For the last 6 months I’ve had to get up to speed with TSQL on SQL Server, figure out SQL Server Integration Services, SQL Server Analysis Services, SQL Server Reporting Services, figure out good Source Control practices, figure out the detailed inner workings of the databases of 6 MMOs, 2 casual flash-based games, and 3 billing and Customer Relationship Management Databases, figure out how to work with something over 1.5 billion rows of connection log data, figure out how to use web services and XML messaging, figure out how best to set up daily data extractions and snapshots, use these great things called “Table-Valued User Defined Functions” (think “parameterized views”), learn how and why one should write well-formated TSQL code (it’s a piece of art to see clean, well-formated TSQL), figure out how to do accounting and reporting for virtual currencies, figure out how to manage employees in an overseas development office, figure out how best to balance doing full extractions of data vs. just pointin Analysis Services directly at the source data (go for the latter whenever possible, by the way), figure out Data Mining structures (great fun when your data is set up right), learn just how much better life is when you get pretty hard-core about mainting strict referential integrity in your databases, get really good at reverse-engineering systems based solely on the data they spit out, learn some Multi Dimensional eXpression language basics, write some VbScript to identify exploitive in-game behavior on an in-production MMO, figure out how one can go about doing Social Network Analysis on large data sets, learn a ton about top-down hierarchies vs. Agile-like production teams, figure out some mid-level DBA work, learn how critical it is to have your business decision-makers have a good understanding and great respect of and for what it takes to develop great applications and databses (even if it’s just a qualitative understanding), and I’ve effectively not written a word on what I’m truly passionate for: MMO design.

Yeah, I’ve learned a ton. I feel like I have the database development and reporting chops to be able to seriously contribute on an MMO development team, but I feel like I’ve divested myself of what really drove me to get into this industry. So, without further ado, I’m going to quite simply start writing more.

Well, maybe I’ll start tomorrow…