{"id":50496122,"url":"https://github.com/funplayai/funplay","last_synced_at":"2026-06-02T07:03:28.774Z","repository":{"id":360244610,"uuid":"1206791014","full_name":"FunplayAI/Funplay","owner":"FunplayAI","description":"AI game development workbench for building games across engines with chat-driven workflows, engine integration, project assets, and asset generation.","archived":false,"fork":false,"pushed_at":"2026-06-02T04:38:20.000Z","size":6090,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T06:22:27.382Z","etag":null,"topics":["ai","asset-generation","desktop-app","electron","game-development","game-engine","mcp","react","typescript","unity"],"latest_commit_sha":null,"homepage":"https://funplay.top/","language":"TypeScript","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/FunplayAI.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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-04-10T08:58:39.000Z","updated_at":"2026-06-02T04:38:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/FunplayAI/Funplay","commit_stats":null,"previous_names":["funplayai/funplay"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/FunplayAI/Funplay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2FFunplay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2FFunplay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2FFunplay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2FFunplay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FunplayAI","download_url":"https://codeload.github.com/FunplayAI/Funplay/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2FFunplay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33810344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"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":["ai","asset-generation","desktop-app","electron","game-development","game-engine","mcp","react","typescript","unity"],"created_at":"2026-06-02T07:03:27.910Z","updated_at":"2026-06-02T07:03:28.766Z","avatar_url":"https://github.com/FunplayAI.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Funplay\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./Logo.png\" alt=\"Funplay\" width=\"144\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  An AI game development workbench for turning ideas into polished playable games across modern game engines.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./README.md\"\u003eEnglish\u003c/a\u003e · \u003ca href=\"./README.zh-CN.md\"\u003e简体中文\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Electron-41%2B-47848f?logo=electron\u0026logoColor=white\" alt=\"Electron\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/React-19-61dafb?logo=react\u0026logoColor=111111\" alt=\"React 19\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-strict-3178c6?logo=typescript\u0026logoColor=white\" alt=\"TypeScript strict\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-green\" alt=\"MIT License\" /\u003e\n\u003c/p\u003e\n\nFunplay is an open-source desktop AI workspace for game creation. It is designed for people who have strong game ideas but do not want to fight engine setup, project structure, asset pipelines, editor menus, build steps, or the hidden complexity of modern game development.\n\nThe product vision is direct: describe the game you want, connect the engine and AI providers you trust, and let Funplay help you plan, build, generate assets, inspect runtime state, test changes, and keep the project moving toward a polished playable result.\n\nUnity is the first-class engine workflow today. The architecture is engine-aware and not locked to one editor: MCP, engine status panels, project inspectors, tool contracts, and runtime adapters are shaped so Godot, Unreal, custom web games, and other engine workflows can share the same AI workspace over time.\n\n## What Funplay Helps With\n\n- Turn rough game concepts into scoped development plans.\n- Break down unfamiliar engine workflows into approachable steps.\n- Create and modify project files with an agent that understands the current workspace.\n- Use AI providers for coding, planning, review, asset prompts, and long-running tool workflows.\n- Open and inspect engine projects, starting with Unity Editor and Unity MCP workflows.\n- Generate and manage game assets, including 2D images, UI, textures, audio, 3D, and animation-oriented jobs.\n- Keep tool calls visible through compact summaries, detail overlays, permission checks, and recovery metadata.\n- Store projects, sessions, provider settings, generated assets, and agent run history locally.\n\n## Highlights\n\n- Project-first desktop workspace: sessions, files, assets, providers, and engine state live around a real local project.\n- Native agent runtime: file reading, patching, terminal, browser inspection, web search, MCP, memory, notifications, and checkpoint tools.\n- Claude Code runtime option: use Claude Code-style project automation from the same desktop shell.\n- Multi-provider setup: OpenAI-compatible providers, Anthropic, Google, Bedrock, and custom endpoints.\n- Asset Generation Center: provider-backed generation jobs with deterministic output naming and project asset discovery.\n- Engine integration layer: Unity workflow support today, with a path toward additional engines through MCP and engine adapters.\n- Local-first persistence: SQLite-backed project/session state with secrets kept in the main process.\n- Desktop packaging automation for macOS split-architecture builds and Windows installers.\n\n## Repository Layout\n\n```text\nelectron/main/      Main-process services, IPC handlers, storage, agent runtimes\nelectron/preload/   Secure context bridge exposed to the renderer\nsrc/                React renderer UI\nshared/             Cross-process types, provider catalog, shared planners\ntests/              Runtime and deterministic agent tests\nscripts/            Build, smoke, benchmark, and release helper scripts\nresources/          Icons and runtime asset placeholders\n```\n\nImportant boundaries:\n\n- Renderer code in `src/` must not import from `electron/main/`.\n- Main-process code in `electron/main/` must not import from `src/`.\n- Cross-process contracts belong in `shared/` and the preload bridge.\n- New IPC requires type updates, preload exposure, main handler wiring, and Zod validation.\n\n## Agent And Engine Architecture\n\nFunplay separates runtime orchestration from provider and engine integrations:\n\n- `electron/main/agent-core/` owns runtime-agnostic orchestration: run registry, controller, permissions, event flow, checkpoints, and transcript ledger behavior.\n- `electron/main/agent-platform/` owns provider-specific runtime adapters, tool contracts, MCP integration, engine control tools, and workspace actions.\n- `src/` projects Agent Core parts into the desktop transcript, settings pages, asset library, engine panel, and generation center.\n\nThe target shape is one agent message stream as the source of truth. UI, operation logs, persistence views, and tool detail panels are projections from that stream rather than competing ledgers.\n\n## Providers, Assets, And Secrets\n\nFunplay supports separate configuration for chat/model providers, asset-generation providers, and MCP servers. API keys are stored by the main process secret store and are not sent to the renderer.\n\nUseful environment variables for development:\n\n- `FUNPLAY_CLAUDE_CODE_CLI_PATH` - override the Claude Code CLI executable path.\n- `FUNPLAY_CLAUDE_CODE_FORCE_CLI=1` - force the legacy Claude CLI stream path.\n- `FUNPLAY_ALLOW_LOCAL_WEB_TOOLS=1` - allow local URL fetches in web tool tests.\n- `BRAVE_SEARCH_API_KEY` / `BING_SEARCH_API_KEY` - enable web search providers.\n- `FUNPLAY_E2E_CLAUDE_API_KEY` + `FUNPLAY_E2E_CLAUDE_MODEL` - enable live Claude SDK E2E checks.\n\n## Development\n\nStart the app locally:\n\n```bash\nnpm install\nnpm run dev\n```\n\n`npm run dev` rebuilds native Electron dependencies for the correct ABI and starts the Electron Vite development server.\n\nOn first launch:\n\n1. Open Application Settings.\n2. Add at least one AI provider.\n3. Create or open a game project.\n4. Choose the runtime, model, permission mode, and engine workflow.\n5. Start with a goal such as \"make a playable web demo\" or \"open this Unity project and add the first level loop.\"\n\nCommon development commands:\n\n```bash\nnpm run dev                 # Start the desktop app in development mode\nnpm run build               # Type-check and build all Electron targets\nnpm run test:runtime        # Run runtime tests with native ABI handling\nnpm run ui:smoke            # Renderer UI smoke checks\nnpm run ui:electron-smoke   # Electron UI smoke scenarios\nnpm run ui:maturity-gate    # UI maturity gate\nnpm run agent:e2e           # Deterministic agent E2E checks\n```\n\nPackaging:\n\n```bash\nnpm run dist:mac:split\nnpm run release:verify-mac-updates\nnpm run dist:win:x64\n```\n\nIf you run a single Node test manually, rebuild native modules for Electron afterward:\n\n```bash\nnpm run rebuild:native:force\n```\n\n## Contributing\n\nSmall, focused pull requests are easiest to review. Before opening a PR, run:\n\n```bash\nnpm run build\nnpm run test:runtime\n```\n\nFor UI changes, also run:\n\n```bash\nnpm run ui:smoke\nnpm run ui:electron-smoke\nnpm run ui:maturity-gate\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for repository boundaries and PR expectations.\n\n## Project Status\n\nFunplay is pre-1.0. The public release line starts at `v0.3.0`, with current stabilization focused on:\n\n- multi-engine agent workflows\n- native tool reliability and permission clarity\n- provider and asset-generation contracts\n- desktop UI polish\n- packaging, signing, and update metadata automation\n\n## License\n\nFunplay is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunplayai%2Ffunplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffunplayai%2Ffunplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunplayai%2Ffunplay/lists"}