P2P方式によるオンラインゲームの研究、開発 情報工学科 大嶽 優
はじめに 本研究の目的はP2P技術などの通信技術を調べ、オンラインゲームを実現することである。
2.開発環境 ■クライアント概要 OS WindowsXP ■サーバー概要 OS Solaris 8x86 CPU Pen4 3.0G Mem 1.0G ■開発環境 コンパイラ VisualC++ 6.0,gcc 2.95 データベース MySQL 3.23.58
3.研究概要 3.1.ソケットプログラミング(TCP,UDP) TCP/IPプロトコルには、接続型(コネクション型)と非接続型(コネクションレス型)という2種類のネットワーク通信がある。 TCP,UDPのチャットプログラム”EasyChat”を開発した。
EasyChatのアルゴリズム ネットワークの初期化 (ソケット生成,bind) 接続待機 受信スレッド (Worker Thread) Main関数ループ (ゲームループ) 送信
3.2.連結リストとノードライブラリの構築 ネットワーク通信では多くのデータが行き来し、管理しなくてはならないので効率的なデータ構造が必要不可欠である。そのためにキュー構造のノードを構築した。 Node1 Node2 Node3 Node4 Node5 link
プレイヤーリスト送信や、更新によるつながり 3.3.P2Pライブラリの構築とP2PChat P2P(ピアツーピア)とはピア、つまりネットワークの終点・到達地点を連結するという意味です ユーザー Host プレイヤーリスト送信や、更新によるつながり
P2Pのアルゴリズム 新規生成 新規プレイヤー プレイヤーリスト更新 他のプレイヤーに送信 Yes No 参加 プレイヤーリストを受け取る 他のプレイヤーに接続 待機 新規プレイヤー参加 ホスト 非ホスト
3.4. ロビーサーバーとNetTetris MySQLでデータベースを作成し、ODBC(OpenDatebaseConnectivity)を使用してロビーサーバーのユーザー管理を構築。 ゲームにはアルゴリズムが確立されていて容易に実装できるテトリスを選択した。 テーブル設計 データベースサーバー ロビーサーバー クライアント フィールド名 形式/長さ NULL 説明 id Char/10 true ユーザーID psw Password Friend char/10 freiend登録
Net_Tetris
4.まとめ 本研究を通してネットワークプログラミング概念やソケット、パケットの扱い方をある程度理解できた。また、ネットワーク分野の広さと難しさを改めて実感した。 今回の研究ではそれぞれのゲームの同期処理が正確にできなかった。ゲーム自体はフレーム同期をとっているがに回転や移動などの動作ついてはデータを送っているので、互いの動作がワープしたりちぐはぐになったりしたので、それぞれの誤差を修正する処理が今後の課題に挙げられる。