Module rusty_sword_arena::game[][src]

Everything in the game module is shared by the server and the client

Structs

Color

A color with 32-bit float parts from [0.0, 1.0] suitable for OpenGL.

GameSetting

Server returns a GameSetting in response to receiving a PlayerSync Game settings and player names and colors (including your own) are all in there. You will need to re-parse this every time someone joins or leaves the game.

GameState

Once per frame, the server will broadcast a GameState to all clients. IMPORTANT: If you don't receive a GameState for 2 full seconds, the client MUST DROP its ServerConnection (or just exit entirely). The underlying networking that we're currently using hides network disconnects, which can leave the networking in a funky state if one end drops. So we need to rely on detecting this heartbeat and shutting down the clients to ensure networking is clean when the server restarts. (In the future, lets switch to a protocol that can detect disconnects...)

HighScores

High Scores! High scores are reset every time the server restarts, but other than that they are persistent across joins/leaves.

PlayerInput

Clients should send PlayerInputs to the server ASAP. The quicker the server gets inputs, the more accurate the simulation will be. But of course, you also shouldn't overload the server with too much traffic, because that's bad too. Good rule of thumb: Coalesce 4 milliseconds worth of input together, and send that. That's about 4 times faster than frames are sent by the server (60fps = 16.7ms). The server should be able to handle ~250 pkts/sec per client. I hope.

PlayerState

The state of a player on the server. The server broadcasts these to all clients every frame as part of a FrameState. Note that you can receive PlayerStates before you have gotten a corresponding GameSetting telling you their name and color!

Score
Vector2

2D Vector (x, y) that can represent coordinates in OpenGL space that fill your window, or velocity, or whatever other two f32 values you need. The OpenGL window is (-1.0, -1.0) in the bottom left to (1.0, 1.0) in the top right.

Weapon

A weapon a player may hold

Enums

ButtonState

Whether a button was pressed or released

ButtonValue

Abstracted button values you may receive (arrow keys and WASD keys combined into directions, for example)

Event

Client Events that may occur

GameControlMsg

Various game control actions. Join a game, leave a game, just fetch updated game settings.

PlayerEvent

An event that has happened to your player this frame! Note that it's possible to receive a whole bunch of events in the same frame.

Traits

Floatable

Convenience trait that adds an .f32() method that returns a 32-bit float representation of something. Implemented for std::time::Duration and rusty_sword_arena::timer::Timer.