branw / sans-serif-bros

๐Ÿ”  A classic ASCII platformer, now played through Telnet

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sans Serif Bros.

A classic ASCII platformer revived with a Telnet interface

Screenshot

Progress

  • Game
    • Implement original game logic
    • Recover and import original default levels
    • Add interface for exploring the default levels
    • Add additional info to game HUD
  • Telnet
    • Implement basic spec
    • Create framework for terminal input processing and output rendering
    • Support Telnet window size options (RFC 1073)
    • Support user persistence (e.g. keeping statistics between sessions)
  • Level Pit
    • Recover and import original user-submitted levels
    • Track level attempt statistics
    • Add level attempt playback
    • Add level creator
  • Internals
    • Support single-player and multi-player configurations
    • Support Linux builds
    • Support macOS builds
    • Support Windows builds
    • Use SQLite as a data store

Building

ssb requires CMake, a C11 compiler, *nix headers, and SQLite (optionally installed with the included vcpkg manifest).

To build and run unit tests:

cmake .;
make;
ctest --verbose;

Playing

ssb can ran as either a multi-player Telnet server, or as a single-player terminal game.

Both modes require a database and optionally, a folder of existing levels to import. The path to the database file can be specified using -d path/to/db.sqlite (defaulting to ./ssb.sqlite otherwise), and the path to the levels folder can be specified using -l path/to/levels/ (defaulting to ./levels/).

As a Telnet Server (Multi-Player)

ssb is designed to run as a Telnet server, allowing multiple simultaneous players and player-submitted level designs.

  • To run the server:

    ./ssb
  • To connect as a client locally:

    telnet 127.0.0.1

Port Choice

Traditionally, Telnet servers are exposed on port 23. Linux, however, prevents non-superuser access to privileged ports, i.e. ports below 1024. You can either:

  • Run ssb as root (bad idea):

     sudo ./ssb
  • Give the ssb binary the CAP_NET_BIND_SERVICE capability (better idea):

     sudo setcap CAP_NET_BIND_SERVICE=+eip ./ssb
  • Run ssb on a higher port:

    ./ssb -p 8080

As a Terminal Game (Single-Player)

ssb can also be ran serverless via standalone mode:

./ssb -s

History

"Super Serif Brothers" was a web platformer created by Robin Allen in the early days of the internet. This is a faithful recreation that takes the ASCII game one step further and brings it into the terminal.

The original game included fourteen 80x25 character levels, plus a "level pit" where netizens could share their own level designs -- some wonderful works of art that pushed the format to its limits, among other levels that serve as more of "digital graffiti." Unfortunately a good chunk of these player-submitted levels have been lost to time. Those that could be recovered are included, along with the original fourteen levels, in the levels directory.

License

ssb is released under the MIT License. See LICENSE for more information.

About

๐Ÿ”  A classic ASCII platformer, now played through Telnet

License:MIT License


Languages

Language:C 97.8%Language:CMake 1.5%Language:Python 0.6%Language:C++ 0.2%