{"id":20027892,"url":"https://github.com/weebnetsu/oss-uno","last_synced_at":"2026-03-02T14:37:38.104Z","repository":{"id":40459071,"uuid":"504152371","full_name":"WeebNetsu/OSS-UNO","owner":"WeebNetsu","description":"Play UNO for free and with no ads!","archived":false,"fork":false,"pushed_at":"2024-12-02T05:19:37.000Z","size":6717,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-05T03:34:52.424Z","etag":null,"topics":["game","love2d","lua","teal","uno"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/@stevesteacher","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeebNetsu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":null,"patreon":"Stevesteacher","open_collective":null,"ko_fi":"stevesteacher","tidelift":null,"community_bridge":null,"liberapay":"stevesteacher","issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://www.paypal.com/donate/?hosted_button_id=P9V2M4Q6WYHR8"]}},"created_at":"2022-06-16T12:45:58.000Z","updated_at":"2024-12-02T05:19:40.000Z","dependencies_parsed_at":"2024-12-05T18:01:25.336Z","dependency_job_id":null,"html_url":"https://github.com/WeebNetsu/OSS-UNO","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/WeebNetsu/OSS-UNO","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebNetsu%2FOSS-UNO","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebNetsu%2FOSS-UNO/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebNetsu%2FOSS-UNO/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebNetsu%2FOSS-UNO/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeebNetsu","download_url":"https://codeload.github.com/WeebNetsu/OSS-UNO/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeebNetsu%2FOSS-UNO/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267616785,"owners_count":24116164,"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","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["game","love2d","lua","teal","uno"],"created_at":"2024-11-13T09:12:21.613Z","updated_at":"2026-03-02T14:37:38.097Z","avatar_url":"https://github.com/WeebNetsu.png","language":"Lua","readme":"# OSS-UNO\n\nI could not find a decent UNO game, so I decided to make my own ;)\n\nWhy is this better than any other UNO game?\n\n- No ads\n- No \"pay to continue playing\" system\n- 100% free\n- Open source\n  - If you don't like something, you can change it\n  - If you want something, you can add it\n  - Written in Teal ([Lua but better](https://youtu.be/ooQ-_9YQVw0))\n- Looks good\n- No tracking\n- No selling your data\n- Single player mode\n- Has controller support\n\n## Contents\n\n- [Running the Game](#running-the-game)\n  - [Requirements](#requirements)\n  - [Setup and Running](#setup-and-running)\n- [Game Info](#game-info)\n  - [Levels](#levels)\n- [Files \u0026 Structures](#files-and-structures)\n- [VSCode Debugging](#vscode-debugging)\n  - [Requirements](#debugging-requirements)\n  - [Setup](#setup-debugging)\n\n## Running The Game\n\n### Requirements\n\n- [Lua](https://www.lua.org) (v5.4+)\n- [Love2D](https://love2d.org) (v11.4)\n- [LuaRocks](https://luarocks.org)\n- [trash-cli](https://github.com/andreafrancia/trash-cli) (optional)\n  - This is so we can safely delete any files and easily restore it if we need to\n\n##### Install Requirements:\n\nUbuntu: `sudo apt install lua5.4 love luarocks trash-cli`\n\nArch Linux: `sudo pacman -S lua love luarocks trash-cli`\n\n#### Modules\n\nYou can use Luarocks to install these modules - note that some of them are provided in the project source code.\n\nInstall: `luarocks install tl --local`\n\n- [lunajson](https://luarocks.org/modules/grafi/lunajson)\n\n  - So we can read and write `json`. It is included in the project, but is only used for compiling the code into an executable, not running it.\n\n- [tl](https://github.com/teal-language/tl)\n  - To compile the code into regular Lua\n\n\u003c!-- ##### Install Modules:\n\n1. `alias luai=\"luarocks install --local\"`\n2. `luai tl \u0026\u0026 luai lunajson` --\u003e\n\n### Setup and Running\n\n1. Get the code on your PC (git clone or download)\n1. Download all dependencies (Requirements \u0026 Modules)\n1. Go into the folder with `main.tl`\n1. `./run.sh` **(Linux/Mac)** (note that if you don't have trash-cli installed, you will need to modify `clean.sh` to use `rm` instead)\n1. Enjoy UNO\n\n#### Running on Windows\n\nIf you're on Windows, then running `./run.sh` will not work (unless you use WSL - Windows Subsystem for Linux). You then need to:\n\n1. Generate Lua Code\n   - So just `tl gen` all the .tl (not the .d.tl) files in the code so you get the Lua code\n   - Then remove any standalone requires, aka `require \"something.something\"` (don't remove any `local x = require.....`) in _all_ the .lua files\n   - Remove any lines that contains `local _tl_compat` (usually the first line in some .lua files)\n1. Run it!\n   - `love .` or whatever the Windows version of this is\n\n## Game Info\n\n### Levels\n\nThere are 3 levels to choose from, these are currently their limitations:\n\n#### Easy (1)\n\n- Bot cannot chain +2 cards (cannot add a +2 to negate your +2)\n- Bot cannot play a +2 directly after playing a +2\n- Bot cannot play a +4\n- Bot only has 50% chance to say uno before playing 2nd last card\n\n#### Normal (2)\n\n- Only 70% chance that bot says uno before playing 2nd last card\n\n#### Hard (3)\n\nNo limitations\n\n## Files and Structures\n\n- `assets` - All game assets (images/audio etc.)\n  - `backgrounds` - Game background images\n    - `saves` - GIMP save files for images\n  - `buttons` - Button images\n    - `icon` - Button icons images\n    - `text` - Button text images\n  - `cards` - All card images\n  - `ui-sounds` - Game BGM and SFX\n- `check.sh` - Script to display `tl` checks\n- `clean.sh` - Script to clean up the code after generating Lua files\n- `data` - Any data the game should store, such as saves or configs\n  - `settings.json` - User settings/config for the game\n- `gen.sh` - Generate Lua files\n- `love.d.tl` - Any `.d.tl` files are just typing, can be ignored for the most part\n- `main.tl` - Any `.tl` files is the game code (just Lua with static typing)\n- `README.md` - Game docs\n- `run.sh` - Compile, run and clean up script in one\n- `src` - Game source code (excluding `main.tl`)\n  - `game` - Components in the game, such as cards and players\n  - `menu` - Viewable game menus/screens/views\n  - `utils` - util files, usually for components that are not visible, such as `SFX`\n\n## VSCode Debugging\n\n### Debugging Requirements:\n\n- https://marketplace.visualstudio.com/items?itemName=tomblind.local-lua-debugger-vscode\n\n### Setup Debugging\n\nAdd below to .vscode/launch.json:\n\n```json\n{\n\t\"version\": \"0.2.0\",\n\t\"configurations\": [\n\t\t{\n\t\t\t\"type\": \"lua\",\n\t\t\t\"request\": \"launch\",\n\t\t\t\"name\": \"Debug\",\n\t\t\t\"program\": \"${workspaceFolder}/src/PlayedDeck.lua\"\n\t\t},\n\t\t{\n\t\t\t\"type\": \"lua-local\",\n\t\t\t\"request\": \"launch\",\n\t\t\t\"name\": \"Debug Love\",\n\t\t\t\"program\": {\n\t\t\t\t\"command\": \"/usr/bin/love\"\n\t\t\t},\n\t\t\t\"args\": [\"${workspaceFolder} \"]\n\t\t}\n\t]\n}\n```\n\n---\n\nIf you want to support the work I do, please consider donating to me on one of these platforms:\n\n[\u003cimg alt=\"liberapay\" src=\"https://img.shields.io/badge/-LiberaPay-EBC018?style=flat-square\u0026logo=liberapay\u0026logoColor=white\" /\u003e](https://liberapay.com/stevesteacher/)\n[\u003cimg alt=\"kofi\" src=\"https://img.shields.io/badge/-Kofi-7648BB?style=flat-square\u0026logo=ko-fi\u0026logoColor=white\" /\u003e](https://ko-fi.com/stevesteacher)\n[\u003cimg alt=\"paypal\" src=\"https://img.shields.io/badge/-PayPal-0c1a55?style=flat-square\u0026logo=paypal\u0026logoColor=white\" /\u003e](https://www.paypal.com/donate/?hosted_button_id=P9V2M4Q6WYHR8)\n","funding_links":["https://patreon.com/Stevesteacher","https://ko-fi.com/stevesteacher","https://liberapay.com/stevesteacher","https://www.paypal.com/donate/?hosted_button_id=P9V2M4Q6WYHR8","https://liberapay.com/stevesteacher/"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweebnetsu%2Foss-uno","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweebnetsu%2Foss-uno","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweebnetsu%2Foss-uno/lists"}