포스트

[ Reference ] Gym Match 3

개요


gym match3는 강화 학습을 위한 환경으로, Match-3 보드 복제를 통해 새로운 레벨 생성

1. Console command

  1. Import Match3Env 및 선언
  2. 활성화 함수 호출
  3. observation, reward, done, info = env.step(env.action_space.sample())

2. Initialize

1) level.py

레벨 설정

Levels에 저장된 level(0,-1로 이루어진 일정 패턴을 가진 array)들의 Height, width, shapes의 최댓값을 dimenstion으로 설정(level들 간 크기 차이가 있어도 학습 가능)

Level(height, width, shapes)

2) game.py

게임 설정

매치 가능 블록 탐색 방향, 이동 방향 설정 : 2차원 배열이므로 위, 아래, 왼쪽, 오른쪽

Reset()을 통한 보드 설정,Levels 중 1개를 랜덤하게 선택 후 이를 template으로 지정.

  • Template과 같은 크기의 empty board를 생성하여 0부터 Level.n_shapes까지의 랜덤하게 숫자 채움

  • 저장한 최대 dimension보다 작을 경우 패딩 하여 크기를 늘려 줌.

  • Empty board와 Expand template 결합하여 보드 생성

get_available_actions()을 통한 액션 설정

  • 현재 Board의 각 cell들을 point로 설정하고 이 point가 이동할 수 있는 가짓수를 중복하지 않게 순서 없이 저장한다.

3. step

step(), 활성화 함수를 통해 플레이를 진행

  • 첫 번째 action 선택 후 이를 swap
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.