1일차: 게임 개발자에 대한 조사 및 강의 공부 내용
1. 역할과 책임
개발자의 주요 업무
- 게임 개발자는 파트 별로 업무를 구분 할 수 있다. 크게 기획, 아트, 개발 직군으로 분류할 수 있고 추가적으로 사운드, QA, PM 도 포함 할 수 있다.
개발 과정 중 팀 협업
- 파트 담당자들과 프로젝트 담당자(PM) 를 중심으로 기획안을 세우고 회의를 통해 긴밀하게 협업한다. 기획이 어느정도 세워진 이후 초안 디자인(아트)과 게임 플로우(기획) 내용에 따라 개발(프로그래밍) 후 문제 없이 동작 하는지 테스팅(QA) 한다. 라이브 혹은 출시일 까지 반복하여 게임을 개발한다.
필요한 기술과 역량
- 업무 파트에 따라 필요한 기술이 다르다. 하지만 프로젝트 책임자, 기획팀 경우 모든 업무에 대하여 어느정도 수준의 이해도가 필요하다. 게임 진행 플로우에 필요한 로직, 프로그래밍에 대하여 알아야 하고 화면 연출에 필요한 기술과 출력방식에 대하여 이해하고 유저의 경험(UX) 까지 기획 단계부터 고려하여 제작해야 한다. 게임 기획자가 되기 위해 나에게 필요한 역량은
- 타깃 유저층을 겨냥한 재미있는 아이디어 구상
- 프로젝트에 사용할 엔진 및 언어 이해도
- 게임 플로우에 필요한 로직 구성
- 사용자 경험을 고려한 레벨 디자인
- 게임 시스템 내 필요한 데이터 시트 제작
- 현재 개발 단계 중 발생한 버그 리포팅
2. 나만의 게임 개발자 정의
- 게임 개발자란 세계를 창조하고 구체화 시키는 직업이라고 정의한다. 게임 개발자 직업 특성상 퇴근도 없이 철야는 기본에 매일 집에도 못 가고 수면실에서 잠을 청하거나 그것도 없으면 이동식 침대에 누워 잠깐 잠을 청해야하지만 내가 원하는 결과를 만들고 유저들에게 재미를 인정 받을 때 성취감이 크다고 생각한다.
3. 게임 개발자가 되고 싶은 이유와 목표
게임을 매일 하다보니 나도 나만의 게임 혹은 내가 참여하여 게임을 개발하고 싶어졌다. 여러 회사에서 게임 개발 경험을 충분히 쌓은 뒤 직접 게임을 개발하여 돈에 휘둘리지 않고 누구나 재미있게 게임할 수 있는 게임을 제작하는 것이 직업적 목표 중 하나이다.
서버
- 게임 핵심 로직 담당 (점수, 상태, 멀티 동기화)
- 여러명이 동시에 접속해도 공정하고 일관성 있게 진행하기 위해 필요
P2P - 플레이어 간 데이터 주고받는 방식 / 서버 비용 적음, 해킹, 속도 떨어짐.
하이브리드 - 서버에서도, 플레이어 간 데이터도 주고받는 방식.
서버 구조
단일 서버 - 서버 한개로 게임 모든 기능. 소수 인원일 시 효율적
분산 서버 - 서버 별 역할 나누어 처리하는 방식. (예: 로그인, 채팅, 전투 등)
서버 확장 방법
Scale up - 서버 자체를 확장.(CPU, 메모리 업그레이드)
Scale out - 서버 여러대를 나누어 부하 줄임.
클라이언트
- 화면 출력, 입력값 서버 전달
- 서버에서 받은 결과를 그래픽, 사운드로 출력
의사 결정권자
PD - 프로젝트 디렉터. 헤드 역할
TD - 테크니컬 디렉터. 서버, 클라이언트 등 모든 기술팀의 헤드 역할. (TL)
AD - 아트 디렉터. 3D, 2D 컨셉 등 가능성 여부 결정.
기획 - 스토리, 레벨 디자인 / 규칙, 재미 요소 설계 / 협업
아트 - 배경, Ui, 원화, 모델링, 애니메이터, VFX
프로그래머 - 클라이언트, 서버 / 게임 컨텐츠, 그래픽 구현, 퍼포먼스 최적화 / 데이터 공정성 유지, 치트 방
게임 개발 순서
- 기획 단계 -> 디자인 단계 -> 개발 단계 -> QA
- 릴리즈, 운영, 라이브
게임 엔진 역할
- 그래픽, 사운드, 물리연산, 네트워킹을 한곳에서 다루는 종합 인프라.
- 그래픽 렌더링, 물리 엔진, 오디오 엔진, 네트워킹 엔진, Ai
자체 엔진 vs 언리얼 엔진
자체 엔진 - 즉시 사용 가능한 기능, 유연한 커스터마이징
독자 엔진과 달리 100% 맞춤화된 기능 x
언리얼 게임 프레임워크 - Level, Controller, Ui, Actor
GameMode - 현재 게임이 어떤 규칙으로 돌아갈지 정의
PlayerController - 플레이어 입력을 처리
Pawn/Character - 플레이어 혹은 Ai가 조종할 수 있는 오브젝트
Ui - 화면에 표시되는 인터페이스
(위 요소들은 Level 안에서 한꺼번에 동작, Actor 들이 오브젝트로 존재, UI를 통해 플레이어와 정보를 주고받는다.)
Level - Map, Scene, Stage
메인 레벨
서브 레벨 - 기능적으로 구분
컨트롤러
컨트롤러와 폰의 관계
- 플레이어 컨트롤러가 캐릭터를 소유하면, 키보드 입력이 그 캐릭터의 움직임으로 이어진다.
UMG (언리얼 모션 그래픽)
- Ui 만드는 전용 툴 / 프레임워크
- 버튼, 텍스트, 슬라이더, 이미지 출력
액터와 게임 세계 구성
- 초기화 -> 게임 세계 구성 -> 틱(업데이트) -> Destroy
Pawn, Character, Component
- Actor >> Pawn >> Character
Pawn - 액터를 상속받아 조종 가능한 특징을 더한 클래스
Character - Pawn을 상속받아 걷기, 달리기, 점프 등의 이동 로직이 포함된 클래스
컴포넌트 - 액터가 자기 자신에 서브 오브젝트로 어태치 할 수 있는 특수 타입 오브젝트
이벤트 - 액터에 블루프린트 이벤트를 통해 상호작용 로직 구현
액터 - 레벨 내 존재하는 모든 오브젝트 기반 클래스
- 라이트, 카메라, 오브젝트, 트리거 등