Show HN: 10년간의 리버스 엔지니어링 끝에 DOS Wing Commander 협동 플레이 구현

8 hours ago 3

Wing Commander Together는 DOS판 Wing Commander에서 두 사람이 각자 전투기를 조종하며 편대원으로 협동할 수 있도록 만든 프로젝트로, 2015년부터 11년에 걸쳐 개발됨 메모리 비교와 코드 추적으로 위치, 방향, 전투 동작을 분석하고, 수정한 DOSBox에서 원본 게임 함수를 호출해 발사와 피해 등 멀티플레이 동작을 구현함 두 게임 인스턴스 사이에서 기체 상태와 이벤트를 동기화하며, 서로 다른 객체 슬롯 번호를 매핑하고 임무 진행 정보까지 찾아 협동 플레이를 가능하게 함 2020년에는 플레이 가능한 상태였지만 설치와 네트워크 설정이 복잡했으며, 2026년 WebRTC와 Emscripten을 활용해 브라우저에서 방 코드로 연결하는 방식으로 바꿈 현재 GOG 설치 파일을 브라우저에 드래그 앤드 드롭해 게임 데이터를 넣고 함께 플레이할 수 있으며, 게임 내 문자 채팅과 선택적 음성 채팅도 지원함 함께 전투기를 조종하던 경험에서 출발 어린 시절 형제는 한 명이 조종하고 다른 한 명이 레이저와 애프터버너를 맡아 전투기 한 대를 함께 운용했음 목표는 한 기체의 조작을 나누는 대신, 각자 기체를 몰며 편대원으로 협동 플레이하는 것이었음 2015년: 메모리에서 위치와 속도 찾기 2015년 10월 4일, DOSBox에서 플레이하던 중 게임 메모리에서 플레이어와 편대원의 X/Y/Z 좌표를 찾으면 네트워크 패킷으로 편대원을 제어할 수 있겠다고 생각함 DOS의 주소 지정 가능 메모리는 약 1MB이며, Wing Commander는 게임 상태를 64KB 데이터 세그먼트에 저장함 출발점이 된 “640K면 누구에게나 충분하다”는 Bill Gates의 말은 잘못 알려진 인용임. 실제 발언은 64K에서 640K로 늘리면 10년은 충분할 것으로 생각했지만 그렇지 않았다는 취지였음 좌표 후보를 좁히기 위해 정지 상태의 메모리 스냅샷 두 개와 직진 후 스냅샷을 비교함 함께 움직이는 Paladin이 없는 다음 임무를 준비하고, 항공모함 Claw에서 출발해 주변 객체가 모두 사라질 때까지 직진함 마우스를 비활성화해 회전을 막고, DOSBox의 MEMDUMPBIN 디버그 명령으로 메모리를 덤프함 정지 중에는 변하지 않지만 이동하면 변하는 바이트를 찾고 추적 카메라 화면과 교차 비교해 후보를 줄임 데이터 세그먼트의 변경 영역 35개를 눈으로 살피며 부동소수점 값이나 작은 정수 변화를 찾았고, 약 12곳으로 좁힌 뒤 위치 주소...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