오토마타MP
NieR: Automata 멀티플레이어 모드
경고
이 프로젝트는 진행 중입니다. 게임의 일부 중요한 측면은 잘 지원되지만 일부는 그렇지 않습니다. (아직은) 이 프로젝트를 통해 누군가와 함께 전체 스토리를 플레이할 것이라고 기대하지 마세요.
현재 이 프로젝트는 친구들과 함께 기본적인 세계 탐색 및 탐험을 하거나 디버그 룸에서 플레이하는 용도로만 사용해야 합니다. 퀘스트 동기화는 아직 구현되지 않았습니다. 게임의 일부 부분은 바로 깨질 것입니다.
특징
마스터 서버
- IP를 미리 알지 않고도 클라이언트가 서버를 검색할 수 있습니다.
독립형 서버
- Linux 또는 Windows에서 실행될 수 있는 Go로 코딩된 서버
- 게임 세계(적 및 기타 세계 상태)를 제어하는 "호스트"를 허용하는 MasterClient 시스템
- 플레이어 + 친구뿐만 아니라 2명 이상의 플레이어도 지원됩니다.
리눅스 패키지
아치 리눅스(AUR)
플레이어 동기화
- 위치
- 회전
- 애니메이션
- 포드 발사
- 포드 프로그램
- 포드 손전등
- 무기/로드아웃 선택(실제 무기 유형 자체는 아님)
적 동기화
- MasterClient가 적 생성을 생성할 때 적 생성을 복제합니다.
- 네트워크에 연결되어서는 안 되는 일반 클라이언트 측의 적을 삭제합니다.
- 위치
- 회전
- 건강/살아있는 상태
- 일부 애니메이션
계획된/원하는 기능
- 모델 체인저
- PVP
- 객실/로비 시스템
- 객실/로비에 연결되지 않은 경우 고스트 시스템
역사
2017년에 개발된 모드로, 다른 작업으로 넘어갈 때까지 개발 기간이 매우 짧았습니다. 이는 오픈 소스가 아니었고 원본 버전 뒤의 라이브러리가 오픈 소스 친화적이지 않았기 때문에 더 빨리 출시되었습니다.
이것은 원래 공개적으로 공개할 의도가 없었던 상당히 오래된 코드이기 때문에 코딩 표준이 현재 설정에 미치지 못합니다. 이것을 용서해주세요. 시간이 지나면 해결될 수 있습니다.
2017년 8월 하순
- 개발이 시작되었습니다
- 많은 리버스 엔지니어링
- 스크립팅 시스템(mruby?)
- 엔터티 시스템
- 버디 시스템
- 애니메이션, 버튼
- enet 및 enetpp를 추가하고 이 시스템을 멀티플레이어에 연결했습니다.
- 서버는 독립 실행형 프로그램이 아닌 모드 자체 내에서 직접 호스팅되었습니다.
- 클라이언트/서버는 C++에 정의된 원시 구조 데이터와 통신합니다.
- 시스템은 기능 중간을 연결하고 CPU 컨텍스트를 검색하기 위해 VEH 후크를 사용했습니다.
2017년 9월 초
- 프로젝트가 중단되었으며 실행 과정을 보여주는 몇 가지 짧은 비디오가 녹화되었습니다.
2017-09-01_06-35-26.webm
2022년 7월 하순~현재
- 프로젝트가 부활했습니다
- NieR이 헤드라인을 장식하고 모딩 도구가 출시되고 연락을 받는 것이 여기에 동기를 부여합니다.
- 오픈소스 친화적이지 않은 모든 코드를 제거하고 모든 것을 오픈소스에 해당하는 코드로 대체했습니다.
- 서버 코드는 Linux 또는 Windows에서 실행될 수 있는 독립 실행형 Go 프로젝트에 배치되었습니다.
- 패킷 구조에 플랫버퍼를 사용하도록 리팩토링된 클라이언트/서버 코드
- 새로운 시스템은 safetyhook의 MidHook을 사용하여 중간 기능 후크를 수행하고 컨텍스트를 검색합니다.
- 이는 훨씬 빠르며 스레드로부터 안전하지 않다는 단점이 없습니다.
- 클라이언트 코드 리팩터링이 현재 표준을 유지하고 실제 게임 구조를 더 잘 반영하기 시작했습니다.
- 도마뱀: