Ophelia User-friendly Network Multi-player Game Engine Albert Öhrling
Project Goals To create a game engine for networked multiplayer games.
Project Goals To create a game engine for networked multiplayer games. It will be possible to program games as if they were local multiplayer titles.
Project Goals To create a game engine for networked multiplayer games. It will be possible to program games as if they were local multiplayer titles. The engine is accessed from a user-friendly interface.
Requirements A set of basic systems to create games from.
Requirements A set of basic systems to create games from. Object Management
Requirements A set of basic systems to create games from. Object Management Messaging
Requirements A set of basic systems to create games from. Object Management Messaging Graphics
Requirements A set of basic systems to create games from. Object Management Messaging Graphics Input
Requirements A set of basic systems to create games from. Object Management Messaging Graphics Input Movement
Requirements A set of basic systems to create games from. Object Management Messaging Graphics Input Movement Collision Detection
Requirements A set of basic systems to create games from. A suitable test environment
Requirements A set of basic systems to create games from. A suitable test environment A set of useful development tools
Development Tools
Architecture
Event-Driven Design Game modules communicate with events and callbacks.
Event-Driven Design Game modules communicate with events and callbacks. All custom scripts are invoked on events.
Objects Game Objects are modular
Objects Game Objects are modular
Objects Game Objects are modular Game Object are malleable
Objects Game Objects are modular Game Object are malleable Developers can define their own templates
Objects Game Objects are modular Game Object are malleable Developers can define their own templates Developers can define their own feature modules
Synchronization Game state synchronization is invisible
Synchronization Game state synchronization is invisible Achieved with custom setters
Synchronization Game state synchronization is invisible Achieved with custom setters
Synchronization Game state synchronization is invisible Achieved with custom setters Only update game state when the server notifies the client.
Synchronization Game state synchronization is invisible Achieved with custom setters Only update game state when the server notifies the client.
Problem Developers have to pay attention to on which machines their scripts execute.
Solution
Synchronization changes
Solution Synchronization changes
Problem Sending messages at the same time does not guarantee that they arrive simultaneously.
Solution Batch state changes that occur in the same update tick.
Solution Batch state changes that occur in the same update tick. Distribute them to the clients as a single message when the next tick begins.
Project Goals To create a game engine for networked multiplayer games.
Project Goals To create a game engine for networked multiplayer games. Success!
Project Goals To create a game engine for networked multiplayer games. Success! It will be possible to program games as if they were local multiplayer titles.
Project Goals To create a game engine for networked multiplayer games. Success! It will be possible to program games as if they were local multiplayer titles. Success!
Project Goals To create a game engine for networked multiplayer games. Success! It will be possible to program games as if they were local multiplayer titles. Success! The engine is accessed from a user-friendly interface.
Project Goals To create a game engine for networked multiplayer games. Success! It will be possible to program games as if they were local multiplayer titles. Success! The engine is accessed from a user-friendly interface. Success!
Example
Evaluation All design goals were met.
Evaluation All design goals were met. Most importantly; making games with the engine is easy.
Evaluation All design goals were met. Most importantly; making games with the engine is easy. When problems arose I was able to solve them with good tools.
Evaluation All design goals were met. Most importantly; making games with the engine is easy. When problems arose I was able to solve them with good tools. Testing in a real environment would have been nice.
Questions?