PLATFORM2
Transcription
PLATFORM2
PLATFORM2.0 created 2009 description contact DUBIT SOCIAL GAMING PLATFORM Dubit LTD The Half Roundhouse, Wellington Road, Leeds, LS12 1DR T +44 113 394 7920 F +44 113 298 7337 E matthew.warneford@dubitlimited.com The Dubit Platform Social Gaming Worlds What is the purpose of virtual worlds? When I want to deducing. However, this doesn’t have to mean that the connect with friends I use Facebook, to catch up with my game is turn-based, nor does it even have to be about sister I use IM, to find a developer I reach out to my conflict: the player who intently studies patterns of traffic LinkedIn network, to buy a present I go to Amazon. But if in Sim City in order to decide where to build a new road I’m bored and want to meet new people I go into a virtual is also strategically immersed in the game. world. You can still find a business contact through the medium, but it’s not what it’s best suited to. So lets consider a few of properties that have defined the virtual world landscape: World of Warcraft; Eve Online; Second Life; Habbo Hotel; and Club Penguin. While all these worlds are different in so many ways (complexity, depth, and game mechanics, to name but a few), if we peel back the layers we find some very similar emotional dynamics: empowerment, mastery, belonging, and aspiration. • Narrative immersion in games is much the same as it is in books or movies. A player gets immersed in a narrative when he or she starts to care about the characters and wants to know how the story is going to end. World of Warcraft is high on all three categories but can hardly be considered casual; the very concept of casual gaming is that the players do not have the time to invest in activities like leveling. Casual worlds, on the other hand, have It’s this potential to connect on so many pulled back the traditional MMO levels that makes virtual worlds, as a dynamics to create a simple game medium, so compelling. Just like TV is a suitable for the mainstream casual medium, print is a medium; virtual worlds are market. These are much like a wendy a medium. Just like the success of a film is house and a games cupboard combined determined by its message or its narrative and into one: players dress up, make believe, not by the cinema itself; virtual worlds are the and play games! same: no matter how great the medium the content is king. But, when we take away too much of the gaming dynamics we're left with little to keep When we set out to create the Dubit Platform the player engaged. So we set out to create a we knew virtual worlds would be huge, and set suite of technologies that would enable a fast the simple goals of figuring out what paced experience, strategy and, most great content looks like in a casual importantly, narrative. world, and how to make that content quickly. Narrative is a hugely casual experience and perfectly suited to casual worlds. All Rise Content is King There are three types of immersion: • Tactical immersion is immersion in the moment-by- Narrative draws the player into the world; it doesn't need to be XBOX 360 graphics or the best driving game if the narrative is engaging. moment act of playing the game, and is typically found We created three technologies: GAML Engine, Core in fast action games. It’s what people call being “in the Components and Multiuser Server. zone” or “in the groove.” It’s physical and immediate. When you’re tactically immersed in a game, your higher The GAML Engine is really the key to solving the content brain functions are largely shut down and you become a problem. pair of eyes directly communicating with your fingers. Language, and is our proprietary programming language • Strategic immersion is a cerebral kind of involvement with the game. It’s about seeking a path to victory, or at for creating multiplayer gaming experiences inside the least to optimise a situation. The highest, most abstract form of strategic immersion is experienced by chess masters, who concentrate on finding the right move among a vast number of possibilities. When you’re strategically immersed, you’re observing, calculating, GAML stands for Game Application Markup virtual world; ranging from quests and collectables, to platformers and shooters. The GAML Engine solves the content problem by making it super simple to construct the gaming content; we hide away the complexity of programing in a real-time, multiuser world behind a simple XML markup. Instead of slaving over hot code for weeks, creatives can whip up a new appear on everyone else's; the MU Server routes quest in a matter of minutes. messages between players. The server integrates with GAML so that we can quickly solve the difficult problems of The Core Components are the collection of features that concurrency by giving the server authority over the game. a world needs but are not selling points: they're not For example, the server decides which player got to a reasons for players to choose one world over another, power-up first; two players might think they got to the rather, these are the fundamentals that support the world, power-up, but only the server knows who really got there. such as the registration process and the buddy list. The Server has been battle-hardened in live deployment, We know that players are much more interested in the supporting well over 10,000 concurrent users and tested world’s theme, games, avatars, narrative, quests, and to over 40,000. environments, than exactly how the buddy list works. The Core Components reduce development time so we can The table at the bottom of this page summarises the get a world to market quicker and allow the team focus on platform features and which of our technologies power what makes the world fun and unique. them. The features are explored in detail later in the The MU Server is the technology that makes it possible document. for players to send a message on their computer and Project Features Platform Components Technology The features and functions that are These features are typically found in all Dubit Platform technology. unique to each world. These are casual gaming worlds and are created for your world, and are what packaged together in the Platform make your world fun and engaging. Core Components. Authentication ‣ Guest Access ‣ U14 Registration User authentication and security World ‣ Salted & Hashed Passwords ‣ Environments Chat environment design and ‣ Keyboard control ‣ Mouse control ‣ Pathfinding ‣ Private chat environments implementation ‣ Instanced environments Social Communication and ‣ Network Global User Account ‣ Avatar actions ‣ Tags user interaction ‣ Chat message builder ‣ Profanity filter (White & black list) ‣ 2.5D Rendering Engine (Side on, isometric, & plan camera projection) ‣ Real 3D Rendering Engine ‣ Physics & Collision Engine ‣ MU Server ‣ Emoticons ‣ Friends list ‣ Ignore list ‣ User profile Gaming Single, multiplayer, and group games ‣ Mini games ‣ Quests, treasure hunts, NPC, etc ‣ Inventory ‣ Experience points ‣ GAML ‣ GAML Object Persistence ‣ Collectables ‣ Player attributes (health, speed, etc) ‣ Instant Match ‣ Free Points ‣ Paid Credits ‣ One Wallet Economy Virtual economy and digital item sales ‣ Micropayments ‣ Subscriptions ‣ Pro accounts Personalization Identity and bragging rights ‣ Avatars ‣ Clothes ‣ Store ‣ Wardrobe ‣ Image Baking Platform 2.0 Cloud Computing & Shared Services The Dubit Platform 2.0 takes the already proven The Platform 2.0 will launch in June 09 as a hosted service technology and looks to reduce the total cost to launch a that scales dynamically with demand and therefore world and address two friction points that are holding back reduces upfront infrastructure costs and monthly recurring both the reach and monetisation of casual worlds: costs. • The cost of creating, configuring, and maintaining a server infrastructure It is not unusual to spend in In addition to the hosted infrastructure the 2.0 Platform will excess of £100,000 building out the cluster in addition payment gateway; parents need only give approval once, to monthly rack space, bandwidth, and support. • The friction caused by the parental approval process Parents are asked to give permission for their under 14 year olds to play, but the amount of effort required on behalf of the parent significantly reduces the conversion of visitor to user. • Few parents subscribe their child to more than one world Again, there is a lot of friction in the subscription process, which is further compounded by having to manage multiple subscriptions and topped off by concern that their child will become bored before the end of the subscription. connect partner worlds through a global passport and can subscribe in one click, and can manage all transactions through a single location. Following shortly after, the 2.1 release, sees the introduction of the visual GAML editor; writing GAML is easier than writing code, but not having to write any GAML at all is even easier! The GAML editor will enable anyone to create content (quests, NPCs, games, and so on) through simple a drag and drop interface. When making interesting worlds is this simple they become much cheaper to create and easier to update. • The cost of creating and updating the in world content Just like a regular website, the content in a These concepts are illustrated in the diagram below, and virtual world needs to change regularly to avoid boxes are the core Dubit Platform technologies and the becoming stale. green indicates project specific customisations. Partner Project Partner Project Account Tech Partner Project World Home & Website explored in more detail later in the document. The blue Dubit Platform Global Passport Registration & Login GAML Quests, Games, Collectables, & More GAML Quests, Games, Collectables, & More GAML Quests, Games, Collectables, & More GAML Engine, Coarse Grained Components, etc GAML Engine, Coarse Grained Components, etc GAML Engine, Coarse Grained Components, etc Project specific customizations Shared Cloud Infrastructure Multiuser Nexus Cluster Global User 1 Account Dubit Technology Multiuser Nexus Cluster One Wallet 1 Gateway Image Baking 1 Partner customizations Multiuser Nexus Cluster Friend Finder 1 Back-end Infrastructure Project Features, Games & Quests Front-end World Technology Project Specific Artwork The diagram shows three partner projects as vertical silos Each partner increases the perceived value of the network sitting on top of the shared cloud infrastructure. While for both users and parents, which in turn improves the each project shares the Global User Account, One Wallet, conversion of visitor to user, and through to subscriber. and Image Baking services, the gaming experiences and Our research with parents shows they would like to give aesthetics are very different between worlds. their child access to one network of worlds, with a unified Underneath the visual differences there are a number of core features that are functionally the same; a contact list does not need to be different from world to world. These core features are the Coarse Grained Components that are skinned for each project. While the gameplay differences can be huge, the worlds still use the same collision, rendering, questing, and conversation engines. It’s the custom GAML per project that makes each gaming experience different; the engines are the same. parental management console, rather than have to keep track of a collection of different worlds. Similarly, they don't want to spend time investigating the privacy and security policies of each world their child wants to play; as a network, they can investigate once and not worry again. We know that kids will participate in multiple worlds, much like they watch different cartoons. With a single user account, once converted through the parental approval process, users can participate in other partner worlds with zero barriers. This freedom to move between worlds means that each partner who joins the network improves For a typical project over 90% of the code is Dubit Platform; the remaining sub 10% are the customisations that make each world fun and unique. the network for the users, which in turn attracts more users. They're not just joining one world, they're joining multiple worlds in one go, and each partner benefits from the growth in traffic. Its like a digital shopping mall! Support of Platform 1.0 is being phased out in preparation for the launch of version 2.0 in June 09. Similarly, subscribers’ payment details are stored so that subsequent subscriptions and transactions can be Network One Wallet & Global Passport completed with an almost frictionless single click. Parents Worlds are social spaces where young users are able to creates a more attractive destination for new visitors. This give out personally identifiable information. For their own positive network externality benefits the group with an ever safety, users below 14 are required to obtain parental larger potential pool of users and a reduced the net friction consent to play in a world. However, the still need to subscribe to each world, but they do not need to enter their credit card each time. Every partner that joins to spending. process of obtaining parental consent is a substantial barrier that One Wallet dramatically reduces the The wallet is a single location to manage subscriptions and conversion of visitors to users. A micropayments for each partner world. second high friction point is the conversion of user to and physical goods can be made with one click. Our research Micropayments are supported through an intermediary shows that very few users are currency; players purchase credits that are then spent on subscribed to more than one digital items. subscriber. world; not only is it difficult to convince a parent to enter their credit card details but when they have, Card details are stored in the wallet; purchases of points, subscriptions, they worry about forgetting to cancel the subscription. Credits cannot be transfered between worlds. Passport Rather than ask the user to register with parental consent for each world the user registers once with the Passport. The passport stores global information that does not There is a lot of money being left on the table change from world to world, including email, name, and precisely because these two issues create parental consent. On entering a world for the first time the so much friction. Both can be addressed user creates an account with the world: this usually by bringing worlds together as a network includes building an avatar and possible world specific with a single payment gateway and global user account. information, for example,”favorite football team”. Infrastructure Shared and scalable monitor the load on the infrastructure in real-time and bring Building out a server infrastructure is an expensive process The final benefit is the shared cost of maintaining the but also very inefficient. The infrastructure needs to keep infrastructure. apace of growth but also have sufficient excess capacity cover the development cost of the technology, nor the for traffic spikes. Judge the excess capacity incorrectly ongoing development. In this way, the license fee is very and the system could crash under the load, losing all the good value given the number of programming hours it new visitors and the goodwill of existing users. gives access to. more computing power online as required. Yet, A single technology license fee does not The maintenance of the server throughout most of the day the infrastructure is well below infrastructure is similar; the cost of maintenance is shared capacity and only becomes loaded for the peak hours. In by the partners on the Platform. other words, the infrastructure needs to be bigger than throughout the day. Friend Finder Unlocking untapped growth Consequently, the cost of creating and running the With these three features - one wallet, global passport, required to cope with spikes, but goes largely underutilised infrastructure is high: it’s not uncommon to spend over £100,000 on infrastructure for launch, in addition to monthly bandwidth and maintenance. reduces the upfront and monthly hosting costs, by dynamically growing and shrinking the server cluster in respond to demand. As the traffic increases the system can bring a new node online in less than 5 minutes, once the traffic spike has passed those same nodes can be decommissioned. The effect is that hosting costs stay inline with the load on the system and grow quickly to support big traffic spikes. For launch the hosting can be as little as $500 per month, significantly less than buying and building a dedicated unlock a huge amount viral growth for the Platform Our research shows that kids prefer to play games with their friends, and yet it’s difficult for a group of kids to join each other in a virtual world; they need to coordinate what time to meet, which server, which room, and what their names will be. This process is further complicated in a big world like Cartoon Network's Mini Match because there are many instances of the same room and no guarantee that two players will be in the same instance, and if they’re registering for the first time they can’t predict their username in advance. The most common way kids get round this problem is by coordinating over instant messenger. If this process can be made simple, so frictionless that players could invite their friends into a world with only one click, we have unlocked the single biggest social graph. Our research shows that 70% of 14 year olds use instant messaging networks, which means 70% of 14 year olds are contactable through instant messaging networks, whenever their computer is on. The percentage of young people using instant messaging networks also increases infrastructure. with age. While each Platform All this potential will be unlocked by bringing the partner partner's world is very different, and their data is stored separately, they all run off the same Dubit Platform infrastructure and services. Alpha release of the Friend Finder client address one more friction point that will, when overcome, partners. The Platform 2.0 is a hosted service that dramatically out and hosted infrastructure - we unlock the capacity to We're able to worlds onto a single hosted platform with a single global passport. We're calling the feature that allows the players to invite their friends on different IM networks 'Friend Finder'. The screenshot to the right shows an early alpha release. The Friend Finder will go live shortly after the 2.0 release in June, and is explored in more detail in the Platform Roadmap later in the document. Benefits Shifting markets & down economies This section explores some of the benefits of the Dubit users are interacting with the product: which features they Platform and its potential uses. like, where they get stuck, and when they leave. Realtime usage data drives a tight feedback loop enabling partners Connecting with a shifting market to rapidly iterate towards success. Young people are spending more of their leisure time online, playing games and chatting with friends and are The Platform reduces production costs and increases watching significantly less TV. We're seeing young people speed to market because the core world features are move online and we believe that the Dubit Platform is an already developed and the GAML enables rapid creation of opportunity for media owners to connect with their content within the world. audience. Direct relationship with the customer Retain control There are well-understood and proven examples of how to Developing a scalable and entertaining multiuser world is generate significant revenues from virtual worlds. technically challenging, however, the same programmers contracting economy, where advertising budgets are being who create the world are rarely the best game and content cut - and in some cases advertising to children under designers. question - our platform offers the In a potential to generate direct from consumer revenue. We have modeled out a The Tool Kit gives the content creation to the creatives number of scenarios showing the different revenue drivers wherever they can be found: it doesn’t need to be just our and the potential in our Return on Investment white paper, creatives. contact matthew@dubitlimited.com for more details. Your existing team of creatives, story writers and editors can use the GAML Content Editor to create Viral narratives and games within the virtual world. Our integration with presence networks empowers players Capital efficient to invite their friends into any platform world. The invited Partner worlds are built on top of our infrastructure and friend does not need to install any applications or register coarse grained components meaning that over 90% of the to use the server: a powerful one-click viral distribution development work is already complete. channel. The powerful GAML libraries enable rapid creation of in world gaming content. As such, it’s a format for cost effectively launching new IPs that can subsequently be developed into larger online and offline properties. In addition to the small initial capital investment the Speed to market For a typical world developed from scratch we find that over 70% of the production effort is taken up writing code, the remaining 30% is producing artwork for rooms and avatars. Because the bulk of the work is technical, programming is the projects critical path. technology delivers empirical feedback about how the Cartoon Networks Mini Match built on top of the Dubit Platform 1.0 What does the Platform do? From safety to virtual currencies and everything in between There are lots of questions to consider when building out a economy. From the simple to the complex, these are virtual world, such as how to keep the chat safe, and what addressed as question answers in the tables below. are the considerations when deciding on the type of virtual Authentication Login, registration, roles, and permissions What about young The sign up process takes a username, password, date of birth, and email address. An email address is considered players, are there personally identifiable information that we need parental permission to store. The process for obtaining parental any restrictions? consent is built into the platform and explained in the appendix U14 section. Can players try the Anyone can play as a guest without needing to register first; guest accounts have a limited feature set, they cannot game out without chat, customise their avatars, earn points, or use the friend list. Guest accounts help to increase the conversion rate registering? of visitor through to member. How many avatars The Dubit Platform supports multiple worlds and multiple avatars per user, per world. Behind the scenes, when a can a player control? visitor registers they are creating their User account. The user account gives access to the site, but is different to the avatars they control in the chat environment. A player may create several avatars in each world that are linked to their user account. There are no technical reasons to limit the number of avatars per player, but we find, through experience, that 3 avatars per world are sufficient. World Chat environments, instancing, and rendering How do players There are two ways for a player to control their avatar; keyboard control, or mouse control. The keyboard gives the navigate the chat player precise control over the movement of their avatar, perfect for environments that require agility, jumping, and environment? timed movement. Mouse control is point and click simple - the avatar uses a pathfinding algorithm to walk to where the player clicked. What are the Chat environments come in two flavors: Real 3D and fixed camera pre rendered 2.5D. Flash is cable of delivering different very low polygon environments that is suitable for a limited range of styles. Richer, more detailed environments, are environment design produced in packages like Photoshop, Maya, Illustrator, and then prepared for the 2.5D rendering engine. The 2.5D styles? environments can be rendered from top down, isometric, and side on. See the appendix for examples of environment design styles. Can players have Each avatar has their own private chat environment that can be open to anyone, or restricted those who have been their own chat given a key to the door. In popular worlds the number of player rooms makes it practically impossible to moderate all room? of chat spaces; as a precaution chat in private rooms is usually restricted. However, all chat messages can be logged for later review. What happens when To support more users than the chat environments can hold there are two options, create more chat space, or a room becomes instance existing environments. Instancing environments describes the process of cloning an existing room; when full? a room becomes full a new instance is created. Consequently, there are multiple instances of the same room type, so when two players enter the same room they could be sent to different instances (or even different physical servers). The server distributes players amongst instances by sending them to the busiest room that still has space. Social Chat, safety, friends, and scaling How is chat There are 3 ways to create a chat message, the safest is choosing from a predefined list of words and phrases, protected? second is filtering against a white list (allowed words), and the least safe, filtering against a black list (banned words). Building chat messages from a list of words and phrases is preferred by the under 9’s who are typically slow typers, and often don’t even know what to say! Older users expect free text input that is filtered. While filtering chat is important it isn’t a substitute for moderation, see the appendix for further information about Dubit’s moderation services. The final line of filtering is the player’s ignore list. If a player doesn't want to talk to another user, they add them to their ignore list. Every message, from chat, to game, to comment on a profile, are filtered against the ignore list. All chat messages can be logged into the database for future review. But depending on the game, and the age of the audience, the number of messages can be huge. How does a player Players can visually express emotion through emoticons, avatar actions, and tags. Avatar actions are unique to express themselves each world but usually include waving and dancing. Each action has a corresponding animation sequence for every in the chat single clothing item, for example, adding a pointing action requires that each item of clothing has a pointing animation environment? sequence. Subsequently, each action substantially increases file size, and therefore, should be balanced against download time. Avatar construction is explained in more detail under Image Baking in the Technology section. Tags are animations applied to, or on top of, an avatar, for example, a rain cloud expresses sadness, while a cloud of hearts expresses love. Some tags can be applied to other players that could, for example, freeze them in a block of ice, or zap them with a lightening bolt! Because tags are layered over the avatar, and don’t effect the clothing, there is no limit to the number of tags in a world. Like clothing, tags can also be purchased from the in world store. How does a player The friend list component shows which friends are online and where in the world they are. When a chat environment find and contact becomes full a new instance is spawned. Consequently, there are multiple instances of the same room type, so while their friends when a friend may be in the ‘Haunted Garden’, choosing to navigate to the ‘Haunted Garden’ will likely result with both there are 1000’s of players unable to see each other because they are in different instances and even on different physical servers. The people online? friend list solves the instancing problem by letting players to join their friends in same room instance. Can players talk to A single MU Server can support a few thousand players, the limiting factor is usually the number of messages the friends on different server needs to send and receive, which varies per game. As the number of players increases we introduce more severs? servers to distribute the load. But friends on different servers can still communicate through our distributed presence servers. The presence servers are low volume messaging servers for routing instant message conversations, friends lists, and online/offline/away/etc status messages. These servers talk to each other so that a friend on server A can send a message to a friend on server B. Routing messages between players on different servers is not nearly as quick as players on the same servers. In scenarios where message speed is important, for example the movement messages in chat rooms, players need to be connected to the same server. On the other hand, it is perfectly acceptable for private messages between players to take half a second longer. When a player first launches the game their browser is load balanced to a presence server, this connection is never closed. But, for each room *instance* the player joins, their web browser connects to the server that hosts that room. With our distributed MU Server it is possible to support many thousands of concurrent users, and still have friends on different servers talk to each other, challenge to games, and meet up in the same chat room instance. Gaming Security, instant matching, multiplayer gaming, and quests How do players enter a multiplayer game? Players can enter a multiplayer game in two ways, challenge a friend or player in the chat environment, or, using the instant match facility, find themselves an opponent automatically. As well as challenging players in the same room, friends on different servers can challenge each other (using the presence server). On receipt of a challenge the player can either accept or reject; on accepting the challenge, both players are connected to the same server and the game is loaded in place of the chat environment. Players are connected to the same server because games need the messages to be routed quickly between computers. The instant match deals with the problems of liquidly, and game quorums, in its search to bring a sufficient number of people together to start the game in a short space of time. While the server is looking for opponents the players can continue to play in the chat environments. How are the mini It's very difficult to protect Flash games from hackers and malicious cheats because flash files are not secure, they sit game high score on the users computer and can be decompiled. tables protected? Sending the data over SSL doesn't secure the game; an encrypted or signed data stream on the network-side is safe, the problem is that our game attacker controls the computer. This is not the security assumption that most encryption and digital signature systems are designed for. Yet, it's important that the games are secured because both the high score, user profiles, and points system can be affected; hacking the game scores can award the player with points to spend in the shop. The best security is implementing the game in a client-server configuration; the game acts as a 'smart terminal' with an interface to a game that is hosted on the server. The GAML uses this approach for determining which player picks up an item first, we call this server authority and is used for making changes to important game model data. For a mini game, that cannot make use of GAML, such as a Pac-Man game, we use obfuscation and encryption, to increase the layers of difficulty; all scores are encrypted, and sent over the persistent connection to the presence server (persistent connections are harder to sniff and fake), and then validated by the server. How are quests In 2009 no-one creates a website without a content management system, because we know the importance of fresh created? content. Casual worlds are the same, players expect a fresh gaming experience each time they visit. Yet, creating game content is far more complex than website content. So we developed the first content management system specifically for casual gaming worlds. We call this technology GAML - Game Application Markup Language. GAML is our technology that puts the production of game content in the hands of creative people; they can use GAML to quickly create new quests, missions, collectables, secret rooms, power ups, etc. Games generate a lot of events: when a player moves, when players collide, when a player picks up an item, and so on. What turns these events into something interesting is how they are handled. The GAML is a light-weight scriptable language for linking events to actions. Using our library of behaviours, conditional logic, randomization, and server authority, designers can create completely different gaming worlds. How do players save Unlike console games, where saving progress has been around for years, saving progress in a social world is a new their progress? concept; users close their browser window when they leave a social world, they don't think to save before logging off. Rather than try to change player behaviour we have built object persistence into the heart of the GAML language. This means players don't have to explicitly choose to save their progress, instead their progress is persisted as they explore and play the world. Consider the example of a player picking up a key. The GAML engine understands that anything added to the inventory should be saved, so when the key is added to their inventory it's also persisted into the database. When the player next enters the world, the key is loaded from their inventory - they don't need to go collect it again. In the simple example of inventory items the game designer doesn't need to think about object persistence. More complex game state can also be persisted too, for example, if a light switch is on, or the position in a conversation tree. The game designer controls state persistence on an individual basis - the reading and writing to the database is handled by the GAML engine speaking to the MU Server. Economy Freemium, subscriptions, and micropayments What’s the best kind of economy for my game? The Dubit Platform supports subscriptions, micropayments, and free points; all three compliment each other. Most worlds can be played for free, and give the player points that they can begin to invest in their avatar; the more time the player invests in their avatar the less likely they are to leave the game and throw away that investment. Typical ways to earn free points include: mini games, completing missions, player vs player battles, time on the site, and more. Points belong to the avatar who earned them, in other words, if my avatar 'max power' earns 100 points, they can only be spent on the avatar 'max power'. As well as free points we have the concept of paid credits that can be spent on any avatar. Paid credits are usually given as part of a subscription, or bough in a microtransaction. Digital items can have a paid credits value, free points value, or both: they do not have a dollar value. Digital items can only be bought for credits or points, but not cash because most credit cards in Western countries will not accept small transactions. Instead, the player buys credits in small chunks of £5 or more, they can then spend those credits in exchange for digital items. So, items can have an indirect dollar value, but players do not spend cash in the shop. The choice of subscription versus micropayments comes down to the audience. Subscriptions need the parent to pay with their credit cards, consequently the site must be one that mum and dad would endorse, too. Micropayments work well with teenagers who have money to spend through their cell phone or debit cards, and because parental consent is not required, the site can be more edgy. Subscriptions complement micropayments when they unlock advanced features that might not appeal to everyone. In this case the really enthusiastic players can subscribe, get credits every month, and unlock the pro features. Note: if a parent is subscribed to a world, they don't expect their child to be subjected to adverts. Personalisation Customisation, avatars, and shopping How customisable A customisable, humanoid, avatar is made of lots of different images, their hat, hair, shirt, pants, shoes, and skin. Our are players avatars? image baking technology combines all these assets into one image so the player’s computer only needs to make one request; the effect is much quicker load times. Because the avatars are made up of images created in a 3D package the customisation options are not limited by our technology; the server can bake any combination of images. The customisation choices are decided by the avatar design and the 3D modeling time. Avatar customisation is huge part of the social world experience, players love to design their own identities; some players will spend more time building their avatar than any other activity! However, creating all those avatar clothes is a big job for talented 3D artists so we asked why can't we let the users create their own clothes, their own designs? In Q1 2009 our next generation of customisation tools will directly address this problem. These tools let players paint onto the environments, avatars, and furniture in 3D; they can create their own clothes by painting straight onto their avatar. The tools will run in the browser with no download. Can the shop be The shop interface is organised into tabs, like 'hats', 'shoes', and 'shirts'. These tabs are managed through an admin changed without interface, so its possible to change the special offers, create seasonal tabs, or adjust prices without development development work? work. The shop doesn't need to be limited to clothes either, players can buy power-ups, actions (such as new dances), or gifts. Players can pay for their purchases with *free points* or paid for *credits*. Real money is not used directly in the shop, only in the form of paid for credits. By using credits items can cost as little as a penny; credit card companies would not accept such small payments. Registration process Best practice for U14s The Dubit Under 14 (U14) registration process requires that awaiting parental consent we encourage children who are all users under the age of 14 have parental consent for under 14 to enter the world as a guest; guests do not enter unfettered access to the system. Although we follow best personally identifiable information and can not practice it is possible that children can lie about their age or communicate, or be communicated with. enter an email address other than their parents. While A Select Age Privacy Policy Under 14 Over 14 Privacy Policy B Parents Details/Your Email Accept T&Cs No Yes Validate Password C Choose Username/ Password Password Entry Email Parent Notification + T&Cs Validation Email Email Sent Screen Parental Concent No E Yes Activation Successful D Delete Details Validate Password Email Child A: Before entering any personally identifiable information accept or reject link. If the parent does not respond after a we ask the users age and route under 14s into the parental week a reminder email is sent. permission process. D: The parents response is emailed to the child. If the B: The parent is contacted via email. The parents email is parent rejected, all details are removed permanently from stored for up to one month. If, after a month, the parent the database. has not responded all details are permanently removed E: On receipt of the confirmation email the child must click from the database. a link to activate their account. All members, including C: The parent receives an email asking for permission to those over 14, must click the link to validate their email play the game. To respond the parent clicks either the address. Technology Up close and in detail Dubit have developed five core technologies used in every other so that a friend on server A can send a message to a gaming world: MU Server, GAML, Image Baking, Instant friend on server B. Match, and Object Persistence. These technologies have been deployed in real-world games. However, routing messages between players on different MU Server Distributed gaming network servers. In scenarios where message speed is important, servers is not nearly as quick as players on the same for example the movement messages in chat rooms, players need to be connected to the same server. On the The MU Server (Multi User Server) is what makes it other hand, it is perfectly acceptable for private messages possible for players to send a message from their between players to take half a second longer. computer and it appear on everyone else's. In its simplest form the MU Sever routes the messages between players. To support more users than the chat environments can physically fit we create a new instance of the room; A single MU Server can support a few thousand players, instancing environments is the process of cloning an the limiting factor is usually the number of messages the existing room. Consequently, there are multiple instances server needs to send and receive, which varies per game. of the same room type, so when two players enter the As the number of players increases we introduce more same room they could be sent to different instances. The servers to distribute the load. server distributes players among instances by sending Friends on different servers can still communicate through them to the busiest room that still has space. our distributed presence servers. The presence servers When a player first launches the game their browser is are low volume messaging servers for routing instant load-balanced to a presence server, this connection is message conversations, friends lists, and online/offline/ never closed. But, for each room instance the player joins, away/etc status messages. These servers talk to each their web browser connects to the server that hosts that room. With our distributed MU Server it is possible to Presence Server Cluster Server Architecture The server architecture has been created from the ground up to scale quickly with the addition of cheap server hardware. Relational Database Storage Server Image Server Image Baking Server Game Server Cluster Game Server Game Server The internet User computers GAML Engine Users machine Directory Server Presence Server Presence Server IP Load Balancer support many thousands of concurrent users, and still have number of requests the client makes of the server, greatly friends on different servers talk to each other, challenge reducing download time and server load. each other to games, and meet up in the same chat room instance. To summarise, this means that the players computer has two persistent socket connections open, both connections GAML A series of connected events communicate with the server through binary encoded When a player moves around the world events are fired. In Game Objects. Game Objects are the building blocks that fact, when the player does almost anything (collides, uses, the GAML Engine observes and interacts with. One picks up, enters, talks to, and so on) events are fired. An connection is open to the Presence Server permanently, event is a notification that something in the world has while the second connection is regularly moved between happened, but what makes a game fun is what happens Game Servers. Which game server depends on what room because of that notification. instance the player is in, or where their multiplayer game opponents are. Consider the example of a player walking onto lava. In this simple example for every second the player is on the lava When two players are running towards the same power-up an event is fired. The GAML engine captures the event and it’s possible for each player to think they got there first. executes the script written by the game designer. The Movement lag can affect where the other player appears script reduces the player’s health while on the lava and on their screen, meaning that the other person could be a plays an animation showing smoke coming off the player’s fraction of a second behind where they really are. These boots. If the player doesn't get off the lava in time his race conditions are handled by the server; the power-up is health continues to decrease until he dies. The script marked up in GAML as requiring server authority over changes the player sprite to a burning animation, and the which player actually got to the power-up first. This is one music changes to a deathly scream. example of the many ways the MU Server is tightly integrated with GAML so that the game designers can focus on the game not the technical challenges. Image Baking Combining avatar clothes into one image A customisable, humanoid, avatar is usually made of lots of different images, their hat, hair, shirt, pants, shoes, and skin. Each item has 7 frames for each animation, such as walking, and dancing. Furthermore, each item has a North, North East, East, South East and South variation. The different items, directions, and animations add up to a lot of images. We developed a technology called Image Baking to combine all the different images for a player’s avatar into one image; we bake the different ingredients into a grid. The users computer needs to only download the one image, once. Image baking dramatically reduced the Even in this simple example a lot of different things happen. A game world generates a lot of events like the lava example, GAML is the glue that binds these events together quickly and easily. It’s a lightweight scripting language that allows game designers to quickly script how events are processed to create interesting scenarios for players. The GAML behaviour library contains hundreds of building blocks designers use to create completely different gaming worlds. The behaviour library includes, collision, conditional logic, sound, animation, conversation and much more. GAML Syntax Example code and language structure manipulate the game-state in whatever manner it wishes, or can simply ignore the event. Scripts can also contain links to each other, which enable them to exchange messages. These events make up the primary interface When designing the language there were two primary between the engine and the language system. goals. First, the syntax should be powerful enough to offer complex loops, conditionals, and nesting, but familiar The following 29 lines illustrates a simple conversation enough to be learned and used by a non-programmer. between the player an an NPC who has asked a favour of Second, the language must execute quickly enough to be the player to take a book back to an NPC called Magnus. useful in a real-time multiplayer game. The game engine executes the scripts in an event-driven manner. For example, when two objects collide with each other in the physics engine, any scripts linked to either object receive a "touched" event. This event contains parameters that allow the script to identify which objects were involved in the event and the type of event that occurred. Based on this information, the script can Sample GAML Line 2: Collision hotspot created. Line 3: The collision event is fired by the physics engine when another game object touches the NPC Line 4: Check the colliding object is the player Line 8: The NPC is in default state 0 so the conversation message shown Line 14: Sets the NPC to state 1 Line 15: Adds book to inventory Line 18: The NPC is in state 1, when the next collision occurs he will ask if the book has been delivered 1. <npcConversationStyle> 2. <onInit><CreateHotSpot/></onInit> 3. <onCollision> 4. <If Expression=" ( {Event.collisionobject.id} == {This.player.id} )"> 5. <Then> 6. <Switch Expression="State{Event.gameobject.Status}"> 7. <State0> 8. <ShowAlert Message="Can you take this book back to Magnus please?"> 9 <OK> 10. <StartGameClock/> 11. </OK> 12. </ShowAlert> 13. <PauseGameClock/> 14. <SetAttribute Name="Status" Value="1" GameObject="{Event.gameobject}"/> 15. <AddGameObjectToInventory InventoryObjectID="book" OwnerObjectID="player"/> 16. </State0> 17. <State1> 18. <ShowAlert Message="Have you given that to Magnus yet?"> 19. <OK> 20. <StartGameClock/> 21. </OK> 22. </ShowAlert> 23. <PauseGameClock/> 24. </State1> 25. </Switch> 26. </Then> 27. </If> 28. </onCollision> 29. </npcConversationStyle> GAML Object Persistence Saving changes to the player’s game state saves it to the database. If the player now leaves the game, next time they login the key is still in their inventory. When the player uses the key to open the door, it is Unlike console games, where saving progress has been removed from his inventory, and the door state set to open. around for years, saving progress in a social world is a new The state is persisted to the database so next time the concept; users close their browser window when they player logs in the door remains open. leave a social world, they don't think to save before logging off. Rather than try to change player behaviour we have built object persistence into the heart of the GAML language. This means players don't have to explicitly choose to save their progress, instead their progress is persisted as they explore and play the world. The sequence diagram below shows a player picking up a key and then using that key to open the door. Once the player has picked up the key the GAML engine intelligently Picking up a Key Game World Inventory In a multiplayer world each player has different states, for example, the player who has unlocked the door would see an open door, others would see it closed. State can also be global, for example pressing a light switch could turn on the lights for the whole room. The GAML engine takes away the complexity of saving game data; it’s as simple as marking an object or attribute as persistent. The engine does the rest. Player State MU Server Database GAML intelligently persists any item added to the player’s inventory. In this case, when the player leaves the game he Player collides with a key which is added to their inventory doesn't need to save progress. Next time he logs in, the key is In the scenarios where there is a limited supply of keys the MU Server confirms if the player did in fact successfully pickup the key (see the Technology section on MU Server Authority) still in his inventory. Opening a Door The player uses the key to open the door, at which point the key is removed from his inventory. When the door is opened its state is saved for that player (others might see the door as closed). Next time the player logs in the door Any item added to the inventory is persisted to the database. The GAML engine informs the MU Server that the player has picked up a key Player collides with a door which checks if the key is in their inventory The MU Server writes the inventory item (key) to the database The key opens the door and is removed from the players inventory. When any item is removed from the inventory is must also be removed from the database. The GAML Engine informs the MU Server the key was removed The MU Server removes the inventory item (key) from the database When the door is opened its state is changed so that the door remains open. The state is stored as an attribute The MU Server writes the attribute change to the database remains open. The attribute change is reflected back into the game world. When the player next collides with the door he can walk through. The door records the fact that it has already been unlocked. Even if the player logs off and comes back in two weeks the door is still unlocked – without the player explicitly saving their game. All player attributes are persisted to the database. The MU Server is informed of the change MU Server Features Rapid development and performance enhancements GAML Thread Safety The MU Server receives thousands of messages every second, each message is pushed into a queue and handled by the first available worker; there are 64 workers processing messages concurrently. While this architecture means the server can process thousands of messages a second by parallel processing, it creates the risk of two workers modifying the same piece of data at the same time and crashing the server. To avoid this we put a lock on the data before modification - the other workers wait until the lock is removed - too much locking slows the server down, too little and the server can freeze or explode. When we developed GAML we wanted to keep the challenges of locking, mutexes, and semaphores for the computer engineers, and leave the game designing to the creatives. GAML abstracts away the complexities of highly concurrent multi-threaded programming behind a simple XML language. Server Authority When two players rush for the same object only one can take it away. Lag and movement buffering means that two players could appear half a second behind their actual position. Consequently both players might think they got to the object first - in these scenarios we ask the server to take control and decide who got to the object first. Before the player can pick up the object we send a message to the server to see if it still exists - GAML thread safety means only one player can request to pick up the object - the first player to get a message into the server receives a positive response. So, while players would perhaps see slight differences if their screens were side by side - only the server knows where their avatars really are. This is a typical problem of multi-user games and worlds and would usually require hundreds of lines of code on both the client and server. We have abstracted the code, client and server communication, and thread safety behind a single GAML attribute "serverAuthority". Through only one attribute we're able to solve a frequent but complex problem so we can spend more time focusing on the game play, not the programming. GAML <GameObject id="speedBoots" x="10" y="10" severAuthority="true"/> User Groups The game designer can define user groups within a room, for example, a two player game might have an observer group who cannot participate but can watch and chat amongst themselves. Or groups can be made dynamically, for example, when players become a team, the server creates them a group through which they can chat and send messages privately. Groups can also be used to control access to restricted behaviours; for example, an admin group would contain GAML behaviours to eject or ban other users. Only admins can join the group. Programming Not A new room can be created without needed to write any ActionScript code on the client or Java code on the server. Required Because rooms are entirely configured by our GAML, even complex rooms with quests or games do not require any Java or AS3 code. This means we can create complex and engaging experiences quicker, and change them more frequently. In addition, because GAML abstracts the complexities of world programming - thread safety, server authority - behind a rich set of behaviours we train our customers to write their own rooms. Coming soon! The real advantage of GAML will become apparent with the beta launch of our Visual GAML Editor in Q2 2009. The editor uses a visual drag and drop interface to create new rooms, quests, puzzles, conversations, NPCs, triggers, without writing any GAML. A visual game editor is not possible without an intermediary scripting language like GAML; the admin creates rooms visually and the editor writes out the GAML configuration files that the server and client know how to interpret. Using the visual editor it will be possible for our customer to create new quests, games, puzzles, power ups, and so in, in a matter of minutes. Regularly updated content keeps players interested and coming back day after day. Message Bunching Flash can receive up to 5 data packets every second before becoming overwhelmed. Imagine a busy room of 25 people; if all 25 people are walking around, each sending 2 messages every second, we can expect the Flash client to receive 24 x 2 = 48 messages every second. Our tests show 48 messages massively degrades the Flash client performance, and quickly messages begin to be dropped. The server solves the problem by bunching messages into one packet sent every 200 milli seconds, the Flash client will never receive more than 5 messages a second, but each packet might contain multiple messages. Message bunching can be disabled for games that require fewer messages but where speed is important. User Session Room Each user has their own session room that stores their attributes, contacts, and state. For example, if a player has a health meter that could be effected by games or terrain, it is stored in their session room. State and attributes are flexible, the game designer can create as many player attributes as necessary. The session room is also used for routing private messages between users on different servers. If a contact cannot be found on the server the session room looks up their location and sends a lightweight UDP message to that server. Using the same routing technology, if a player is in multiple rooms on different servers, the session room distributes their attributes across servers. So, any room on any server can read and modify the players health, speed, points, etc. Latency Adjusted While message bunching solves the problem of how many messages a client can receive each second it further Movement exaggerates the lag between client and server. Dubit have developed a movement protocol, and buffer, that queues movement messages for a short period of time in order to smoothly interpolate the movement of other players without the Latency Adjusted Movement system players jump and stutter around the screen. While a player’s movement could be half a second behind their actual position, server authority on shared objects, addresses the problem of two players attempting to pick up the same object. The server knows where both players really are, and decides who got to the object first. Instant Match Players can enter a multiplayer game in two ways: challenge a friend or player in the chat environment; or using the instant match to find them an opponent automatically. The Instant Match deals with the problems of liquidity, and game quorums; it locates and ensures that there are sufficient players for a game to kick off. For example, consider a game that requires a minimum of 4 players, and a maximum of 8. When the fourth player enters, the Instant Match will wait 60 seconds for another player to join. If another player joins the timer is reset, otherwise the game kicks off. On 8 people joining the game starts immediately, and a new instance is spawned. The Instant Match can be scripted with a range of different rules for each game. While the server is looking for opponents the players can continue to play in the chat environments. GAML Features Features exposed to GAML writers Terrain Triggers As a player walks around an environment they might encounter different terrains that effect their movement or health. For example, if a player walked onto Lava we might expect them to die, or at the very least, their health to decrease. We call this type of event a terrain trigger; when a player moves over the terrain events should be triggered. Terrain triggers are defined by hidden images, maps layered on top of the room, when the collision engine detects the player entering a new terrain trigger, an "onEnter" event is fired, while the player is in a terrain image map an "onInside" event is fired. The GAML editor can handle these events in what ever way they want. A simple example would be a player entering a pool of lava, every time the "onInside" event is fired the players health is decreased. Dynamic Lighting Environments can contain lights and shadows that layer on top of the player. Walking into an area of shadow layers a filter that darkens the player, walking near to a light illuminates the player with a glow the color of the light. Both effects are the result of applying a "Multiply Filter" onto the player - filters are defined using only one line of GAML, no coding is required. GAML <MultiplyFilter id="shadowMapFilter"> <Texture id="1" assetID="shadowFilterAsset" x="0" y="0" /> </MultiplyFilter> Sound & Music Environments can contain four types of sound: streaming, looping, event, and proximity. Streaming sound is typically used to load-in long music tracks; the sound file is streamed in once the environment has finished loading. Streaming music is not stored in memory so cannot be looped and does not begin playing immediately. A looped sound is shorter and will play repeatedly; suitable as background noise. An event sound is one triggered by an action in the world, for example, as the player walks through water a splashing sound is triggered. Proximity sound is one that gets louder, and pans in, as the player approaches the source of the noise. Each sound is configured through only one line of GAML, a proximity sound point is shown. GAML <SoundPoint id="plazaSound" assetID="plazaSound" x="454" y="923" strength="0.5" carry="100" stereoWidth="0.5" /> Tracking & Analytics Everything that happens in the world is the result of an event, such as the player pressing a key, or walking towards an Integration NPC. We can track any of the events using only one line of GAML. Dubit do not provide an analytics package to track how often each event is fired, when, or by whom. Instead, we provide a configurable GAML call that posts each activity to a third party analytics package; this allows customers analytics across multiple products and properties to be measured and reported from the same tool. GAML <TrackEvent ref="useItem/{room.player.id}/goldKey"/> Advertisement Like analytics tracking, Dubit does not provide an advertisement serving platform; typically our customers prefer to Campaign manage and monitor their campaigns through one tool. There are GAML behaviours for loading image, swf, and video Integration adverts. Modular GAML The platform contains a large library of behaviours that can be used to build quests, games, NPCs, conversations, and much more. Few projects require all behaviours; to help keep file size and loading times to a minimum, the behaviours are bunched into modules that can be included as required. This same modular approach means that when a desired feature cannot be achieved with the existing GAML behaviours we have the framework to extend the language. The custom behaviour IP is owned by the customer, and not shared back into the platform library. Typically, the GAML for a room is loaded before the player enters the room. However, there are times where it might not be desirable to load all the GAML up front. For example, a large conversation can be loaded when required, or when a player might gain an advantage by viewing the GAML source, loading can be deferred until required. GAML <ChatRoom id="park" xmlns:xi="http://www.w3.org/2001/XInclude"> <!-- Shared Dubit GAML Behaviors --> <xi:include href="includes/shared/movementBehaviors.xml" /> <!-- Customer owned GAML Behaviors --> <xi:include href="includes/customerName/uniqueBehavior.xml" /> </ChatRoom> Video Streaming Video can be streamed independently or synchronously. Independently streamed video begins playing from the start of the movie when a user first enters the room. In this scenario players will all see the same video but not the same frame at the same time. In other words, if I enter the room 5 minutes before another player then I will be 5 minutes further into the video. If we want the users to be able to talk about the video they're watching we need to synchronise the streams so that we all see the same frame at the same time. Synchronised video requires the server to remember at what time the video started and to inform each player who enters the room what frame to begin watching from. Meta Tiles The Flash Player has support for images up to 2880x2880 pixels. To support rooms larger than the hard bound Flash limits our rendering engine breaks rooms into "meta tiles". A meta tile is a square slice of the larger room image, typically a tile is 1500x1500 pixels, the engine buffers only the visible tiles onto the screen. The use of meta tiles means we can support rooms up to 10000x10000 pixels before the performance degrades. However, to keep download times reasonable we recommend rooms are no larger than 4500x4500 pixels. Third Party Integration Points Modular integration points with external services External Webservice Both the server and client GAML have behaviours for integrating with third party webservices. With only 5 lines of Integration GAML code we can call an external webservice, process the JSON data, and broadcast the data out to the room. Integration with third party services might be used to load a list of film times, connect to an email server, or load SCORM learning content. GAML <CallJsonService endpoint="http://abc.com/ws.js" callbackFunction="process"> <BehaviourDefinition name="process"> <BroadcastMessage message="{input.packet.*}" recipients="all" /> </BehaviourDefinition> </CallJsonService> Login API The Platform requires a database to store information about players, but can integrate with existing user databases through an agreed authentication API. The process can be described as: 1. User authenticates over HTTPS with a third party user database 2. Third party server generates a unique token as a function of the user’s global identifier 3. Third party server returns the unique global identifier and the token to the Flash client 4. Flash client opens a socket connection to the MU Server and sends the unique identifier and token for authentication 5. MU Server validates the token and global identifier using the same secret algorithm used to generate the token 6. MU Server requests user data over a secure channel and returns username and other data to the Flash client. The user is now authenticated with the Dubit Platform installation Mini Game API Multiplayer and single player mini games API was created so that any development team can build a game for the virtual world, not just Dubit; Cartoon Network's game development team built the games for their Mini Match world. The server deals with the process of kicking off a game, either via direct challenge or instant match, and because the Flash library hides the server communication, developers have very little to learn. Game developers do not need to build security into their games, the API encrypts all score data over a persistent socket connection rather than HTTP webservice requests. While it’s still theoretically possible to hack the game, these prevent 99.9% of all attacks. Developers can test their games in a Flex development harness with simulated players. Production Tools Development tools and frameworks Load Testing Load testing a new Platform installation is an important part of the release process. We want to identify hardware Framework configuration errors, bottle necks in the network, or poorly performing code before going live. The load testing harness is scripted to send different types of messages to the server at configurable intervals and with a configurable number of messages. We then determine how many users each test should simulate, and how many times the test should run. Typically a load test client can simulate around 600 users. To simulate many thousands of users we use Amazon’s EC2 cluster. Using EC2 we simulated 40,000 simultaneous users sending messages into Cartoon Networks installation, the whole test required 60 servers costing only a few thousand dollars. Maya MEL Scripts Avatar production requires many hundreds of 3D models to be created and rendered - a typical avatar will walk, stand, wave, and dance, these 4 actions require 110 frames to be rendered out of Maya. A complete avatar with customizable, hair, hats, shirts, pants, and shoes is made up of 550 frames. Our MEL scripts automate the rendering of the frames from an Excel configuration file. Once all the frames have been rendered a Ruby script composites the frames into larger images: its faster to load individual larger images than to load many small images. GAML Post The platform contains a large library of behaviours that can be used to build quests, games, NPCs, conversations, and Processing much more. Few projects require all behaviours; to reduce file size and loading times the GAML files are batch processed through the Compression Tool which outputs one file per room. A single file can be gzipped and loaded quicker than multiple files. Appendix 1: Infrastructure Costs Scaleable cloud platform The Dubit Platform infrastructure scales to support growth computing cloud with intelligent monitoring of load across in demand; not just for sudden traffic spikes but the cluster. throughout the day. As the traffic falls-off in the evening, the system adapts to reduce the number of servers and The hosting costs indicated in the chart at the foot of the page are built round the assumption of a normally lower the hosting bill. distributed flow of traffic over a given 24 hour period. The In addition, should PR & marketing activity drive a burst of distribution is shown in the chart below. traffic, the system can scale with new servers in a matter of minutes. The infrastructure is built on top of a virtual Time over a given 24 period There are 6 components that make up the hosting cost; cached locally and that each player visits 5 busy rooms per Database, Application Server Cluster, Nexus Gaming session. In total each player downloads 40MB of data. Cluster, Load Balancing Proxy, Image Baking Cluster, and Bandwidth. Through optimization of the starting stack we Note that the number of concurrent users shown in the can get the initial hosting costs as low as $600 per graph increases two fold at each interval, so while the chart calendar month, and scale roughly linearly all the way up to suggests an exponential curve it is in fact broadly linear. 20,000 concurrent users and 18M visitors per month. A detailed model is available on request. Bandwidth is, by a long way, the single largest cost. The $100,000 7,000,000 $75,000 5,250,000 $50,000 3,500,000 $25,000 1,750,000 $0 50 100 200 400 800 Concurrent Users 1600 3200 6400 0 Visitors per month Cost Per Calendar Month model assumes a worst case scenario that little data is Appendix 2: Environment Design Projection and style The rendering engine supports real 3D, top down, off-top has been created by Dubit’s creative team and illustrates a down, and isometric projections. A world can use more range of designs; the technology can support almost any than one projection in different rooms. The art work below style, from cartoon cell shading to detailed 3D. Real 3D The 3D rendering engine supports low polygon models and environments constructed from planes and simple shapes. Textures can be detailed and high resolution. The real 3D engine is the most CPU intensive renderer. Users need modern computers for the game to run smoothly. Off-top Down This projection is in between isometric and top down. Like top down it’s suited to larger maps that the player explores, but because the camera is lower more of the players avatar is visible. The camera is fixed, it can not rotate around the room. The art was created in Maya and Photoshop. Isometric In an Isometric room there is no perspective; nothing gets smaller in the distance. Typically the avatars are bigger than the top down variations. Because the avatars are larger isometric rooms are good lobbies, and meeting places. Top Down This projection works well for very large spaces. Typically, the avatar is smaller than other projections so that the player can see more of the surrounding terrain and navigate the large space quickly. This environment was created in Photoshop, some elements were modeled in Maya. Appendix 3: GAML Design Patterns Collectables, locks, and puzzles This section of the document explores a few of the of scripted rules. This new, GAML created, plant could be common game mechanics you might already be familiar collected just like any of the original plants. with from popular games, and how those same patterns are achieved using Dubit’s GAML. Collectables Pac-man to Animal Crossing Rooms The building blocks In almost any game, or online world, you will need to have the ability to change from one 'room' to another Many games feature the idea of some sort of collectible item, or items. Using GAML, the items, their values, their A room is a single environment, each room can use a different render and be a different style. For example, a ship position, and their collectability can be defined. may feature many rooms that a player can move between. In Animal Crossing: Wild World, there are many types of A room may need to be entered by walking through a door, collectable item, including digging up fossils to store or by selecting it on a menu. Both are provided for in them in a museum, or catching bugs and adding them to a GAML terrarium. While each of the types of item has a unique collecting method (digging, catching, etc), these and others The Final Fantasy games series features many can be defined in GAML from the existing base events. For environments that can be considered as rooms. Any example, when the player digs we handle the end of environmental change, whether it be entering a house or animation event to check if a fossil exists in the area. We changing the map, are rooms changes that can be don’t need to create a new special case event. programmed in GAML. Another collectable in Animal Crossing is the plant. A plant The Environment Environment affecting the player can not only be collected, but returned to the environment. Not only that, but the plants in close proximity affect each other. In Sonic Blast 3D, as with most sonic games, the In GAML, a collectable, just like the player, can have its environment affects your player in a very visual way. own attributes and actions associated with it. A red GAML Springs and Slides make Sonic move around the screen. plant may interact with a nearby Yellow GAML plant to produce a new orange GAML plant, merely through a set Looking at the spring as an example, this can be set up in a similar way to a collectable. While the collision with the player won't make the spring disappear, or affect the On the left Nintendo’s Animal Crossing for the DS and on the right the 2005’s PacMan World 3. player's collected items, the collision event can be used to apply a force to the main character that sends them hurtling across the screen. A slide would be a similar affair, but might force the player around a path to another part of the level. Locks & Keys Controlling access to environments It is possible to limit a player's exploration through a world by controlling their ability to open 'doors'. The most Other similar level items might include: common example is when 'a player has a key' and can use • Trap doors to change to a lower level • Conveyor belts that effect a player's movement in one that key to access a room. The key may be a 'use once' direction • Size altering paraphernalia, that make the player small enough to go under low bridge, or large enough to cross deep water. key which might open a door for several people. Or it may also be a key mapped to an individual door that would only let people through who have that key. In practice, a key might not be so literal. It could be a weapon that pushes a switch, much like Alan Grant The actions may also be of the type that affect a player’s opening a gate with his tesla weapon in Jurassic Park. status, such as wealth or energy, but allows them to otherwise continue. An example of this may be lava that With GAML you can add many obstacles, and types of slowly kills the player, or water that starts to hurt the player terrain, that can only be passed if you have a certain object. For example, In Zelda: A link To The Past, Link after a certain amount of time. could collect a gauntlet that allowed him to lift a heavy A Changing Environment Player affecting the environment GAML can be used to open or close certain areas of your environment. bolder that blocked his way. Another example might be wellington boots that allow you to pass a marsh. In Jurassic Park, the player gains access to many indoor areas, which can be passed through to reach other areas In a chat world, or MMOG, the ability to control access to of the main map. These areas use a different graphics rooms can be used as device to encourage progression, or engine, it’s possible to achieve a similar experience with reward players who invest time in the world. For example, a GAML. boat might need one hundred, in-game hours of cleaning barnacles to be used. Once the players have cleaned the In A Link To The Past, there are two versions of the map in two different time zones. By going into the past, moving, boat they can travel to the 'Island Room'. then returning to the future you can access new parts of A more common example of this sort of action, which the world. This too can be achieved using GAML by giving GAML can be used to create, can be seen in games where the player hidden ‘keys’ to unlock new rooms in the future. the story necessitates certain parts of the world to be hidden at the start. In Toejam and Earl, most of the land is invisible when you start the game, but you can bring it in to view, bit by bit, by standing on invisible 'buttons'. Player Attributes Improve the avatars performance The changes GAML can make to a player, or any other entity in its worlds, are not limited to simple on/off The events that trigger new areas to be opened in the switches. GAML could increase or decrease attributes that Grand Theft Auto series are the completion of certain modify the behaviour of the player or other objects. For tasks. A task sequence can be create in GAML by defining a task whose completion event acts as the starting trigger for another event, and so on. Some of these events may trigger more than one new task, creating forks in a story. example, a power-up could make a player's gun cause more damage, fire faster, or enable their shield to take more hits. Time Dependancy Events any place any time that are affected by every encounter. These numerical scales then affect the conversation and other available interactions. GAML objects need not necessarily be added and removed by a level editor manually, the server can generate Many GAML items from the environment can affect these relationships. For example, you may come across a tiny new objects randomly, or on time intervals. miniature trumpet that can be gifted to a child NPC in order In Night Trap, you complete the game by following clues as to gain favor. to the whereabouts of the bad guys. By waiting in the correct location at the correct time, you can complete the The various scales of relationship could also be affected game. In GAML this would mean adding an item that can simply by conversation. Things the main character say can be weighted with attributes that effects a persons feeling be actioned to progress, and tying it to the server clock. toward them. The attributes act as modifiers to the These time-related actions may be incidental to a player's relationship object that two people share. progress through a GAML game. For example, in NIGHTS objects appear differently on Halloween, and the levels are Another way a conversation may affect a relationship in a covered in snow over Christmas. GAML game, is by using the conversation as a path or tree, that must be navigated correctly to find certain Quests And other complex interactions Through a series of smaller events, GAML can be employed to create a deep relationship between the player and any of a game-world's characters. information - information that can act as a key, attribute or a modifier. Monkey Island uses a system like this. By talking to the men of power in the bar, you are given the quests you need to complete the game. This game also uses a unique conversation system to fight battles, where the correct reply to an insult moves a battle to your advantage. In GAML these features are described by If you consider each conversation, and everything you do simple actions and events. for somebody as a task, it is possible to create the situation where the player’s character can effect how NPCs respond to them through the completion of tasks. As an example, in The Sims, every two characters have their feelings for another stored as a number of numerical scales Monkey Island: The games follow the misadventures of the hapless Guybrush Threepwood as he struggles to become the most notorious pirate in the Caribbean, defeat the plans of the evil undead pirate LeChuck and win the heart of governor Elaine Marley. Quest Motivations Why players complete quests an NPC being robbed and stepped in to affect the situation. Though you have had no previous interaction with either the victim or the robber, stepping into the Task: an act which a person has been assigned or situation might alter the outcome and possibly merit a reward. The reward might be a ring if, you helped the commanded to perform. Assignment: one of a series of actions to complete a victim, or an opportunity to aid in future crime, if you helped greater objective. This might involve multiple players acting the robber. in differing roles in one experience; like if the wizard maintained an enchantment and the warrior distracted the guards while the thief opened a chest and stole its contents. Quest Structures Types of quests Duty: is an obligation to a superior, and unlike a task, is Deliver or retrieve: deliver a parcel to another NPC something that is regularly expected. For example, paying Seek and destroy: find something and then remove it. rent on one’s house is a duty. To give the player some Spy or scout and report back: visit an area and report control, the duty does not care how the money gets paid, back to the NPC. its up to the player to decide how he wants to earn it. Steal or acquire item: steal items from NPCs Job: like a task, is a well defined action performed with a Destroy: destroy a door, or building reward clearly in mind. The player should usually know Intellectual challenge: get something working again, help generally what the reward will be before he/she accepts NPCs figure something out, etc. the job. Collect items: find items around the world Favour: like a job, is performed with a reward clearly in Create items: combine items into new items, e.g. for mind (though the precise nature of that reward might be items. unknown), but the reward is a service, rather than material. Sell items: sell to NPCs Service rewards include offering a job or quest, putting in a Buy items: buy from NPCs good word with someone, and allowing access to new Labyrinth: a puzzle that requires feats of action, in territory or NPCs, among others. addition to feats of intellect Impulse: an act which did not originate with a command Puzzle: electronic door locks, codes, clues. or request from an NPC. These are opportunities for rewards or service, but no reward is guaranteed (the reward might be only that you did what was right...or wrong ). An example would be if you happened to notice GTA 2, shown on the left, allows the player to take on the role of a criminal who can roam freely around a big city. Various missions are set for completion, such as bank robberies, assassinations, and other crimes. Zelda A Link To The Past, shown on the right, there are two version or the map in two different time zones. By going to the past, moving, then returning to the future you can access new parts of the world.