CS지식

게임 제작 방법 노하우

hminor 2023. 6. 2. 00:39

게임 제작에 필요한 3대장

게임기획자(잡일꾼) + 게임 프로그래머(코딩노예) + 게임그래픽디자이너(그림쟁이)

게임 기획자가 하는 일

게임의 기본적인 룰과 인물, 배경, 세계관 등 모든 게임 안의 설정을 문서로 작성 (ex. 영화감독) 게임 분야와 장르에 따라 세부 역할은 다르지만 공통적으로 글와 그림, 자료 등으로 작업자에게 제작 내용 전달 제작하려는 게임의 재미요소를 명확하게 인지하고 자신의 생각을 작업자들에게 공유할 수 능력 필수 장르에 따라 배틀 시스템, UI 기획, 레벨 디자인 기획자, 퀘스트(컨텐츠) 디자인 기획자 등 세부적인 파트로 나눔.

게임 기획자가 되려면?

기획하려는 게임의 동작에 대한 대부분의 상황이 머릿속에 정확하게 설명할 수 있어야 합니다. 간단한 콘티 드로잉이나, 제작할 게임의 참고 영상 준비나 프로토 타입 제작을 할 수 있는 능력 필요 뛰어난 문서 작성 능력 (문서로 보이지 않는 것을 설명하고 이해시켜야 합니다.) 만드는 게임의 재미 요소에 대한 절대적인 확신이 있어야 합니다. *기획자에게 가장 중요한 덕목!!!!! 마지막으로 책임감이 강해야 합니다. (기획자가 잠수 타면 게임이 망합니다.)

A. 기획자는 프로그래밍을 몰라도 상관없다?  True

원칙적으로는 프로그래밍을 몰라도 상관은 없습니다. 하지만, 좋은 기획자는 여러 방면을 알고 있어야 실무자들에게 더욱 인정 받는 사실, 어쩌면 당연한 얘기일 지도 모르겠죠? ^^

게임 그래픽 디자이너가 하는 일

게임 안의 사물들 (이미지들을 하나씩 그리거나 (2d), 모형을 만들어내는 (3d) 작업을 담당.
ex) 영화 의상 및 배경 소품 담당 기획자가 제작하고자 하는 제작물의 문서나 참고 자료를 바탕으로
     실제 시각적 그래픽 리소스를 제작 그래픽 디자이너에는 게임 장르에 따라 2d/3d 그래픽 디자이너로 나뉘며,
     UI 디자이너 같은 경우는 대부분 2d로 작업

게임 그래픽 디자이너가 되려면?

예술적 감각과 상상력이 풍부해야 함.
유저에게 보여지는 영역이 절대적이므로 다른 파트에 비해 강철 멘탈이 필요하며
끊임 없는 반복 연습과 노력이 필요함. 항상 인체 비율이나 그림체, 채색 표현에 대한 연구가 필요함.
마지막으로 책임감이 강해야 한다.

tool: Photoshop, spine tool, blender,

A. 그래픽 디자이너는 포토샵으로 3d 맵핑 그래픽 소스를 만든다? True

게임 프로그래머가 하는 일 - Client

Client는
웹의 front-end에 해당하는 영역
프로그래밍 영역은 크게 Client/Server 영역으로 분류

게임 클라이언트의 역할 예시

  • 화면상의 사물 (객체)에 대한 렌더링과 객체간의 상호 작용을 구현
  • 객체의 움직임에 대한 로직 구현
  • 게임의 시작 / 종료 조건 체크 및 구현
  • UI 구현 - 아이템 인벤토리, 캐릭터 장비 창, 상점 등등...

게임 프로그래머가 하는 일 - Server

Server는 웹의 back-end에 해당하는 영역
기획서를 바탕으로 client 프로그래머와 협의해서 DB 설계 및 게임 서버를 구현
실시간 게임 서버 => tcp socket 서버 구현
비동기 게임 서버 => web socket 서버 구현

게임 서버의 역할 예시

  • 로그인 시 플레이어 인증 로직 구현
  • 게임 플레이어의 재화 및 게임 플레이 데이터 저장
  • 필요 시 플레이어끼리의 채팅 로직 구현
  • 실시간 PVP 컨텐츠가 있는 경우 매칭 및 대전 로직을 구현
  • 게임 CS 문의 시 대응을 위한 DB Log 기록

Client

기본적인 자료구조(Data Structure) 에 대한 이해가 필수
효과적인 리소스 관리를 위해 메모리에 대한 이해가 필요
Event Driven Programming에 대한 이해 필요
렌더링 횟수를 줄이기 위한 코드 최적화 작업 필수

Server

