입문자를 위한
게임 개발 가이드
오동열
강사	소개
• PC MMORPG 해외 클라이언트 프로그래머( 2007 ~ )
• 아이폰 앱 개발 프로그래머( 2010 ~ )
• 모바일 게임 클라이언트 프로그래머( 2012 ~ )
• 소소한 게임들을 만들고 있는 중( 2019 ~ )
• https://blog.naver.com/eastfever5
이야기	할	것들
• 일반적인 게임 개발 사이클
• 효율적인 게임 개발 협업
• 게임 실행 최적화를 위한 기법
• 게임 프로그래밍 패턴
게임 개발 사이클
• 프로토타입
• 알파
• 베타
• 출시. 그리고 그 이후…
목표	정하기
• 게임의 컨셉과 장르 확인
• 핵심 플레이 확인
• 재미 있는가?
프로토타입
• 게임 개발 환경 구축
• 게임 컨텐츠 싸이클 완성
알파
게임	개발	환경	구축
• 노동을 투입하여 게임 제작에 필요한 컨텐츠/리소스 획득
• 최소한의 노동으로 원하는 결과를 빠르고 쉽게 얻어야 한다.
• 작업의 각 단계마다 중간 결과물을 쉽게 확인할 수 있어야 한다.
게임	컨텐츠	싸이클	완성
게임을 플레이
게임을 준비
플레이 결과와
보상 확인
플레이
동기
• 최적화
• 폴리싱
• 정식 판매/서비스 준비
• 업데이트 전략 수립&준비&미리 구현
베타
• 유저 피드백 대응
• 업데이트
출시,	그리고	그	이후…
게임 개발 사이클
Q&A
효율적인 게임 개발 협업
게임	개발	3요소
시스템
구현
리소스
제작
컨텐츠
제작
아티스트
프로그래머
기획자
• 각자가 잘 할 수 있는 일에 집중
• 프로그래머 독립적인 환경
• 데이터와 로직의 분리
효율을	위한	기본	원칙
툴	기반	개발
• WYSIWYG
• 서로 일 떠넘기기 위함이 아님
• 각자가 몰입할 수 있는 환경
• 기계가 할 수 있는 일은 기계가!
• 노력은 반드시 보상 받는다!
• 사람이 많을수록 그 혜택은 더욱 커진다!
자동화	시스템
이슈	핸들링
• 각 팀의 문화에 맞는 알맞은 방법 찾기
• 모두가 이슈에 접근할 수 있고 처리할 수 있는 사람은 바로 대응할 수 있도록
• 일일 / 주간 / 월간 / 마일스톤
• 이슈의 규격화 / 포맷화
• 참고링크 : https://trello.com/b/zyZ93t6h/
%EB%9F%B0%EC%96%B4%EC%9B%A8%EC%9D%B4%EC%A6%88-
%EB%B2%A0%ED%83%801%EC%B0%A8-4%EC%9B%94%ED%8F%90%EC
%87%84
효율적인 게임 개발 협업
Q&A
게임 실행 최적화 기법
• 로그는 최대한 자세히
• 장애 발생 원인은 쉽게 접근할 수 있도록
• 로그 분석 툴까지 있다면 금상첨화
단서를	남겨라
• 프로파일러 활용하기
• Update문안에 범인은 있다. 혹은 PixelShader…
파레토	법칙
• 미리 만들어 둔다.
• 재활용 한다.
• 메모리 생성/해제는 한 번만!
Pool
• 엔진 지원도 있지만 직접 해결해야 할 경우도 많다.
• 상황에 따라 주변을 제외한 모든 것들을 바이패스.
게임	오브젝트의	계층화
• 현실에는 해결할 수 없는 문제들이 많다.
• 시간과 자원은 한정되어 있기에 더욱 더 그렇다.
규모,	혹은	디테일의	포기
https://www.youtube.com/watch?v=CIrGcPFgGIk
게임 실행 최적화 기법
Q&A
게임 프로그래밍 패턴
개발에	도움을	주는	패턴들
• 싱글턴
• 팩토리
• 옵저버 / 리액티브
• 스테이트
• 활용보다는 자제할 것.
• 쉽게 접근할 수 있는 만큼, 쉽게 망칠 수 있다.
• 그런데 결국 안쓰기도 힘들더라.
싱글턴
• 제작을 위임.
• 오브젝트 풀. 사운드 풀.
• new남발을 피하고 좀 더 효율적인 생성을 도모.
팩토리
• 객체에 간접적으로 관여되어 필요한 것을 얻는다.
• 수시로 객체의 상태를 체크 안해도 됨.
• 리액티브 등의 편리한 도구들이 있다.
옵저버
• 상태별로 코드를 분리하여 관리
• switch문이 길어지고 있다면 도입을 고려
• 생성/갱신/소멸을 하나의 객체로서 관리
스테이트
책책책
게임 프로그래밍 패턴
Q&A
THANK YOU!

입문자를 위한 게임 개발 가이드