NDC2017
2017. 5. 18. 13:59
현실적인 pvp AI 만들기
누구나 구현 가능한, 쉬운, 바로 써먹을 수 있는,
대전 액션게임의 아케이드 모드 에이아이를 효율적으로 쉽게 만드는 것에 대한 이야기
시즈키 도장 : 결투장 유저처럼 움직이는 AI 구현 사람하고 싸우고 싶은 AI구현 아케이드 모드에 사용가능한 적절한 AI를 배치
던파 결투장 : xy축을 사용한 무빙 , 방대한 컨텐츠, RatingPoint 매칭기반, 공중,스탠딩,바닥,보정시스템
시즈키 도장
1. 모든 유저가 자신과 같은 전직의 AI와 대전 가능해야한다. (51개) - 매우 복잡도가 높은 컨텐츠에 대해 기획자가 바로 로직을 짜도록 설계. - 루아스크립트 사용.
2. 유저의 콤보 학습을 도와야 한다. - 빠르고 쉽게 제작해야함.
3. 유저와 같은 의미 있는 무빙을 해야함. - AI가 유저의 공격 범위를 예측하여 움직여야함.
4. 제공되는 난이도는 3가지( RP 600, 800, 1000이 기준) - 난이도는 데이터로만 결정.(너무 많은 캐릭터를 만들어야해서)
키스트림 기반의 콤보
- 콤보는 상대가 무력화 된 상태에서, 순차적으로 실행되는 흐름일 뿐
- 기획자의 콤보 키입력을 파일로 저장하는 기능 제공 = 콤보 녹화 -> 텍스트 형식 파일로 저장 -> 찍어내기
- AI로직 스크립트에서는 키스트림을 간단히 재생 - 단순하게 저장된거 실행
위험영역 기반의 무빙
- 무빙이란, 나는 맞지 않고, 때리려는 움직임
- 스킬별 적의 공격 데이터 정의.
- 스킬 쿨타임에 따라 위험영역 on/off (스킬 사거리)
- 접근 + 회피 + 위험영역 = 유저와 같은 움직임 재현
- 위험영역은 AI스크립트에 이벤트로 전달, 기획자가 필요에 따라 로직 처리
FSM 상태정의

- checkstate : 견제를 담당하는 상태로써, 공격성공시 콤보로 연계를 할 수 있는 딜레이가 짧은 어퍼류의 스킬을 사용함.
- checkstate를 별도로 분리함으로써, MoveState와 콤보시스템과 번갈아가며 사용된다.
난이도 구현
- 난이도별 AI로직을 분리하는것은 힘듬.
- 난이도란? 숙련도의 차이, 같은 플레이에 대해 점점더 정교해지는 개념
- 난이도별 AI데이터는 정확도 수치만을 다르게 입력.
단점
- 투척류, 설치형 스킬에 취약
- AI별로 퀄리티의 편차가 있는편
AI 구현 팁.
- 키스트림 기반 콤보
- 위험영역 기반 무빙
- checkState를 사용한 FSM
- 생산성을 높이는 정확도 시스템
'NDC2017' 카테고리의 다른 글
더 좋은 코드를 위한 함수형 프로그래밍 (0) | 2017.05.18 |
---|---|
게임 bot 탐지 모델 구현 및 응용사례 (0) | 2017.05.18 |
라이브 프로세스 분석을 통한 효율적인 로직 개발 (0) | 2017.05.18 |