Service
GitHub - Julian-adv/OpenMMO
Julian-adv
2026.07.23
·GitHub·by Homin.Lee#MMORPG#AI Agents#Rust#Svelte#Three.js
핵심 포인트
- 1OpenMMO는 AI 에이전트와 인간 플레이어가 동일한 WebSocket 프로토콜을 사용하여 구분 없이 상호작용하는 평등한 환경의 MMORPG입니다.
- 2이 프로젝트는 3D 환경, 실시간 날씨 및 천체 시뮬레이션, 절차적으로 생성된 방대한 세계와 같은 고도화된 게임 기능을 포함하고 있습니다.
- 3Rust 기반의 서버 아키텍처와 Svelte 및 Three.js를 활용한 클라이언트 구성을 통해 확장성 있는 멀티플레이어 환경을 구축했습니다.
OpenMMO은 인공지능(AI) 에이전트와 인간 플레이어가 동등한 권한을 가지고 상호작용하는 멀티플레이어 온라인 롤플레잉 게임(MMORPG) 프로젝트입니다. 이 시스템의 핵심 철학은 Agent-Human Parity로, AI 에이전트가 별도의 특권 API나 엔드포인트를 통하지 않고, 인간 플레이어와 동일한 WebSocket 프로토콜을 사용하여 게임 월드에 참여한다는 점입니다.
핵심 기술 및 방법론
- 아키텍처 및 통신:
- Server: Rust 기반의 비동기(async) 서버를 사용하여
tokio런타임과tokio-tungstenite를 통해 WebSocket 통신을 처리합니다. 상태 관리는broadcast channels를 활용합니다. - Client:
Svelte와TypeScript를 기반으로 하며,Threlte(Three.js)를 통해 WebGPU 기반의 3D 환경을 렌더링합니다. - Agent Client:
rmcp(Rust MCP server)를 사용하여 구동되며, 인간과 동일한 인터페이스로 서버와 상호작용합니다.
- Server: Rust 기반의 비동기(async) 서버를 사용하여
- 게임 월드 시스템:
- Procedural Generation: 32km × 32km 규모의 월드가 지형, 강, 도로 네트워크 등을 포함하여 완전히 프로시저럴하게 생성됩니다. 특히 강은
Gerstner파동 알고리즘이 적용된 물 시스템과 연동되며, 도로망은 지형의 정착지를 자동으로 연결합니다. - Housing & Environmental: 모듈형 목조 구조 건축 시스템을 지원하며, 층별(multi-story) 오클루전(occlusion) 처리와 L자형 지붕 연결 기능을 제공합니다. 일조 시뮬레이션은 천체 궤도(쌍둥이 달 및 행성 공전)에 따른 낮/밤 주기와 계절적 변화를 구현합니다.
- Procedural Generation: 32km × 32km 규모의 월드가 지형, 강, 도로 네트워크 등을 포함하여 완전히 프로시저럴하게 생성됩니다. 특히 강은
- 게임플레이 및 시뮬레이션:
- Combat System:
NetHack/D&D스타일의 서버 권한(server-authoritative) 전투 시스템을 채택했습니다. 6가지 핵심 속성(STR, DEX, CON, INT, WIS, CHA)은 범위 내에서 결정되며, 캐릭터 생성 시 주사위 방식을 사용합니다. - Inventory & Physics: 중량 제한 기반의 인벤토리와 11개 슬롯의 페이퍼 돌(paper-doll) 시스템이 적용되었습니다. 지형의 층(floor) 개념이 아이템 픽업 로직에 반영되어, 특정 층에 드롭된 아이템은 해당 높이에서만 상호작용이 가능합니다.
- Combat System:
- 기술 스택 상세:
- Shared Library:
shared/크레이트(Crate)를 통해 서버, 클라이언트(WASM), 에이전트 클라이언트 간에 게임 로직을 공유하여 일관성을 유지합니다. - Deployment:
systemd를 활용한 서비스 관리와RUST_LOG환경 변수를 통한 상세 로깅을 지원하며, 배포는rsync와SIGTERM을 통한 우아한 종료(graceful shutdown) 메커니즘을 사용합니다.
- Shared Library:
OpenMMO는 이러한 기술적 설계를 통해 클라이언트와 서버 간의 엄격한 유효성 검사를 수행하며, 에이전트와 플레이어 간의 인위적인 구분 없는 진정한 의미의 평등한 가상 사회를 구현하는 데 초점을 맞추고 있습니다.