어지간한 게임이라면 아이템은 당연하게도 다양한 아이템 카테고리가 존재한다. 식량, 회복, 전투 등등..
내 게임 같은 경우도 마찬가지다. 그런데, 회복 아이템이 하나도 안나온다거나, 식량이 하나도 안나온다거나... 이러면? 운빨에 의해 그냥 게임 말아먹는건데 이런 상황을 나는 원하지 않아서 기초 자원을 보장하기 위한 최소한의 수단을 마련해두기 위해 드랍 시스템을 만들어보았음.
우선 드랍 테이블의 기반이 되는 추상 클래스에서 이렇게 아이템 카테고리를 분할하는 데이터베이스용 리스트를 만들고 (Array로 한번 더 감싼 이유는, 등급에 의한 구별을 쉽게 하기 위함)
아래와 같은 방식으로, 원하는 아이템 비율을 넣어주면, 자동으로 리스트를 생성해주는 메서드를 만들었고, params _modified를 이용하여, 세부 조절도 가능하게 만들었음.
그런 다음 각 드롭 테이블을 구현하는 박스는, 아래와 같이 리스트들의 비율 조합으로 결정함.
얘는 전반적인 부분에서 사용될 가장 기초적인 박스고
얘네들 같이 구성된게, 특정 지역에 등장하는, 확정 자원을 위한 박스들임
어쩌피 각 박스는 테이블만 만들어서 요청 받을때마다 적당히 아이템 목록을 내놓는 구조기에, 위와 같이 그냥 박스를 최초로 생성해서 참조가능한 형태로 만들어두고
이런 식으로 각 그리드의 꼭짓점에 적당히 그리드 정보 메타 타일 배치해준 뒤에,
이런 식으로 메타타일 해석기 하나 만들어서 맵 스캐너에 붙여줌.
이제 좌표를 이 클래스로 보내주면, 해당 좌표가 어느 속성의 그리드 소속인지 알 수 있다.
이후 지역 기반 기본 상자 제공자하고,
특화 그리드 기반으로 특화 상자를 미리 세팅 해 준 다음에,
이렇게 상자 추가해 주는 메서드를 만들고
초기화용 메서드에 타일 파싱 종료되는 대로, 특화 박스 -> 일반 박스 순서대로 생성하게 한다. (일반 박스는 어디든지 배치 될 수 있기에, 특화를 먼저 배치함)
이제 게임을 실행해주면
이런 식으로 군사 지역에는 일반 박스도 등장 하지만,
이렇게 전투 관련 물품만 등장하는 특화 박스도 들어가있고,
서점은 책 전용 박스 등장
마트는 식료 전용 박스 등장
병원은 의료물품 전문 박스가 등장하게 되었다
이제 저 위의 타일 해석기 기반으로, 적 분대 사전 생성해서 꽂아주도록 로직 변경하고, 아이템 드랍은 비율 조절만 해주면 될듯
그래픽 맛있네요
이분 코드는 볼때마다 느끼는거지만 참 깔끔한듯