1998년 울티마 온라인 데모 서버, 10년 만에 부활!
1998년 출시된 울티마 온라인(Ultima Online) 데모 서버를 10년에 걸쳐 리버스 엔지니어링하여 C99 코드로 재구성
MSVC x86으로 컴파일된 5,000개 이상의 함수를 분석, LLM(Large Language Model)의 도움을 받아 완성
게임 내 버그 수정 및 새로운 기능 추가를 통해 1998년 당시의 게임 환경을 재현
커뮤니티에서는 당시의 게임 경험에 대한 향수를 느끼며, 오픈 소스 프로젝트에 대한 기대를 표명
리버스 엔지니어링 과정 및 기술 스택
프로젝트는 radare2를 사용하여 바이너리 파일을 분석하고, MSVC x86으로 컴파일된 5,000개 이상의 함수를 C99 코드로 변환했다. 특히, LLM(Large Language Model)의 도움을 받아 오랜 기간 진행된 작업을 완료했다는 점이 주목할 만하다. 또한, 클래스 계층 구조(Class Hierarchy)를 정확하게 파악하는 것이 중요했으며, CEntity, CResourceEntity, CItem, CContainer, CMobile, CPlayer 등의 클래스 구조를 재현했다.
게임 내 버그 수정 및 기능 추가
리버스 엔지니어링을 통해 게임 안정성(Stability)을 저해하는 문제들을 해결하고, 게임 플레이(Gameplay) 관련 버그를 수정했다. 스킬 획득(Skill Gain), 명성 시스템(Fame/Notoriety), 스폰 밀도(Spawn Density) 등 다양한 측면에서 개선이 이루어졌다. 또한, 데모 서버에서 비활성화되었던 스폰 시스템(Spawn System)과 아이템 디케이 시스템(Decay System)을 복원하고, Meditation, Stealth, Remove Trap 등의 새로운 기능을 추가했다.
네트워크 프로그래밍 및 에뮬레이터 개발
댓글에서는 1990년대 후반 MMO의 네트워크 최적화(Network Optimization) 기술에 대한 감탄과 함께, 울티마 온라인(Ultima Online)의 독특한 게임성에 대한 향수를 표현했다. 특히, TCP 기반의 네트워크 프로토콜 사용에 대한 언급이 있었으며, 이는 당시의 기술적 제약 속에서 이루어진 개발 노력의 일면을 보여준다. 또한, UO 에뮬레이터(Emulator) 개발 경험을 공유하며, 당시의 게임 개발 환경에 대한 회고가 이어졌다.
데이터 복원 및 월드 재구성
개발자는 UoDemo.dat를 기반으로, 오클로(Ocllo) 섬 외의 지역에 대한 맵 데이터(Map Data)를 복원했다. 문, 표지판, 장식, 텔레포터, 함정, 상자, 스폰 위치(Spawn Locations) 등 다양한 요소들을 재구성하여, 1998년 당시의 울티마 온라인(Ultima Online) 월드를 거의 완벽하게 재현했다. 또한, 생태계 시스템(Ecology System)을 복원하여, 늑대가 토끼를 사냥하는 등의 모습을 구현했다.