Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/update-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
'You are a documentation specialist for Hyperia, an AI-native MMORPG engine built on Three.js with ElizaOS AI agent integration. Your job is to perform COMPREHENSIVE documentation updates, not minimal edits.',
'',
'## Project Overview',
'Hyperia is a RuneScape-inspired MMORPG built on a custom 3D multiplayer engine. Key packages:',
'Hyperia is a classic fantasy MMORPG built on a custom 3D multiplayer engine. Key packages:',
'- packages/shared/ - Core 3D engine (ECS, Three.js, PhysX, networking, React UI)',
'- packages/server/ - Game server (Fastify, WebSockets, PostgreSQL)',
'- packages/client/ - Web client (Vite, React)',
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ This is a hard requirement. DO NOT:

## Project Overview

Hyperia is a RuneScape-style MMORPG built on Three.js WebGPURenderer with TSL shaders.
Hyperia is a classic fantasy MMORPG built on Three.js WebGPURenderer with TSL shaders.

## CRITICAL: Secrets and Private Keys

Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## Project Overview

Hyperia is a RuneScape-style MMORPG built on a custom 3D multiplayer engine. The project features a real-time 3D metaverse engine (Hyperia) in a persistent world.
Hyperia is a classic fantasy MMORPG built on a custom 3D multiplayer engine. The project features a real-time 3D metaverse engine (Hyperia) in a persistent world.

## CRITICAL: Secrets and Private Keys

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

**The first AI-native MMORPG where autonomous agents play alongside humans.**

