Go to file
2025-01-05 01:36:15 +00:00
cmd/server First commit 2025-01-05 01:28:01 +00:00
internal First commit 2025-01-05 01:28:01 +00:00
config.json First commit 2025-01-05 01:28:01 +00:00
go.mod First commit 2025-01-05 01:28:01 +00:00
LICENSE First commit 2025-01-05 01:28:01 +00:00
README.md Update README.md again 2025-01-05 01:36:15 +00:00

Tetricide Server

Tetricide is a modern revival of the classic TetriNET game. It aims to be fully compatible with the original TetriNET protocol while providing a clean and efficient codebase in Go (Golang). Whether youre nostalgic for old-school multiplayer Tetris battles or simply curious about building real-time networked games, Tetricide is here to scratch that itch.

Features

  • Classic TetriNET Protocol Join with existing TetriNET clients or write your own.
  • Configurable Server Define your listening address/port to easily deploy in different environments.
  • Scalable Architecture Written in Go for speed, concurrency, and straightforward code.
  • Room/Channel Management Organize players into different channels for separate matches.
  • In-Game Mechanics Handle line clears, special items, garbage lines, and more (in progress).

Getting Started

Prerequisites

  • Go 1.19+ (or whichever version you prefer)
  • A machine running Linux, macOS, or Windows (Debian-based Linux is our primary target for now).

Installation

  1. Clone the repository: git clone https://git.ewnix.net/phlux/tetricide-server.git cd tetricide-server

  2. Initialize or update go.mod: go mod tidy

  3. Build: go build ./cmd/server

Configuration

  • Edit the JSON config file located at the project home/config.json to your liking. By default, Tetricide listens on all interfaces (0.0.0.0) on port 4000.

Running

You can run Tetricide with either the compiled binary or go run:

  • Using go run: go run ./cmd/server

  • With the compiled binary: ./server

Tetricide will then listen on the specified address and port, ready for TetriNET clients to connect.

Usage

  • Join the server using a TetriNET-compatible client.

  • Test connectivity with netcat or telnet: nc 127.0.0.1 31457

    You can then send basic TetriNET commands (e.g., player MyNickname) to see if the server responds.

Protocol Overview (Work in Progress)

  • player Registers or changes your player nickname.
  • team Joins (or creates) a named channel.
  • startgame Signals the channel to start (if all players are ready).
  • pline Sends a private line message (chat).
  • ... Additional classic TetriNET commands to be implemented.

Roadmap

  • Basic server listening (TCP)
  • Configurable address and port
  • TetriNET protocol parsing (partial)
  • Room/channel management (in progress)
  • Full game flow (start, line clears, items, endgame)
  • Detailed logging and admin tools
  • Docker/container support

Contributing

Contributions are welcome! Please open an issue or submit a pull request if you:

  • Encounter a bug
  • Have a feature request
  • Want to help with documentation or testing

License

Tetricide is licensed under the MIT License.