inflearn logo
知識共有
inflearn logo

オンラインゲーム開発のためのsocketプログラミング

この講義では、オンラインゲーム開発に必要なTCP/IPネットワークプログラミングの核心を、実務を重視して学びます。 ソケットの基本原理から、クライアント・サーバー構造の設計、自作のネットワークライブラリを用いたゲームフレームワークの実装まで、段階的に学習します。 扱う内容: ネットワークの基本概念とTCP/IPの動作方式 Socket APIを利用したTCPプログラミング パケットプロトコルの設計および転送構造の実装 クライアント/サーバー型ゲームフレームワークの開発 実際のオンラインゲーム開発に必要な最適化および実務上のヒント 注意事項: Windows上でVisual Studioを使用して講義を進めます。標準的なbsd socket APIを使用しますが、unix系OSとは若干の違いがあります。 IOCPとOverlapped I/Oは扱いません。

難易度 中級以上

受講期間 無制限

winsock
winsock
game-programming
game-programming
bsd-sockets
bsd-sockets
tcpip
tcpip
windows-programming
windows-programming
winsock
winsock
game-programming
game-programming
bsd-sockets
bsd-sockets
tcpip
tcpip
windows-programming
windows-programming

学習した受講者のレビュー

5.0

5.0

영환

64% 受講後に作成

とても有益な講義です。 講義を聴いた後、何もない状態からコードを一つ一つ打ち込んでみて、よく分からない部分は講義をもう一度見ながら復習していますが、とても役に立っています。 ありがとうございます。

5.0

wolfclaw4

64% 受講後に作成

就職活動中の方なら、ぜひ聞いてほしいです。

5.0

아데니아

100% 受講後に作成

講義資料が充実して提供されており、より深く理解するのに役立ちます。

受講後に得られること

  • TCP/IPの理解と応用

  • ソケットプログラミング

  • ネットワークプログラミング

  • オンラインゲームサーバープログラミング

自分で作ったゲームサーバーにプレイヤーが接続する様子を想像したことはありますか?さあ、オンラインゲームのサーバーとクライアントを自分で作ってみましょう。

マルチプレイゲームや、大規模なプレイヤーが接続するMMOゲームがどのように動作するのか、疑問に思ったことはありませんか?自作ゲームにネットワーク機能を追加して、オンラインモードに対応したいと思ったことはありませんか?
そうであれば、本講義がお役に立ちます。
インターネット上で単純にデータを送受信するコードを書くのであれば、socket APIを使用して簡単に実装できます。しかし、単純にデータを送受信するコードは、ゲーム開発におけるネットワークプログラミングとはやや異なります。本講座では、単純なAPIの使用にとどまらず、実際に使用できるネットワークコードを作成し、それをクライアント/サーバーモデルのオンラインゲームに適用する方法を説明します。

このような内容を学びます

1. ネットワークの基本 - インターネットの構成

OSI 7階層とTCP/IP 4階層について紹介し、これらの概念がインターネットにどのように組み込まれているかを説明します。

2. ネットワークの基礎 - TCP/IP

インターネットを構成する主要なプロトコルであるTCP/IPの技術的な動作原理を学びます。TCPヘッダーとIPヘッダーの構造、TCPのSEQ番号とACK応答システム、3ウェイハンドシェイクによる接続確立、4ウェイハンドシェイクによる接続終了について説明します。

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. ネットワークゲームデモ

完全なゲームではありませんが、オンラインゲームを開発するための必須要素を実装してみます。前回の講義で作成したネットワークライブラリを使用し、複数のクライアントがサーバーに接続して移動処理を同期する簡単なデモを作成します。

11. パフォーマンス向上のためのヒント

オンラインゲームのネットワーク帯域幅とサーバー機器の性能効率を高めるための技術を紹介します。また、UDPと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プログラミング

こんにちは
megayuchiです。

インフラーン認証

キャリア認証

3,494

受講生

126

受講レビュー

25

回答

5.0

講座評価

11

講座

プログラマー

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デバッグのヒント - https://inf.run/zL7E4

 

ブログ : https://megayuchi.com

Youtube : https://youtube.com/megayuchi

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

 

 

もっと見る

受講レビュー

全体

8件

5.0

8件の受講レビュー

  • wolfclaw43527님의 프로필 이미지
    wolfclaw43527

    受講レビュー 1

    ∙

    平均評価 5.0

    5

    64% 受講後に作成

    就職活動中の方なら、ぜひ聞いてほしいです。

    • chs931143588님의 프로필 이미지
      chs931143588

      受講レビュー 4

      ∙

      平均評価 5.0

      5

      100% 受講後に作成

      講義資料が充実して提供されており、より深く理解するのに役立ちます。

      • thekim122050님의 프로필 이미지
        thekim122050

        受講レビュー 7

        ∙

        平均評価 4.4

        5

        64% 受講後に作成

        とても有益な講義です。 講義を聴いた後、何もない状態からコードを一つ一つ打ち込んでみて、よく分からない部分は講義をもう一度見ながら復習していますが、とても役に立っています。 ありがとうございます。

        • cov10135743님의 프로필 이미지
          cov10135743

          受講レビュー 9

          ∙

          平均評価 5.0

          5

          36% 受講後に作成

          • alstjr123qwe3562님의 프로필 이미지
            alstjr123qwe3562

            受講レビュー 1

            ∙

            平均評価 5.0

            5

            64% 受講後に作成

            megayuchiの他の講座

            知識共有者の他の講座はこちら

            似ている講座

            同じ分野の他の講座を見てみましょう!

            ¥24,884