Game Asset Generator

by MubarakHAlketbi
Verified
# Game Asset Generator using MCP and Hugging Face Spaces This project is an innovative tool that simplifies game asset creation by leveraging AI-powered generation. Whether you're a game developer seeking rapid prototypes or an AI enthusiast exploring generative models, this tool enables you to create **2D** and **3D game assets** from text prompts effortlessly. It integrates AI models from **Hugging Face Spaces**—powered by `"gokaygokay/Flux-2D-Game-Assets-LoRA"`, `"gokaygokay/Flux-Game-Assets-LoRA-v2"`, and one of three 3D model generation spaces (`InstantMesh`, `Hunyuan3D-2`, or `Hunyuan3D-2mini-Turbo`, which you must duplicate to your account)—and uses the **Model Context Protocol (MCP)** for seamless interaction with AI assistants like **Claude Desktop**. <p align="center"> <a href="https://pay.ziina.com/MubarakHAlketbi"> <img src="https://img.shields.io/badge/Support_Me-Donate-9626ff?style=for-the-badge&logo=https%3A%2F%2Fimgur.com%2FvwC39JY" alt="Support Me - Donate"> </a> <a href="https://github.com/RooVetGit/Roo-Code"> <img src="https://img.shields.io/badge/Built_With-Roo_Code-412894?style=for-the-badge" alt="Built With - Roo Code"> </a> <br> <a href="https://glama.ai/mcp/servers/@MubarakHAlketbi/game-asset-mcp"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@MubarakHAlketbi/game-asset-mcp/badge" /> </a> </p> --- ## Table of Contents 1. [Project Overview](#project-overview) 2. [Features](#features) 3. [How It Works](#how-it-works) 4. [Prerequisites](#prerequisites) 5. [Installation](#installation) 6. [Usage](#usage) 7. [Configuration](#configuration) 8. [File Management](#file-management) 9. [MCP Integration](#mcp-integration) 10. [Troubleshooting](#troubleshooting) 11. [Advanced](#advanced) 12. [Contributing](#contributing) 13. [License](#license) --- ## Project Overview The **Game Asset Generator** (version **0.3.0**) harnesses AI to streamline the creation of game assets. It supports generating **2D assets** (e.g., pixel art sprites) and **3D assets** (e.g., OBJ and GLB models) from text prompts, integrating with **Hugging Face Spaces** and the **Model Context Protocol (MCP)**. This release introduces support for multiple 3D model generation spaces—`InstantMesh`, `Hunyuan3D-2`, and `Hunyuan3D-2mini-Turbo`—offering flexibility and enhanced performance. Built with **Node.js** and the **MCP TypeScript SDK (v1.7.0)**, it provides a robust, cross-platform solution for asset generation. --- ## Features - **2D Asset Generation**: Create pixel art, sprites, or other 2D assets from text prompts (e.g., "pixel art sword"). - **3D Asset Generation**: Generate 3D models (OBJ and GLB formats) from text descriptions, with automatic image-to-model conversion. - **Multiple 3D Model Spaces**: Supports `InstantMesh`, `Hunyuan3D-2`, and `Hunyuan3D-2mini-Turbo` for varied 3D generation workflows. - **MCP Integration**: Seamlessly interact with the tool via MCP-compatible clients like **Claude Desktop**. - **File Management**: Automatically saves and organizes assets in a local `assets` directory with resource URIs (e.g., `asset://{type}/{id}`). - **Robust Input Validation**: Uses **Zod** for secure and reliable input processing. - **Multi-Client Support**: Handles multiple simultaneous connections via **SSE transport**. - **Secure Remote Access**: Optional **HTTPS** support for safe remote communication. - **Extensible Backend**: Modular design for easy integration of new models or features. - **Cross-Platform**: Compatible with Windows, macOS, and Linux using **Node.js**. - **Configurable 3D Generation**: Customize parameters like inference steps, guidance scale, and turbo mode via environment variables. --- ## How It Works The Game Asset Generator transforms text prompts into game-ready assets through an automated pipeline: 1. **User Input**: Submit a text prompt (e.g., "pixel art sword" or "isometric 3D castle"). 2. **MCP Server**: Routes the prompt to the appropriate tool (`generate_2d_asset` or `generate_3d_asset`). 3. **AI Model Interaction**: - **2D Assets**: Utilizes the **Hugging Face Inference API** with `"gokaygokay/Flux-2D-Game-Assets-LoRA"` (50 steps). - **3D Assets**: - Generates an initial image using `"gokaygokay/Flux-Game-Assets-LoRA-v2"` (30 steps). - Converts the image to a 3D model using one of: - **InstantMesh**: Multi-step process (`/preprocess`, `/generate_mvs`, `/make3d`). - **Hunyuan3D-2**: Single-step process (`/generation_all`). - **Hunyuan3D-2mini-Turbo**: Single-step process (`/generation_all`) with configurable turbo modes. 4. **File Output**: Saves assets (PNG for 2D, OBJ/GLB for 3D) in the `assets` directory. 5. **Response**: Returns resource URIs (e.g., `asset://3d_model/filename.glb`) for immediate use. ### Workflow Diagram ``` User Prompt → MCP Server → AI Model(s) → Local File → Resource URI Response ``` Prompts are automatically enhanced with "high detailed, complete object, not cut off, white solid background" for optimal quality. --- ## Prerequisites - **Node.js**: Version 16+ (includes `npm`). - **Git**: For cloning the repository. - **Internet Access**: Required for Hugging Face API connectivity. - **Hugging Face Account**: Needed for API access; obtain your token from [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens). - **NPM Packages**: - `@gradio/client`: Interacts with Hugging Face Spaces. - `@huggingface/inference`: For direct model inference. - `@modelcontextprotocol/sdk`: Implements the MCP server. - `dotenv`: Loads environment variables. - `express`: Enables SSE transport. - `zod`: Ensures input validation. - `sharp`: Handles image processing. - **Optional**: **Claude Desktop** (or another MCP client) for enhanced interaction. --- ## Installation 1. **Clone the Repository**: ```bash git clone https://github.com/yourusername/game-asset-mcp.git cd game-asset-mcp ``` 2. **Install Dependencies**: ```bash npm install ``` 3. **Configure Environment**: - Copy the example `.env` file: ```bash cp .env.example .env ``` - Edit `.env` with your **Hugging Face API token** and duplicated **MODEL_SPACE**. See [Configuration](#configuration) for details. 4. **Run the Server**: - **Local (stdio transport)**: ```bash npm start ``` - **Custom Working Directory**: ```bash node src/index.js /path/to/directory ``` - **Remote (SSE transport)**: ```bash node src/index.js --sse ``` - **Remote with HTTPS**: ```bash node src/index.js --sse --https ``` Requires `ssl/key.pem` and `ssl/cert.pem` (see [ssl/README.md](ssl/README.md)). > **Note**: Uses ES modules (`"type": "module"` in `package.json`). Ensure Node.js 16+ is installed (`node --version`). --- ## Usage Interact with the server via an **MCP client** (e.g., Claude Desktop) or programmatically: - **Generate a 2D Asset**: - **Command**: `generate_2d_asset prompt:"pixel art sword"` - **Output**: Saves a PNG file (e.g., `2d_asset_generate_2d_asset_1698765432.png`) and returns its URI. - **Generate a 3D Asset**: - **Command**: `generate_3d_asset prompt:"isometric 3D castle"` - **Output**: Saves OBJ/GLB files and intermediate images, returning their URIs. Provides an operation ID for long-running tasks. ### Prompt Examples - **Natural Interaction**: - `generate_2d_sprite prompt:"pixel art sword"` - `generate_3d_model prompt:"isometric 3D castle"` ### With Claude Desktop After configuring (see [Configuration](#configuration)), type commands directly in the interface. --- ## Configuration Customize the server via the `.env` file: ### Required Settings - **HF_TOKEN**: Hugging Face API token. ```plaintext HF_TOKEN=your_hf_token ``` - **MODEL_SPACE**: Your duplicated 3D model space (e.g., `your-username/InstantMesh`). - Duplicate one of: - [InstantMesh](https://huggingface.co/spaces/tencentARC/InstantMesh) - [Hunyuan3D-2](https://huggingface.co/spaces/tencent/Hunyuan3D-2) - [Hunyuan3D-2mini-Turbo](https://huggingface.co/spaces/tencent/Hunyuan3D-2mini-Turbo) ```plaintext MODEL_SPACE=your-username/InstantMesh ``` ### Optional 3D Model Settings | Variable | Description | Valid Range/Default | |---------------------------|-----------------------------------------------|---------------------------| | `MODEL_3D_STEPS` | Inference steps | Varies by space (see below) | | `MODEL_3D_GUIDANCE_SCALE`| How closely the model follows the prompt | 0.0-100.0 (default: 5.0-5.5) | | `MODEL_3D_OCTREE_RESOLUTION` | Detail level of the 3D model | Varies by space (see below) | | `MODEL_3D_SEED` | Randomness control | 0-10000000 (default: varies) | | `MODEL_3D_REMOVE_BACKGROUND` | Remove image background | `true`/`false` (default: `true`) | | `MODEL_3D_TURBO_MODE` | Generation mode (Hunyuan3D-2mini-Turbo only) | `Turbo`, `Fast`, `Standard` (default: `Turbo`) | | `MODEL_SPACE_TYPE` | Override space type detection | `instantmesh`, `hunyuan3d`, `hunyuan3d_mini_turbo` | #### Space-Specific Defaults - **InstantMesh**: - Steps: 30-75 (default: 75) - Seed: Default 42 - **Hunyuan3D-2**: - Steps: 20-50 (default: 20) - Guidance Scale: Default 5.5 - Octree Resolution: `256`, `384`, `512` (default: `256`) - Seed: Default 1234 - **Hunyuan3D-2mini-Turbo**: - Steps: 1-100 (default: 5 for `Turbo`, 10 for `Fast`, 20 for `Standard`) - Guidance Scale: Default 5.0 - Octree Resolution: 16-512 (default: 256) - Seed: Default 1234 ### Transport Settings - **PORT**: SSE transport port (default: 3000). ```plaintext PORT=3000 ``` ### Claude Desktop Setup Edit the config file: - **MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "game-asset-generator": { "command": "node", "args": ["/full/path/to/game-asset-mcp/src/index.js"] } } } ``` Restart Claude Desktop after editing. --- ## File Management - **Storage Location**: Assets are saved in `./assets` within the working directory. - **Naming Convention**: Files use a prefix, tool name, timestamp, and unique ID (e.g., `2d_asset_generate_2d_asset_1698765432_abcd1234.png`). - **Customization**: Set a custom directory: ```bash node src/index.js /path/to/custom/directory ``` - **Resource Access**: Use MCP URIs (e.g., `asset://2d_asset/filename.png`) to list or read assets. --- ## MCP Integration The **Model Context Protocol (MCP)** enables this tool to serve AI clients securely: - **Tools**: `generate_2d_asset`, `generate_3d_asset`. - **Resources**: Managed via `asset://` URIs. - **Prompts**: `generate_2d_sprite`, `generate_3d_model`. - **Compatibility**: Works with **Claude Desktop** and other MCP clients. --- ## Troubleshooting - **API Errors**: Check network connectivity or rate limits; review `./logs/server.log`. - **Authentication Issues**: Verify `HF_TOKEN` and `MODEL_SPACE` in `.env`. - **ES Modules Error**: Ensure Node.js 16+ (`node --version`). - **Logs**: Inspect detailed logs: ```bash tail -f ./logs/server.log ``` --- ## Advanced ### API Endpoints and Integration - **2D Asset Generation**: Uses `"gokaygokay/Flux-2D-Game-Assets-LoRA"` (50 steps). - **3D Asset Image Generation**: Uses `"gokaygokay/Flux-Game-Assets-LoRA-v2"` (30 steps). - **3D Model Conversion**: - **InstantMesh**: Multi-step (`/check_input_image`, `/preprocess`, `/generate_mvs`, `/make3d`). - **Hunyuan3D-2**: Single-step (`/generation_all`). - **Hunyuan3D-2mini-Turbo**: Single-step (`/generation_all`) with turbo modes. ### Versioning - **Current Version**: 0.3.0 (Added Hunyuan3D-2mini-Turbo support). - **MCP SDK Version**: 1.7.0. - **Format**: MAJOR.MINOR.PATCH (SemVer). ### Backend Architecture - **Core File**: `src/index.js`. - **Dependencies**: See `package.json`. - **Security**: Zod validation, path traversal prevention, HTTPS support, rate limiting. - **Performance**: Async processing, retry with backoff, GPU quota handling. --- ## Contributing We welcome contributions! To participate: 1. **Fork the Repository**: Create your copy on GitHub. 2. **Make Changes**: Add features, fix bugs, or enhance docs. 3. **Submit a Pull Request**: Detail your changes. 4. **Open Issues**: Report bugs or suggest improvements. Follow standard coding conventions and include tests where applicable. --- ## License Licensed under the **MIT License**. See the [LICENSE](LICENSE) file for details.