좀비의 길찾기에 관한 도전과 모험
이번 개발자블로그는 우리의 최상위목표인 '좀비 길찾기'에 주력하여 서술됩니다.
개발우선순위 그리고 페이스
우리의 주요 촛점은 아키텍쳐 설정, 개발팀과 게임 양측에 도움이 될 아키텍쳐 목표 설정입니다. 이 엄격한 단기 목표는 개발 팀이 한정된 자원을 관리하고 개발하기 위한 훈련이 될것입니다. 새로운 '좀비 길찾기' 목표는 이 계획의 좋은 결과 예시가 될것이라고 생각합니다.
개발 우선순위 제설정으로 미래의 중요한 변화 결과에 대한 몇가지 예시입니다:
- 완전히 새로운 렌더링 시스템(DX10 혹은 DX11 로 업그레이드 될수 있는,포트도 포함하여 ports as well).
- 서버를 위한 진정한 멀티스레딩/멀티코어 그리고 아마 클라이언트도.
- 진짜 동물 습성을 토대로한 완전히 새로운 동물AI.
- "action"시스템의 제개발, 마우스 휠 스크롤 엑션 시스템 교체.
- 인벤토리 시스템 코드 제조정. 유저들에게는 커다란 변화는 아닐것입니다, 더 좋은 퍼포먼스와 더 낮은 버그가능성 그리고 향상된 시스템을 기대합니다.
배경
좀비는 게임개발에 가장 어려운 개발 구성요소임을 증명되었습니다. 우리가 개발을 할때 이미 엔진 안에는 우리가 개발에 필요한 AI 매개 변수가 있었습니다.엔진 안에서 AI는 캐시값, 타겟같은(공유 타겟 정보, 등등..) "per agent"를 기초로 계산합니다. 모드에서는, 이것이 플레이어 숫자와 거리에 따라 값이 떨어집니다. 이것은 모드의 좀비가 더 간단하게 주위를 돌아다니며 플레이어의 주변에서만 활성화 되는것입니다.
행동 문제뿐만 아니라 우리는 실험 문제 길찾기와 AI가 충돌이 일어나는것 입니다. 우리는 엔진에서 한번도 디자인되지 않았던 특히 건물 인테리어등에 관해 작동될 방식을 찾았습니다만, 현제 빌드에서 보시다싶이 만족스러운 결과가 나오지 않습니다.결국 우리는 이 문제를 해결하기 위해선 처음부터 다시 고쳐야겠다는 결정을 내렸습니다.
도전
많은 놀라운 해결책이 길찾기 로 부터 나타났습니다. 이것은 꽤 비디오게임 산업에서 표준적인 부분이었습니다. 우리의 상황은 그다니 특별한게 아니였습니다 : 우리의 월드는 크지만, 여전히 우리는 작고 정밀한것이 필요하다는 것이었습니다.
팀은 이 문제를 해결하기 위해 navigation meshes를 사용하기로 했습니다. 심각한 문제는 지금부터입니다. 어떻게 2백만개나 되는 각기다른 메쉬를 생성하는가 입니다. 그래서 월드를 그리드로 나누고 레이케스트 를 정확한 간격으로, 그리고 네브메쉬 덩어리도 생성했습니다. 이제 이것은 데이터를 서버와 클라이언트 모두 읽어드릴 수 있는 데이터포장 방법 이 됩니다.This uses the wonderful approaches outlined in the open source navmesh project Recast and Detour.
결과
해결방안을 찾은 프로그레머 Martin Slavkov와 이야기를 해서 간략한 설명을 위해 몇가지 스크린샷을 얻어왔습니다.
Navmesh 생성 (view Imgur Gallery of generation)
월드를 읽고, 오브젝트들을 모두 불러오고, 그리고 추적을 통해 수십억의 이동 경로를 만드는 간단한 프로그램 입니다. 이것은밖을 걷는것 뿐만아니라 건물 내부에서도 추적이 됩니다. 여전히 작업중인 매우 큰 스케일의 월드의 내부 와 외부를 정밀하게 작업 할 수 있습니다. 길찾기의 문제의 해결책을 찾는것이 더욱 쉬워집니다.
in-game 사용 (view Imgur Gallery of navmesh in action)
엔진은 필요에따라 그때그때 청크를 불러들일수 있습니다. 이것은 메모리(최대로 약 600mb)를 사용합니다. 하지만 이것은 필요로 할때만이며, 64비트 서버에서는 메모리 부족 현상이 발생할 일이 덜할 것 입니다.
현제 팀은 AI길찾기를 병렬화하는데 노력을 기울이고있으며, 별도의 코어에서 작동 할 수 있습니다. 이러한 방법으로 새로이 개발되는 것들은 슬프게도 개발진척이 더뎌지겠지만, 최적화에는 커다란 전진이 있을것입니다.
지금까지 두개의 다른 시스템이 AI네비게이션에 사용되었습니다. 외부 시스템은 정적, 이동하는 오브젝트와 주변을 탐색하였고, 내부 "path"시스템은 건물 내부에서만 사용되었습니다. 이 행동 정의에 따라 AI가 따라올수가 있었고,이때문에 내부 인테리어 메소드가 줄어들었고 그럼에도 많은 수의 'agents'때문에 퍼포먼스에 커다란 악영향을 끼쳤습니다.
스크린샷을 보시면 하단의 빨간 두 점과 그를 잇는 빨건선을 보실 수 있습니다. 이제 시스템이 하나로 합쳐졌기 때문에 보다 효율적으로(더 자연스럽게) AI의 길찾기 문제가 더 좋아진 퍼포먼스와 함께 해결됬습니다.
리드 아티스트, Chris Torchia의 보고 (View Imgur Gallery of new art)
곧 실험빌드에 추가될것들을 보고 할 수 있게되어 기쁩니다. 최근 Prague 와 Bratislava 스튜디오 에서 첫번째 미팅을 가졌고 아티스트들이 만들고있는 새로운 동물 애니메이션을 드디어 보았습니다. 우리는 기초 프로토타입 애니메이션을 이제 Bratislava 아티스트들의 끝내주는 작품으로 교채할 것입니다.
즉석 낚시 도구가 만들어졌고, 연못에서 낚시를 할수 있습니다. 또 우리는 요리를 할수있는 필레 모델을 완성했습니다. 이것으로 말그대로 게임방식의 변화를 줄수 있을 것 입니다. 동물 이야기가 나온김에 - 커다란 -Bratislava 오피스 에 있는 애완용 거북이가 몇가지 영감을 줬습니다.
우리의 캐릭터 아티스트는 새로운 대도시 경찰 조끼와 ОMON-영감을받은 Орёл 유니폼을 추가했고. 그라고 EMT,소방관, 고르카 유니폼을 마무리 하고있습니다.
켐프파이어, 사냥, 그리고 벌목!
지난 보고때 켐프파이어와 사냥에 대해 이야기를 했습니다. 우리는 이것들이 게임플레이야 방해가 되는 몇가지 요소들을 찾았고, 남은 시간동안 개선사항 등 을 찾고있었습니다.
실험빌드에서 작동방식을 이야기 해 드리죠. 나무에서 벌목을 해 통나무를 얻습니다. 잠시후 나무는 소모된 상태가 되며 쓰러집니다. 나무 벌목은 도끼를 손에 쥐고, 마우스 휠 엑션메뉴로 실행합니다. 이것이 외 저희가 마우스 휠 엑션시스템을 버리고 다른 방식을 사용하고싶은지에 관한 한가지 예입니다. 이대신에 우리는 단순히 나무를 치는것으로 보상(통나무)를 얻는방식을 생각하고있습니다. -하지만 이건 당장 고려사항이 아닙니다
켐프파이어는 돌덩어리들로 업그레이드 할 수 있습니다. 바위지역 주변에서 곡괭이를 내려침으로 동을 얻을 수 있습니다.켐프파이어는 켐프파이어 키트로 만들수 있습니다. 헝겊과 잔가지 등으로요. 잔가지들은 숲 지대에서 발견될것입니다. 모든 나무 수확 관련 엑션 세스팀은 수정이 필요로 하지만, 그것으로 인해 더많은 복잡한 시스템(원예 등)을 추가할수 있을것입니다.
Bratislava 팀 방문 (view Imgur Gallery of the visit)
Bratislava팀을 방문했습니다 - 거북이가 있어요!
다음 업데이트
우리의 현제 목표는 한달안에 공식 빌드를 올리는 것입니다. Prison Architect 팀으로 부터 커다란 큰 영감을 받았고, 그들을 따라할 생각합니다. 우리는 실험빌드를 올릴 시간이 없습니다, 곧바로 안정화 빌드를 올릴 준비를 하고있습니다.
무엇보다도, 몇가지 사항에 대해(?)Above all else, it’s vital that people appreciate several things:
- 각자 다른 목표 와 다른 제한시간이 있습니다.
- 목표에대한 우선순위는 종속성에 따라 필요한것이 우선이며, 만족스런 게임디자인이 우선이 이닙니다.
- 빌드 스케쥴은 목표이지 그날짜에 무슨일이 있어도 맞추지 않을것 입니다. 나오는시간은 우리는 만족할때까지 연기할 것 입니다.
- 개발자 블로그도 더이상 2주마다 나올것이라 장담 할 수없습니다. 이곳에서는 우리의 진행상황에 대한 배경을 제공할것입니다.
마지막으로
지금부터 2개월간은 굉장히 적극적인 작업이었고,이것은 극도로 흥분되는 시간이었습니다. 우리는 좋은 조건에 팀을 늘렸고, 커다란 리스크를 무릎쓰고 덤벼들었었습니다.그 큰 리스크는 이제 떨어져 나갔으며, 우리는 DayZ에 대한 어떤 커다란 영항이 미칠지 크나큰 기대를 하고있습니다.
No comments:
Post a Comment