기본적인 자료 구조(Data Structure) 에 대한 이해가 필수
http/tcp 통신/udp 통신/SQL 쿼리/DB 설계 / 저장 프로시저 (Stored Procedure) 등에 대한 경험 필요
단일 쓰레드 처리와 멀티 쓰레드 처리에 대한 이해가 필요
소켓 서버의 경우 client 통신에 필요한 패킷 정의 / 브로드캐스팅/DB 데이터 C.R.U.D 연동 등에 대한 이해 필요
소켓 서버를 구현시 통신 예외 처리에 대한 디테일 중요 (서버는 절대 죽으면 않됨)
소켓 서버 및 웹 서버에 대한 제작 경험 있다면 큰 강점이 될 수 있음

기본적인 게임 동작의 이해(1)

Update - 게임 객체가 체크 해야 할 로직들
Draw - 게임 객체를 화면에 그리는 행위
State - 게임 객체가 가지는 상태 정의

 

Event Driven Programming이란?

범용적인 게임 엔진이 필요한 이유

  • 가장 큰 이유 : 바퀴를 다시 발명하지 마라!!
  • 매번 다른 게임의 엔진을 만드는 데 드는 노력과 시간이 엄청남
  • 모든 기능을 범용적으로 지원하는 게임 엔진을 이용하면 개박 시간을 단축 가능
  • 유지 보수 용이 - 동일한 엔진 사용 경험으로 인원 충원 시 개발 리스크 단축
  • 검증된 엔진 사용으로 버그 최소화 - 개발 포럼 등을 통한 문제 해결 용이

대표적인 게임 개발 툴 소개

코코스2d-x

  • 2d 게임 제작 기반의 c / c++ 오픈 소스 라이브 러리
  • 하나의 소스로 PC / Android / IOS 포팅이 가능
  • 타 엔진에 비해 가볍고 빠르다
  • c / c++ 기반 엔진으로 요구되는 학습 난이도의 진입 장벽이 상당히 높다.
  • 지원 되는 기능ㅇ ㅣ많지 않아서 필요하면 만들어 써야 하므로 상당히 불편하다

유니티 엔진

  • 쉽고 편리한 GUI 환경이 제공되는 엔진
  • 물리 기능, 사운드 기능, 입력 기능 등 핵심 기능 들이 라이브러리로 모두 지원
  • 컴포넌트 기반의 객체 구성으로 drag and drop을 통한 오브젝트 조립 및 조합 가능
  • C# 스크립트 코드를 지원해 오브젝트들의 추가적인 세부 기능을 어렵지 않게 구현 가능
  • 가장 대중적인 엔진

언리얼 엔진

  • 가장 퀄리티 좋은 그래픽을 뽑아낼 수 있는 엔진
  • 블루 프린트라는 비주얼 스크립팅 시스템으로 타 직업 군도 게임로직 개발 가능
  • c / c++ 기반의 오픈 소스 제공으로 블루 프린트에서 제어하지 못하는 세밀한 부분을 c / c++로 제어 가능
  • 좋은 퀄리티를 낼 수 있는 대신 가장 무걱고 빌드 시간이 길다는 단점이 존재

TEST 및 배포하기

  • 게임 개발 IDE로는 Visual Studio로 작성
  • 플랫폼에 따라 빌드 후 exe / apk / ipa 등으로 실행 파일 생성
  • 만들어진 파일들이 실행 되면 서버에서 버전 체크 후 필요한 업데이트 파일 다운로드 하는 방식으로 관리

Q. 게임 개발만 잘하면 바이럴 마케팅이 알아서 퍼지는 경우가 많다? False

발매된 게임 1000개 중 1개가 성공하는 시대
게임 엔진의 대중화로 인한 엄청난 증가로 인해 마케팅은 개발에 필적할 정도로 필수적
게임으로 성공하고 싶으면, 반드시 마케팅을 수단과 방법을 가리지 말고 잡아야 한다!!

정리 및 요약

게임 개발은 크게 기획자 / 그래픽 디자이너 / 프로그래머 3영역으로 나눔
기획자는 문서를 바탕으로 만들고자 하는 게임을 작업자에게 전달
그래픽 디자이너는 여러가지 그래픽 Tool을 사용해서 리소스를 뽑아냄

프로그래머는 Client / Server로 나뉘며,
Client는 화면 안의 객체들의 상호작용을 구현,
Server는 Client가 Play한 내용을 DB에 기록 또는 Client에서 요청하는 내용을 실시간으로 보내는 역할 담당

'CS지식' 카테고리의 다른 글

코드 리펙토링  (0) 2023.06.03
전처리는 왜 필요할까?  (0) 2023.06.02
AWS 보안 가이드  (0) 2023.06.02
BlockChain이란?  (0) 2023.06.02
Data Flow  (0) 2023.06.02