{"id":47733750,"url":"https://github.com/widgrensit/asobi-godot","last_synced_at":"2026-05-01T16:01:42.789Z","repository":{"id":348598336,"uuid":"1195225363","full_name":"widgrensit/asobi-godot","owner":"widgrensit","description":"Godot 4.x client SDK for Asobi game backend","archived":false,"fork":false,"pushed_at":"2026-04-23T19:28:20.000Z","size":27,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-23T21:26:15.183Z","etag":null,"topics":["asobi","client-sdk","game-backend","gamedev","gdscript","godot","godot-engine","godot4","multiplayer","sdk"],"latest_commit_sha":null,"homepage":null,"language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/widgrensit.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-29T11:58:55.000Z","updated_at":"2026-04-23T19:28:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/widgrensit/asobi-godot","commit_stats":null,"previous_names":["widgrensit/asobi-godot"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/widgrensit/asobi-godot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/widgrensit%2Fasobi-godot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/widgrensit%2Fasobi-godot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/widgrensit%2Fasobi-godot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/widgrensit%2Fasobi-godot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/widgrensit","download_url":"https://codeload.github.com/widgrensit/asobi-godot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/widgrensit%2Fasobi-godot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32503204,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"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":["asobi","client-sdk","game-backend","gamedev","gdscript","godot","godot-engine","godot4","multiplayer","sdk"],"created_at":"2026-04-02T22:06:40.405Z","updated_at":"2026-05-01T16:01:42.780Z","avatar_url":"https://github.com/widgrensit.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# asobi-godot\n\nGodot 4.x client SDK for the [Asobi](https://github.com/widgrensit/asobi) game backend. Tested on Godot 4.4 LTS and Godot 4.5.\n\n## Installation\n\n1. Copy `addons/asobi/` from this repo into your project's `addons/` folder, **or** clone as a git submodule:\n\n   ```bash\n   git submodule add https://github.com/widgrensit/asobi-godot.git vendor/asobi-godot\n   ln -s ../vendor/asobi-godot/addons/asobi addons/asobi\n   ```\n\n   For a tagged release (recommended):\n\n   ```bash\n   git submodule add -b v0.4.0 https://github.com/widgrensit/asobi-godot.git vendor/asobi-godot\n   ```\n\n2. *Project → Project Settings → Plugins* and tick **Asobi**. Reload the project so Godot picks up the autoload.\n\n   The plugin auto-registers an `Asobi` autoload singleton — you do **not** need to add an `AsobiClient` node to your scene.\n\n## Run a backend first\n\nThe SDK talks to an Asobi server. The fastest way to get one is:\n\n```bash\ngit clone https://github.com/widgrensit/sdk_demo_backend\ncd sdk_demo_backend \u0026\u0026 docker compose up -d\n```\n\nThat serves at `http://localhost:8084` (HTTP + WebSocket on `/ws`) with a 2-player `demo` mode. For the full reference game (arena shooter) see [`asobi_arena_lua`](https://github.com/widgrensit/asobi_arena_lua).\n\n## Quick Start\n\nUse the `Asobi` autoload directly from any script:\n\n```gdscript\nfunc _ready() -\u003e void:\n    Asobi.host = \"localhost\"\n    Asobi.port = 8084\n\n    var resp := await Asobi.auth.login(\"player1\", \"secret123\")\n    if resp.has(\"error\"):\n        push_error(\"Login failed: %s\" % resp.error)\n        return\n\n    # match.matched (matchmaker push) and match.joined (reply to a\n    # client-initiated match.join) both signal \"in a match — match.state\n    # will follow.\" Subscribe to matchmaker_matched and explicitly join.\n    Asobi.realtime.matchmaker_matched.connect(_on_matched)\n    Asobi.realtime.match_state.connect(_on_state)\n\n    Asobi.realtime.connect_to_server()\n    Asobi.realtime.add_to_matchmaker(\"demo\")\n\nfunc _on_matched(payload: Dictionary) -\u003e void:\n    Asobi.realtime.join_match(payload[\"match_id\"])\n\nfunc _on_state(payload: Dictionary) -\u003e void:\n    var players: Dictionary = payload.get(\"players\", {})\n    print(\"Tick %s, %d players\" % [payload.get(\"tick\", 0), players.size()])\n```\n\nA complete worked example lives at `example/example_usage.gd`. A runnable demo (player vs. player + bots) is at [asobi-godot-demo](https://github.com/widgrensit/asobi-godot-demo).\n\n## Features\n\n- **Auth** - Register, login, token refresh\n- **Players** - Profiles, updates\n- **Matchmaker** - Queue, status, cancel\n- **Matches** - List, details\n- **Leaderboards** - Top scores, around player, submit\n- **Economy** - Wallets, store, purchases\n- **Inventory** - Items, consume\n- **Social** - Friends, groups, chat history\n- **Tournaments** - List, join\n- **Notifications** - List, read, delete\n- **Storage** - Cloud saves, generic key-value\n- **Realtime** - WebSocket with signals for matches, chat, presence, matchmaking\n\nSee the [WebSocket protocol guide](https://github.com/widgrensit/asobi/blob/main/guides/websocket-protocol.md) for the full event surface.\n\n## License\n\nApache-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwidgrensit%2Fasobi-godot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwidgrensit%2Fasobi-godot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwidgrensit%2Fasobi-godot/lists"}