An Area is an arbitrary segregation of your game world's physical geometry and/or game logic processing. Essentially your game world is a collection of Areas. Each is either a 'chunk' of the physical world or a special area that processes game logic in a scalable manner (like an auction system area).
The function and behavior of Areas is entirely under HSL control.
A collection of Areas is called a World.
- Is an isolated collection of game assets (optionally)
- Is a unique server process, called an area server process, which executes on the server cluster.
- Runs a local GOM to manage the nodes which are loaded.
An Area can:
- Be instanced any number of times under HSL control
- Have a special "edit" instance (instance 0) that persists all edit changes
- Manage users, as in a physical segment of your world
- Manage game logic in a scaleable manner, called System Areas
Area servers can:
- Communicate with each other
- Communicate with game clients
There is a special area server, called the World Server, which manages Area server spin-up and coordination.
An Area Instance is isolated from other Area Instances. Which means that what happens in one does not affect or can be "seen" in another.
For some MMOs, it is desirable to have a continuous world. To do this, the individual area instances that make up the world can be linked together to create this effect. This is called Seamless world.
Using this feature, a player can walk their character across the boundary between two Area instances. In fact, they can see and interact with other players, creatures and objects (limited to how you've coded your game) across these boundaries. So from their perspective, there isn't any boundary at all.
To take advantage of this, HeroEngine provides a way to create proxy nodes as stand-ins for real nodes on the "other side" of an Area instance boundary. In Area A exists the real node, and in neighboring Area B, exists its proxy. As such, all game systems have to understand and work with proxies or real nodes equally. So although HeroEngine does a lot of the hard work for you, the architecture of your game systems must take seamlessness into account if you wish to use this feature.