2048을 단일 C 파일로 만든 오픈소스 프로젝트 2048.c의 제작자가 터미널에서 최대 100명이 함께할 수 있는 테트리스 게임 tetris-together.c를 공개했다. 게임은 C 표준 라이브러리와 리눅스의 POSIX 인터페이스를 사용하며, 별도 의존성 없이 빌드할 수 있다.

제작자는 다음 명령으로 게임을 빌드하고 실행한다고 안내한다.

make ./tetris-together

Makefile은 편의를 위한 것으로, 컴파일러에 -std=c99를 전달하고 수학 라이브러리를 연결한다. 게임은 ncurses 대신 termios로 터미널을 원시 모드로 전환하고 ANSI 이스케이프 코드로 화면을 그린다. 화면 전체를 다시 그리는 대신 바뀐 칸만 갱신하며, 화면 깨짐을 줄이기 위해 동기화 출력을 사용한다.

게임은 혼자 하는 마라톤 모드와 난이도별 봇 대전, 여러 사람이 참여하는 네트워크 대전을 지원한다. 로컬 네트워크에서 주소 없이 참가하면 게임을 자동으로 찾는다. 참가자들은 같은 블록 순서를 받고 원형으로 연결된다. 없앤 줄은 오른쪽 플레이어에게 방해 줄로 보내고, 왼쪽 플레이어에게서 방해 줄을 받는다. 플레이어가 탈락하면 그 방향의 다음 플레이어가 자리를 이어받는다.

조작과 규칙은 벽 밀기 회전을 포함한 SRS 회전, 7개 블록 가방 방식, 블록 보관, 다음 블록 5개 미리보기, 고스트 블록, 고정 지연, T-스핀, 연속 클리어 보너스와 전체 줄 제거 등을 제공한다. 그래픽은 btop에서 영감을 얻었으며, 둥근 상자와 그라데이션 표시기, 초당 블록 수와 쌓인 높이를 나타내는 점자 그래프를 사용한다.

화면은 터미널 크기에 맞춰 조정되며, 78x24의 작은 배치부터 130x46에서 두 배 크기로 표시되는 보드까지 지원한다. 터미널이 COLORTERM으로 트루컬러를 알리면 이를 사용하고, --256 옵션으로 256색 모드로 전환할 수 있다. 네트워크 통신은 9471번 포트의 TCP를 사용하며, 로컬 네트워크 게임 탐색을 위한 mDNS(DNS-SD) 구현도 파일에 포함돼 있어 Avahi 같은 별도 서비스를 설치할 필요가 없다.

제작자는 게임의 설계와 규칙, 제약을 정하고 결과물을 검토·플레이·테스트했으며, 코드 상당 부분은 AI의 도움을 받아 생성했다고 밝혔다. 코드 규모는 약 2,700줄이다. 그는 사용자가 코드를 읽고 빌드해 로컬 네트워크에서 플레이해 본 뒤, 버그나 개선점을 이슈 또는 풀 리퀘스트로 알려 달라고 요청했다.