Skip to content

Latest commit

 

History

History
218 lines (164 loc) · 12.4 KB

README.md

File metadata and controls

218 lines (164 loc) · 12.4 KB

『オンラインゲームを支える技術 -- 壮大なプレイ空間の舞台裏』
サンプルゲームレポジトリ

書籍情報ページ

レポジトリの内容

このレポジトリに含まれるファイルは、書籍『オンラインゲームを支える技術』
(中嶋謙互著、技術評論社、2011)の本文、第4章、第5章用の参考/補助資料です。

本文解説中では紙幅の都合で一部仮想コードを使用している部分もありますので、
参考までに実際に動くサンプルゲームを用意しました。
サンプルゲームは、MMOタイプ(C/S MMO)とMOタイプ(P2P MO)の2種類です。
ソースコードは、あくまでプログラミング手法の理解を助けるためのものとして、
動作イメージや本書掲載コード例の参考に使用してください。

  • README.md :本ファイル
  • VCE-License.txt :通信ミドルウェアVCEの使用条件/利用規約
  • mmo :第4章関連。MMOタイプのサンプルゲーム類の収録フォルダ
  • mo :第5章関連。MOタイプのサンプルゲーム類の収録フォルダ
  • ※上記以外は、下記で別途説明しています

上記サンプルゲームプログラムの使用にあたっては、
必ず、下記「通信ミドルウェア『VCE』およびVCEバイナリの起動時間について」
「使用に関するご注意」をお読みいただき、ご了承のうえ、ご使用ください。

通信ミドルウェア「VCE」およびVCEバイナリの権利、動作時間及び無保証等について

上記のサンプルゲームで使用している通信ミドルウェア「VCE」の、著作権を含む
知的財産権・所有権は、㈱スクウェア・エニックスに帰属します。
書籍『オンラインゲームを支える技術』では業界の技術水準の向上と振興のためとして、
本書ご購入の読者の方に限り、特別にライセンス提供を受けているものです。

なお、本サンプルゲームプログラムのアーカイブに格納しているVCEバイナリは、
プログラムを開始して一定時間内(本アーカイブ公開時点で、1回の起動あたり最長1時間)
には通信ができなくなる試用版です。VCEを使用することによるあらゆる損害に関して、
㈱スクウェア・エニックス、著者、㈱技術評論社は一切の責任を負いません。あらかじめご承知おきください。

プレイ動画のご案内

より簡単に動作イメージを確認できるゲームのプレイ動画は、以下から参照いただけます。

プレイ動画など、スペシャルコンテンツはこちら

使用に関するご注意

  • サンプルゲームプログラムのアーカイブに同梱しているデータ、プログラムは、
    『オンラインゲームを支える技術』の本文解説に関する参考/補助資料として
    使用いただくことのみを目的として提供しております。
  • 同アーカイブに収録しているプログラムおよびデータを使用して発生した障害、問題などに関して、
    プログラムおよびデータの作者、開発元/提供元、筆者および㈱技術評論社は一切の責任を負いません。
    使用はご自身の責任で行ってください。
  • 同アーカイブに収録している通信ミドルウェアVCE(技術評論社経由提供版)については、
    技術評論社Webサイトにて本アーカイブダウンロード前に確認/同意いただいた利用規約に基づき、使用してください。
    VCEの使用条件/利用規約は本アーカイブにも同梱しているVCE-License.txtで参照いただけます。
    その他、本ファイルを含むアーカイブに同梱しているプログラムの著作権は一般的に、
    その作者あるいは開発元/提供元が所有します。いずれの著作物もライセンスを確認の上、ご自身の責任で使用してください。
  • 同アーカイブの収録物のうち、サンプルゲームのプログラム本体ソースコードについてのみパブリックドメインとし、
    一切の許諾なしに自由に使用してかまいません。
  • 収録物、プログラムの内容および使用方法、OSの基本操作等に関して、
    電話やメールでのお問い合わせを含むサポート業務は一切お受けしておりません。 あらかじめご了承の上ご使用ください。

サンプルゲームの内容紹介

MMOタイプ

MMOタイプのゲーム内容は、

  • 広いフィールド内に敵がランダムにポップ(突然出現する)
  • それをキーボード操作で追いかけて、カーソルキーを連打することで「攻撃」しダメージをあたえる
  • 一定のダメージを与えることで撃破し、経験値を稼ぎ、レベルを上げ、強くしていく

というMMORPGの典型的な内容を極端に単純化して模倣しています。
ゲームの難易度は非常にやさしく、「ぷちぷち」をずっとつぶし続けるように、のんびり遊ぶことができます。

サンプルプログラムの見所は、すべてのゲーム進行を管理する専用のサーバプログラム(gmsv)が動作していて、
クライアントプログラムは純粋にそれを表示するだけという「ブラウザ型」の動作をするところです。
プレイ動画でも、2つ同時に起動しているクライアント同士で、ほぼ同じ画面状態になっています。
2つの画面が大きく異なっているMOタイプのプレイ動画と比べると、両者の違いがよくわかります。

MOタイプ

MOタイプのゲーム内容は、

  • わき出てくる敵が弾を撃ってくる
  • それをキーボード(上/下/左/右の矢印キーまたはW/A/S/Dキー)操作で避けつつ
  • マウスで弾を撃って撃退していく

で、ゾンビハンティングタイプのTPS(Third Person Shooting Game、Third-Person Shooter)です。

