paint-brush
좀비 상태에서 고전적인 기계 학습과 순환 신경망을 사용한 미션 생성~에 의해@evlko
3,703 판독값
3,703 판독값

좀비 상태에서 고전적인 기계 학습과 순환 신경망을 사용한 미션 생성

~에 의해 evlko15m2024/05/01
Read on Terminal Reader

너무 오래; 읽다

로그라이크 게임을 위한 고전적인 기계 학습과 순환 신경망을 사용하여 미션을 생성하는 큰 그림을 살펴보겠습니다.
featured image - 좀비 상태에서 고전적인 기계 학습과 순환 신경망을 사용한 미션 생성
evlko HackerNoon profile picture
0-item
1-item

아마도 당신은 절차적 수준 생성에 익숙할 것입니다. 음, 이 게시물에서는 절차적 미션 생성에 관한 모든 것입니다. 로그라이크 게임을 위한 고전적인 기계 학습과 순환 신경망을 사용하여 미션을 생성하는 큰 그림을 살펴보겠습니다.


안녕하세요 여러분! 제 이름은 Lev Kobelev이고 MY.GAMES의 게임 디자이너입니다. 이 기사에서는 절차적 미션 생성을 결정한 방법과 이유를 설명하면서 기존 ML 및 단순 신경망을 사용한 경험을 공유하고 Zombie에서 프로세스 구현에 대해 자세히 살펴보겠습니다. 상태.


면책조항: 이 글은 정보/오락 목적으로만 작성되었으며, 특정 솔루션을 사용하는 경우 특정 리소스의 이용 약관을 주의 깊게 확인하고 법무 담당자와 상담하는 것이 좋습니다!

미션 "상자"의 기본 사항: 파도, 스폰 등

☝🏻 우선, 일부 용어: " 경기장 ", " 레벨 " 및 " 위치 "는 이 맥락에서 동의어이며 " 영역 ", " 구역 " 및 " 생성 영역 "도 마찬가지입니다.


이제 “ 미션 ”을 정의해보자. 미션은 특정 규칙에 따라 적들이 특정 위치에 미리 정해진 순서로 나타나는 것입니다 . 앞서 언급했듯이 좀비 상태에서는 위치가 생성되므로 "단계별" 경험을 생성하지 않습니다. 즉, 우리는 미리 정해진 지점에 적을 배치하지 않습니다. 실제로는 그러한 지점이 없습니다. 우리의 경우 플레이어 근처나 특정 벽 근처 어딘가에 적이 나타납니다. 게다가, 게임의 모든 경기장은 직사각형이므로 어느 곳에서든 어떤 미션이든 플레이할 수 있습니다.


" spawn "이라는 용어를 소개하겠습니다. 스폰은 지정된 구역의 지점에서 미리 정해진 매개 변수에 따라 동일한 유형의 여러 적들이 나타나는 것입니다 . 한 점 – 적 한 명. 영역 내부에 포인트가 충분하지 않으면 특별한 규칙에 따라 영역이 확장됩니다. 영역은 스폰이 트리거될 때만 결정된다는 점을 이해하는 것도 중요합니다. 영역은 생성 매개변수에 의해 결정되며 아래에서 플레이어 근처의 생성과 벽 근처의 두 가지 예를 살펴보겠습니다.


첫 번째 유형의 스폰은 플레이어 근처에 있습니다 . 플레이어 근처의 모습은 외부 및 내부(R 및 r), 섹터 너비(β), 플레이어를 기준으로 한 회전 각도(α), 두 개의 반경으로 설명되는 섹터를 통해 지정됩니다. 원하는 적의 모습의 가시성(또는 투명화). 섹터 내부에는 적에게 필요한 점수가 있으며, 그것이 바로 적의 출처입니다!

두 번째 유형의 스폰은 벽 근처에 있습니다 . 레벨이 생성되면 각 측면에 기본 방향인 태그가 표시됩니다. 출구가 있는 벽은 항상 북쪽에 있습니다. 벽 근처에 있는 적의 모습은 태그, 벽으로부터의 거리(o), 길이(a), 구역의 너비(b) 및 적의 모습에 대해 원하는 가시성(또는 비가시성)에 의해 지정됩니다. 구역의 중심은 플레이어의 현재 위치를 기준으로 결정됩니다.

