{"id":19557044,"url":"https://github.com/rubenhoenle/gigacube","last_synced_at":"2026-01-05T07:20:05.192Z","repository":{"id":226120339,"uuid":"767804638","full_name":"rubenhoenle/gigacube","owner":"rubenhoenle","description":"This repo is a fork of https://github.com/mucer/dots_n_boxes, a project which was done during the https://hacken-mit-licht.de Hackathon","archived":false,"fork":false,"pushed_at":"2024-07-29T13:01:06.000Z","size":755,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T00:45:11.448Z","etag":null,"topics":["hackathon","micropython","neopixel","pi-pico"],"latest_commit_sha":null,"homepage":"https://github.com/mucer/dots_n_boxes","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rubenhoenle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-05T23:31:02.000Z","updated_at":"2024-07-29T13:01:10.000Z","dependencies_parsed_at":"2024-03-06T01:28:36.470Z","dependency_job_id":"c7f9cfe7-872b-48ce-b8ef-3230db11f740","html_url":"https://github.com/rubenhoenle/gigacube","commit_stats":null,"previous_names":["rubenhoenle/gigacube"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubenhoenle%2Fgigacube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubenhoenle%2Fgigacube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubenhoenle%2Fgigacube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubenhoenle%2Fgigacube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rubenhoenle","download_url":"https://codeload.github.com/rubenhoenle/gigacube/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245144973,"owners_count":20568056,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hackathon","micropython","neopixel","pi-pico"],"created_at":"2024-11-11T04:40:03.084Z","updated_at":"2026-01-05T07:20:05.160Z","avatar_url":"https://github.com/rubenhoenle.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gigacube\n\nThis repo is a fork of [mucer/dots_n_boxes](https://github.com/mucer/dots_n_boxes), a project which was done during the [Hacken mit Licht](https://hacken-mit-licht.de) Hackathon.\n\n\u003cp\u003e\n\u003cimg src=\"images/SystemOverview.jpg\" alt=\"SystemOverview\"\u003e\n\u003c/p\u003e\n\n# TODO\n- fix corners and direction controls\n- make LED brightness adjustable\n- mark the edges where you die in e.g. red\n- add support for mulitple nunchucks in the faradaycage. E.g with buttons for switching between them so that any number of nunchucks are supported.\n\n## Hardware\n\n900 Pixels are available at a density of 60 Pixels per Meter.\n\nThe basis of the game is a 25x25x25cm cube. 4 sides of the cube are being used, amounting to 15x15 pixels on each used side:\n\n- 15\\*45 pixels in total from left to right\n- 15\\*15 pixels on the top\n\nThe game can be played with 1 (front), 3 (front, top, left) or 4 sides (front, top, left, right).\n\nUP is considered starting by the front side. That means moving UP at the top side corresponds to \"to the back\".\n\n## Architecture\n\n- For each pixel 2 player states are stored\n- A player state contains\n  - atPosition: is the player currently at this position?\n  - hasTrail: does the player currently have a trail?\n  - ownedBy: does player have this pixel captured?\n- A pixel can be addressed by \n  - side [0=left, 1=front, 2=right, 3=top]\n  - x [0-15]\n  - y [0-15]\n  - player [0,1]\n- The main class is responsible for orchestration\n  - Execute a tick every x milliseconds\n  - Read controls\n  - Play animations\n  - Start / end game\n  - Render a UI frame (UI can be updated more often per tick to render effects)\n\n## Run commands\n\n|Command|Explanation|\n|---|---|\n|`deploy/npmCi`|Deploy webserver|\n|`reset/cleanEclipse`|Reset game|\n|`run/buildCommand`|Start game|\n\n## Faradaycage\n\nThe `faradaycage` is a nix-shell for virtualizing the Gigacube. The main idea is to develop for the cube without having to be physical next to it. The cube is visualized with pygame. \n\nOf course this is not a full emulation of the hardware. It supports the basic functions of the `neopixel` libary. All functions of the `DisplayController` are supported.\n\n**Important:** It is not possible to replace the `time` libary in the nix-shell because it is a build-in libary (at least that is the current knowledge. PRs are welcomed :). Therefore the emulated libary is namend `timeE`. To run a skript change the import statements in the affected files.\n\n### Usage\n\n```\nnix develop .#faradaycage\n\npython main.py # starts the script simaliar to 'run/buildCommand'.\n```\n\nThe cube can be roteated with `w, a, s, d`. The nunchuk input is controlled over the arrowkeys. Note that if you have multiple nunchuks they all get the same input.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubenhoenle%2Fgigacube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frubenhoenle%2Fgigacube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubenhoenle%2Fgigacube/lists"}