オンラインゲーム

Wikipediaの記事: オンラインゲーム

用語: オンライン(通信ON) ・ オフライン(通信OFF)


通信ゲーム と ネットゲーム(オンラインゲーム)

通信技術の発展を軸にしたネットゲームの発展について

通信方式とネットゲーム:

・コンピュータによる通信を利用しないネットワークゲーム
  PBM ( Play by mail) : 書簡、郵便によるゲーム
    2名対戦型ゲーム:
       チェス・将棋などのボードゲームのプレイ

    マルチゲーム(多人数参加型ゲーム):
       シミュレーションウォーゲーム:
         各国の担当プレイヤー + ゲームマネージャー(管理人)
           マネージャへ、プレイヤーは行動を連絡。 
           マネージャーから結果を各プレイヤーへ通知

・インターネット普及以前
  掲示板(BBS パソコン通信)
     草の根BBS基地局(プロバイダーではなく)に各プレイヤーが接続
      ・基地局のパソコン ⇔ モデム ⇔ 電話回線 ⇔ モデム ⇔ 利用者のパソコン
      ・基地局のパソコン = ゲームサーバ
      ・テキストベースのシステム

・インターネットの普及
  通信方式の多様化:
   ・電子メール
   ・Webの登場
   掲示板(CGI) → ゲーム用CGIの開発
     サーバサイドスクリプト中心のブラウザゲーム
     (2011年現在、JavaScriptを積極的に利用したクライアントサイドスクリプト+CSSによるRIA(リッチユーザインタフェース)がメイン)

   MUD  Multi-User-Dungeon
     テキスト(文字)ベースのシステム

   Flashゲームの登場
     ブラウザに拡張機能(プラグイン)でベクトルグラフィックスによるアニメーションを導入
     後に、ActionScriptによるマウスやキーボードのイベント処理が可能となり、Flashゲームが普及

   MORPG MultiPlayer-Online-Role-Playing-Game
     数名の参加者による協力プレイ(パーティプレイ)
     パソコンでゲーム用クライアントソフトを使用

   MMORPG Massively-MultiPlayer-Online-Role-Playing-Game
     多人数同時参加型オンラインRPG

・リアルタイム通信
  ゲーム専用クライアントソフトによる、画面表現能力(3DCG)の向上
  (重量級のクライアント、ゲームデータ・MAPなどをユーザ側に持たせる)

・ブラウザゲーム
  ajax(CSS+Javascript)やHTML5によるゲーム画面の表現力の向上(RIA)

・携帯ゲーム
  携帯電話 と スマートフォン

・ソーシャルネットワークゲーム
  ゲームコミュニティをSNSを通じて形成 非同期型・単純短時間

ネットゲームのソーシャル化:
  通信技術の発達に伴い、対戦型からグループ参加型を経て、現在では多人数参加型のゲーム、さらにプレイヤーの社会的つながり(ソーシャルグラフ)を元にしたゲームと化している。

将来の展望:
  ・ビデオストリーミング、3DCGなど現在専用クライアントを必要とする機能が ブラウザの標準機能となる可能性(HTML5)
  ・フリーミアム(無料モデル) Wikipedia や シリアスゲーム Wikipedia、ゲーミフィケーション の普及


・通信形態による分類

  対戦型

  多人数参加型

・使用技術
 Web CGI
 P2P
 CS(クライアント・サーバ型)
 RIA(リッチインターネットアプリケーション) WikiPedia

・サーバの役割

 マッチング(対戦型)

 プレイヤデータ管理
  データ保存先の問題