산란은 파도 에 온다. 웨이브는 스폰이 나타나는 방식, 즉 스폰 사이의 지연을 의미합니다. 우리는 모든 적과 동시에 플레이어를 공격하고 싶지 않습니다. 웨이브는 특정 논리에 따라 미션으로 결합되고 차례로 실행됩니다. 예를 들어, 첫 번째 웨이브 이후 20초 후에 두 번째 웨이브가 시작될 수 있습니다(또는 그 안에 있는 좀비의 90% 이상이 사망한 경우). 그래서 전체 미션을 하나의 큰 상자로 볼 수 있는데, 그 상자 안에는 중간 크기의 상자(웨이브)가 있고, 웨이브 안에는 더 작은 상자(스폰)가 있습니다.

따라서 적절한 임무를 수행하기 전에 우리는 이미 몇 가지 규칙을 정의했습니다.


  1. 지속적인 액션 감각을 유지하려면 눈에 보이는 지점에서 플레이어 가까이에 일반 좀비를 자주 생성해야 합니다.
  2. 출구를 강조하거나 특정 측면에서 플레이어를 밀어내기 위해 주로 벽 근처에 장거리 전투 적을 생성하도록 노력합니다.
  3. 때때로 플레이어 앞, 보이지 않는 지점에 특수 적을 생성합니다.
  4. 플레이어로부터 X미터보다 가까운 곳에 적을 생성하지 마세요.
  5. 동시에 X명 이상의 적을 생성하지 마세요.


한때 우리는 약 100개의 임무를 준비했지만 시간이 지나면서 더 많은 임무가 필요하게 되었습니다. 다른 디자이너들과 저는 또 다른 수백 개의 미션을 만드는 데 많은 시간과 노력을 들이고 싶지 않았기 때문에 미션 생성을 위한 빠르고 저렴한 방법을 찾기 시작했습니다.

미션 생성

미션 분해

모든 발전기는 일련의 규칙에 따라 작동하며 수동으로 생성한 임무도 특정 권장 사항에 따라 수행되었습니다. 그래서 우리는 미션 내의 패턴에 대한 가설을 세웠고, 이러한 패턴은 생성기의 규칙으로 작용할 것입니다.


✍🏻 본문에서 찾을 수 있는 몇 가지 용어는 다음과 같습니다.

  • 클러스터링은 주어진 컬렉션을 겹치지 않는 하위 집합(클러스터)으로 나누어 유사한 개체가 동일한 클러스터에 속하고 다른 클러스터의 개체가 크게 달라지도록 하는 작업입니다.

  • 범주형 특성 은 유한 집합에서 값을 가져오고 숫자로 표현되지 않는 데이터입니다. 예를 들어 생성 벽 태그는 North, South 등입니다.

  • 범주형 특성 코딩은 이전에 지정된 규칙에 따라 범주형 특성을 수치 표현으로 변환하는 절차입니다. 예를 들어 북쪽 → 0, 남쪽 → 1 등입니다.

  • 정규화는 범위 차이에 대한 정보를 잃지 않고 수치적 특성을 공통 규모로 가져오기 위해 수치적 특성을 전처리하는 방법입니다. 예를 들어 객체의 유사성을 계산하는 데 사용할 수 있습니다. 앞서 언급했듯이 객체 유사성은 클러스터링 문제에서 중요한 역할을 합니다.


이러한 모든 패턴을 수동으로 검색하는 것은 시간이 많이 소요되므로 클러스터링을 사용하기로 결정했습니다. 머신러닝은 이 작업을 잘 처리하므로 유용합니다.


클러스터링은 일부 N차원 공간에서 작동하고 ML은 특히 숫자와 함께 작동합니다. 따라서 모든 스폰은 벡터가 됩니다.

  • 범주형 변수가 코딩되었습니다.
  • 모든 데이터가 정규화되었습니다.


예를 들어, "폭 2m, 폭 10, 길이 5의 영역에 북쪽 벽에 좀비 슈터 10명을 생성한다"고 설명된 스폰은 벡터 [0.5, 0.25, 0.2 , 0.8, …, 0.5] (←이 숫자는 추상적임).


또한 특정 적을 추상 유형으로 매핑하여 적 세트의 위력을 줄였습니다. 우선, 이러한 종류의 매핑을 통해 특정 클러스터에 새로운 적을 쉽게 할당할 수 있었습니다. 또한 이를 통해 최적의 패턴 수를 줄이고 결과적으로 생성 정확도를 높일 수 있었습니다. 이에 대해서는 나중에 자세히 설명하겠습니다.

클러스터링 알고리즘


