웹 클라이언트
- 간단하게 웹 브라우저

게임 클라이언트(게임 exe파일)
- 간단하게 게임 실행 파일 .exe
- 게임 클라이언트를 만들기 위한 툴에는 대표적으로 유니티 엔진과 언리얼 엔진이 있다.
유니티와 언리얼 엔진의 차이점
- 유니티는 비교적 가벼운 게임을 개발하여 더 쉽고 빠르게 배우고 게임 개발 가능
- 언리얼 엔진은 AAA급 게임, 비교적 고퀄리티(더 무거움) 게임 개발 가능.
서버와 클라이언트의 개념
- 클라이언트가 서버에 요청을 보내고 서버가 처리를 하여 응답을 하여 유저들에게 화면을 보여줌.
- 서버는 물리적 서버와 소프트웨어 서버가 있음.
웹 서버
- 텍스트나 이미지와 같은 정적인 콘텐츠를 전송하는데 사용(동적인 콘텐츠도 처리 가능).
- 빠르고 간단한 데이터 처리로 사용자에게 정보를 쉽게 제공하는 것이 목적.
사용자의 브라우저 요청(http/https)에 맞춰 웹 페이지나 이미지, 데이터를 제공
게임 서버
- 웹 서버와는 다르게 실시간 상호작용, 복잡한 데이터를 다룸.
- 사용자의 상태와 게임 데이터를 동시에 처리해야 함.
- 서버 성능이 중요하며, 일반적으로 웹 서버보다 복잡한 시스템을 갖춤.
실시간 상호작용이 핵심
위치, 아이템, 캐릭터 상태 등 복잡한 데이터를 빠른 속도로 처리 해야 됨.
여러 명이 동시에 접속하므로 동시 접속자 수와 서버 성능이 중요.
서버와 클라이언트가 통신하는 방법, 규칙 : 프로토콜
- 프로토콜은 컴퓨터나 전자 기기 간에 정보를 교환할 때 따르는 규칙의 집합.
- 통신 규약이라고 불리며, 컴퓨터 간의 원활한 통신을 위해 지켜지는 약속.
- 클라이언트와 서버가 통신하려면 반드시 프로토콜이라는 약속이 필요함.
HTTP/HTTPS
- 주로 웹에서 쓰임
- 요청/응답 구조가 명확하여, REST API 등을 통해 데이터 전송
TCP/UDP
- 게임에서는 실시간성이 중요한 경우 UDP를 사용하기도 함
- 안정성이 중요한 경우에는 TCP
기타
- WebSocket (브라우저 실시간 통신)
- RUDP(신뢰성을 높인 UDP)
서버
- 게임의 핵심 로직(점수 계산, 상태 저장, 멀티플레이 동기화 등)을 담당.
- 여러 명의 플레이어가 동시에 접속해도 공정하고 일관성 있게 게임을 진행시키기 위해 필요.
- ex) 공격을 받았는지, 아이템을 먹었는지 등의 최종 판단.
클라이언트
- 실제로 화면에 게임을 보여주고, 사용자의 입력을 받아 서버로 전달.
- 서버에서 응답 받은 결과를 화면에 그래픽이나 사운드로 표시.
- ex) 캐릭터 이동, 아이템 사용 등의 정보를 서버에게 보내고 결과를 받아 처리한다.
서버 클라이언트 구조 or 클라이언트 서버 구조
아래 사진과 같이 하나의 서버에 여러개의 클라이언트가 붙어서 데이터를 받아 관리를 하는 구조.

클라이언트가 요청을 보내고 서버가 응답하는 이 구조는 인터넷과 디지털 서비스의 기본적인 원리입니다.
서버와 클라이언트가 이런 방식으로 상호작용하기 때문에 우리가 웹사이트를 이용하고, 실시간 게임을 즐길 수 있는 것이죠.
서버와 클라이언트의 개념은 인터넷 서비스의 기본을 이해하는 데 매우 중요한 요소입니다.
클라이언트 개발자라면, 어떤 엔진을 사용하든 서버와 통신하는 방식을 이해해야 합니다!
이 외에 P2P, 하이브리드 구조도 있다.
P2P(Peer to Peer)
- 중앙 서버 없이, 플레이어끼리 직접 연결해서 게임 데이터를 주고받는 방식
- 서버 비용은 적지만, 해킹 방어나 속도 문제가 발생하기 쉽다
하이브리드
- 부분적으로는 서버가, 부분적으로는 플레이어끼리 통신도 하는 형태
- 다양한 온라인 게임이 상황에 따라 혼합해 사용하기도 함
게임 서버의 구조
- 단일 서버
- 단일 서버는 말 그대로 한 대의 서버가 게임의 모든 기능을 책임지는 구조.
- 인원이 적을 때는 효율 적이지만, 사용자 수가 많아지면 느려지고 서버에 과부하가 걸림.
- 분산 서버
- 분산 서버는 여러 서버가 각각 역할을 나누어 처리하는 방식.
- 역할을 나눠 효율적으로 운영할 수 있어 대규모 온라인 게임에 적합함. 인원이 적을 때는 비효율적
서버 확장 방법 : 스케일 업(수직적 확장)과 스케일 아웃(수평적 확장)
서버 그 자체의 크기를 키우는 것은 스케일 업, 서버를 여러 개로 늘리는 걸 스케일 아웃이라 함.

수직적 확장 (Vertical Scaling) (Scale up)
수직적 확장은 하나의 서버를 더 강력하게 만드는 방식입니다. CPU, 메모리 등을 업그레이드해 성능을 높이죠.
수평적 확장 (Horizontal Scaling) (Scale Out)
수평적 확장은 같은 서버를 여러 대로 나누어 부하를 분산하는 방식입니다.
'Unreal 게임개발종합반 1주차' 카테고리의 다른 글
| 3일차 250716 (1-7강의) (0) | 2025.07.25 |
|---|---|
| 2일차 250715 (1-6강의) (0) | 2025.07.25 |
| 2일차 250715 (1-5강의) (0) | 2025.07.25 |
| 2일차 250715 (1-4강의) (0) | 2025.07.25 |
| 2일차 250715 (1-3강의) (0) | 2025.07.25 |