C #에서 비디오 게임을 디자인 할 때이 질문에 부딪 쳤습니다.
Battlefield 또는 Call of Duty 와 같은 게임을 고려하면 수백 또는 수천 개의 총알이 동시에 날고 있습니다. 이벤트는 지속적으로 발생하며, 내가 아는 바로는 많은 처리 능력을 흡수합니까? 다양한 게임 개발자가 총알을 관리하는 방법 (2D 및 3D)과 가장 효율적인 방법이 무엇인지 알고 싶습니다.
비디오 게임에서 글 머리 기호는 어떻게 시뮬레이션됩니까? 라는 질문을 읽었습니다 . 그러나 프로그램 디자인 관점에서 총알이 어떻게 작동하는지는 다루지 않습니다.
몇 가지 아이디어가 있었지만 각각 단점이 있습니다.
내가 생각할 수있는 가장 효율적인 방법 (2D 게임) :
Bullet이라는 클래스를 만들어야했지만 사용자가 버튼을 길게 누르면 0.01 초마다 Bullet 개체가 만들어집니다. 이 글 머리 기호는 다음과 같습니다.
1 속도
2 촬영 위치의 시작 위치
3 스프라이트 텍스처
4 적중 효과
총알은 자체 클래스이므로 그리기, 이동 및 동작 리스너 자체를 관리 할 수 있습니다.
프로세서에서 인스턴스화되고 파괴 된 수천 개의 오브젝트를 처리하는 것이 어렵지 않습니까 (적중 효과가 트리거 될 때)? RAM 공간?
3D 게임을위한 효율적인 방법-내가 생각한 또 다른 생각은 :
무기 클래스를 생성한다고 가정하겠습니다. 이 무기에는 다양한 기능이 있습니다.
1 무기의 조준 위치를 감지하고 대상을보고 있는지 확인
2 총기의 애니메이션을 트리거
3 총이 가리키는 곳에서 체력을 빼는 것을 나타내는 doDamage () 메서드가 있습니다.
4 버튼을 누를 때 불릿 애니메이션 클래스에 알립니다
그런 다음 BulletAnimation과 같은 정적 클래스를 생성하여 총을 트리거 한 총 위치, 총이 가리키는 위치 (총알 대상) 및 총알에 사용할 적절한 스프라이트 및 속도에 대한 알림을받을 수 있습니다. . 그런 다음이 클래스는 총에서 발사되는 총알을 시뮬레이트하기 위해 위치와 원하는 스프라이트를 모두 기반으로 스프라이트 (새 스레드에서 idk 일 수 있음)를 그립니다.
후자는 코딩하기가 훨씬 더 어려워 보이고 한 번에 수천 개의 총알에 대해 정적을 호출하기 위해 지속적으로 정적을 호출하는 데 많은 처리 능력이 필요하지 않습니까? 시작 및 종료 위치 모두에서 지속적인 업데이트를 얻는 것도 어렵습니다.
제 질문은 게임 제작자가 가장 효율적인 방법은 무엇입니까? 이 방법이 2D에서 3D 게임으로 변경됩니까?
pew-pew-pew
기술을 통해 작동 합니다 :)