K-평균, DBSCAN, 스펙트럼, 계층적 등 많은 클러스터링 알고리즘이 있습니다. 그들은 모두 서로 다른 아이디어를 기반으로 하지만 동일한 목표를 가지고 있습니다: 데이터에서 클러스터를 찾는 것입니다. 아래에서는 선택한 알고리즘에 따라 동일한 데이터에 대해 클러스터를 찾는 다양한 방법을 보여줍니다.

K-Means 알고리즘은 생성의 경우 가장 잘 수행되었습니다.


이제 이 알고리즘에 대해 전혀 모르는 사람들을 위한 작은 여담입니다(이 문서는 ML의 기본에 관한 것이 아니라 게임 개발에 관한 것이므로 엄격한 수학적 추론은 없을 것입니다). K-Means는 각 기능의 거리 제곱합을 할당된 클러스터의 평균값으로 최소화하여 데이터를 K개의 클러스터로 반복적으로 나눕니다. 평균은 클러스터 내 거리의 제곱합으로 표현됩니다.


이 방법에 대해 다음 사항을 이해하는 것이 중요합니다.

  • 이는 동일한 크기의 클러스터를 보장하지 않습니다. 임무 내 클러스터 분포가 고르지 않을 수 있으므로 이는 문제가 되지 않았습니다.
  • 데이터 내부의 클러스터 수를 결정하지는 않지만 특정 K 숫자를 입력으로 요구합니다. 즉, 원하는 클러스터 수입니다. 이 숫자는 사전에 결정되는 경우도 있고 그렇지 않은 경우도 있습니다. 더욱이, "최상의" 클러스터 수를 찾는 데 일반적으로 허용되는 방법은 없습니다.


두 번째 점을 좀 더 자세히 살펴보겠습니다.

클러스터 수

최적의 클러스터 수를 선택하는 데에는 팔꿈치 방법이 자주 사용됩니다. 아이디어는 매우 간단합니다. 알고리즘을 실행하고 1부터 N까지 모든 K를 시도합니다. 여기서 N은 합리적인 숫자입니다. 우리의 경우에는 10개였습니다. 더 이상 클러스터를 찾는 것이 불가능했습니다. 이제 각 클러스터 내의 거리 제곱의 합(WSS 또는 SS로 알려진 점수)을 찾아보겠습니다. 이 모든 것을 그래프에 표시하고 y축 값이 크게 변하지 않는 지점을 선택하겠습니다.


설명을 위해 잘 알려진 데이터세트인 붓꽃 데이터 세트 . 1부터 10까지 K를 사용하여 알고리즘을 실행하고 K에 따라 위의 추정치가 어떻게 변하는지 살펴보겠습니다. 대략 K=3에서 추정치는 더 이상 변경되지 않습니다. 이는 정확히 원래 데이터 세트에 있었던 클래스 수와 같습니다.

팔꿈치가 보이지 않으면 실루엣 방법을 사용할 수 있지만 이는 기사의 범위를 벗어납니다.


위와 아래의 모든 계산은 ML 및 데이터 분석을 위한 표준 라이브러리인 pandas, numpy, seaborn 및 sklearn을 사용하여 Python에서 수행되었습니다. 이 기사의 주요 목적은 기술적인 세부 사항을 다루기보다는 기능을 설명하는 것이기 때문에 코드를 공유하지 않습니다.


각 클러스터 분석


최적의 클러스터 수를 얻은 후에는 각 클러스터를 자세히 연구해야 합니다. 여기에 어떤 스폰이 포함되어 있는지, 어떤 값을 취하는지 확인해야 합니다. 추가 생성 사용을 위해 각 클러스터에 대한 자체 설정을 만들어 보겠습니다. 매개변수는 다음과 같습니다:


  • 확률을 계산하기 위한 적 가중치. 예를 들어 일반 좀비 = 5, 헬멧 쓴 좀비 = 1입니다. 따라서 일반 좀비가 나올 확률은 5/6, 헬멧을 쓴 좀비가 나올 확률은 1/6입니다. 무게가 작동하기 더 편리합니다.
  • 예를 들어 영역의 최소 및 최대 회전 각도나 너비 등의 값이 제한됩니다. 각 매개변수는 자체 세그먼트로 설명되며 모든 값의 확률은 동일합니다.
  • 벽 태그나 지점 가시성과 같은 범주형 값은 적 설정으로 설명되며 이는 가중치를 통해 이루어집니다.


클러스터 설정을 고려해 보겠습니다. 이는 "단거리에서 플레이어 근처 어딘가에 눈에 보이는 지점에 단순한 적들이 생성되는 것"이라고 구두로 설명할 수 있습니다.


