강의

멘토링

커뮤니티

NEW
게임 개발

/

게임 프로그래밍

온라인 게임 개발을 위한 socket 프로그래밍

이 강의는 온라인 게임 개발에 필요한 TCP/IP 네트워크 프로그래밍의 핵심을 실무 중심으로 다룹니다. 소켓의 기본 원리부터 클라이언트·서버 구조 설계, 직접 만든 네트워크 라이브러리를 이용한 게임 프레임워크 구현까지 단계적으로 학습합니다. 다루는 내용: 네트워크 기본 개념과 TCP/IP 동작 방식 Socket API를 이용한 TCP 프로그래밍 패킷 프로토콜 설계 및 전송 구조 구현 클라이언트/서버 기반 게임 프레임워크 개발 실제 온라인 게임 개발에 필요한 최적화 및 실무 팁 유의사항: Windows에서 Visual Studio를 사용하여 강의를 진행합니다. 표준적인 bsd socket API를 사용하지만 unix계열이 OS와 약간의 차이가 있습니다. IOCP와 Overlapped I/O는 다루지 않습니다.

12명 이 수강하고 있어요.

  • megayuchi
게임프로그래밍
네트워크프로그래밍
게임서버
winsockgame-programmingbsd-socketstcpipwindows-programming

이런 걸 배울 수 있어요

  • TCP/IP의 이해와 응용

  • socket 프로그래밍

  • 네트워크 프로그래밍

  • 온라인 게임 서버 프로그래밍

내가 만든 게임서버에 플레이어들이 접속하는 모습을 상상해 보셨나요? 이제 온라인 게임의 서버와 클라이언트를 직접 만들어 봅시다.

멀티 플레이 게임이나 대규모의 플레이어들이 접속하는 MMO게임이 어떻게 동작하는지 궁금하셨던 적이 있나요? 자작 게임에 네트워크를 붙여서 온라인 모드를 지원하고 싶다고 생각하신 적이 있나요?
그렇다면 본 강의가 도와드릴 수 있습니다.
인터넷 상에서 단순히 데이터를 주고 받는 코드를 작성한다고 하면 socket API를 사용하여 쉽게 구현은 가능합니다. 그러나 단순히 데이터를 주고받는 코드는 게임 개발에서의 네트워크 프로그래밍과는 다소 거리가 있습니다. 본 강좌는 단순 API사용을 넘어서 실제로 사용 가능한 네트워크 코드를 작성하고 이를 클라이언트/서버 모델의 온라인 게임에 적용하는 방법을 설명합니다.

이런 내용을 배워요

1. 네트워크 기본 - 인터넷의 구성

OSI 7계층과 TCP/IP 4계층에 대해 소개하고 이러한 개념들이  인터넷에 어떻게 녹아있는지를 설명합니다.

2. 네트워크 기본 - TCP/IP

인터넷을 구성하는 주요 프로토콜인 TCP/IP의 기술적인 작동원리를 배웁니다. tcp헤더와 ip헤더의 구조, tcp의 seq 번호와 ack응답 시스템, 3 way handshake를 이용한 연결수립, 4 way handshake를 이용한 접속종료에 대해 설명합니다.

3. winsock프로그래밍 개요

windows에서의 socket api구현체인 winsock을 소개합니다.
winsock과 Unix 계열 socket API의 차이점을 설명합니다. winsock프로그래밍에서 주로 사용하게 될 함수와 기능들을 프리뷰합니다.

4. 연결(listen/accept/connect)

연결요청을 받는 API와 연결요청을 수행하는 API를 사용해서 최초의 클라이언트와 서버코드를 작성합니다.


5. send / recv

send()함수와 recv()함수를 사용하여 실제로 데이터를 주고 받아봅니다. 이 시점에서는 blocking mode socket에 대해서만 다룹니다.

6. non-blocking socket

blocking mode socket은 사용하기 쉽지만 실시간 게임에서 사용하기엔 무리가 있습니다. non-blocking socket을 사용하여 실제 게임 프로그래밍에 사용할 수 있는 네트워크 코드를 작성하는 방법을 설명합니다.

