A network-based Pong game, written in C++.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Aadhavan Srinivasan f840ff9c00 Updated comment explaining function 7 months ago
includes Removed ip_ver parameter 7 months ago
subprojects Added raylib submodule, under subprojects directory 7 months ago
.gitignore Added .gitignore 7 months ago
.gitmodules Added raylib submodule, under subprojects directory 7 months ago
README.md Updated README 7 months ago
ball.cpp Fixed misaligned bracket 8 months ago
check_input.cpp Rudimentary support for IPv6 in server socket creation 7 months ago
client.cpp Updated files to reflect change in easysock (from CPP to C) 7 months ago
connect_code.cpp Removed testing code 7 months ago
create_release_mingw.sh Added bash flag to fail if any command in the script fails 7 months ago
create_static_linux.sh Finished script to create and package statically linked binary on Linux 7 months ago
easysock.c Converted easysock from CPP to C, because it was mostly just C code anyways 7 months ago
main.cpp Updated Server and Client constructor calls, so that they don't pass in the IP version 7 months ago
meson.build Updated files to reflect change in easysock (from CPP to C) 7 months ago
numeric_base.cpp Updated comment explaining function 7 months ago
paddle.cpp Created method to set position of paddle 8 months ago
raygui_helpers.cpp Moved display_text_centered() into a separate file, since I could possibly extend this file with other raygui helper functions 7 months ago
serialization.c Replaced 'linux' with '__unix__' because the same header files are included on macOS as well. 8 months ago
server.cpp Updated files to reflect change in easysock (from CPP to C) 7 months ago
sock.cpp Removed ip_ver parameter 7 months ago
timer.c Split timer into header and implementation file 7 months ago
todo.txt Updated TODO 7 months ago

README.md

Netpong - A Pong game for the internet era

Netpong is a network-enabled Pong game, written in C++. It enables two players to play against each other, provided an IP address and a port. It also supports a single-player mode.

How it works

The game has only one runtime dependency: The raylib graphics library. In order to write idiomatic C++, I chose to use the raylib-cpp wrapper, which provides an object-oriented interface to the Raylib library.

Building

This application uses Meson as a build system. To build the application:

  1. Install meson from the link above.

  2. Set up the build directory.

    meson setup build
    
  3. Compile the application. Meson should use a system installation of raylib, if it exists. If not, it falls back to a bundled version.

    meson compile -C build
    
  4. You can also create a statically-linked version of the game (with no runtime dependencies) on Linux by running the following commands:

    meson configure -Ddefault_library=static build/
    meson compile -C build -Ddefault_library=static
    

Running

  • To run in single-player mode:

    • Run the application with no arguments: build/pong
    • Left paddle is controlled with W and S keys, right paddle is controlled with Up and Down arrow keys.
  • To run in multi-player mode:

    • One player runs the application in Server mode, specifying their IP address and a port: build/pong -S <ip_address> <port>
    • The other player connects to the first player by running in Client mode, specifying the first player's IP address and port: build/pong -C <ip_address> <port>.
    • The server controls the left paddle by default (WIP to allow the user to modify this), and the client controls the right paddle.

TODO

See todo.txt.