Client-Side-Prediction-Test/README.org

45 lines
2.3 KiB
Org Mode
Raw Normal View History

* 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.
2023-05-22 14:19:21 +00:00
* 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!
[[https://www.gabrielgambetta.com/client-server-game-architecture.html][Fast-Paced Multiplayer by Gabriel Gambetta]]