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.