経験値を稼いでexpを100にするごとにレベルが上がります。
ゲームの難易度は70年代のアメリカゲーム的なもので、
今のゲームと比べると当たり判定などは、十分に工夫の余地があるでしょう。
テストしてみたところ、レベル3にするためにはコツが必要かもしれません。

ソースコードの見所は、SyncValueクラスの使い方です。

使用上の注意

本アーカイブに収録しているサンプルゲームの使用にあたっては、UNIX系OSの基本的な使用法をはじめ基礎知識が必要となります。 以下の文面は、それらを前提知識として説明を行っていますので、UNIX系OSを使用したことがない方は、
あらかじめ関連文献などを参照してください。                    

サンプルゲームの動作環境

本書サンプルゲームの動作確認には、以下の環境を使用しました。
いずれのソフトウェアもライセンス等を確認の上、ご自身の責任でご使用ください。
また、以下の環境と異なるソフトウェア/バージョンを使用する場合は、ご自身の判断で行ってください。

  • Mac OS X v10.6(Snow Leopard)以降

  • Xcode

  • 通信ミドルウェアVCE ※vceディレクトリにあるVCEバイナリ。必ず、使用条件/利用規約に基づき、使用してください

  • gcc 4.2.1 ※Xcode 3.2に収録されているものを使用

  • Python 2.6.1 ※Snow Leopardにプリインストールのものを使用

  • Boost 1.41.0 ※本アーカイブに必要な部分のみ展開の上、収録。ライセンス

  • SDL 1.2.14 ※本アーカイブのSDL-1.2.14ディレクトリに収録(-arch x86_64バイナリを含むビルドをすること)ライセンスについて

  • MySQL 5 14.14, distrib: 5.1.40

  • MacPorts ※MySQLインストールなどに使用 参考情報

  • Django 1.1.1 ※ソースからインストールするのが確実 参考情報

MMOタイプのサンプルゲームの使い方

MMOタイプのサンプルゲームの動作確認は、下準備&ビルド(dbsv→gmsv→cliの順にビルド)をした後、
サーバを起動し、autocliとcliでいう流れになります。
以下の手順は、あくまで参考としてお読みください。
同じソフトウェアを使用いただいたとしても、コンピュータの使用状況が異なることにより動作確認ができない場合もあり、
以降の説明は読者の方のコンピュータにおける動作を保証するものではありません。

*下準備&ビルドの例:
(1)MacPortsでMySQLをインストール&下準備
% sudo /opt/local/bin/port insall mysql5
※依存関係など個別環境の必要に応じてmysql5-devel、mysql5-server-develの追加インストール、/opt/local/var/run/mysql5/mysqld.sockで待ち受け設定など行ってみてください

(2)SDL-1.2.14のあるフォルダに移動し、ビルド&インストール
% ./configure && make
% sudo make install

(3)Djangoをソースコードからインストール
http://www.djangoproject.com/download/からDjango-1.1.1.tar.gzから入手
% tar zx Django-1.1.1.tar.gz
% cd Django-1.1.1
% sudo setup.py install

(4)サンプルコードをビルド
-(a)dbsvに移動
-(b)make
-(c)gmsvに移動
-(d)make
-(e)cliに移動
-(f)make

(5)MySQLの下準備
% sudo -u mysql mysql_install_db5
% sudo /opt/local/share/mysql5/mysql/mysql.server start
% mysql5 -u root
mysql> grant all on *.* to storage@localhost 
% mysqladmin5 -u storage reload

※下記サーバの起動時にエラーが出た場合、エラーメッセージに従う。たとえば、必要に応じて以下の手順で手動でデータベース"k"を作成など行う
% mysql5 -u root
mysql> create database k;

*サーバの起動例:
(1)dbsvに移動(ビルドが終わっている状態で移動する)
(2)make tblを実行して必要なテーブルを生成
(3)./dbsvを起動
(4)./dbclを起動してテスト。止まらず走り続けている限り成功し続けている
(5)gmsvに移動
(6)./gmsv 0を起動。0はゾーンサーバID。 29000番からはじまるポートで待ち受けます。


*サーバの起動例:
(1)dbsvに移動(ビルドが終わっている状態で移動する)
(2)make tblを実行して必要なテーブルを生成
(3)./dbsvを起動
(4)./dbclを起動してテスト。止まらず走り続けている限り成功し続けている
(5)gmsvに移動
(6)./gmsv 0を起動。0はゾーンサーバID。 29000番からはじまるポートで待ち受けます。


*autocli&cliの実行例:
(1)./autocliを起動してボットクライアントテスト!
※autocliを実行後、"assertion failure"などエラーが出てもタイミングによることも多いので、autocliを再実行してみるか、エラーが出た箇所をコメントアウトしたり元に戻したりしてみる
(2)cliディレクトリのcliを実行!
(3)数十秒間テストを行い、"bot test success!"と表示されたら成功!!

MOタイプのサンプルゲームの使い方

MOタイプのサンプルゲームの動作確認は、基本的にクライアントプログラム本体cliを起動するだけです(上記MMOタイプでSDLなど導入済みなら、以下の2ステップのみで遊べます)。

*動作確認の例:
(1)./cliとして引数無しで、ホストとして起動! TCP 29900番ポートで待ち受けます。
(2)./cli localhostとして1個引数としてホストのアドレスを与えることで、自身はゲストとして起動してアドレスに接続する。接続できなければ終了