{"id":37160764,"url":"https://github.com/ascii8/xoxo-go","last_synced_at":"2026-01-14T19:08:09.989Z","repository":{"id":65408348,"uuid":"573939732","full_name":"ascii8/xoxo-go","owner":"ascii8","description":"Nakama Tic-Tac-Toe (XOXO) game module and clients in Go","archived":false,"fork":false,"pushed_at":"2024-01-27T00:29:48.000Z","size":579,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-20T00:42:54.896Z","etag":null,"topics":["ebiten","ebitengine","go","golang","nakama","nakama-server"],"latest_commit_sha":null,"homepage":"","language":"Go","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/ascii8.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":"2022-12-03T22:51:46.000Z","updated_at":"2023-10-03T13:51:40.000Z","dependencies_parsed_at":"2024-06-20T00:24:51.054Z","dependency_job_id":"4bfbba6b-1ab7-4c92-a757-1611b6285060","html_url":"https://github.com/ascii8/xoxo-go","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ascii8/xoxo-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascii8%2Fxoxo-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascii8%2Fxoxo-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascii8%2Fxoxo-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascii8%2Fxoxo-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ascii8","download_url":"https://codeload.github.com/ascii8/xoxo-go/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascii8%2Fxoxo-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28431199,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ebiten","ebitengine","go","golang","nakama","nakama-server"],"created_at":"2026-01-14T19:08:09.400Z","updated_at":"2026-01-14T19:08:09.983Z","avatar_url":"https://github.com/ascii8.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\nContains a Go implementation of Tic-Tac-Toe (aka \"XOXO\"), written for the\nNakama game server. Includes pure Go implementations of a Tic-Tac-Toe Nakama\nmodule, end-to-end unit tests for the Nakama module, and a Ebitengine client\nthat works with the Nakama module.\n\nShowcases the end-to-end use of the\n[`github.com/ascii8/nakama-go`](https://github.com/ascii8/nakama-go) and\n[`github.com/ascii8/nktest`](https://github.com/ascii8/nktest) packages.\n\n[![Tests](https://github.com/ascii8/xoxo-go/workflows/Test/badge.svg)](https://github.com/ascii8/xoxo-go/actions?query=workflow%3ATest)\n[![Go Report Card](https://goreportcard.com/badge/github.com/ascii8/xoxo-go)](https://goreportcard.com/report/github.com/ascii8/xoxo-go)\n[![Reference](https://pkg.go.dev/badge/github.com/ascii8/xoxo-go.svg )](https://pkg.go.dev/github.com/ascii8/xoxo-go)\n\n## Overview\n\nAn overview of the primary directories in this repository:\n\n* [xoxo](/xoxo) - Tic-Tac-Toe game logic and client in Go\n* [nkxoxo](/nkxoxo) - a Tic-Tac-Toe Nakama module\n* [ebxoxo](/ebxoxo) - a Ebitengine game client for Tic-Tac-Toe\n* [fynexoxo](/fynexoxo) - a Fyne UI game client for Tic-Tac-Toe\n* [gioxoxo](/gioxoxo) - a Gio UI game client for Tic-Tac-Toe\n\n#### Command/Module entry points\n\n* [cmd/nkxoxo](/cmd/nkxoxo) - the Nakama server module entry point\n* [cmd/nkclient](/cmd/nkclient) - the testing client\n* [cmd/ebclient](/cmd/ebclient) - the Ebitengine client entry point\n* [cmd/fyneclient](/cmd/fyneclient) - the Fyne UI client entry point\n* [cmd/gioclient](/cmd/gioclient) - the Gio UI client entry point\n\n## Running the Unit Tests\n\nCheckout the code and run the tests using `go test` from the repository root:\n\n```sh\n# get the code\n$ git clone https://github.com/ascii8/xoxo-go.git \u0026\u0026 cd xoxo-go\n\n# build/run the Nakama module with Nakama server, and run the unit tests\n$ DEBUG=1 go test -v\n```\n\n## Running the Module for use with Clients\n\nRun the module using `go test` from the repository root:\n\n```sh\n# change to the repository root\n$ cd /path/to/xoxo-go\n\n# build/run the Nakama module with Nakama server\n$ DEBUG=1 KEEP=2h go test -v -timeout=2h -run TestKeep\n```\n\n## Using the Ebitengine client (Desktop)\n\nBuild and run the Ebitengine client, as a Desktop client:\n\n```sh\n# change to the repository root\n$ cd /path/to/xoxo-go\n\n# build/run the Ebitengine client\n$ go build ./cmd/ebclient \u0026\u0026 ./ebclient\n```\n\n## Using the Ebitengine client (WASM)\n\nBuild and run the Ebitengine client as a WASM module in a Web Browser:\n\n```sh\n# change to the repository root\n$ cd /path/to/xoxo-go\n\n# build wasm and run local webserver\n$ go run github.com/hajimehoshi/wasmserve@latest ./cmd/ebclient\n```\n\nThen open [http://127.0.0.1:8080](http://127.0.0.1:8080) in a browser.\n\nSee: [Ebitengine WASM documentation](https://ebitengine.org/en/documents/webassembly.html)\n\n## Using the Fyne client (Desktop)\n\nBuild and run the Fyne client, as a Desktop client:\n\n```sh\n# change to the repository root\n$ cd /path/to/xoxo-go\n\n# build/run the Fyne client\n$ go build ./cmd/fyneclient \u0026\u0026 ./fyneclient\n```\n\n## Using the Fyne client (WASM)\n\nBuild and run the Fyne client, as a WASM client:\n\n```sh\n# change to the repository root\n$ cd /path/to/xoxo-go\n\n# build wasm and run local webserver\n$ go run github.com/hajimehoshi/wasmserve@latest ./cmd/fyneclient\n```\n\nThen open [http://127.0.0.1:8080](http://127.0.0.1:8080) in a browser.\n\n## Using the Gio client (Desktop)\n\nBuild and run the Gio client, as a Desktop client:\n\n```sh\n# change to the repository root\n$ cd /path/to/xoxo-go\n\n# build/run the Gio client\n$ go build ./cmd/gioclient \u0026\u0026 ./gioclient\n```\n\n## Using the Gio client (WASM)\n\nBuild and run the Gio client, as a WASM client:\n\n```sh\n# change to the repository root\n$ cd /path/to/xoxo-go\n\n# build wasm and run local wgioserver\n$ go run github.com/hajimehoshi/wasmserve@latest ./cmd/gioclient\n```\n\nThen open [http://127.0.0.1:8080](http://127.0.0.1:8080) in a browser.\n\n## Using the Defold client\n\n1. Grab Defold client code, and configure:\n\n```sh\n# get the Defold client\n$ git clone https://github.com/defold/game-xoxo-nakama-client.git \u0026\u0026 cd game-xoxo-nakama-client\n\n# change game.project settings\n$ perl -pi -e 's/host =.*/host = 127.0.0.1/' game.project\n$ perl -pi -e 's/port =.*/port = 7352/' game.project\n$ perl -pi -e 's/server_key =.*/server_key = xoxo-go_server/' game.project\n```\n\n2. Build and run the Defold client:\n\n```sh\n# change to path\n$ cd /path/to/game-xoxo-nakama-client\n\n# build and fix permissions\n$ java -jar /opt/Defold/bob.jar --variant=debug \u0026\u0026 chmod +x ./build/x86_64-linux/dmengine\n\n# run defold with debugging\n$ DM_SERVICE_PORT=dynamic ./build/x86_64-linux/dmengine\n```\n\n## Related Links\n\n* [github.com/ascii8/nakama-go](https://github.com/ascii8/nakama-go) - a Nakama client for Go, with realtime WebSocket and WASM support\n* [github.com/ascii8/nktest](https://github.com/ascii8/nktest) - a Nakama module testing package for Go\n* [github.com/defold/game-xoxo-nakama-client](https://github.com/defold/game-xoxo-nakama-client.git) - a Nakama Tic-Tac-Toe client made with Defold\n* [github.com/defold/game-xoxo-nakama-server](https://github.com/defold/game-xoxo-nakama-server.git) - a Nakama Tic-Tac-Toe server (Lua)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascii8%2Fxoxo-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fascii8%2Fxoxo-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascii8%2Fxoxo-go/lists"}