안녕하세요. 설계 중심의 사고를 바탕으로 MVP 구현을 최우선 가치로 삼는 Unity 클라이언트 개발자 전현오입니다.
소프트웨어공학과 컴퓨터공학을 전공하며, Unity 인디 게임 프로젝트 위주로 경험을 쌓아왔습니다.
대표적으로 포톤을 이용한 4인 탑다운 뷰 2D 게임에서 네트워크 동기화 작업과, 작은 팀 프로젝트에서 오브젝트 풀링을 사용한 투사체 최적화, 그리고 부트캠프 최종 팀 프로젝트에서 구글 스프레드 시트 기반 데이터 드리븐 구현, 마지막으로 NewtonJson을 활용한 세이브/로드 기능 구현 입니다.
포톤은 학교 졸업 작품 프로젝트에 사용했습니다. 레트로의 유니티 게임 프로그래밍 이라는 책을 보고 멀티 플레이 네트워크에 대한 개념과 포톤을 사용하는 법을 가지고 포톤의 어트리뷰트를 사용한 동기화 작업과 매치 메이킹을 위한 룸과 채팅 시스템을 개발하였습니다. 이 떄 네트워크 방식은 호스트 - 클라이언트 방식으로 룸을 만든 사람이 호스트가 되도록 구현하였습니다.
부트캠프에서 1주일 팀 프로젝트에서 궁수의 전설을 레퍼런스한 게임을 만들 때, 무기 구현을 담당하였고
화살이 대량으로 씬에 존재하기에 오프젝트 풀링을 활용하여 최적화 작업을 진행하였습니다.
마지막으로 부트캠프에서 최종 팀 프로젝트에서 기획자와의 협업을 위해, 구글 스프레드 시트를 CSV로 에디터에 가져와, 데이터를 담을 클래스를 작성하여 CSV 데이터를 객체로 변환하는 작업을 진행하였습니다.
이를 구현하는 도중에 원활한 작업을 위해서 UnityWebRequest를 활용하여 에디터 버튼 클릭으로 스프레드 시트의 데이터를 CSV로 바로 가져오는 도구와 CSV를 SO로 변환시켜주는 자동화 도구로 같이 개발하였습니다. 또한 이 프로젝트에서 세이브/로드 기능을 담당하게 되어, NewtonJson으로 구현하였습니다. 원래는 PlayerPrefs를 사용하여 세이브 기능 틀을 잡았으나, 추후에 파이어베이스를 활용한 데이터 서버 확장을 고려하여 세이브 시스템은 NewtonJson을 활용하여 구현하였습니다
개발 시에는 항상 확장 가능하고 유지보수가 용이한 구조를 우선 설계하며, 핵심 기능을 빠르게 가시화하여 검증하는 MVP 개발 방식을 중심에 둡니다. 기능 구현 이후에도 ‘더 나은 구조는 없을까?’라는 질문을 놓지 않고 반복적으로 개선해나가는 과정을 중요하게 생각합니다.
저는 규칙적인 틀 안에서의 유연함을 추구하며, 계획적인 프로세스와 명확한 커뮤니케이션, 그리고 즉각적인 피드백 루프를 바탕으로 팀과 함께 성장하는 개발을 즐깁니다.
앞으로도 기획과 구조, 구현을 연결하는 주도적이고 설계 중심적인 클라이언트 개발자로서 게임의 본질을 기술로 풀어내고 싶습니다.
나열 → 캐묻게 되는 상황이….구체적인 것도? 증명할 수 있는 것 도 추가되었으면.
쵸이스 프로젝트는 모바일 2D 디펜스 게임으로 타이쿤 테마를 부분적으로 적용하여 디펜스 전투와 전투 능력을 향상시킬 수 있는 경영을 오가면서 진행됩니다. 총 10개의 스테이지로 이루어져있으며, 하나의 스테이지 당 경영과 전투를 반복합니다.
제가 기여한 부분 데이터 드리븐과 전체적인 게임 흐름과 자원을 관리해줄 매니저 구현, 그리고 세이브 시스템입니다.
기여한 부분에 대해서 구체적으로
기획자와 원활한 협업을 위해 구글 스프레드 시트를 통해서 데이터를 구성하여 데이터 드리븐 구조를 설계하고 구현하였습니다. 이를 위해 CSV파싱헬퍼 클래스를 자체 제작하였습니다. 추가적으로 개발 프로세스에 있어서 좀 더 원활하고 편리한 작업을 위해 UnityWebRequest 툴과 AssetDataBase, EditorUtility 툴을 사용하여 Sheet를 CSV로 가져올 수 있는 자동화 도구, CSV를 일반적인 클래스로 객체화 하여 이를 담고 있을 DB와 SO로 변환해야하는 상황을 위해 CSVtoSO 자동화 도구도 함께 구현하였습니다.