・オンラインゲームの抱える問題点
 不正行為の分類
   ・共謀
    パーティーゲーム「WereWolf (人狼)」
    ルール: 外部リンク http://www.eblong.com/zarf/werewolf.html
         (概要)
            ・数名(10名以上が妥当)で、会話中心で進むゲーム
            ・参加者は、村人役と人狼(見かけ上、村人と区別はつかない)に分かれる

            ・役の決定は、カードなどを使い、秘密裏に決める。自分の正体は自分だけが知る
            ・人狼の数は、3名ほど(村人より少ない)
            ・夜の間(ターン)、狼男だけが集まり(村人は目を伏せるなど周りの様子を見てはいけない)、噛み殺す村人を1名決める
            ・村人の内、1名だけが予言能力を持つ。予言者が生きていれば、1名の正体を占う
            ・昼の間(ターン)、村人全員+人狼が集まり、投票で人狼として1名公開処刑する
            ※参加者の正体が互いに知れないように、司会者がコントロールする

    オンラインゲーム化した場合の問題点
       対面で行われるパーティゲームに比べて、秘密裏の情報交換が容易、かつ発見不能。

   ・チート行為(不正改造)
     改造クライアント
     正規クライアントでは実行不可能なゲーム上の行動を可能とする。
       無敵化・透明化・壁のすり抜け、アイテム・資金の増加

   ・ボット(Bot)
     AIプレイヤー
     プレイヤーによるAIプレイヤーの利用
      使用者と非使用者による、実プレイ時間の格差、ゲーム目的の変化

   ・リアルマネートレード(RMT)
      ゲーム内経済とリアル経済の影響
         ゲーム内経済の破壊(インフレーション・デフレーション)
         ゲームという場の持つ影響(”遊び”の約束)の破壊
                第2回テーマ、ゲームの持つ儀式的側面参照

      積極的利用例)
         セカンドライフ
          ゲーム内通貨を現金化、 現金でゲーム通貨の購入が可能。
          それらを前提とした、ゲーム内経済活動を目的としたシステム。

   ・マナー違反
      プレイヤーの行動・発言に関するマナー:
        チャットで暴力的・差別的発言など。
        PK(PlayerKiller)、ゲーム上の非攻撃対象への攻撃行為。
        例)
          RPGでのプレイヤー同士の戦闘行為。
        
      ゲーム運営者・参加者の対応:
        管理プレイヤーによるゲーム内巡視(パトロール)、人力での対応。違反者の摘発、締め出し。
        
        参加者による、各種行為の可否の選択:
           PKをOKにしたプレイヤーだけを集めたゲームフィールドの設定など
           チャット対象の限定機能など。


オンラインゲームプログラミング

ネットワークプログラミング(参照先: 応用プログラミング1のネットワークプログラミングの項から抜粋)

用語: IPアドレス ドメインネーム ポート ソケット TCP UDP パケット

例) 接続形式の選択

P2P型:
 利点: ソフト開発が容易。通信レスポンスがよい。
 欠点: 参加人数の増大による、通信コストの飛躍的増加。

CS型:
 利点: 多人数参加型ゲームに対応しやすい。。
 欠点: ソフト開発が複雑。レスポンスの低下。
      参加ユーザ増加によるサーバ負荷への対応
        → サーバのグラウド化によるスケーラビリティ(拡張性)の確保
        → ゲームシステム自体をネットゲーム向きに調整する(リアルタイム処理の回避など)


ゲームサーバ・クライアント実験:

次のプログラムをダウンロード:

実験用ゲームサーバ: GameServer.java
実験用ゲームクライアント: GameClient.java

実行方法:

スタート → プログラム → eclipse
で、Javaプログラム開発環境を起動。

新規作成 → プロジェクト → Javaプロジェクト → プロジェクト名を入力 「netgame」

上記のファイル2つを、作成したnetgameプロジェクトの中の、src フォルダにドラッグ&ドロップする。

