저는 선박 사용자 정의에 크게 의존하는 네트워크 턴 기반 3D-6DOF 우주 함대 전투 전략 게임을 설계하고 있습니다. 질문을 설정하려면 게임에 대해 조금 알아야하므로 게임에 대해 조금 설명하겠습니다.
내가 목표로하는 것은 각 선박마다 장점과 단점을 줄 수 있는 맞춤형 모양과 부착 된 모듈 (프로펠러, 트랙터 빔 ...) 을 사용하여 자신의 함대 를 만들 수 있기 때문에 다양한 함대 분포가 있습니다. 예를 들어, 측면에 두 개의 프로펠러가있는 긴 배는 그 비행기를 쉽게 돌 수 있습니다. 뒤쪽에 많은 프로펠러를 배치하지 않으면 더 큰 배는 천천히 움직일 것입니다. 이 방향으로 빠르게 움직입니다.)이 기능을 중심으로 모든 게임의 균형을 잡을 계획입니다.
이 게임은 명령과 전투 단계의 두 단계로 진행됩니다. 주문 단계에서 다른 배송을 명령합니다. 모든 플레이어가 주문 단계를 마치면 전투 단계가 시작되고 선박 주문이 일정 시간 동안 실시간으로 해결 된 다음 작업이 일시 중지되고 새로운 주문 단계가 있습니다.
플레이어 입력에 대해 생각하면 문제가 발생합니다. 선박을 이동하려면 조종, 전진, 제동, 제자리에서 회전하려는 경우 다른 프로펠러를 켜거나 끌 필요가 있습니다 ...이 프로펠러는 전체 힘으로 작동 할 필요가 없으므로 더 많은 움직임을 얻을 수 있습니다 적은 프로펠러와의 조합.
이 접근법은 약간 지루하다고 생각합니다. 플레이어는 모터 등으로 바이올린 연주를하고 싶지 않으며 이동하고 죽이고 싶을뿐입니다. 플레이어가이 함선에 명령을 내리는 방식은 목적지 와 회전에 의한 것이며 AI는 해당 프로펠러의 힘을 계산하여 해당 이동과 회전을 달성합니다. 추진이 전체 턴 계산을 통해 동일 할 필요는 없으며 (주문이 제공된 후) 선박이 움직일 때 반응하여 프로펠러의 힘을 필요에 따라 동적으로 조정하면 시원 할 수 있지만 구현하기가 너무 어렵고 게임이 실제로 작동하는 데 필요하지 않습니다.
두 경우 모두 AI가 가장 좋은 (또는 최소한 최악의) 궤적을 달성하기 위해 어떤 프로펠러를 활성화할지 결정하는 방법은 무엇입니까?
나는 몇 가지 접근법에 대해 :
- 인공 지능 학습 : 선박 유형은 시행 착오를 통해 이동에 대해 배우고 더 많은 용도로 행동을 조정하며 마침내 "똑똑해"집니다. AI 코딩에 훨씬 더 관여하고 싶지는 않습니다. 플레이어가 배우지 않고도 배울 수는 있지만 플레이어에게 실망 할 수 있다고 생각합니다.
- 사전 계산 된 타임 스텝 이동 : 선박 생성시, 모든 델타 시간 동안 각 프로펠러 구성 및 출력에 대해 가능한 모든 이동이 계산됩니다. 메모리 집약적이고, 추악하고, 나쁘다.
- 사전 계산 된 궤적 : 위와 동일하지만 각 델타 시간이 아니라 전체 궤적에 대해 가능한 한 많이 맞습니다. 전체 전투 단계에서 고정 프로펠러 구성이 필요하며 여전히 메모리 집약적이고 추악하며 나쁩니다.
- 지속적인 무차별 강제 실행 : AI는 전체 전투 단계에서 가능한 모든 프로펠러 구성을 지속적으로 확인하고 몇 가지 시간 단계를 미리 계산하고이를 기반으로 가장 적합한 것을 결정합니다. 단점 : 이제 좋은 점은 나중에 그다지 좋지 않을 수 있으며 CPU 사용량이 많고, 추악하고, 나쁩니다.
- 단일 무차별 강제력 : 위와 동일하지만 시뮬레이션 시작시 무차별 강제력 만 있으므로 전체 전투 단계에서 일정한 프로펠러 구성이 필요합니다.
- 연속 각도 검사 : 이 방법은 완전한 이동 방법은 아니지만 "멍청한"프로펠러 구성을 버리는 방법 일 수 있습니다. 현재 프로펠러의 법선 벡터와 마지막 벡터를 고려하면 각도에 따라 프로펠러에 필요한 전력을 근사 할 수 있습니다. 전투 단계 전체에서이 작업을 지속적으로 수행해야합니다. 나는 이것을 최근에 알아 냈으므로 너무 많은 생각을하지 않았습니다. 선험적으로, "지금 좋은 점은 나중에는 좋지 않을 수도있다"는 단점이 있으며, 더 나은 추진 구성을 만들기 위해 함께 작용할 수있는 다른 프로펠러는 신경 쓰지 않습니다.
나는 정말로 여기 붙어 있습니다. 어떤 아이디어?