클러스터 1 테이블

유형

아르 자형

R-델타

회전

너비

시계

Zombie_common_3_5=4, 좀비_헤비=1

플레이어

10-12

1-2

0-30

30-45

표시=9, 표시되지 않음=1


다음은 두 가지 유용한 트릭입니다.


  • 적의 숫자가 정해져 있는 것이 아니라, 그 숫자가 선택되는 세그먼트입니다. 이는 서로 다른 클러스터에서 서로 다른 수량으로 동일한 적과 작전을 수행하는 데 도움이 됩니다.
  • 지정된 외부 반경(R)이 아니라 내부 반경(r)에 대한 델타(R-delta)이므로 R > r 규칙이 준수됩니다. 따라서 R-delta는 임의의 r-delta > 0에 대해 임의의 r, r+R-delta > r에 추가됩니다. 이는 모든 것이 양호함을 의미합니다.


이는 클러스터별로 이루어졌는데, 클러스터 수가 10개도 채 되지 않아 시간이 오래 걸리지 않았습니다.


클러스터링에 대한 몇 가지 흥미로운 점


우리는 이 주제를 조금만 다루었지만 여전히 연구할 흥미로운 내용이 많이 있습니다. 다음은 참고할 만한 몇 가지 기사입니다. 이는 데이터 작업, 클러스터링 및 결과 분석 프로세스에 대한 좋은 설명을 제공합니다.



임무를 수행할 시간


생성 패턴 외에도 우리는 생성 중에 이 매개변수를 사용하기 위해 임무 완료 예상 시간에 대한 임무 내 적의 총 체력의 의존성을 연구하기로 결정했습니다.


수동 미션을 생성하는 과정에서 임무는 챕터에 대해 조정된 속도, 즉 짧게, 길게, 짧게, 다시 짧게 등의 일련의 미션을 구축하는 것이었습니다. 플레이어의 예상 DPS와 시간을 알고 있다면 임무 내 적의 총 체력을 어떻게 얻을 수 있습니까?


💡 선형 회귀는 선형 의존 함수를 사용하여 하나의 변수가 다른 변수 또는 여러 다른 변수에 대한 의존성을 재구성하는 방법입니다. 아래 예에서는 f(x) = wx + b라는 하나의 변수로부터의 선형 회귀만을 고려합니다.


다음 용어를 소개하겠습니다.

  • HP는 미션 내 적의 총 체력입니다.
  • DPS는 초당 플레이어의 예상 피해량입니다.
  • 행동 시간은 플레이어가 임무에서 적을 파괴하는 데 소비한 시간(초)입니다.
  • 자유 시간 은 플레이어가 목표를 변경할 수 있는 추가 시간입니다.
  • 미션 예상 시간은 액션 시간과 자유 시간의 합입니다.


즉 HP = DPS * 행동시간 + 자유시간이 됩니다. 매뉴얼 챕터를 생성할 때 각 미션의 예상 시간을 기록했습니다. 이제 행동 시간을 찾아야 합니다.


예상 미션 시간을 알고 있다면 행동 시간을 계산하고 이를 예상 시간 에서 빼면 자유 시간을 얻을 수 있습니다. 자유 시간 = 임무 시간 - 행동 시간 = 임무 시간 - HP * DPS. 그런 다음 이 숫자를 미션에 포함된 평균 적 수로 나눌 수 있으며, 적당 자유 시간을 얻습니다. 따라서 남은 것은 예상 임무 시간에서 적당 자유 시간까지 선형 회귀를 구축하는 것뿐입니다.

추가적으로, 우리는 임무 시간으로부터 행동 시간의 점유율에 대한 회귀 분석을 구성할 것입니다.


계산의 예를 살펴보고 이러한 회귀가 사용되는 이유를 살펴보겠습니다.

  1. 두 개의 숫자를 입력하세요: 미션 시간과 DPS를 30과 70으로 입력하세요.
  2. 미션 시간에서 행동 시간이 차지하는 비중의 회귀를 보고 0.8이라는 답을 얻습니다.
  3. 작업 시간을 30*0.8=6초로 계산합니다.
  4. HP를 6*70=420으로 계산
  5. 미션 시간에서 적별 자유 시간의 회귀를 확인하고 0.25초라는 답을 얻으세요.


질문이 있습니다. 적의 자유 시간을 알아야 하는 이유는 무엇입니까? 앞서 언급했듯이 스폰은 시간별로 정렬됩니다. 따라서 i번째 스폰 시간은 (i-1)번째 스폰의 활동 시간과 그 안에서의 자유 시간을 합산하여 계산할 수 있다.


