Go to file
Barra Ó Catháin ff01152aa1 UDP data going back and forth 2023-07-06 00:22:59 +01:00
src UDP data going back and forth 2023-07-06 00:22:59 +01:00
.gitignore Initial commit 2023-05-22 14:29:15 +01:00
LICENSE Initial commit 2023-05-22 14:29:15 +01:00
README.org First Steps and link to article series 2023-05-22 15:19:21 +01:00

README.org

Client-Side-Prediction-Test

An example of client-side prediction for networked games, as research and training for 'Spacewar!'

What is this repository for?

I realized that the current netcode of Spacewar was fine for simply running two instances of the game on the same computer; but it would not hold up to latencies of actual networks nor would it be able to do any structured communication due to being entirely over UDP. I knew this when writing it, but I needed to learn how to do it properly first. Hence, this repository. I will be keeping notes on the techniques and a devlog as I come up against any issues.

Developer's Log:

Entry 00: Intentions:

I intend to build a simple networked "game" where players can join a server using a client, and then move around in an empty 2D space where they can see other players. I intend to have the positional data transmitted over UDP, and command data transmitted over TCP, such as allowing the connection and disconnection of players. This simulation must be relatively resistant to latency issues, and must be reasonably smooth.

This will provide a simple enough simulation to learn the techniques, while also being similar enough to "Spacewar!" so that it's not too big of a stretch to update that project's netcode. It may be cute to have this be some sort of chat program, but that's another project for another day.

For now, circles moving around in an empty space that move smoothly over network connections is the goal. Let's get started!

Entry 01: First Steps:

I think my first step will be creating the TCP portion of the client-server interaction. This should be relatively trivial, so I can get right to it. Simply transmitting a few integers back and forth will do well.

Notes On Techniques:

Entry 00: Where I'm Learning All This From:

I'm using a series of articles from gabrielgambetta.com, which seem to be well written, and reasonably clear. (So big thanks, Gabriel!) I intend to note my understanding as I progress through these articles (while simultaneously implementing them), and therefore provide a more practically based version of the information. Will it be better? Possibly, though unlikely!

Fast-Paced Multiplayer by Gabriel Gambetta