Hyperia is a RuneScape-inspired MMORPG built on a heavily modified and custom version of [Hyperfy](https://hyperfy.io), an open-source 3D multiplayer engine. The game integrates [ElizaOS](https://elizaos.ai) to enable AI agents to play autonomously in a persistent world. Unlike traditional games where NPCs follow scripts, Hyperia's agents use LLMs to make decisions, set goals, and interact with the world just like human players.
Hyperia is a classic fantasy MMORPG built on a heavily modified and custom version of [Hyperfy](https://hyperfy.io), an open-source 3D multiplayer engine. The game integrates [ElizaOS](https://elizaos.ai) to enable AI agents to play autonomously in a persistent world. Unlike traditional games where NPCs follow scripts, Hyperia's agents use LLMs to make decisions, set goals, and interact with the world just like human players.

## What Makes Hyperia Unique

- **AI Agents as Players**: Autonomous agents powered by ElizaOS that fight, skill, trade, and make decisions using LLMs
- **True OSRS Mechanics**: Authentic tick-based combat (600ms ticks), safespotting, tile-based movement, and classic progression systems
- **Authentic Tick-Based Mechanics**: Combat on 600ms ticks, safespotting, tile-based movement, and classic progression systems
- **Manifest-Driven Design**: Add NPCs, items, and content by editing JSON files—no code changes required
- **Spectator Mode**: Watch agents play in real-time and observe their decision-making process
- **Open Source**: Built on open technology with extensible architecture
Expand All @@ -16,7 +16,7 @@ Hyperia is a RuneScape-inspired MMORPG built on a heavily modified and custom ve

| Category | Features |
|----------|----------|
| **Combat** | Tick-based OSRS mechanics (600ms ticks), attack styles, accuracy formulas, death/respawn system |
| **Combat** | Classic tick-based mechanics (600ms ticks), attack styles, accuracy formulas, death/respawn system |
| **Skills** | Woodcutting, Mining, Fishing, Cooking, Firemaking + combat skills with XP/leveling |
| **Economy** | 480-slot bank, shops, item weights, loot drops |
| **AI Agents** | ElizaOS-powered autonomous gameplay, LLM decision-making, spectator mode |
Expand Down
2 changes: 1 addition & 1 deletion packages/asset-forge/dev-book/01-overview/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,7 @@ Customize material presets:
Customize generation prompts:

**Game Style Prompts:**
- RuneScape 2007: "Low-poly RuneScape style..."
- classic low-poly fantasy: "Low-poly classic fantasy MMORPG style..."
- Generic: "Game-ready 3D asset..."
- Custom: User-defined styles

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ Each preset has the following fields:
"category": "metal",
"tier": 1,
"color": "#CD7F32",
"stylePrompt": "bronze metal texture, copper brown color, slightly dull metallic finish, RuneScape 2007 style",
"stylePrompt": "bronze metal texture, copper brown color, slightly dull metallic finish, classic low-poly fantasy style",
"description": "Basic copper-brown metal, entry-level equipment"
}
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ A medieval bronze sword with leather-wrapped grip and ornate crossguard

**Game Style:**
```
Select: RuneScape 2007
Select: classic low-poly fantasy
```
*Or choose "Custom" and write your own style*

Expand Down Expand Up @@ -125,7 +125,7 @@ The pipeline goes through several stages:
```
"Medieval bronze sword with leather-wrapped grip, detailed ornate
crossguard with Celtic patterns, straight double-edged blade,
pommel for balance, low-poly RuneScape 2007 style, game-ready
pommel for balance, classic low-poly fantasy style, game-ready
geometry, handle at bottom, blade pointing upward"
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,10 +276,10 @@ at entrance, wooden sign hanging from iron bracket"
```
Field: style
Type: Dropdown (optional)
Default: "RuneScape 2007"
Default: "classic low-poly fantasy"

Options:
├─ RuneScape 2007: Low-poly nostalgic MMORPG style
├─ classic low-poly fantasy: Low-poly nostalgic MMORPG style
└─ Generic: Standard game-ready 3D asset style

Custom Style:
Expand Down Expand Up @@ -594,7 +594,7 @@ Status Messages:
What Happens:
1. Uses enhanced prompt for image generation
2. Creates 1024x1024px concept art
3. Applies art style (RuneScape/Generic/Custom)
3. Applies art style (Classic Fantasy/Generic/Custom)
4. Uploads image to server
5. Displays preview

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -903,7 +903,7 @@ Total Assets: 4 weapons × 5 tiers = 20 items

Settings for all:
├─ Quality: high
├─ Style: RuneScape 2007
├─ Style: classic low-poly fantasy
└─ Enable variants: bronze, steel, mithril, adamant, rune
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ interface GenerationState {
assetName: string
assetType: string
description: string
gameStyle: 'runescape' | 'custom'
gameStyle: 'classic' | 'custom'
customStyle: string

// Reference Image
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -376,14 +376,14 @@ interface AssetDetailsCardProps {
assetName: string
assetType: string
description: string
gameStyle: 'runescape' | 'custom'
gameStyle: 'classic' | 'custom'
customStyle: string
customAssetTypes: CustomAssetType[]
customGameStyles: Record<string, GameStyleConfig>
onAssetNameChange: (name: string) => void
onAssetTypeChange: (type: string) => void
onDescriptionChange: (desc: string) => void
onGameStyleChange: (style: 'runescape' | 'custom') => void
onGameStyleChange: (style: 'classic' | 'custom') => void
onCustomStyleChange: (style: string) => void
onBack: () => void
onSaveCustomGameStyle: (name: string, config: GameStyleConfig) => void
Expand All @@ -393,7 +393,7 @@ interface AssetDetailsCardProps {
**Features**:
- Asset name and description input
- Asset type selection (weapon, armor, character, etc.)
- Game style presets (RuneScape, custom)
- Game style presets (classic fantasy MMORPG, custom)
- Custom style creation and management

#### 3. PipelineOptionsCard (`PipelineOptionsCard.tsx`)
Expand Down
4 changes: 2 additions & 2 deletions packages/asset-forge/dev-book/05-frontend/stores.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ interface GenerationState {
assetName: string
assetType: string
description: string
gameStyle: 'runescape' | 'custom'
gameStyle: 'classic' | 'custom'
customStyle: string

// Reference Image Input (4 properties)
Expand Down Expand Up @@ -188,7 +188,7 @@ setEditingPreset: (preset: MaterialPreset | null) => void
setAssetName: (name: string) => void
setAssetType: (type: string) => void
setDescription: (desc: string) => void
setGameStyle: (style: 'runescape' | 'custom') => void
setGameStyle: (style: 'classic' | 'custom') => void
setCustomStyle: (style: string) => void
```

Expand Down
4 changes: 2 additions & 2 deletions packages/asset-forge/dev-book/06-backend/ai-integrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ const response = await fetch('https://api.openai.com/v1/chat/completions', {
"index": 0,
"message": {
"role": "assistant",
"content": "A menacing goblin warrior character standing in T-pose with arms stretched horizontally and empty hands, wearing rugged leather armor with bronze accents, green scaly skin texture, pointed ears, fierce expression, low-poly RuneScape style with blocky geometry and flat-shaded surfaces"
"content": "A menacing goblin warrior character standing in T-pose with arms stretched horizontally and empty hands, wearing rugged leather armor with bronze accents, green scaly skin texture, pointed ears, fierce expression, low-poly classic fantasy MMORPG style with blocky geometry and flat-shaded surfaces"
},
"finish_reason": "stop"
}
Expand Down Expand Up @@ -254,7 +254,7 @@ const response = await fetch('https://api.openai.com/v1/images/generations', {
},
body: JSON.stringify({
model: 'gpt-image-1',
prompt: 'A menacing goblin warrior character in T-pose with empty hands, leather armor with bronze accents, low-poly RuneScape style',
prompt: 'A menacing goblin warrior character in T-pose with empty hands, leather armor with bronze accents, low-poly classic fantasy MMORPG style',
size: '1024x1024',
quality: 'high'
})
Expand Down
14 changes: 7 additions & 7 deletions packages/asset-forge/dev-book/06-backend/api-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,7 @@ Content-Type: application/json
"type": "character",
"subtype": "humanoid",
"generationType": "avatar",
"style": "low-poly RuneScape",
"style": "low-poly classic fantasy MMORPG",
"quality": "high",
"enableRigging": true,
"enableRetexturing": true,
Expand All @@ -541,7 +541,7 @@ Content-Type: application/json
"characterHeight": 1.83
},
"customPrompts": {
"gameStyle": "low-poly RuneScape style, blocky geometry"
"gameStyle": "low-poly classic fantasy MMORPG style, blocky geometry"
}
}
```
Expand Down Expand Up @@ -623,7 +623,7 @@ Host: localhost:3004
"progress": 100,
"result": {
"originalPrompt": "A fierce goblin warrior",
"optimizedPrompt": "A menacing goblin warrior character in T-pose, wearing rugged leather armor with bronze accents, low-poly RuneScape style"
"optimizedPrompt": "A menacing goblin warrior character in T-pose, wearing rugged leather armor with bronze accents, low-poly classic fantasy MMORPG style"
}
},
"imageGeneration": {
Expand Down Expand Up @@ -908,8 +908,8 @@ Host: localhost:3004
{
"version": "1.0.0",
"default": {
"runescape": {
"base": "low-poly RuneScape style",
"classic": {
"base": "low-poly classic fantasy MMORPG style",
"description": "Blocky, stylized geometry with flat textures"
},
"skyrim": {
Expand Down Expand Up @@ -943,8 +943,8 @@ Content-Type: application/json
{
"version": "1.0.0",
"default": {
"runescape": {
"base": "low-poly RuneScape style",
"classic": {
"base": "low-poly classic fantasy MMORPG style",
"description": "Blocky geometry"
}
},
Expand Down
6 changes: 3 additions & 3 deletions packages/asset-forge/dev-book/06-backend/services.md
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ Focus on:
- Clear, specific visual details
- Material and texture descriptions
- Geometric shape and form
- Style consistency (especially for low-poly RuneScape style)
- Style consistency (especially for low-poly classic fantasy MMORPG style)
- T-pose stance with empty hands for rigging compatibility

Keep the enhanced prompt concise but detailed.
Expand Down Expand Up @@ -397,13 +397,13 @@ Generates concept art using OpenAI's GPT-Image-1 model.
**Parameters:**
- `description` (string): Asset description
- `assetType` (string): Asset type (character, weapon, etc.)
- `style` (string): Visual style (runescape, skyrim, etc.)
- `style` (string): Visual style (classic, skyrim, etc.)

**Returns:**
```javascript
{
imageUrl: "data:image/png;base64,iVBORw0KGgo...",
prompt: "A fierce goblin warrior. low-poly RuneScape style...",
prompt: "A fierce goblin warrior. low-poly classic fantasy MMORPG style...",
metadata: {
model: "gpt-image-1",
resolution: "1024x1024",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ interface GenerationConfig {
type: string // Asset type: weapon, armor, character
subtype: string // Specific category
description: string // User description
style?: string // Art style (default: runescape)
style?: string // Art style (default: classic)
quality?: 'standard' | 'high' | 'ultra'

// Optional configuration
Expand All @@ -110,7 +110,7 @@ interface GenerationConfig {
- `description`: Meaningful text (min 10 characters)

**Optional Fields:**
- `style`: Defaults to 'runescape' if not provided
- `style`: Defaults to 'classic' if not provided
- `quality`: Defaults to 'high'
- `metadata`: Additional context (creature type, armor slot, etc.)

Expand Down Expand Up @@ -225,7 +225,7 @@ The blade has a subtle fuller groove running down the center.
Simple cross-guard with slight downward curve.
Leather-wrapped wooden grip with visible wrap texture.
Round pommel with iron finish.
Low-poly RuneScape style with clean edges and minimal polygons.
Low-poly classic fantasy MMORPG style with clean edges and minimal polygons.
The sword should have a slightly weathered iron texture with subtle scratches."
```

Expand Down Expand Up @@ -1016,7 +1016,7 @@ const config: GenerationConfig = {
type: 'weapon',
subtype: 'sword',
description: 'A basic iron sword',
style: 'runescape',
style: 'classic',
quality: 'high',
enableRetexturing: true,
enableSprites: true,
Expand Down Expand Up @@ -1099,7 +1099,7 @@ app.get('/api/generation/pipeline/:id', async (req, res) => {
{
"defaults": {
"quality": "high",
"style": "runescape",
"style": "classic",
"enableRetexturing": false,
"enableSprites": false,
"enableRigging": false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1057,7 +1057,7 @@ describe('Full Generation Pipeline', () => {
type: 'weapon',
subtype: 'sword',
description: 'iron sword',
style: 'runescape'
style: 'classic'
}

// Generate image
Expand Down Expand Up @@ -1180,7 +1180,7 @@ const NO_MANNEQUIN_INSTRUCTION =
**Solution**: Be very explicit about style
```typescript
const STYLE_INSTRUCTION =
"Art style: Low-poly RuneScape 2007 with under 500 polygons, " +
"Art style: Classic low-poly fantasy with under 500 polygons, " +
"flat shading, vibrant saturated colors, chunky proportions, " +
"early 2000s game aesthetic. NOT realistic, NOT high-poly."
```
Expand Down
Loading
Loading