Introduction to HeroCloud
Leveraging the award winning Massive Multiplayer development platform HeroEngine, HeroCloud is the complete solution for the development of Massive Multiplayer, Social Games, and games for the Web.
HeroEngine is a sophisticated, and feature-rich, MMO and virtual world development platform. It utilizes a unique development paradigm that is vastly more efficient than the traditional ways in which computer games are developed. This new way of working features massively collaborative, real-time world building and instant testing. The tools of HeroEngine have been engineered from the ground-up to enable this revolutionary way of developing MMOs.
HeroCloud takes the best MMO development platform and makes it even easier to use by removing all of the difficulties associated with server hardware setup, software installation, database management and backups - all of which allows your team to concentrate on your product, starting on day one.
The HeroEngine Way
HeroEngine introduces a radical new way of developing your game that makes working on your new product not only much more productive, but a lot more fun! This section discusses the groundbreaking HeroEngine Way and how you can benefit from it:
The Paradigm Shift
Traditionally, game development is made very difficult because of the existing methodologies. Commonly, members of the team each work in isolation, in their own sand-boxes. Then, through sometimes torturous mechanisms, the different pieces are painstakingly merged or cobbled together on some regular or need-driven schedule. As the project progresses, the time it takes to do this, and the difficulty involved, can overwhelm any progress being made. This friction between isolated developers is a large part of the reason that traditional game development takes so long.
HeroEngine addresses this problem head-on, with a unique and revolutionary approach. Here is what you'll find to be the HeroEngine way:
The Real-Time Paradigm
Everything you do in HeroEngine is immediate. Add to the world, play in it instantly. Add new game mechanics, or alter existing ones, and that's how it plays immediately. Create new art, just drop it in and you can add it to the world. This philosophy eliminates the vast majority of the friction in game development.
Warning! Once you've experienced it, you may never want to go back to the old ways again!
The Collaborative Paradigm
The power of collaboration is tremendous. Imagine any number of people working, simultaneously, on the same game. Entire teams building out the same environment. They can be anywhere, working from different studios, their homes, or even different contintents, it doesn't matter. In the same way that MMOs bring people together when playing a game, HeroEngine brings developers together to build a world.
The Live Paradigm
Everything you do is "live", which means that it is not only immediately available to you, but to everyone else as well. Your art team can be dropping in textures and models, and your world builders, perhaps located in a different studio, instantly have access to the new art. Other teams can simultaneously be building game mechanics, or missions, or developing AI. With a click or a key press you can move between building your game and playing your game instantaneously.
What is included?
- A turn-key online games solution
- Unlike some "engines" that are just client renderers leaving implementation of complicated glue code tying the renderer to servers (which you must write, or license separately), everything you need to get started is included allowing your team to be productive from day one!
- A worry-free solution
- Provisioning hardware, installing and upgrading software, backups...we do it all so you do not have to!
- A toolset that is more advanced than those used by the biggest names in the industry
- We love tools. Not only does HeroEngine sport an extensive set of tools, it allows you to build your own tools.
- Model it, export it, then drag and drop. It is immediately available for use in the engine.
Both are similar in that they share in common a lot of the features of HeroEngine including its best-in-class development toolset and unique development paradigm (live, collaborative...all in real-time). HeroEngine was then modified to be uniquely suited for each product's divergent needs.
HeroCloud is designed to:
- Handle the demands of social games with millions of users in a session based, connectionless, asynchronous environment where communication between server and client is kept to a minimum. See the section discussing Social Game Best Practices for greater detail.
- Handle the game play traffic of a connected Massive Multiplayer Game with constant communication passing between server and client for games like World of Warcraft.
Quick Start Guide
This quick start guide is intended to get your team get into your world and be productive as soon as possible.
- While it is not as exciting as jumping in and starting, we do recommend that each team member spend some time reading this page and then exploring the documentation.
Sign Up and Get Your World
Since you are here, you already completed this step and successfully have a world up and running.
Community and support are available on theHeroEngine forums
Emergency support is available at email@example.com
Account Management/Documentation Access
The administrator account (see confirmation email) has access to the management functionality of the Account Management System and can create new user accounts up to the seat limit for the product. If there are other team members working on the project, they would probably appreciate having accounts made now. New accounts should be active within a few minutes following creation.
Each user account has access to this wiki, application downloads and your world.
Once you've filled out the sign up form the setup of your server in the cloud will start. Typically, setup is completed within 48 hours except on weekends. Upon completion of setup, an email will be sent to the email address on record for the administrator account.
Client Application Downloads and Installation account.heroengine.com website. The correct HeroBlade for your world will be listed on the main page.
- Microsoft Windows XP
- Microsoft Vista x32 and x64
- Microsoft Windows 7 x32 and x64
- HeroEngine Launcher - (install this first) This application handles connection to a launch server to auto-update HeroBlade and the RepositoryBrowser.
There are two client applications that should be installed on each user's computer:
- HeroBlade - HeroBlade is the primary development tool for HeroEngine with artists, programmers and level designers using it.
- RepositoryBrowser - The RepositoryBrowser is primarily used in conjunction with the Art Pipeline to add art assets to your world.
Once installed, you should find shortcuts to these applications in your Start Menu in a folder named HeroEngine.
...and now you are ready to login
- Using the shortcut launch HeroBlade
- Enter the user name/password and click the "Login" button
- Select your world by clicking on it (if you don't see your world listed, you are most likely using the wrong HeroBlade)
- Click the "Enter World" button
- Please be patient, your initial login will take MUCH longer than any subsequent login because HeroEngine is streaming down content to your computer to store in its Local Repository Cache. Once content is downloaded it never needs to be again unless there are updates.
Explore your World
- Click on the "Create New" button, this will move you to a character creation area
- Choose a Name
- Click Male or Female
- Click the Finished Button
Now you will enter the first of two pre-built areas included, both of these areas are configured to always place you in what is called a "Play Instance" which you can think of as a sandbox. Nothing you do to these two areas will persist after the area shuts down. If you modify these areas and would like to revert them to their original state, use the organizer panel's areas tab to shut down the instance (or go to a new one).
Explore Area: Fantasy Lowlands
This area demonstrates the following:
- Please note, the game systems in your world (such as combat) are very simplistic implementations in the style of a connection oriented MMORPG intended to demonstrate some basic concepts. They are not systems optimized for a social games (see Social Game Best Practices)
Character movement is based on the standard WASD+mouse navigation and can be found in the client scripts
Input_Camera. The key input can be observed by opening HeroBlade's Input System panel (additional information on HeroBlade's panels).
Once a key press is interpreted, the response is handled by the Advanced Customizable Character Controller found in the client script
E_ACCControllerClassMethods. A quick and fun thing to do here is to modify the force of gravity by opening up that client script using the Script Editor, by searching for 0.98 (m/s i.e. gravity) and changing it to something 0.06 compile and submit the script. Now, hit the
spacebar to jump...and catch some really great air.
Explore Area: Modern Oil Refinery
Next stop is a more modern area.
The second sample area is called "Modern Oil Refinery" and is intended to demonstrate an environment suited for serious games applications or first-person shooters. When you enter the area several changes will occur; your character's appearance will change to that of a man wearing a hard hat and the game UI will be hidden (don't worry, when you leave the area your appearance will revert).
The Modern Oil Refinery can be reached using the Organizer Panel to travel to it (Organizer panel#Areas_tab); by selecting the area in the list, right-clicking on it, and selecting "Go to Instance->New Instance". Check out the Quick Start Guide for more detailed instructions.
Setting up the Art Pipeline is comprised of three steps:
- Install the RepositoryBrowser
- Setup 3ds Max or Maya
- and coming soon, exporters for FBX!
- Create an Art Server
We already installed the RepositoryBrowser, so we're already down to just two steps.
To setup your 3ds Max or Maya installation, please visit their respective pages:
Finally, the setup of an Art Depot. An Art Depot can be as simple as a shared folder on a workstation, to a Network Attached Storage solution. Whichever you choose, remember to perform regular backups of your source files.
Detailed instructions and explanations on why you need an art server are located on the Art Depot Setup page (Art_Depot)
HeroCloud utilizes VM servers running in one of a number of different cloud computing services, such as Amazon's EC2, running in a data center located in a region close to you (based on selection during the order process). Each installation shares physical resources with a number of other installations, in this manner we keep our costs low so we can provide access to a large scale triple-A MMO development platform at an affordable indie price.
For some customers, the limited seats and shared resources of an installation will be all that they ever need. Customers moving from development to the production population and loads of an large scale MMO, are ultimately moved to dedicated cloud instances.
In the event of emergency maintenance becoming necessary, notification will posted on the forums detailing the nature of the issue and an estimate of when service will be restored.
Components of HeroEngine
- HeroBlade is the client software, the fully integrated world and game building tool.
- The Repository is a server database of all game assets. You manage the content of the Repository with the Repository Browser tool.
- How art gets from your artists, into the game world. Create the art in Autodesk Max or Maya, copy it to the Repository using the Repository Browser, and then it is instantly available to any of your developers. FBX exporters coming soon!
- In HeroEngine, building an MMO looks and feels much like playing an MMO. Each developer uses client software tools on their PC, such as HeroBlade, which connect to a server cluster. Unlike traditional methods of game development, the actual world and game building takes place online on the servers rather than on your PC. Think of a client like a window which lets you see what is going on in the servers. The servers host the databases, the gameplay areas, and the scripts that run systems such as combat. The servers are where the world is built. The servers then communicate any changes to all the connected clients.
- An area is a section of the world (like a game level). Each area in a world can have multiple instances (copies) of it running at the same time. One of these is special, an Edit instance which can be changed. The rest are Play instances. Edit instances are where you make changes to an area. Play instances are copies of the edit instance. Changes to the Play instances are not persisted (saved).
- Instead of programming a game in a language such as C++, we have created a powerful scripting language called HSL, specifically for MMO development. It allows for maximum flexibility and control in a fully protected environment (can't crash the game or server). It allows for real-time changes to game logic. No more waiting for an entire recompile!
While the vast majority of the documentation is applicable to HeroCloud, there are sections of documentation that are applicable only to our source code customers or customers maintaining their own servers. Consequently we have devised tags to help identify those pages:
Documentation on this page is intended for use by customers who have access to HeroEngine source code under their license agreement.
Documentation on this page is intended for customers of HeroEngine managing their own server(s).
While there is no reason not to read those pages, please be aware that they may document features or technical details that are not particularly relevant to HeroCloud customers.
Likewise, there are tags that identify pages that are specifically relevant to HeroCloud customers.
The landing page for the wiki is located at Main Page.
- It is recommended that all members of the team, be they design, art, management, programmers, or anything else, should do these:
- Install HeroBlade on their own computers
- The easy "installing HeroBlade" tutorial will walk them through not only software setup, but also configuration, and how to move around in the game world
- Work through the Creating an area tutorial
- Easy level tutorial: It is recommended that each member of the team create their own "test area" to get familiar with the tools, and gain a basic familiarity with the HeroEngine environment
After completing the Creating an area tutorial, we recommend each member of the team choose one or more of the following tutorials and concepts, depending on their particular areas of interest:
- Assign multiple members of the team to work together on building the same area, working through some of the suggestions in Creating an area.
- Add Heightmaps
- Heightmaps are one of the basic building blocks of areas. Be sure to experiment with the many options available in the Terrain Panel!
- Beginner-level tutorial on creating special effects with the particle emitter system
- Beginner-level tutorial on creating an invisible path or track, and then setting an automated path follower to move along it
- Beginner-level tutorial on creating water effects
- Intermediate-level tutorial, on how to create a multi-part Fx, which includes a particle effect
- Have team members leave GM Notes for each other
- With the GM Notes system, you can grab a screenshot, draw on it like a drawing board, and pass the information to a remote teammember
The Art Pipeline
- Main page: Art Pipeline
- Explanation of the scripts needed to export art from 3D Studio Max to a format which can be used in the Repository Browser
FBX support coming soon!
- This tool allows you to get art from your artists (models, textures, animations) into the Repository.
- The part of HeroBlade that allows your game designers to import art from the Repository into such things as the Asset Library
- One of the workhorses of development, this allows your game designers to access the assets in the Repository and choose what to place into the world
- Advanced tutorial for artists: Creating art assets which are designed to be stationary
- Advanced tutorial for artists: Art assets which are designed to move in some way
- Advanced: All the steps and processes needed to create and modify the art and definitions for a game character
- Detailed instructions on how to create the various art assets used in HeroEngine
- Quickref: HSL for programmers
- The quick-reference for programming geniuses who just want to know what's different about HSL, the HeroScript programming language
- Tutorial: How to write a script
- An easier step-by-step tutorial to walk you the creation of a client script. Even non-programmers can work through this to get a feel for the process.
- Tutorial: Creating server scripts
- An easy tutorial for creating a simple command script that runs on the server, instead of the client
- DOM, the Data Object Model
- The DOM is the set of data structure definitions. This is where classes and fields are defined.
- GOM, Game Object Model
- The GOM is where the data structures of the DOM are filled in with actual data. The GOM is a giant collection of nodes, defined by classes
- Information about nodes and their class definitions, and how to create each and tie them together
- The IDE used to program HeroScript(HSL)
- Information on the basic building blocks of scripts
Social Game Best Practices
A social game with (hopefully) millions of players has different technical and performance characteristics than a Massively Multiplayer Online RolePlaying Game (MMORPG ) like World of Warcraft.
- Session Oriented
- Connection Oriented
- Synchronous and Asynchronous
- Session Oriented
Session oriented services (in contrast to discrete services) allow for a longer connection duration and response to external (asynchronous) events. The stereotypical Instant Message program is an example of a session oriented application where events (such as a friend has just logged in) can be communicated to an established session to do something (such as pop up a notification window).
Connectionless protocols function under the premise that the receiver does not necessarily have any state and must be provided all of the information it requires to process a transaction. Communication is based on self-contained packets of data (datagrams) exchanged independently and without reference to other datagrams. A connection oriented protocol establishes and maintains state about the connection and often involves a two or three-way handshake. Consequently, connection oriented protocols have a high initial overhead which can be amortized over the duration of the connection (which makes them less suitable for frequent transitory connections).
Asynchronous services respond to requests at some point in the future and can not be relied upon to provide an immediate response. Social games are typically fully asynchronous with the minimal server involvement servicing infrequent requests by the client at some point after they come in. MMORPGs such as World of Warcraft typically operation in a mixed mode where some operations are immediately acted upon and others are responded to asynchronously (for example, casting a spell might immediately process in the server, but opening up the auction house to view items is asynchronous with the response coming...eventually).
Minimal Server<->Client Communication
Social games (and especially, Free-to-Play ones) must maintain careful control of their costs and in particular costs associated with bandwidth usage. Where a subscription-based MMORPG is constantly sending character movement packets and other game traffic, a social game communicates rarely with the server (probably no more than a few times per minute) and receives as little traffic from the server as is possible.
Caching is an important technique in reducing bandwidth consumption. Take for example the stereotypical social Farm game. When the user starts to play, you could have the server send all of the information required to instantiate their farm...A better way would be to store the farm in the Local Repository Cache ((LRC) with a time stamp and during login check to see if the file matched the server's timestamp and if so use the locally cached information. Using the local cache in this manner reduces the bandwidth from many kilobytes of data, down to as little as a few hundred bytes.
Client-Based Processing reduces bandwidth consumption by allowing the client to process the majority if not all game play and then sending an occasional update to the server. The server is then responsible for determining whether or not what the client claims is reasonable and then applying or rejecting the message. You may have experienced a server-based rejection in social games where you had to reload the webpage to proceed because the server decided what your client claimed occurred was not reasonable.
Trust But Verify
Social games typically execute significantly greater amounts of their game logic on the client generally trusting the client to do the right thing and then verifying the minimal updates the client sends the server. This is different from MMORPGs where most actions triggered on the client are sent to the server to process and respond back to the client (and other interested parties) with the results.
Server Area Geometry Rarely Changes
Area geometry (the collection of the ground, trees, buildings, etc) leverages the Local Repository Cache (LRC) to cache files related areas including not only list of all of the instances and their properties but also the collision data to represent the area in physics. These files can be large, if the server geometry is modified frequently in a social game with millions of players the bandwidth consumed to communicate the new data can be prohibitively expensive.
This should not be confused with local changes to an area which are achieved using the Prop buckets mechanism to instantiate objects locally on the client without modifying the server geometry.
Want to know more?
- Check out our entire set of documentation.
- Various tutorials spanning from art to scripting.