-
군대에서 시작한 게임 개발일지 #0Coding/Python 2025. 12. 20. 22:43
군대 사지방에서 온라인 파이썬 컴파일러로 코딩하고 텍스트 파일로 저장하고 온갖 난리를 치며
만들던 게임이 있는데, 찍턴 기간 ~ 복학 전까지 간단하게 완성해보고자 한다.
만드는 과정을 간단하게 정리해보고, 그 과정에서 배운 내용 같은걸 정리해보려고 글을 작성한다.
일단 이 글에서는 지금까지 개발한 내용을 정리해보겠다.
그래서 무슨 게임인데
아무래도 사지방 컴퓨터로 개발을 하다보니, 그래픽은 생각도 할 수가 없었다.
그래서 우선 텍스트 위주로 개발을 하고, 나중에 전역하면 그래픽을 추가해야겠다는
$($매우 안일한$)$ 계획을 세운 채
커맨드라인으로만 진행이 되는 게임을 기획하고 개발에 착수하였다.
개발 목표는 아무래도 정말 재밌는 게임을 만들어서 부자가 되겠다기보다는 파이썬 코딩 연습할 겸,
개발에 대한 감을 잊지 않을 겸, 포트폴리오에 한 줄 추가할 만한 개인 프로젝트 하나 만들어보자는 생각으로
시작한거기에 그냥 내가 좋아하는 게임 따라서 비슷하게 만들어보자 하고 시작하게 되었다.
제목은 아직 못 정했고, 간단하게 설명하면 해킹 주제 덱빌딩로그라이크 게임이다.
군대에서 Slay the Spire를 너무 재밌게 플레이했기도 하고 $($군생활동안 총 플탐 300시간을 찍었다.$)$
텍스트 기반으로 하기에 턴제 게임이 좋을것 같아서 내가 잘$($?$)$ 아는 분야인
해킹과 엮어 비슷하게 만들어보자는 생각에 기획하였다.
슬더스를 해킹 테마로 바꾼 결과 주인공이 해커가 되어 적$($해킹 대상, 웹사이트 등등$)$ 을
카드 $($해킹 프로그램, 해킹툴$)$ 를 이용해 물리치는 게임을 만들고 있다.
배운 내용
일단 큰 프로젝트에서 객체지향이 왜 중요한지 뼈저리게 느끼고 있다.
객체지향이라는 개념을 고딩때 처음 접했을 때는 '굳이 왜..'라는 생각밖에는 들지 않은 기억이 있다.
그런데 막상 게임을 만들어보니까 유지보수를 위해 필수적이라는 것을 깨달았다.
예를 들어 '카드'라는 개념을 생각해보면, 카드 클래스가 있어야 새 카드를 추가할 때
이름, 공격력, 종류, 설명 텍스트 등을 넣어주고 객체로 생성하는게 편하지 만약에 이걸 객체지향이라는 개념을
도입하지 않는다고 생각하면 도저히 어떻게 구현해야 할 지 상상도 되지 않는 것이다.
또 카드의 종류 $($예를 들면 공격카드, 스킬카드, 파워카드 등등$)$을 추가하고 싶다면 그 클래스를 상속받는
하위 클래스를 정의하는게 아주 자연스러운 개념임을 깨달았다.
또 카드의 사용 효과를 정의하는데 재밌는 패턴을 배웠다.
카드마다 상당히 다양한 $($슬더스를 플레이해봤다면 알겠지만 굉장히 중구난방인 사용 효과를 갖는다$)$
사용 효과가 존재한다. 이때 카드의 사용 효과를 카드 클래스의 effect라는 필드로 정의한다.
class Card: def __init__(self, name, effect, ... ): self.name = name self.effect = effect ...그리고 이 effect는 CardEffect라는 클래스를 상속받아 만든 각 카드에 해당하는 클래스가 된다.
CardEffect가 카드 사용 효과의 기본 클래스가 되며, 실제 카드 객체는 CardEffect를 상속받아 정의한
카드마다 정의된 사용 효과 클래스를 effect로 가지게 된다.
class CardEffect: def apply(self, ...): # 모든 카드 effect 구현시 공통으로 구현할 효과 ... self._apply_impl(...) def _apply_impl(self, ...): raise NotImplementedError class SimpleAttack(CardEffect): def _apply_impl(self, ...): # 기본 공격이후 카드를 사용하는 시점에서 다음과 같이 카드를 실행하는 것이다.
card.effect.apply(...)이렇게 하면 사용 효과가 얼마나 중구난방이든 CardEffect를 상속받는 새 클래스를 정의하고
간단하게 정의할 수 있다.
앞으로의 계획
지금까지 만든 코드들을 정리하고 pygame을 이용해 그래픽을 추가해볼 생각이다.
'Coding > Python' 카테고리의 다른 글
군대에서 시작한 게임 개발일지 #3 - 애니메이션의 구현 (0) 2026.01.23 군대에서 시작한 게임 개발일지 #2 - 게임오브젝트의 구성 (0) 2026.01.05 군대에서 시작한 게임 개발일지 #1 - 가상환경을 쓰자 (0) 2026.01.02 [Python] 반복 가능한 객체의 언패킹 (0) 2022.12.22 [Python] 객체와 클래스, 스페셜 메소드 (0) 2022.12.19