7. Send-Buffer / Recv-Buffer

예외상황 처리를 위해서는 socket의 기본 기능에만 의존할 수는 없습니다. TCP특성상 발생할 수 있는 예외상황에 대비해 Recv-Buffer와 Send-Buffer를 구현해봅니다. 이것은 본격적인 네트워크 라이브러리 개발에서 핵심적인 기능입니다.

8. Network Library의 설계와 구현

게임서버와 클라이언트에서 공통적으로 사용할 수 있는 네트워크 라이브러리를 설계하고 실제 구현해봅니다. 단순히 socket api를 이용해서 주고 받는 기능을 구현하는 단계에서 실제 제품 개발로 두 단계 이상 점프할 수 있습니다.

9. Network Library 패키징

코드를 복사&붙여넣기 하는 수준을 벗어나 진짜 모듈화를 달성하려면 바이너리 레벨에서 격리되어야 합니다. 네트워크 라이브러리 코드를 DLL로 분리하여 컨텐츠 레이어와 네트워크 레이어의 경계를 확실히 하는 방법을 소개합니다. 이는 실제 제품 개발에 큰 도움이 됩니다.

10. Network 게임 데모

완전한 게임은 아니지만 온라인 게임을 개발하기 위한 필수요소를 구현해봅니다. 앞선 강의에서 작성한 네트워크 라이브러리를 사용해서 여러 개의 클라이언트가 서버에 접속하고 이동처리를 동기화 하는 간단한 데모를 작성합니다.

11. 성능을 위한 tip

온라인 게임의 네트워크 대역폭과 서버장비의 성능 효율을 높이기 위한 기술을 소개합니다. 또한 UDP vs TCP의 오해를 정리해 봅니다.

수강 전 참고 사항

실습 환경

  • 운영 체제 및 버전(OS): Windows 10/11

  • 사용 도구: Visual Studio 2022


학습 자료

  • pdf 제공

  • 첨부파일을 통한 소스코드 제공

선수 지식

  • 필수

    • C/C++

    • 기초적인 Windows 프로그래밍

  • 권장(다음의 강의들이 도움이 될 수 있습니다.)

유의사항

  • Windows환경에서 winsock API를 사용하여 강의를 진행합니다.

  • linux를 포함한 unix계열에서도 사용할 수 있는 공통적인 socket API 기술을 다룹니다만 실습 환경은 Windows + Visual Studio 2022입니다.

  • 표준 socket API외의 Overlapped I/O, IOCP(I/O Completion Port)와 같은 기술은 다루지 않습니다.


이런 분들께
추천드려요

학습 대상은
누구일까요?

  • 게임 서버/클라이언트 네트워크 구조를 직접 구현하고 싶은 개발자

  • TCP/IP, 소켓 등 네트워크 핵심 기술을 실무적으로 배우고 싶은 분

선수 지식,
필요할까요?

  • C/C++

  • windows programming

안녕하세요
입니다.

2,869

수강생

65

수강평

16

답변

5.0

강의 평점

10

강의

프로그래머

C++,x86/x64 ASM, DirectX9/11/12, Metal, OpenGL, CUDA, win32, winsock/bsd socket

 

인프런 강의

D3D12프로그래밍 기초편 - https://inf.run/7gJhS

D3D12프로그래밍 기초플러스 - https://inf.run/itHDW

DirectX Raytracing 프로그래밍 - https://inf.run/cQqx7

Windows System 프로그래밍 - https://inf.run/AwfCv

Windows Debugging Tips - https://inf.run/zL7E4

 

Blog : https://megayuchi.com

Youtube : https://youtube.com/megayuchi

LinkedIn : https://www.linkedin.com/in/megayuchi/

 

 

커리큘럼

전체

11개 ∙ (11시간 56분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!

월 ₩39,600

5개월 할부 시

₩198,000

megayuchi님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!