{"id":16113267,"url":"https://github.com/patryk27/kartoffels","last_synced_at":"2025-05-15T10:03:42.333Z","repository":{"id":246542284,"uuid":"809376435","full_name":"Patryk27/kartoffels","owner":"Patryk27","description":"a game where you're given a potato and your job is to implement a firmware for it","archived":false,"fork":false,"pushed_at":"2025-05-06T17:37:49.000Z","size":7219,"stargazers_count":459,"open_issues_count":10,"forks_count":9,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-10T04:03:11.226Z","etag":null,"topics":["fighting-game","game","mmo","real-time","risc-v","riscv","robot","rust","simulation"],"latest_commit_sha":null,"homepage":"https://kartoffels.pwy.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Patryk27.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2024-06-02T14:17:55.000Z","updated_at":"2025-05-07T17:11:16.000Z","dependencies_parsed_at":"2024-06-28T15:52:05.903Z","dependency_job_id":"873aa0da-606b-4439-9bee-265167ff0567","html_url":"https://github.com/Patryk27/kartoffels","commit_stats":{"total_commits":426,"total_committers":2,"mean_commits":213.0,"dds":"0.0046948356807511304","last_synced_commit":"aa4174083b8297e05fcad26dcaa7e0713f54cb65"},"previous_names":["patryk27/kartoffels"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Patryk27%2Fkartoffels","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Patryk27%2Fkartoffels/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Patryk27%2Fkartoffels/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Patryk27%2Fkartoffels/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Patryk27","download_url":"https://codeload.github.com/Patryk27/kartoffels/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254319716,"owners_count":22051072,"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":["fighting-game","game","mmo","real-time","risc-v","riscv","robot","rust","simulation"],"created_at":"2024-10-09T20:10:45.933Z","updated_at":"2025-05-15T10:03:42.240Z","avatar_url":"https://github.com/Patryk27.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kartoffels 🥔\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://kartoffels.pwy.io\"\u003ekartoffels\u003c/a\u003e is an online game where\n    you're given a potato and your job is to implement\n    \u003ca href=\"https://github.com/patryk27/kartoffel\"\u003ea firmware\u003c/a\u003e for it:\n\u003c/p\u003e\n\n![](./readme/595969d8-909e-438f-9c28-073186fcb598.png)\n![](./readme/e46b11bf-6b91-4415-af8a-c9e6169b28fb.png)\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://kartoffels.pwy.io\"\u003eplay it in browser\u003c/a\u003e or terminal:\u003cbr\u003e\n    \u003ccode\u003essh kartoffels.pwy.io\u003c/code\u003e\n\u003c/p\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n[build](#build) • [contribute](#contribute) • [license](#license) \n\n\u003c/div\u003e\n\n---\n\n## name\n\nkartoffel (🇩🇪)    \n= potato    \n= slang for _slow machine_    \n= exactly what kartoffels are!\n\n## build\n\nso you want to launch kartoffels on your own machine? easy!\n\n### using nix\n\n```bash\n# step i: clone repository\n$ git clone https://github.com/patryk27/kartoffels\n$ cd kartoffels\n\n# step ii: create a place for storing kartoffels, server keys etc.\n$ mkdir store\n\n# step iii: launch server\n$ nix run . -- serve ./store --ssh 127.0.0.1:1314\n\n# step iiii: join the game\n$ ssh 127.0.0.1 -p1314\n```\n\nnote that this only starts the ssh server - if you want to use the web frontend:\n\n```bash\n# step iii: launch server (note the `--http` argument)\n$ nix run . -- serve ./store --http 127.0.0.1:1313\n\n# step iiii: launch frontend\n$ nix run .#web\n\n# step iiiii: join the game at http://localhost:5173\n```\n\n### on linux / macos\n\n```bash\n# step i: clone repository\n$ git clone https://github.com/patryk27/kartoffels\n$ cd kartoffels\n\n# step ii: build application\n$ cd app\n$ cargo build --release\n$ cd ..\n\n# step iii: create a place for storing kartoffels, server keys etc.\n$ mkdir store\n\n# step iiii: launch server\n$ ./app/target/release/kartoffels serve ./store --ssh 127.0.0.1:1314\n\n# step iiiii: join the game\n$ ssh 127.0.0.1 -p1314\n```\n\nnote that this only starts the ssh server - if you want to use the web frontend:\n\n```bash\n# step iiii: launch server (note the `--http` argument)\n$ ./app/target/release/kartoffels serve ./store --http 127.0.0.1:1313\n\n# step iiiii: launch frontend\n$ cd web\n$ npm install\n$ npm run dev\n\n# step iiiiii: join the game at http://localhost:5173\n```\n\n### on windows\n\ni'd suggest installing wsl and following the linux instructions\n\n## contribute\n\nso you want to contribute to kartoffels? easy! -- the code is divided into\nroughly three areas:\n\n- all things risc-v (`kartoffels-cpu`),\n- all things world-and-bot (`kartoffels-world`),\n- all things user-interface (`kartoffels-front`).\n\nso, say:\n\n- if you wanted to introduce support for risc-v compressed instructions, you'd\n  modify (mostly) `kartoffels-cpu`,\n- if you wanted to introduce a new bot peripheral, you'd modify (mostly)\n  `kartoffels-world`,\n- if you wanted to introduce a new challenge, you'd modify (mostly)\n  `kartoffels-front`.\n\nnote that those are just rough examples, different features or fixes might\nrequire touching different places\n\nalso:\n\n- use `cargo test --release` and `cargo fmt`,\n- some tests (notably those ui-based) utilize snapshots - they take a\n  \"screenshot\" (a textshot?) of the current frame and compare it against the\n  expected frame - you can run `just test-and-bless` to quickly fix such tests\n  after you e.g. modify a commonly-used ui widget,\n- pls don't introduce larger changes (e.g. a new peripheral) without some\n  discussion first - it might happen that something hasn't been implemented\n  deliberately and i wouldn't like for people to waste time just to tell them\n  \"sorry, it doesn't fit my vision\"\n\n## license\n\ncopyright (c) 2024, patryk wychowaniec (`pwychowaniec @at@ pm.me`).\n\nthis program is free software: you can redistribute it and/or modify it under\nthe terms of the gnu general public license as published by the free software\nfoundation, version 3.\n\nthis program is distributed in the hope that it will be useful, but without any\nwarranty; without even the implied warranty of merchantability or fitness for a\nparticular purpose. see the gnu general public license for more details.\n\nyou should have received a copy of the gnu general public license along with\nthis program. if not, see \u003chttps://www.gnu.org/licenses/\u003e. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatryk27%2Fkartoffels","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatryk27%2Fkartoffels","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatryk27%2Fkartoffels/lists"}