クライアントの起動:
  1.接続先サーバのアドレスの確認と記入:
    ・教員用PCのアドレスを確認する
    ・(教員の)操作: スタート → 検索 cmd → ipconfig

    画面に表示された、 IPアドレスを、クライアントソフトに記入する。    

    // IP アドレスとポート
    try {
      ia = InetAddress.getByName("192.168.XXX.YYY");
    } catch(UnknownHostException e) {
太字で示された部分を、修正

  2.クライアントの起動
    ・サーバが起動済みであることを確認し、 実行ボタン(緑の三角)を押す。

コンソール画面の扱い方:
Eclipseでプログラムを実行すると、以下のようなコンソール画面が現れる。
ボタンの説明:
左から1番目 ・プログラムの実行停止
左から2番目 ・実行を停止したコンソール画面の消去
左から6番目 ・右側の三角のボタンから、複数の実行中のコンソール画面を切り替えて表示

実験内容:
  1. キャラクターの移動:
     オンラインゲームをプレイしたことが
       ある(中央より 左←へ移動) ・  ない(中央より 右→へ移動)

  2. ボタン操作の変わりに、コンソールからサーバにコマンドメッセージ(u, d, r, l, bye など)を送信し動作を確認する。

  3. クライアントの改造
     プログラムの実行停止ボタンを押す。
     クライアントのコマンド発行部分(ボタンを押したときの処理)で、
     ボタン1回あたり、数ステップのコマンドを実行可能なように修正し、 サーバに再接続する。


オンラインゲームプログラミングの問題点:

レスポンス(応答速度)
 ・タイムラグ
  クライアントの処理速度差の吸収:
    例)
      処理速度の遅いクライアント vs 処理速度の速いクライアント
              ↓
          弾丸の速度も遅い
              ↓
          簡単に回避可能(映画のマトリックスの1シーンの様に)

    ○移動のアルゴリズムの工夫: 推測航法
          処理時間の差によりデータが到着していなくても、過去の移動状況を元に
          現在位置を推定して描画
      


    ○オブジェクトに時間情報を付加
      弾丸と標的のそれぞれが存在するゲーム内時間を記録。
      命中判定時に、時間差がある場合、ズレを考慮して判定。

チート行為
 ・データ改竄対策
    ○クライアント側 保存データの改竄 → データ保存先をサーバに移す。
    ○ローカル保存データのチェックサム、バージョンの確認

 ・改造クライアント対策
    ○クライアントソフトのチェックサム(検査情報)の送信

 ・パケット改竄・盗聴対策
    ○クライアント を プロキシー(Proxy:代理)クライアントに接続、プロキシーをサーバに接続
     プロキシーで、ゲーム上の不利な情報の削除や有利な情報の追加など、
     通信データを編集し送受信を行う。
     例)
       ゲーム上知りえないはずの情報を直接取得し、対応可能。
      
      ジャンケン: 後だしが可能 → 対策: 同期処理
      FPS(3D対戦シューティング): 壁の向こう側の敵など、見えないはずの敵の位置を把握

同期処理の例)
 ・ロックステッププロトコル
 お互いに交換する情報を、暗号化し封印
 相手の情報の到着後、開錠用のパスワードを通知


第14回 レポート課題

以下のどちらかを選択してメールで回答(両方とも回答してもOK):

(問1)

現在のネットワーク速度やコンピュータの処理能力が大幅に改善された場合、例えば、
 ・(あらかじめ録画された動画ではなくても)プレイ中のゲーム画面、
  または、プレイヤーの状況をライブで中継可能
 ・コンピュータのディスプレイサイズの動画をリアルタイムでストレスなく送信できる
 ・無線LAN接続のスピードが、現在の高速有線回線と同等になる
 ・携帯ゲーム機で高精細な3DCGや動画を用いた表現が可能
などを仮定して、 その様な環境で実現されるネットワークゲームの「企画」を示す。
 記載事項:
  想定する参加者・参加方式
  ゲームの概要 何をしてプレイするのか
  現状のネットワークゲームからの改善など。

(問2)

オンラインゲームにおけるリアルマネートレードについて、ゲームの面白さに、+の影響があるとする立場と、−の影響があるとする立場のどちらか一方の立場をとり(各自で選択)、 なぜ+(または−)の影響があるか説明してください。