제목 보고 말도 안되는 소리란걸 분명 알았을거다.


그도 그럴게 하스스톤만 해도 한 확장팩에 카드가 100장씩 나오는데 그걸 다 따로 만들어주는게 말이 되냐.


나는 지금 카오스 아카데미에 하스스톤과 슬더슬을 섞은 짬통 게임을 혼자서 개발하고 있음. (엔진은 유니티 2D)


아직 공부하면서 만드는 중이라 구조 설계하는 실력이 많이 미숙해서 다른 사람들은 어떻게 생각하는지 궁금해서 찾아옴.


제목에서 보았듯 카드마다 클래스를 따로 둬야 하냐는게 질문인데, 굉장히 미련한 행동인걸 알지만 이런 상황까지 오게 된 이유는


현재 카드의 기본적인 기능을 수행(뽑힘, 만져짐, 사용됨)하는 Card_Basic 클래스를 만들어 뒀고, 다른 모든 카드들은 이 Card_Basic을 상속받음.


Card_Basic 안에는 아무것도 안하는 Activate() 가상 함수가 있는데, 여기에 카드 사용 시 발생되는 이벤트 코드가 들어감.


따라서 Card_Basic을 상속받으면서 Activate()를 오버라이딩하여 원하는 이벤트를 발생시키는 클래스를 만들 수 있음.


처음엔 비슷한 기능을 하는 카드끼리 모아서 클래스를 만듦. (단순 딜링 카드, 하수인 소환 카드, 드로우 카드...)


그런데 이런 식으로 만드니까 다양한 효과를 조합한 카드를 만들려면 새로운 클래스를 또 만들어줘야됨. (딜링+드로우 클래스, 하수인소환+버프 클래스..)


효과가 많아질수록 다양한 조합이 나올테니 기하급수적으로 클래스가 증가해야할 판.


그렇다고 스크립트를 여러 개 넣으면 꼬일 수도 있고, 이상적인건 다양한 이벤트를 발생시키는 함수들을 이벤트 매니저에 미리 만들어 놓은 다음, 인스펙터를 통해 레고 블록처럼 필요한 이벤트만 뽑아서 딱딱 조립하고 싶은데, 생각보다 너무 어렵다.


카드는 자기가 발생 시킬 이벤트 정보를 이벤트 매니저에 보내기만 하면 이벤트 매니저가 해당 이벤트를 발생시키고, 나는 인스펙터 창에서 이벤트 정보만 명령어처럼 string으로 입력해주는거야. 이러면 코드 하나로 돌려막기 하면서, 나중에 사람 구해서 협업할 때에도 보다 편하게 할 수 있지 않을까 싶어.


혹시 카드게임 만들어본 사람 있으면 어떻게 만들었는지 공유 해줄 수 있으면 고맙겠다.