80 likes | 220 Views
This guide provides insights into creating networked video games utilizing Ogre, Bullet, OgreBullet, and RakNet libraries. It addresses common challenges in networking games, such as tracking scene nodes and their states, and maintaining synchronization between the server and clients. Key components from each library are highlighted, including Ogre for rendering, Bullet for physics, and RakNet for network communication. The implementation details cover how these libraries can be integrated to achieve a seamless networking experience in gaming, enabling robust interaction and real-time updates.
E N D
Networked Physics Ogre, Bullet, OgreBullet, and RakNet
Introduction • Problems with networking a video game. • Key parts of each library needed to create a networked game. • How the parts of each library work together to help us achieve our goals. • Implementation Details.
Problems with Net Working video game • Knowing when a scene node has been moved. • Knowing when a node has been added into the scene. • Knowing when a node is removed from the scene. • Knowing everything about each changing element within the scene. • There is still more to keep track of but this is only the thing which relate the scene.
Problem Summary • Keep track of scene. • Make updates to the scene. • Compute physics of elements within the scene.
Key parts of each library needed to create a networked game • Libraries • Ogre – Rendering and Scene Graph • Bullet – Physics. • OgreBullet – ties and Bullet and Ogre together. • RakNet – Network communication.
So which parts of our libraries can help solve our goals? • From Ogre • Ogre::SceneNode can be used for keeping track of the items in the scene via name. • Each Scene Node has a name, which must be unique throughout the whole scene. • From Bullet • btMotionState is the class which can be used to receives updates for bullet.
So which parts of our libraries can help solve our goals? • RakNet • We need message identifiers and the ability to send names, positions and rotations easily. • So that means the DefaultMessageIDTypes and the RakNet::BitStream.
So which parts of our libraries can help solve our goals? • From OgreBullet • Because of the nature of OgreBullet we need multiple things from it, being those classes within the library which bring Ogre and Bullet together. • OgreBulletCollision::ObjectState is the type which derives from btMotionState. • OgreBullet doesn’t do anything directly with Ogre::SceneNode creation. Which means we can set the name ourselves.