Skip to content
Open-Lotto Wiki edited this page Jun 5, 2026 · 2 revisions

Open-Lotto Wiki

Welcome to the Open-Lotto project wiki. Use the sidebar or the links below to navigate.


Pages

Page Description
Architecture Module overview, RNG pipeline, plugin system
Plugin Development How to add a new lottery game
CI & Testing CI jobs, running tests locally, code quality gates
3D Physics Engine Ball simulation, dual-drum design, rendering

Quick Start

Prerequisites

  • Linux / macOS / Windows WSL2
  • CMake ≥ 3.10, GCC or Clang
  • libsdl2-dev, libsdl2-ttf-dev, pkg-config

Ubuntu/Debian:

sudo apt-get install cmake gcc pkg-config libsdl2-dev libsdl2-ttf-dev

Build

git clone https://github.com/Boussetta/open-lotto.git
cd open-lotto
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON
cmake --build build -j

Run

# List available games
./build/open-lotto --list-games

# Single draw
./build/open-lotto --game "Lotto 6aus49"
./build/open-lotto --game "Eurojackpot"

# Multiple draws
./build/open-lotto --game "Lotto 6aus49" --draws 10

# Animated terminal mode
./build/open-lotto --game "Lotto 6aus49" --animate

# 3D OpenGL drum visualizer
./build/open-lotto --game "Lotto 6aus49" --gui 3D
./build/open-lotto --game "Eurojackpot" --gui 3D

# Export results
./build/open-lotto --game "Lotto 6aus49" --draws 5 --export csv --output results.csv
./build/open-lotto --game "Lotto 6aus49" --draws 5 --export json --output results.json

Configuration file (.lottorc)

CLI arguments can be persisted in a .lottorc file in the current directory:

game=Lotto 6aus49
draws=5

CLI flags always override .lottorc values.


Key Features

Feature Details
Hybrid RNG seeding getrandom() + RDRAND + monotonic clock jitter
PCG32 RNG Fast, statistically strong, unbiased Fisher-Yates draws
Plugin system Games are dynamically loaded .so libraries
2D GUI SDL2 animated terminal-style draw
3D GUI Real-time OpenGL drum with ball physics
Export CSV and JSON output
Validation --validate-only checks config without running a draw

Repository

Clone this wiki locally