DemonWare's
State Engine is a high-performance state
synchronization C++ programming framework that eliminates the
need to re-invent netcode for your multiplayer games. This
overview provides some details of what the State Engine
is, and what it is not.
Multi-Platform, Multi-Player
The State Engine has been created with the practical
constraints of modern game development in mind and it respects
the hardware limitations of popular games platforms.
-
Cross-Platform: DemonWare supports multi-platform
development on PS2, Xbox, Xbox 360 Win32 and Linux
-
Flexible:
The DemonWare State Engine avoids external dependencies, such
as use of the STL, and is easily configured to use in-house
memory management tools.
-
Powerful: It supports advanced game networking
techniques such as delta compression, client-side prediction,
extrapolation, interpolation, host migration and late joining.
-
Time-travelling: Well, not quite... but DemonWare
has been designed to be integrated with games at any stage
of development. The process is very well supported and documented
and requires only minimal changes to the existing codebase.
Developer-Friendly
DemonWare's State Engine was created to be a great implementation
of established techniques, as pioneered by multiplayer games
of recent decades. It was designed in close co-operation with
a number of studios, and as a result is very developer-friendly.
What it is
A state engine. The DemonWare engine manages the efficient communication
of your game state between players' computers/consoles.
-
Data-only. DemonWare has no user-interface.
It is a programmer-only tool, and comes as a set of libraries
for the platform in question.
-
Well-Thought-Out. As a set of frameworks,
DemonWare makes it easy to do things right, and hard to do
them badly. Using DemonWare is one big step towards meeting
the networking technical requirements of your target platform(s).
-
Actively Developed. We strive to make
DemonWare as easy to use as possible, and when we spot
a potential improvement, we make it. Also, we keep up
with and try to promote innovations, such as ad-hoc gaming.
What it is not
-
A matchmaking service. The DemonWare
State Engine handles in-game traffic, i.e. the kind of
networking that happens after the game has begun. For
the discovery of game sessions, we recommend our Matchmaking+
product as a solution or can integrate with third party
options.
-
MMOG Middleware. We do not provide a
solution for massively multiplayer online games (MMOGs).
We focus exclusively session based games.
-
A renderer. DemonWare does not do any
graphics, although it has been used painlessly with all
the major rendering engine vendors.
-
A physics engine. Although DemonWare
handles the communication of your game state, it does
not actually generate your game state. In a simulation
game this is largely handled by dynamics code, such as
that provided by Havok or Novodex.
-
A mobile phone product. DemonWare works
on a diverse number of platforms, however it has not been
designed to run on 3G networks, or mobile phone handsets.
DemonWare
Components
When
you licence the DemonWare State Engine, you get three broad
components in the package.
-
The DemonWare transport. This is used by
the two other components to perform all network communication.
It deals with all the ugly, low-level, networking issues,
such as packet loss, ordering, firewalls and NATs. Although
you normally will not need to use this component directly,
you are free to do so for any special network communication
you want to perform directly.
-
The Peer-to-Peer framework. This is framework
that you can easily and quickly extend to get a game up-and-running
in a peer-to-peer topology. It deals with sending user input
around between peers, and ensuring that all peers have sufficient
information to step the game logic. At its simplest, you can
use it by registering an object that can serialize user input,
and an object that can step the game logic. This component
is targetting at a wide variety of titles, e.g., RTS, turn-based,
sports, racing, flight-sim and FPS games.
-
The Client/Server framework.This framework
enables you to quickly get your game running in a client/server
topology. It features every advanced netcode technique found
in state-of-the-art titles such as Unreal, Quake, and Battlefield
1942. This framework follows an object model, which allows
you to fine tune the synchonization of any entity in your
game, all from your C++ editor. There are many features that
you can mix-and-match. Among them are: delta compression,
client-side prediction, data extrapolation, interpolation,
selective updating (LoD or BSP awareness), multiple players
per host, avatar switching (e.g., transferring control from
a character to a vehicle) and interpolation breaks for signalling
discrete state changes.
[back
to top]
|
|