Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
forked from kengonakajima/book

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

Notifications You must be signed in to change notification settings

caesar1shi/book

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

14 Commits

Repository files navigation

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

書籍情報ページ

レポジトリの内容

このレポジトリに含まれるファイルは、書籍『オンラインゲームを支える技術』
(中嶋謙互著、技術評論社、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個引数としてホストのアドレスを与えることで、自身はゲストとして起動してアドレスに接続する。接続できなければ終了

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 46.1%
  • C++ 32.0%
  • HTML 8.1%
  • Shell 5.8%
  • Objective-C 4.3%
  • Roff 1.8%
  • Other 1.9%

AltStyle によって変換されたページ (->オリジナル) /