그리고 여기에 또 다른 질문이 있습니다. 활동 시간과 자유 시간의 비율이 일정하지 않은 이유는 무엇입니까?


우리 게임에서 미션의 난이도는 지속 시간과 관련이 있습니다. 즉, 짧은 임무는 더 쉽고 긴 임무는 더 어렵습니다. 난이도 매개변수 중 하나는 적당 자유 시간입니다. 위 그래프에는 여러 개의 직선이 있으며 기울기 계수(w)는 동일하지만 오프셋(b)이 다릅니다. 따라서 난이도를 변경하려면 오프셋을 변경하는 것으로 충분합니다. b를 늘리면 게임이 더 쉬워지고, 줄이면 더 어려워지며, 음수가 허용됩니다. 이 옵션은 장마다 난이도를 변경하는 데 도움이 됩니다.


나는 모든 디자이너가 회귀 문제를 조사해야 한다고 믿습니다. 회귀 문제는 종종 다른 프로젝트를 해체하는 데 도움이 되기 때문입니다.



새로운 임무 생성


그래서 우리는 생성기에 대한 규칙을 찾았고 이제 생성 프로세스로 넘어갈 수 있습니다.


추상적으로 생각하면 모든 임무는 일련의 숫자로 표시될 수 있으며, 각 숫자는 특정 생성 클러스터를 반영합니다. 예를 들어 임무: 1, 2, 1, 1, 2, 3, 3, 2, 1, 3. 이는 새로운 임무를 생성하는 작업이 새로운 숫자 시퀀스를 생성하는 것으로 귀결된다는 것을 의미합니다. 생성 후에는 클러스터 설정에 따라 각 숫자를 개별적으로 "확장"하기만 하면 됩니다.


기본 접근 방식


시퀀스를 생성하는 간단한 방법을 고려하면 다른 생성 이후 특정 생성의 통계적 확률을 계산할 수 있습니다. 예를 들어 다음 다이어그램을 얻습니다.

다이어그램의 상단은 정점으로 이어지는 클러스터이며, 간선 가중치는 다음 클러스터 확률입니다.


이러한 그래프를 살펴보면서 시퀀스를 생성할 수 있습니다. 그러나 이 접근 방식에는 여러 가지 단점이 있습니다. 예를 들어, 메모리 부족(현재 상태만 알고 있음)과 통계적으로 그 자체로 전환될 가능성이 높은 경우 한 상태에 "갇힐" 가능성이 포함됩니다.


✍🏻 이 그래프를 하나의 과정으로 생각하면 간단한 마르코프 체인을 얻을 수 있습니다.


순환 신경망


기본 접근 방식의 단점이 없기 때문에 신경망, 즉 순환 네트워크를 살펴보겠습니다. 이러한 네트워크는 자연어 처리 작업에서 문자나 단어와 같은 시퀀스를 모델링하는 데 적합합니다. 매우 간단히 말하면, 네트워크는 이전 요소를 기반으로 시퀀스의 다음 요소를 예측하도록 훈련됩니다.

이러한 네트워크의 작동 방식에 대한 설명은 매우 큰 주제이므로 이 문서의 범위를 벗어납니다. 대신 훈련에 필요한 것이 무엇인지 살펴보겠습니다.


  • L 길이의 N 시퀀스 세트
  • N개의 시퀀스 각각에 대한 답은 다음과 같습니다. 원핫 벡터, 즉 답을 나타내는 C-1개의 0과 하나의 1로 구성된 C 길이의 벡터입니다.
  • C는 답변 집합의 거듭제곱입니다.


N=2, L=3, C=5의 간단한 예입니다. 시퀀스 1, 2, 3, 4, 1을 선택하고 그 안에 L+1 길이의 하위 시퀀스([1, 2, 3, 4], [2, 3, 4, 1])를 찾아보겠습니다. L개의 문자 입력과 답(대상) - (L+1)번째 문자*로 시퀀스를 나누어 보겠습니다.* 예를 들어 [1, 2, 3, 4] → [1, 2, 3] 및 [ 4]. 답변을 원-핫 벡터 [4] → [0, 0, 0, 0, 1]로 인코딩합니다.

다음으로, tensorflow 또는 pytorch를 사용하여 Python에서 간단한 신경망을 스케치할 수 있습니다. 아래 링크를 사용하면 이 작업이 어떻게 수행되는지 확인할 수 있습니다. 남은 것은 위에 설명된 데이터에 대한 학습 프로세스를 시작하고 잠시만 기다리면 됩니다. 그런 다음 프로덕션에 들어갈 수 있습니다!


