{"id":25072348,"url":"https://github.com/dweam-team/world-arcade","last_synced_at":"2025-04-06T08:14:23.438Z","repository":{"id":267505283,"uuid":"895814899","full_name":"dweam-team/world-arcade","owner":"dweam-team","description":"Find and Play Generative Games Locally","archived":false,"fork":false,"pushed_at":"2025-02-20T00:06:31.000Z","size":5458,"stargazers_count":119,"open_issues_count":4,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-30T06:07:47.818Z","etag":null,"topics":["ai-games","diffusion-models","emulator","games","video-game","video-models","world-models"],"latest_commit_sha":null,"homepage":"https://worldarcade.gg/","language":"Astro","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dweam-team.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}},"created_at":"2024-11-29T00:58:22.000Z","updated_at":"2025-03-03T22:50:33.000Z","dependencies_parsed_at":"2025-02-28T01:14:38.197Z","dependency_job_id":"5f7e0991-db1b-4e2a-96d5-7acd419293c7","html_url":"https://github.com/dweam-team/world-arcade","commit_stats":null,"previous_names":["dweam-team/dweamworld"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dweam-team%2Fworld-arcade","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dweam-team%2Fworld-arcade/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dweam-team%2Fworld-arcade/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dweam-team%2Fworld-arcade/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dweam-team","download_url":"https://codeload.github.com/dweam-team/world-arcade/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247451667,"owners_count":20940944,"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":["ai-games","diffusion-models","emulator","games","video-game","video-models","world-models"],"created_at":"2025-02-06T22:10:00.715Z","updated_at":"2025-04-06T08:14:23.394Z","avatar_url":"https://github.com/dweam-team.png","language":"Astro","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ☁️ World Arcade\n\n[![Discord](https://img.shields.io/badge/Join%20our%20Discord-purple)](https://discord.gg/aY3GAqMqBf) [![Windows Application](https://img.shields.io/badge/Windows%20Application-grey)](https://github.com/dweam-team/world-arcade/releases)\n\nRun generative games on your own GPU.\n\nUnlike traditional games, that run on a deterministic game engine, generative games use an interactive video model to generate every frame of the game in real-time, reacting to your button presses.\n\nCurrently, the models are dispersed across Github and hard to find. Even when you find one, it takes technical knowledge and time to run them yourself. So we're bringing them together for you to play.\n\nWorld Arcade is an open-source platform that makes it easy to play them locally, or stream from a server. \n\n## Features\n\n- **Browse open-source game models**\n     \n     Collecting together all the available games made open-source by [Diamond](https://github.com/eloialonso/diamond) and other world creators!\n  \n\u003cimg src=\"https://github.com/user-attachments/assets/18c5949d-5dc6-4068-a253-d0015ecea0d9\" width=\"800\"/\u003e\n\u003cbr\u003e \u003c/br\u003e\n\n- **Play Games**\n\n    Jump into Yume Nikki, CS:GO, Minecraft, Atari Arcade Games or Mario Kart 64.\n\n\u003cimg src=\"https://github.com/user-attachments/assets/700d205e-d337-4cf2-bcf7-163b148f4b03\" width=\"407\"/\u003e \u003cimg src=\"https://github.com/user-attachments/assets/0e50a802-1369-4ebb-9632-e11b9032f78f\" width=\"393\"/\u003e\n\u003cbr\u003e \u003c/br\u003e\n\n- **Change Parameters**\n\n   Adjust settings to allow higher FPS on lower-end GPUs (at the expense of game stability/quality).\n\n\u003cimg src=\"https://github.com/user-attachments/assets/0d643748-0414-4b30-b5f6-bc36f1491f19\" width=\"800\"/\u003e\n\u003cbr\u003e \u003c/br\u003e\n\n## Requirements\n\n- An NVIDIA GPU (ideally \u003e8GB VRAM)\n- OS: Windows (via exe, see [Windows Setup](#Windows)) or Linux (via Docker, see [Linux Setup](#Linux))\n\nThe Minecraft games are only supported on Linux; you can use [WSL](https://docs.microsoft.com/en-us/windows/wsl/install) on Windows to play them.\n\n## Let's Play!\n\n### Windows\n\n1. Download dweam-windows.zip from the [latest release](https://github.com/dweam-team/world-arcade/releases).\n2. Unzip the file using [7Zip](https://www.7-zip.org/).\n3. Double-click dweam.exe, wait for the games to install, and start playing!\n\n\u003cimg src=\"https://github.com/user-attachments/assets/79378c28-5e48-46fe-b6df-770bc4c79068\" width=\"800\"/\u003e\n\n### Linux\n\n#### Installing\n\nInstall and run [Docker](https://www.docker.com/),\n\nInstall [Docker compose](https://docs.docker.com/compose/install/).\n\nInstall [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html).\n\n#### Running\n\n```\ngit clone https://github.com/dweam-team/world-arcade\ncd world-arcade\ndocker compose up --build\n```\n\nOnce it's running, visit [localhost:4321](http://localhost:4321).\n\n#### Exposing to the internet/local network\n\nIf you're exposing the app to the internet, you should set a `TURN_SECRET_KEY` environment variable when running the app:\n\n```\nexport TURN_SECRET_KEY=$(openssl rand -base64 32)\ndocker compose up --build\n```\n\nForward the following ports:\n- 4321 TCP (app)\n- 3478 TCP/UDP (WebRTC)\n- 5349 TCP/UDP (WebRTC)\n- 50000-50010 UDP (WebRTC)\n\nBy default, the app only binds to `localhost`.\nYou may change this in the [`docker-compose.yaml`](docker-compose.yaml#L10-L11) file, \nbut we suggest the use of a reverse proxy to expose port 4321 TCP.\n\nFor example, with [caddy](https://caddyserver.com/):\n\n```\n# Caddyfile\n\nexample.com {\n        # Optionally add basic authentication\n        basic_auth {\n                [username] [password-hash]\n        }\n\n        reverse_proxy localhost:4321\n}\n```\n\n## Developing new games\n\nEach set of games is implemented as a standalone python package that:\n\n1. Implements a `Game` class that subclasses `dweam.Game`.\n2. Provides a `dweam.toml` file with the game's metadata.\n\nSee [diamond-yumenikki](https://github.com/dweam-team/diamond-yumenikki) or [diamond-csgo](https://github.com/dweam-team/diamond/tree/csgo) for an example.\n\n### Implement it\n\nSubclass `dweam.Game`, and implement the `step` method.\n\n```python\n# my_game/dweam_game.py\n\nfrom dweam import Game\nimport pygame\n\n\nclass MyGame(Game):\n    def step(self) -\u003e pygame.Surface:\n        \"\"\"\n        A step of your game loop, that runs in its own thread.\n        Use `self.keys_pressed`, `self.mouse_pressed` and `self.mouse_motion` to generate the next frame,\n        and return it as a pygame surface.\n        \"\"\"\n        ...\n\n    def on_key_down(self, key: int) -\u003e None:\n        \"\"\"\n        Optionally, implement logic via key presses directly\n        Other methods like `on_key_up`, `on_mouse_down`, `on_mouse_up` and `on_mouse_motion` are also available.\n        \"\"\"\n        ...\n```\n\n### Add Metadata\n\nAdd a `dweam.toml` file with the game's metadata.\n\n```toml\n# my_game/dweam.toml\n\ntype = \"Awesome Games\"\nentrypoint = \"my_game.dweam_game:MyGame\"\nrepo_link = \"https://github.com/awesome-games/my-game\"\n\n[games.my_game]\ntitle = \"My Game\"\ntags = [\"First Person\"]\ndescription = \"A game made by me\"\n\n[games.my_game.buttons]\n\"⬆️ Forward\" = \"W\"\n\"⬇️ Back\" = \"S\"\n\"⬅️ Left\" = \"A\"\n\"➡️ Right\" = \"D\"\n\"🆙 Jump\" = \"Space\"\n```\n\n### Share it\n\nFor now we're hardcoding the game packages in the [`entrypoint.py`](dweam/utils/entrypoint.py#L30) file – please submit a pull request to add your game, in the form of a GitHub repo URL or python package.\n\nSoon we'll make this a local configuration file ^w^\"\n\n## Get Involved\n\nLove any contributions from the community!\n\nOpen a GitHub issue or join our [Discord server](https://discord.gg/aY3GAqMqBf) to chat.\n\nLeave a star if you'd like to see this project grow! ❤️ ⭐️\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdweam-team%2Fworld-arcade","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdweam-team%2Fworld-arcade","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdweam-team%2Fworld-arcade/lists"}