Networked Multiplayer FPS
This is a networked multiplayer FPS demo developed by me, Brandon Ho, Katie Park, Yuwei Shi, Xufeng Wu. made upon PrimeEngine. PrimeEngine is a preliminary game engine written in C++ with Python and Lua scripts, developed by Artom Kovalovs, and is used as a tool for the course Game Engine Development. For a full description about the game engine development, please see here.
As a leader, I assign tasks for each team member to develop features including physics collision, raycasting upon mouse-clicking and custom model and animation importing. As a programmer, I am implementing features including character controller state machine, network connection between server and clients (early stage) and animation blend techniques (under construction).
- Simple UDP networking
Currently the game uses a UDP networking protocol. The game loop is event triggered. Whenever the player makes a change in position, rotation, pose or firing status, the client send this information through an event to the server, and the server synchronizes this event for all clients.
We are also developing a TRIBES network model for this game. See below for details.
- Physics collision
The game supports box collider, sphere collider and cylinder collider.
- TRIBES network model
The TRIBES network model simulates a TCP network connection using a UDP network protocol. This is because TCP network, though reliable, needs to wait to receive all packets which potentially creates intolerable lag. On the other hand, the unreliable but fast UDP network doesn't have acknowledgement of whether a packet is received, but whenever it receives something, it receive the packet as a whole. Thus the TRIBES network model implements custom acknowledgement to only track the most important information between server and client, and only require the newest of the rest of the information if it is lost on the way. For example, in our game demo, firing event is marked as important information, and thus the system will track and order all firing events between server and client; moving event though is marked as unimportant information, and the system will only require the newest position after timeout.
- Animation blending
Currently the animation system supports additive animation. You can see in the second demo video that the other soldier can aim at the same time running.
Physics engine and weapon system
TRIBES Network model and animation blending