기계 학습 모델에는 정확도와 같은 특정 측정항목이 있습니다. 정확도는 올바르게 주어진 답변의 비율을 나타냅니다. 그러나 데이터에 클래스 불균형이 있을 수 있으므로 주의해서 보아야 합니다. 아무것도 없거나 거의 없는 경우, 무작위보다 더 나은 답변을 예측하면 모델이 잘 작동한다고 말할 수 있습니다. 즉 정확도 > 1/C입니다. 1에 가까우면 훌륭하게 작동합니다.


우리의 경우 모델은 좋은 정확도를 보여주었습니다. 이러한 결과가 나온 이유 중 하나는 적의 유형과 균형을 매핑하여 달성한 클러스터 수가 적기 때문입니다.


관심 있는 사람들을 위한 RNN에 대한 추가 자료는 다음과 같습니다.


생성 과정

발전기 설정


훈련된 모델은 쉽게 직렬화된 , 엔진(이 경우 Unity)의 자산으로 사용할 수 있습니다. 따라서 생성기는 API를 통해 모델에 액세스하고 반복적으로 시퀀스를 생성합니다. 결과는 확장되어 별도의 CSV 파일에 저장됩니다.


모델과 상호작용하기 위해 게임 디자이너가 필요한 모든 미션 매개변수를 설정할 수 있는 사용자 정의 창이 Unity에 생성됩니다.

  • 이름
  • 지속
  • 적들이 점차적으로 나타나기 때문에 사용 가능한 적들
  • 미션의 웨이브 수와 웨이브 전반에 걸친 체력 분포
  • 특정 적을 더 자주 선택하는 데 도움이 되는 적별 가중치 수정자(예: 새로운 적)
  • 등등


설정을 입력한 후 남은 것은 버튼을 누르고 필요한 경우 편집할 수 있는 파일을 얻는 것입니다. 예, 저는 게임 도중이 아닌 미리 미션을 생성하여 조정할 수 있기를 원했습니다.

세대의 단계

생성 과정을 살펴보겠습니다.


  1. 모델은 시퀀스를 입력으로 받고 답(i번째 클러스터가 다음에 올 확률 벡터)을 생성합니다. 알고리즘은 주사위를 굴립니다. 숫자가 오류 확률 보다 크면 가장 가능성이 높은 주사위를 선택하고, 그렇지 않으면 무작위로 선택합니다. 이 트릭은 약간의 창의성과 다양성을 더해줍니다.
  2. 프로세스는 지정된 반복 횟수까지 계속됩니다. 수동으로 생성된 미션의 생성 수보다 많습니다.
  3. 순서는 계속됩니다. 즉, 각 번호는 클러스터의 저장된 데이터에 액세스하고 그로부터 임의의 값을 받습니다.
  4. 데이터 내부의 건강 상태가 요약되고 예상 건강 상태보다 큰 모든 것은 시퀀스에서 제외됩니다(계산은 위에서 논의했습니다).
  5. 스폰은 지정된 체력 분포에 따라 웨이브로 분할된 후 그룹으로 나누어(여러 명의 적들이 동시에 나타나도록), 출현 시간은 이전 스폰 그룹의 액션과 자유 시간의 합으로 주어집니다.
  6. 임무가 준비되었습니다!


결론

따라서 이것은 미션 생성 속도를 여러 배로 높이는 데 도움이 되는 좋은 도구입니다. 또한 이는 일부 디자이너가 소위 "작가의 장벽"에 대한 두려움을 극복하는 데 도움이 되었습니다. 이제 몇 초 안에 기성 솔루션을 얻을 수 있기 때문입니다.


이 기사에서는 미션 생성의 예를 사용하여 고전적인 기계 학습 방법과 신경망이 게임 개발에 어떻게 도움이 될 수 있는지 보여 주려고 노력했습니다. 요즘 생성 AI에 대한 큰 추세가 있습니다. 그러나 기계 학습의 다른 분야도 잊지 마세요.


시간을 내어 이 기사를 읽어주셔서 감사합니다! 생성된 위치의 미션에 대한 접근 방식과 미션 생성에 대한 아이디어를 얻으시기 바랍니다. 새로운 것을 배우는 것을 두려워하지 말고, 자신을 발전시키고, 좋은 게임을 만드세요!


일러스트레이션: shabbyrtist