본문 바로가기

프로젝트/강화학습15

게임 구현하기: ABC를 사용하여 카드의 추상 베이스 클래스 만들기 Slay the Spire게임을 구축하는데 가장 오래걸리고 힘든 일은, 게임 내의 상호작용 하는 요소 중 가장 많은 비중을 차지하고 가장 많은 종류가 있는 '카드'를 구현하는 것이다. 이 카드를 구현하는 방법은 여러가지가 있을 수 있는데, 내가 사용하고자 하는 방법은 다음과 같다. 카드 구현 방법 '카드'라는 공통 기능을 정의하는 추상 베이스 클래스를 만들기 위해 ABC 클래스를 사용한다. '카드'를 상속받는 더 작은 범위의 카드 클래스를 만든다.(마찬가지로 ABC를 사용할 것이다.) 예를 들어, 'AttackCard', 'SkillCard', 'PowerCard' 등이 있다. 각 카드의 데이터(이름, 등급, 타입, 에너지, 효과 등)를 JSON 파일 형태로 저장한다. 모든 카드의 효과를 코드에서 구현한.. 2023. 4. 15.
게임 구현2: 상호작용 정리하기1 Obsidian Canvas를 사용하여 게임에서 구현할 상호작용 정리 조금 복잡해 보이지만, 사실 직접 게임을 해보면 아주 직관적으로 다가오는 요소들이다. 아래에서 조금 더 자세히 설명하겠다. 밑에는 위 이미지의 요소들을 간단하게 비슷한 요소들끼리 정리한 것이다. 이러한 정리를 나는 옵시디언을 사용하여 상호관계를 확인할 수 있게 정리할 것이다. Player 아래는 플레이어가 가지는 요소들이다. 체력: 게임을 진행하기 위해 필요한 수치이다. 캐릭터 별로 최대 체력이 다르며, 현재 체력이 0이하로 떨어지면 게임이 종료된다. 체력이 0이 되었을 때 효과가 발동하는 포션과 유물이 존재한다. 골드: 게임에서 이벤트와 상점에서 사용할 수 있는 재화이다. 보통 상점에서 유물, 포션, 카드 구입, 카드제거 등의 서비스.. 2023. 4. 11.
게임 구현1: 게임 구현 전 정리하기 게임을 먼저 구현해야 하는 것은 알겠다! 그런데 게임을 구현하기 위해서는 일단 게임의 메커니즘과 같은 필요한 정보들 얻고 정리해야 한다. 정보 얻기 정보를 얻는 것은 어렵지 않다. 슬레이 더 스파이어 나무위키에 들어가서 관련 정보를 쉽게 얻을 수 있다. 또한 직접 게임을 하면서 관련 메커니즘과 정보를 확인할 수도 있다. 하지만, 나무위키의 정보들은 구현하는데 필요한 정보 외에 다른 정보들이 많이 있기 때문에, 나에게 필요한 정보만 따로 정리하는 과정을 거쳐야 한다. 정리하기 나무위키를 통해 관련된 정보를 얻었다면, 해당 정보를 정리해야 한다. 나 같은 경우, 노트 앱으로 노션/옵시디언을 주로 활용하는 편인데, 각각 장단점이 있다. 노션 장점 기본적으로 사용성이 좋다. 범용적으로 사용 가능(ToDo, 팀 .. 2023. 4. 2.
시작 전 훑어보기: 뭘 해야하나? 목표는 정했는데, 아직 아는 게 하나도 없다. 따라서, 오늘은 뭘 해야 하는지 좀 더 세밀하게 생각해 보자. 그리고 이런 걸 기가 막히게 도와주는 친구가 있다. 요약하면, 게임을 강화학습으로 학습하기 위해서는 게임 환경 구현, 상태 정의, 보상 함수 정의, 강화학습 알고리즘 선택, 데이터 수집, 학습과 평가 총 6가지가 존재한다. 그럼 우선적으로 게임 환경 구현 은 어떻게 해야 하는지 찾아보자. 두 가지 방법이 있는데, 게임 코드를 직접 구현하는 것과 게임 인터페이스를 사용하는 것 두 가지가 존재한다. 일단 게임자체를 구현하는 것도 문제지만, 가장 문제가 되는 것은 속도이다. 강화학습은 학습과정에서 수많은 시뮬레이션 과정이 동반되기 때문에, 게임진행속도가 빨라야 매우 유리하다. 관련 정보를 찾기 위해, .. 2023. 4. 1.