본문 바로가기

개발/내일배움캠프

01/27 TIL

서버, 클라이언트 기본 개념 잡기

 

클라이언트?

웹 클라이언트 ≈ 크롬, 엣지, 익스플로러 등의 웹 브라우저

게임 클라이언트 ≈ .exe파일등의 실행파일로 이루어진 스탠드얼론 프로그램

 

서버?
웹서버 ≈ 주로 웹브라우저의 요청을 처리, 정적을 컨텐츠를 주로 처리하고 빠르고 간단한 처리로 다수에게 데이터를 제공하는 목표

게임서버 ≈ 실시간 상호작용과 복잡한 데이터를 다룸, 다수의 사용자와 게임 데이터를 동시에 처리해야하기 떄문에 서버 성능이 중요하며 웹서버보다 복잡한 시스템을 갖춤

 

서버와 클라이언트는 프로토콜을 통해 데이터를 주고 받음.

프로토콜은 데이터 통신 규약. 반드시 지켜져야함.

HTTP/HTTPS - 주로 웹에서 쓰임, request/response 구조 명확하여 REST API등 사용

TCP/UDP - 소켓 통신, 안정성이 중요하면 TCP, 실시간성이 중요하면 UDP를 주로 사용
기타방식 - 웹 실시간 통신 Wepsocket, 신뢰성을 높인 UDP방식인 RUDP 등.

 

기타 통신방식

  1. P2P(peer to peer)
    • 중앙 서버 대신 플레이어끼리 직접 연결되어 데이터를 주고 받는 방식.
      비용이 적지만 보안이나 속도 문제
  2. 하이브리드
    • 말그대로 하이브리드로 부분적으로는 서버, 부분적으로는 클라이언트끼리 통신하는 방식.
      상황에 따라 혼합해 사용

게임 서버의 구조 예시

  1. 단일 서버 구조
    • 말그대로 하나의 서버가 모든 기능을 책임지는 구조
      인원이 적을때 효율적이나 많으면 과부하위험
  2. 분산 서버 구조
    • 여러 서버가 역활을 나누어 처리하는 방식.
      로그인, 채팅, 전투등의 기능별로 역활을 나누어 분산하는 구조.

 

서버 확장 방식

  1. 수직적 확장(Scale Up)
    서버의 크기나 성능을 높이는 방식
  2. 수평적 확장(Scale out)
    서버의 개수를 늘려 분산하는 방식
  3. 자원 회수(Scale in)
    컴퓨팅 자원(서버)회수, 증설한 서버가 필요하지 않을 경우 이를 회수하는것.
  4. Auto scale
    클라우드 컴퓨팅 용어로, AWS등 클라우드 컴퓨팅 업체에서 자원 사용량에 따라 서버를 자동으로 증설/회수하는 방식을 말함.

게임 개발 과정 알아보기

의사결정권자

게임의 전체적인 방향성을 결정함.

  • PD
    • Project Director의 약자
      한 팀의 헤드 역할을 하고 전반적인 방향성을 결정함
  • TD(TL)
    • Technical Director(Leader)의 약자
      각 기술팀의 헤드 역활로 전체적인 기술의 흐름 및 방향성을 결정함.
  • AD
    • Art Director 의 약자
      아트팀의 모든 뱡항성을 결정함.

기타 직군

  • 기획자
    스토리, 레벨디자인부터 게임의 규칙, 재미요소 설계를 담당하고 아트, 프로그래머와 공유 및 협업함.
  • 아트
    UI부터 캐릭터디자인, 일러스트 등 아트를 담당하며 내에서 여러 직군으로 나누어짐
  • 프로그래머
    서버나 클라이언트 등으로 나뉘고
    컨텐츠, 그래픽 구현 및 퍼포먼스 작업과 서버안정성, 데이터 공정성, 치트 방어등의 작업 수행

기능 개발과정
기획 -> 디자인 -> 개발 -> QA(Quality Assurance)품질검증의 단계로 거치며 이는 전체가 아닌 각각에 기능의 과정에 해당함.


3D 게임 개발이 처음이어도 언리얼+ 블루프린트로 쉽게 배우는 3D 게임 개발

1-1 언리얼 엔진 설치하고 에셋 세팅

설치 생략

에디터 초기 화면

언리얼 엔진 에디터 강좌에서 본것처럼 메뉴바, 메인 툴바, 뷰포트, 아웃라이어, 디테일 패널, 콘텐츠 드로어등을 볼 수 있음.

아래 콘텐츠 드로어 클릭 또는 Ctrl+Space를 통해 드로어를 열 수 있음.

 

단순 이미지, 비디오, 오디오는 드로어 내에 드래그 드랍하는것으로 에셋을 추가할 수 있으며,
추가된 데이터는 언리얼 내부에서 자동으로 텍스쳐, 미디어소스, 사운드웨이브 등으로 변환됨.

데이터 추가 후 이미지-텍스쳐, 오디오-사운드웨이브, 비디오-파일 미디어 소스로 변환된 모습

3d object는 다른데, 추가시 콘텐츠 임포트 창이 출력되고 임포트할 오브젝트에 맞게 설정해야함.
해당 내용은 다음에 다룸.

일단은 참고만.

 

1-2 블루프린트 프로그래밍 기초

에디터 메인 화면 상단에서 레벨 블루프린트 창을 열 수 있음.

 

레벨 블루프린트 화면

왼쪽 블루프린트 창에서 그래프, 함수, 매크로, 변수, 이벤트 디스패쳐를 볼 수 있고,

이벤트 그래프에서 미설정된 Event BeginPlay와 Event Tick을 확인 할 수 있다.

Event BeginPlay는 게임 실행시 즉시 실행되는 이벤트

Event Tick은 매 프레임마다 실행되는 이벤트.

 

블루프린트 그래프 화면에서 우클릭을 눌러 가능한 모든 액션을 확인하고 불러올 수 있음.

단순한 Print부터 여러 블루프린트가 제공되고, 왼쪽의 함수에서 새로운 함수를 정의 할 수 있음.

New Function을 정의하고, 우클릭에서 해당 함수를 호출할 수 있음.
Beginplay에 새 함수를 연결하고 실행한 모습

 

 

흐름제어 액션 종류

  • 흐름 제어(Flow Control)
    • Sequence
      순차적 실행으로, Then 0부터 순서대로 실행함.
    • Branch
      IF분기로 주어진 Condition에 따라 True, False에 해당하는 구문을 실행함.
    • While Loop
      Condition값이 False가 될 때 까지 반복함.
      Loop내 내용이 끝나야 다음 루프가 시작됨.
    • For Loop
      First Index부터 Index값을 늘려 Last Index값이 될 때 까지 반복함. Last Index값이 되어도 반복하므로 주의
      예를 들어 0, 3이 주어지면 0,1,2,3 으로 총 4번 실행됨.
    • For Loop with Break
      위와 동일하지만 중간에 멈출 수 있는 For Loop형태이며 루프 내용중에 For Loop with Break의 Break가 호출되면 중지.
    • For Each Loop
      주어진 배열의 0번부터 반복하며, 배열의 데이터와 Index값을 가져올 수 있음.