A fast and reusable pixelflut implementation
Find a file
lilly 2dea6ccde4
Some checks failed
ci/woodpecker/push/test Pipeline failed
ci/woodpecker/push/container_image unknown status
fix ffmpeg binary not being available in container image
2025-04-13 20:08:46 +02:00
.cargo add ci configuration with github actions 2024-03-25 13:49:37 +01:00
.woodpecker fix image publishing via CI 2024-12-31 20:24:29 +01:00
k8s add ci configuration with github actions 2024-03-25 13:49:37 +01:00
resources add support for rendering text into client 2024-04-02 16:39:09 +02:00
scripts add ci configuration with github actions 2024-03-25 13:49:37 +01:00
src update rust dependencies 2024-12-31 21:03:55 +01:00
.dockerignore move rust implementation to top of project 2024-03-25 13:21:44 +01:00
.envrc fix pre-commit error 2024-08-19 00:52:03 +02:00
.gitignore add envrc hook for nix 2024-07-02 21:09:05 +02:00
.logo.webp update readme 2024-03-25 15:13:00 +01:00
.pre-commit-config.yaml add ci configuration with github actions 2024-03-25 13:49:37 +01:00
Cargo.lock update rust dependencies 2024-12-31 21:03:55 +01:00
Cargo.toml update rust dependencies 2024-12-31 21:03:55 +01:00
Dockerfile relax rust version in docker build image 2024-07-19 20:05:56 +02:00
flake.lock fix image publishing via CI 2024-12-31 20:24:29 +01:00
flake.nix fix ffmpeg binary not being available in container image 2025-04-13 20:08:46 +02:00
kustomization.yml put one k8s manifest per file 2022-02-27 21:59:41 +01:00
LICENSE add ci configuration with github actions 2024-03-25 13:49:37 +01:00
README.md document flake usage 2024-08-19 00:49:36 +02:00
renovate.json update renovate config to my liking 2024-10-13 20:08:42 +02:00
rust-toolchain.toml add ci configuration with github actions 2024-03-25 13:49:37 +01:00
rustfmt.toml add ci configuration with github actions 2024-03-25 13:49:37 +01:00

pixeldike

crates.io Crate Documentation

A fast and reusable pixelflut implementation

Pixelflut is a competitive programing game that provides a 2D pixel canvas upon which many people can set single color values over the network.

Logo

The implementation contained in this repository is done in Rust and includes a reusable library as well as a standalone binary. The library

Features

The following features are implemented:

  • Generic protocol serialization and parsing
  • TCP Transport
  • UDP Transport
  • WebSocket Transport
  • Unix socket Transport
  • Live-Streaming of the servers canvas via RTMP/RTSP
  • Live-Display of the servers canvas via a window or linux framebuffer device
  • Drawing of images (and colored rectangles) on a remote servers canvas

Installation

Install via cargo from source

This installation methods assumes you already have a working rust toolchain and a working cargo command. If you do you can run the following:

cargo install --git=https://github.com/ftsell/pixeldike.git --all-features --bin=pixeldike

With Nix

Nix (and Lix) users can build and run pixeldike using flakes:

nix run github:ftsell/pixeldike -- --help

The flake definition contains the outputs listed below for the systems aarch64-darwin, aarch64-linux, x86_64-darwin and x86_64-linux, however only x86_64-linux has currently been tested.

github:ftsell/pixeldike
├───apps
│   ├───<system>
│   │   ├───default: app
│   │   └───pixeldike: app
├───devShells (omitted)
└───packages
    └───<system>
        ├───default: package 'pixeldike'
        └───pixeldike: package 'pixeldike'

Usage examples

  • Retrieve command-line help

    pixeldike -h
    pixeldike server -h
    
  • Start a pixelflut tcp server on port 1234 with default size and persisted in the file ~/pixmap.pixmap

    pixeldike server --file ~/pixmap.pixmap --tcp 1234
    
  • Start a pixelflut udp server on port 1234 with custom size and persisted in the file ~/pixmap.pixmap

    pixeldike server --file ~/pixmap.pixmap --udp 1234 --width 10 --height 20