contact me at [email protected] link
아르마와 같은 현실적인 슈팅 게임은 종종 게임 플레이에 실제 탄도를 포함합니다. 특히 멀티 플레이어 환경에서 성능에 영향을 최소화하면서 이런 수준의 사실성을 게임에 도입하는 것은 매혹적인 것처럼 들리지만 쉽지 않은 것이 사실입니다.
이를 제 게임에 적용하려고 연구하던 중에 Insurgency: sandstorm이라는 게임에서 사용된 히트스캔과 발사체 생성을 합친 흥미로운 접근법을 발견했습니다. 그러나 이 시스템은 인터넷에 나와있는 몇가지 설명만 가지고는 몇 가지 풀리지 않는 의문이 남아 있었습니다. 일부 출처는 발사체가 일정 시간 후에 생성된다고 주장하는 반면 어떤 곳에서는 거리에 기반을 두고 있다고 했습니다.
이런 글들을 보고, 저는 제 자신의 시스템을 만들기로 결정했습니다. 첫 번째 단계는 실제 총알 궤적을 연구하는 것이었고, 저는 gundata.org 에서 귀중한 데이터를 발견했습니다.
예를 들어, 제가 좋아하는 게임 중 하나인 ‘Thehunter: Call of the wild’에서 좋아하는 구경인 .45-70의 탄환 궤적을 살펴보면 다음과 같습니다:
그래프를 살펴보면 총알이 약 120-140야드부터 상당한 낙차를 보이기 전에 상대적으로 평평한 부분이 있음을 알 수 있습니다. 이 평평한 부분이 제 구현에서 히트스캔 범위 역할을 할 것이며 발사체는 이 지점을 넘어 생성됩니다.
작은 맵에서 총알 낙하(및 발사체 스폰)가 시작되기 전에 범위를 조정했습니다. 빨간색으로 디버그용 sphere가 나타나고 그 뒤에 궤적이 그려지는 것을 볼 수 있습니다. GIF로 압축하면
화질에 영향을 미칠 수 있지만 output 로그를 보면 세부 사항을 확인할 수 있습니다. 거리가 길거나 총알의 속도가 낮을수록 표적에 가해지는 피해가 줄어듭니다.
장거리 테스트에서 발사체의 사거리와 “총구 속도"를 미세 조정하여 상황에 맞게 유동적으로 조정할 수 있었습니다. 또한 발사체의 사거리와 총구 속도(또는 기타 변수)를 얼마나 상황에 맞게, 쉽게 조정할 수 있는지도 볼 수 있었습니다.
또한 이 시스템은 멀티 플레이어용으로 Replication이 완전히 구현되어 있어 두 플레이어가 서로 다른 화기를 사용할 때 더 높은 구경의 화기를 가진 플레이어가 상대방보다 더 멀리 사격할 수 있는 등 교전에 현실감과 전략의 요소를 더합니다.
결론적으로 이번 프로젝트는 추후에 사실성과 게임 플레이 성능의 균형을 둘 다 잡을 수 있을 것이라고 기대가 됩니다. 이 시스템을 지속적으로 개선하면서 게임에 적용시킬 예정입니다.