
누적 학습 시간 : 13시간 40분
📅 2026-04-01
개발자라면 누구나 가지고 있는 직업병이 있다.
특정 물체를 보거나 기능을 보면 코드로 어떻게 짜면 될까 상상해보는 그런 병
나만 그런거라면 뭐... 아님말고
오늘은 게임개발을 할 때 알아야하는 기본지식에 대해서 공부할 예정이다.
서버 <-> 클라이언트
클라이언트 (플레이 담당)
게임개발에서 클라이언트는 exe로 실행가능한 것을 말한다.
웹에서 클라이언트는 브라우저라고 보면 되겠다.
서버 (관리 담당)
1. 웹서버
- 텍스트, 이미지 등 정적인 콘텐츠 처리에 사용
- HTTP/HTTPS 요청에 맞춰 웹페이지나 이미지, 데이터를 제공
- 게임서버
- 실시간 상호작용과 복잡한 데이터를 다룬다
- 위치, 아이템, 캐릭터 상태 등 복잡한 데이터를 빠르게 처리
- 여러명이 동시에 접속하므로 서버 성능이 중요
P2P (Peer to Peer)
- 중앙 서버 없이, 플레이어끼리 직접 연결해서 게임 데이터를 주고받는 형식
- 서버 비용 적지만, 해킹 방어나 속도 문제가 발생하기 쉬움
하이브리드
- 부분적으로는 서버가, 부분적으로는 플레이어끼리 통신도 하는 형태
- 다양한 온라인 게임이 상황에 따라 혼합해서 사용
프로토콜이란?
컴퓨터나 전자기기 간에 정보를 교환할 때 따르는 규칙의 집합, 통신 규약이라고 부름
HTTP/HTTPS
- 주로 웹에서 씀
- 요청/응답 구조가 명확하고 REST API등을 통해 전송
TCP/UDP
- 게임에서 실시간성이 중요한 경우 UDP 사용
- 안정성이 중요한 경우에는 TCP
기타
- WebSocket (브라우저 실시간 통신)
- RUDP (신뢰성을 높인 UDP)
게임 서버의 구조
단일 서버
한 대의 서버가 게임의 모든 기능을 책임지는 구조
사용자가 많아지면 부하가 심해지고 느려짐
ex) 한 마을에 큰 수퍼마켓이 있고 이 마켓에서 주민들에게 필요한 모든 것을 파는 구조
분산 서버
여러 서버가 각각 역할을 나누어 처리하는 방식
로그인, 채팅, 전투기능 등 서버가 맡은 역할이 각각 나뉘어져 있어서 분산된 구조로 운영
ex) 여러 개의 작은 가게가 모여 상가를 이루고 있는 상황
역할을 나눠 효율적으로 운영할 수 있어서 대규모 온라인 게임에 적합
서버의 확장
수직적 확장 (Scale up)
하나의 서버를 더 강력하게 만드는 방식
CPU, Memory등을 업그레이드
수평적 확장 (Scale out)
같은 서버를 여러 대로 나누어 부하를 분산하는 방식
게임 개발 참여자
의사결물리
PD / Project Director
한 팀의 헤드 역할, 게임 전반의 방향성 결정
TD / Technical Director
서버팀, 클라이언트팀 등 모든 기술팀의 헤드역할
전체적인 기술 흐름 및 방향성을 결정
TL 이라고도 부름
AD / Art Director
아트팀의 모든 방향성 결정
3D그래픽, 2D 컨셉 등 가능성 여부 결정
===> 게임의 전체적인 방향성이란 장르 선택을 뜻함
장르에 따라서 타겟층, 게임플레이 방식, 아트 스타일이 달라짐
직군
기획
스토리 & 레벨 디자인
- 플레이어가 위험한 던전을 탐험하며 보스와 대결하는 MMORPG
- 던전의 구조, 보스패턴, 획득 아이템 등 구성
규칙, 재미 요소 설계
- 게임시스템(전투, 이동, 스킬, 성장 등) 세부 난이도 설정
- 밸런스 패치
협업
- 기획서대로 아티스트와 프로그래머가 작업할 수 있도록 설명, 방향성 공유
아트
배경, UI, 원화, 모델러, 애니메이터, VFX 등 가장 많은 직군 존재
게임 전체의 분위기와 톤앤 매너를 결정 > 고퀄 게임에 필수
프로그래머
클라이언트
- 게임 컨텐츠, 그래픽 구현
- 퍼포먼스 최적화 작업
서버 프로그래머
- 게임 컨텐츠 개발 및 안정성에 크게 기여
- 데이터 공정성 및 치트 방지
과제
Unreal Engine 5에서 "프로젝트 생성" 단계의 주요 흐름은 무엇인가요?
- 프로젝트 브라우저 실행
- 템플릿 선택 (Game / Film / Architecture 등)
- 프로젝트 설정 선택
- 프로젝트 생성
"에디터 인터페이스"의 핵심 요소 3가지는 무엇인가요?
- 뷰포트
- 아웃라이너
- 디테일 패널
Unreal Engine에서 "Actor"란 무엇이며, 어떤 역할을 하나요?
레벨에 존재하는 모든 객체의 기본 단위
![업로드중..]()
직접 에디터로 액터도 만들고 물리도 건들면서 가지고 놀다보니 빨리 C++를 익혀서 능숙하게 엔진을 다룰 수 있었으면 좋겠다는 생각이 든다.