Kastle: 네 게임이 함께 쓰는 엔진

하우스 엔진은 비싼 결정이며, 우리는 단순한 이유로 그것을 택했습니다. 일주일에 게임 세 개가 같은 3D 세계, 같은 생물, 같은 소리, 같은 HUD, 같은 Steam, 같은 저장, 같은 결정론적 멀티플레이를 필요로 했습니다. Kastle은 그 공통 부분 전체이며, 10월 9일 Castle Survivors에서 추출되었고, 게임 규칙은 한 줄도 없습니다. 게임은 옆의 폴더이며, 자체 시뮬레이션, 콘텐츠, 문구를 가집니다. 엔진은 게임을 절대 가져오지 않으며, 언젠가 그렇게 된다면 자동 검사가 실패합니다.
엔진이 품고 있는 것
셸: 제목, 메뉴, 옵션, 크레딧, 자리, 색, 팀, 채팅이 있는 방, 대전의 생애, 리플레이, 프레임 루프. 네트워크: Steam, LAN, 오프라인을 통한 방과 체크섬, 따라잡기, 재참가, 방장 이전이 있는 결정론적 록스텝. 시뮬레이션: 고정 단계 루프, 시드 난수, 공간 해시, 흐름장과 A*를 쓰는 길찾기, 그리고 공격 및 방어 유형별 피해표, 버프, 공격, 미사일을 포함한 Warcraft III 런타임. 렌더러: 하늘, 날씨, 낮과 밤, 섬 지형, 배경, 동물상, 후처리, 생물, 발사체와 모든 효과. 오디오, 네 가지 HUD 레이아웃을 가진 인터페이스, 스키마 마이그레이션이 있는 저장, Steam, 모드와 창작마당. 그리고 에셋 라이브러리입니다. 생물 모델 164종과 스킨 705개, 아홉 팩의 배경 모델 1,115개, 섬 테마 17개, 성운 하늘 4개와 깊은 우주, 효과 235개, 소리 74개입니다. 게임들이 사들인 팩은 이 라이브러리로 옮겨졌고, 각 게임은 자기가 불러오는 폴더만 함께 출하합니다.
처음 두 주
Kastle은 리플레이와 동기화 이탈 보고서, GPU 생물 애니메이션, 타워용 효과 아틀라스, 위치 기반 무기 소리, 컨트롤러와 Steam Deck 지원과 함께 태어났습니다. 다음 날에는 테스트, 도구, 압축 텍스처, 콘텐츠 모드, Kastle Skirmish라는 예제 게임, 포르투갈어 번역을 갖춘 자체 패키지가 되었습니다. 암호화된 항목을 읽는 Warcraft III 맵 가져오기 기능과 그 게임의 영웅 규칙도 얻었습니다.
10월 24일에는 0.2.0과 0.3.0이 나왔고, 지속적 통합도 함께 왔습니다. 타입, 엔진과 게임의 경계, 커버리지 기준이 있는 테스트, 린트, Electron 안에서 도는 예제, 감사, 릴리스입니다. 방과 록스텝은 적대적인 피어에 대비해 강화되었습니다. 자리마다 비밀 키가 있고, 창의 보안은 이제 엔진이 강제하며, 체크섬은 전체 세계를 포함합니다. 렌더러에는 품질 등급의 단일 표, 셀마다의 배경 컬링, GPU에서 날아다니는 파티클, 화면 크기에 따른 생물 디테일, 전쟁 안개 오버레이가 생겼습니다. 시뮬레이션에는 군중 분리, 안개, 트리거가 생겼습니다. 오프라인 대전은 저장하고 재개할 수 있고, 재참가하는 플레이어는 전체 대전을 다시 재생하지 않고 체크포인트에서 시작하며, 관전자는 로비나 진행 중인 대전을 지켜볼 수 있습니다. 큰 파일은 이제 Git LFS를 거칩니다.
그리고 화면에 보이는 효과들이 있습니다. 칼 베기, 마법 미사일 19개의 일제 사격, RPG의 화염 학교, 빛나는 미사일 18개, MOBA 영웅 궁극기 16개, 여덟 단계의 기 오라(빛의 용까지), 만화풍 발사체 15개, 플립북이 있는 새 아틀라스입니다. 모두 절차적으로 만들어졌으며, 모든 공격 클립의 타격은 칼날이 닿는 바로 그 순간에 맞습니다.
10월 25일 라운드
마지막 라운드는 가장 컸고, 일곱 개 전선에서 동시에 진행되었습니다. Warcraft III 런타임은 명령(정지, 대기, 이동, 공격, 공격 이동, 순찰, 따라가기, 큐에 넣기 위한 시프트)과, 데이터로서의 능력(접근, 시전 지점, 거기서 지불하는 마나와 재사용 대기 시간, 후퇴 또는 채널링, 중단)과, 단계 중 메모리를 할당하지 않는 여섯 칸짜리 인벤토리를 얻었습니다. 길찾기는 유닛 크기, 혼잡 비용, 분리와 함께 흐름에 합류하는 조향을 배웠습니다.
록스텝에서는 끊긴 플레이어의 명령이 재참가 후에도 살아남고, 체크섬은 이름 붙은 부분으로 나뉩니다. 동기화 이탈 보고서는 어떤 시스템이 갈라졌는지 말해 주고, 스튜디오의 리플레이 탭이 첫 번째 이탈을 표시합니다. 결정론 린트는 시뮬레이션 코드에서 두 컴퓨터를 어긋나게 하는 모든 것을 표시합니다. 시드 없는 난수, 벽시계, 비교자 없는 정렬, 순서에 의존하는 반복 등입니다. 소크는 지연, 손실, 재정렬, 분할이 있는 시뮬레이션 네트워크 위에서 완전한 대전을 돌리며, 이미 실제 버그를 찾았습니다. 방장보다 늦게 시작한 카운트다운을 가진 게스트가 처음 턴들을 잃었습니다. 성능 게이트는 예제와 500체 군중을 기준선과 비교해 측정하며, 이는 CI 분을 아끼기 위해 로컬에서 실행합니다. 워커 안에서 돌아가는 시뮬레이션도 측정했습니다. 5,000 유닛에서 프레임당 0.1에서 0.2밀리초를 아껴 주지만, 아직 어떤 게임도 채택하지 않았습니다. 색각 이상용 팀 팔레트는 일반 시각과 시뮬레이션된 시각 모두에서 모든 색 쌍 사이에 최소 거리를 유지합니다. 그리고 엔진의 화면은 영어와 포르투갈어 외에 스페인어와 중국어 간체로도 나옵니다.
그날을 마무리하며 CI는 GPU가 없는 서버에서 다시 초록불이 들어왔습니다. 소프트웨어 렌더러가 가장 낮은 등급을 그리고, 시각 회귀 테스트의 참조 이미지는 이제 서버 자체가 만든 것입니다.
누가 무엇을 쓰는가
Line Tower와 Custom Hero Survival은 Kastle 위에서 전부 돌아가며 새 라운드를 채택했습니다. Castle Survivors는 의도적으로 렌더러만 씁니다. 시뮬레이션, 네트워크, 인터페이스, 저장, 리플레이는 자기 것으로 남습니다. Castle Arena는 자체 록스텝을 가지고 엔진은 쓰지 않지만, 다른 세 게임과 마찬가지로 Kastle Studio와 이야기합니다. 엔진은 오늘 자체 테스트 948개를 가지고 있으며, 각 게임은 그것을 자기 테스트와 함께 돌립니다.
— 팀 일동





