Search

개발자로 핵전쟁에서 살아남기

요약
포스트 아포칼립스 세계관의 생존 경영 시뮬레이션 게임 개발
블록 프로그래밍 기반 해킹 시스템과 연구소 관리 메커니즘을 결합한 독특한 게임플레이 설계
역할
6인 팀(기획자, 디자이너 2인, 개발자 3인)에 기획 및 개발자로 참여
메인 게임 기획자로서 전체 게임 시스템 및 메커니즘 설계 (기여도 100%)
코딩 퍼즐 시스템 및 연구소 관리 메커니즘 상세 설계 (기여도 80%)
성과
알파 버전 완성 및 공개 테스트 진행, 핵심 게임플레이 요소에 대한 긍정적 피드백 획득
공개 테스트 참가자의 80%가 게임의 퍼즐 시스템에 긍정적 평가
시기
2023.03 - 2023.07 (4개월)

직관적인 블록 코딩 퍼즐 시스템

블록 코딩 퍼즐은 게임의 핵심 메커닉으로, 플레이어에게 프로그래밍의 기본 개념을 재미있게 가르칩니다. 드래그 앤 드롭 방식의 블록 조합을 통해 복잡한 프로그래밍 로직을 시각적으로 구현할 수 있어, 코딩 초보자도 쉽게 접근할 수 있습니다.
퍼즐은 해킹과 업그레이드라는 두 가지 유형의 스테이지로 구성되어 있으며, 각 스테이지는 독립적인 미니게임 형식으로 진행됩니다. 플레이어는 다양한 블록을 조합하여 단말을 움직이고, 퍼즐 오브젝트와 상호작용하며 문제를 해결합니다.
이 시스템은 단순한 퍼즐 해결을 넘어 실제 프로그래밍 기술 향상으로 이어집니다. 게임을 통해 습득한 논리적 사고와 문제 해결 능력은 실제 코딩 학습에 직접적으로 적용될 수 있어, 교육적 가치가 높습니다.

동적 연구소 탐사 시스템

게임은 바이오, 테크, 에너지, 환경이라는 4가지 독특한 연구 테마를 중심으로 구성됩니다. 각 테마는 고유한 시각적 아이덴티티와 게임플레이 특성을 가지고 있어, 플레이어에게 다양한 경험을 제공합니다.
플레이어들은 이 다채로운 세계를 탐험하며 각기 다른 특성을 지닌 연구실들을 발견하게 됩니다. 이 탐사 과정은 LabTags 시스템을 통해 동적으로 관리되어, 매번 새로운 도전을 제시합니다.
이 코드는 각 연구실의 상태를 실시간으로 추적하고 업데이트하는 LabTags 시스템의 핵심을 보여줍니다. 이를 통해 보안 수준, 운영 상태, 이벤트 발생 등 다양한 요소가 동적으로 변화하며, 플레이어에게 항상 새로운 도전을 제시합니다.

예시 코드

public class LabTags { public ResearchField researchField; public SecurityLevel securityLevel; public OperationStatus operationStatus; public EventOccurrence eventOccurrence; public event Action OnTagsChanged; public void SetTagValue(string tag, Enum value) { // 태그 값 설정 로직 OnTagsChanged?.Invoke(); } }
C#
복사

확장 가능한 모듈식 연구실 운영 시스템

연구실 운영의 핵심은 이 직관적인 대시보드입니다. 플레이어는 여기서 연구실의 모든 측면을 한 눈에 파악하고 관리할 수 있습니다.
Lab ├── LabBuffComponent │ └── BuffManager (Singleton) ├── LabProductionComponent ├── LabStatComponent ├── LabUpgradeComponent └── LabTags
Plain Text
복사
이 시스템의 기술적 핵심은 다음과 같은 모듈식 아키텍처에 있습니다. 각 컴포넌트는 독립적으로 기능하면서도 이벤트 시스템을 통해 유기적으로 상호작용합니다

예시 코드

public class Lab : MonoBehaviour { [SerializeField] private LabBuffComponent buffComponent; [SerializeField] private LabProductionComponent productionComponent; [SerializeField] private LabStatComponent statComponent; [SerializeField] private LabUpgradeComponent upgradeComponent; [SerializeField] private LabTags tags; private void Awake() { upgradeComponent.OnUpgradeSucceeded += OnUpgradeSucceeded; } private void OnUpgradeSucceeded(int level) { buffComponent.ApplyLevelBuffs(); productionComponent.UpdateProduction(); statComponent.UpdateStats(); tags.UpgradeStage = (UpgradeStage)level; } }
C#
복사
이 코드는 업그레이드 완료 시 발생하는 이벤트가 어떻게 다른 시스템들에 영향을 미치는지 보여줍니다. 이러한 구조는 새로운 기능을 쉽게 추가할 수 있게 하며, ScriptableObject를 활용한 데이터 관리로 게임 기획자의 작업을 용이하게 합니다.
이렇게 구성된 시스템은 플레이어에게 복잡하면서도 직관적인 연구실 관리 경험을 제공하며, 개발팀에게는 유연하고 확장 가능한 작업 환경을 제공합니다.