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

The game setting. Mostly useful if you want to try to write client-side movement prediction, AI, etc.

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 often. 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 15 milliseconds worth of input together, and send that. That's just faster than frames are sent by the server (60fps = 16.7ms). The server should be able to handle ~67 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

A single player's 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)

GameControlMsg

Various game control actions. Used by the networking module and the server.

InputEvent

InputEvent represents input based on the window that is being displayed, such as someone closing the window, the mouse moving around, or buttons being pushed.

PlayerEvent

A player 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.