Introduction
Goal: Develop a tool that supports collaborative game content development.
Game Content Game World Model Placement Terrain Generation Special Effects Etc.
Terrain Editing
Focus: Developing collaborative Terrain Editing features.
Terrain Editing Create new pieces of Terrain Manipulate Terrain
Raise Lower Flatten Smooth
Problems
Synchronization Client Data matches Server Data Client synchronizes to the active Server State
Processing Terrain Height editing operations and keeping client and server synchronized
Design
Client Server Architecture Lidgren Networking Library Synchronization Process Server State Client State Edit Requests
Networking Library
Lidgren Networking Library for C# Uses UDP Sockets Provides support for four delivery methods...
Unreliable unordered Reliable unordered Unreliable unordered Reliable ordered
Synchronization
Two Steps: File Synchronization
Client synchronizes files with the Server State Synchronization
Client synchronizes the active data with the Server
Once Synchronized Client can being editing.
Server State
Holds the terrain height field data Stores a set of terrain height data files Edits effect the height field data
Client State
Holds the terrain height field data Uses this data to generate Terrain Meshes Uses this data to generate Triangle
Information for collision detection and triangle picking operations
Stores a set of terrain height data files. Edits effect the height field data, the terrain
meshes, and the triangle information.
Edit Requests
Two types of Terrain Edit Requests Terrain Creation
Location on a flat grid of terrain pieces Terrain Edit
The location of the edit The edit operation Edit strength, range
Server processes these and forwards the requests to all other clients.