entoが書いたよ

ento
by ento

VCE評価版を使ってみる - genping サンプル

by  ento ento   2007-11-16 18:38

VCE評価版が ダウンロード できるようになったので、 サンプルコードをビルドして通信アプリを動かすまでの手順を書いてみました。 動かなかった、などあればコメントへ。

必要なもの

  • Windows環境
  • C++開発環境
  • VCE評価版パッケージ

今回使った環境

  • Parallels Desktop 3.0 for Mac 上の Windows Server 2003
  • Visual C++ 2005 Express Edition [1]
  • VCE2.1.0評価版パッケージ

Windows環境とC++開発環境があることは前提として進めます。

評価版をダウンロードして展開する

ユーザー登録すれば、誰でもダウンロードできます。 http://plus.ce-lab.net/downloads

評価版がどんな構成になっているかを見てみる

展開するとvce2フォルダが出てくるので、開いてみましょう:

LICENSE_AGREEMENT-ja.txt   使用許諾契約
README-en.txt              評価版について (英語)
README-ja.txt              評価版について (日本語)
document/                  APIリファレンス、チュートリアル、ユーザーマニュアル
include/                   インクルードヘッダ
library/                   VCEライブラリ (Windows版のみ)
samples/                   サンプルコード
utilities/                 Gen (プロトコル生成ツール。Windows版のみ)

サンプルを動かしてみる

一番簡単なサンプル、genpingを動かしてみます。

genpingはプロトコル生成ツール、 Gen を使って 通信アプリを作成する例となっています。 仕様はこちら。(ドキュメント より引用)

ping は相手に小さなデータを送って、返信が返ってくるまでの時間を 測定するのによく用いられます。 手順としては、まず小さなデータとして 自プログラムで取得可能な時間を送信し、相手にそのままのデータを 返信してもらいます。 返ってきたデータには送信したときの時間が はいっているため、その時間と現在の時間の差分を計算します。

samples¥genpingにいくと、C++ファイルやプロトコル定義用のXMLファイルなどが 並んでいるのがわかります。今回は一つ一つのファイルの中身については ドキュメント に譲ることにしました。

※ ここでは評価版パッケージを C:¥vce2 に展開したものとして進めます。

ビルドする

  1. samples¥genping¥gen.bat を実行し、プロトコルファイルを生成する
  2. samples¥genping¥genping.vcproj を開く
  3. Release モードでビルド [2]
  4. samples¥genping¥Release¥genping.exe ができる

genping.exeができたら、動かしてログを見ながら動作確認をしましょう。

動かす

まずgenping.exeをサーバとして起動します。

  1. コマンドプロンプトを開く

    > Windowsキー+R → "cmd" と入力 → 決定 [3]

  2. genping.exe のある所に移動します

    > cd C:¥vce2¥samples¥genping¥Release

  3. サーバとして genping.exe を起動

    > genping.exe

起動するとすぐにVCEのログが流れはじめます:

2007/11/16 14:45:59.0092 vce::VCECreate - version (2.1.0-ev.20071107_2) # バージョン番号
2007/11/16 14:46:00.0093 ivce::iVCE::Poll 940/Poll 1/Listener 0/Session
2007/11/16 14:46:01.0095 ivce::iVCE::Poll 985/Poll 1/Listener 0/Session

もう 1 つコマンドプロンプトを立ち上げて手順 2 までを繰り返し、 genping.exe を今度はクライアントとして起動します。

  1. 接続先を指定することで、クライアントとして genping.exe が起動する

    > genping.exe localhost


クライアントは、立ち上がるとただちに指定されたアドレスに接続をこころみ、 成功したら ping を打ちはじめます:

2007/11/16 14:48:38.0091 (id:1)<-ping_proto::send_ping( time=5298338 ) [6]byte # 送信
2007/11/16 14:48:38.0101 (id:1)->ping_proto::recv_ping( time=5298338 ) [6]byte # 受信
recv ping. 24millsec # 24ミリ秒

その間、サーバ側でも接続ログが出力されているのが確認できます:

2007/11/16 14:48:37.0610 ivce::iVCE::Poll 992/Poll 1/Listener 0/Session
2007/11/16 14:48:37.0830 ivce::iTcpListener::Polling Incoming session ID=2 sock=1868
incoming. 0 # これまでの総接続数
ping query. 0 # これまでの総ping数。初回接続なので両方ともゼロ。
2007/11/16 14:48:38.0601 ivce::iVCE::Poll 455/Poll 1/Listener 1/Session # セッションが増えている
2007/11/16 14:48:39.0603 ivce::iVCE::Poll 428/Poll 1/Listener 1/Session
2007/11/16 14:48:40.0604 ivce::iVCE::Poll 428/Poll 1/Listener 1/Session
closed # クライアントが接続終了した

genpingクライアントは100回pingが返ってくると終了します。

"単純なサーバ/クライアントを作成する"は、おなじpingを材料に 一からコードを書いていくチュートリアルになっています。 自分で書いたものが動いて通信しているところを見るのは楽しいものです。 どうぞやってみてください。

[1]http://www.microsoft.com/japan/msdn/vstudio/express/visualc/
[2]Debug モードではライブラリが正しく指定されていないので、直してからビルドしてください。 正しくは ../../library/windows/vce2d.lib です。
[3]Parallels Desktop for Mac ではWindowsキーはコマンドキーに対応しています。

ブラウザをゲーム機に: InstantAction

by  ento ento   2007-11-30 21:10

これはどこかで見たようなFlashカジュアルゲームのポータルサイト、ではない。

2008年初めに公開予定の「Xbox、Playstation並にさくさく動くグラフィックのゲームをブラウザ上で、友達と遊ぶことができる、PC上の新しいゲームプラットフォーム」。

開発しているのは GarageGames 、 コンシューマ向けに Marble Blast Ultra (3Dパズルアクションゲーム、Xbox) 、ゲーム開発者向けには Torque ゲームエンジンを開発してきた経験を持つ会社だ。

以下は Game Informerインタビュー記事 (11月26日)の要約である。


InstantActionが解決したい問題
ゲーマーの抱えている問題。ハードコアな良いゲームを日常の忙しさの合間をぬって少しでもプレイしたい。 開発者の抱えている問題。何年も開発に時間のかかる超大作ゲームではなく、かっちり小さいタイトルを作って、プレイしてもらいたい。
InstantActionではどうやって解決するのか
ブラウザで動く小さなプラグインを開発する。レンダリング、ユーザー入力、通信、ユーザー情報を処理するAPIを持ち、それに沿って開発しさえすれば、ハイエンドなグラフィックのゲームがInstantActionのプラットフォーム上で動くことが保証される。既存のゲームエンジンも使える。
InstantAction.comのソーシャル機能
友達リスト、プロフィール、ランキング、履歴、チャット、招待をサポート。パーティーを組んでフィールドを移動するように、ゲームからゲームへ友達と移動してプレイできる。ボイスチャットはまだだけど重要だと思っている。
ユーザー体験
数秒ではじめられるようにする。ダウンロード待ちもなし(ストリーミング配信する)。オフラインでも遊べるようにしたい。
ローンチタイトル
決まっているのはMarble Blast(マルチプレイヤー、物理計算、シェーダー3Dグラフィックス)、 Think Tanks (3D戦車対戦ゲーム)、真正FPS(開発中)。他にもインディー系の開発会社を何社か巻き込んでいる。
開発者の利益
課金モデルはタイトル毎に決められる。MMOゲームのように、ユーザーと直接やり取りしてゲーム内容をアップデートしていくことができる。パッケージ販売や単なるダウンロードサービスではできない経験だ。
市場について
既存のゲーム機とは競争ではなく共存する。ゆっくりやりこみたい時はゲーム機へ。
GarageGamesの立ち位置
InstantActionのプロデューサーとして、プレイできるゲームのラインアップをコントロールする。InstantActionはまったく新しいユーザー体験になる。遊んで、体験してもらって、広めていきたい。

InstantActionがやろうとしているように、プラグインによってブラウザをゲーム配信プラットフォームに変身させるのは、既に Unity が先鞭をつけている。ただ、Unity では運営側で配信サーバを用意する必要がある。InstantActionは、「GarageGamesがパブリッシャーとして運営していくコミュニティサイト」でもあることが、違いということになる。

実際どんなゲームプレイ体験になるのか、日本版の予定など、楽しみにしておきたい。

参考リンク:

Hello gumonji/Q world

by  ento ento   2008-12-25 16:56

先週火曜日から gumonji で、 gumonji/Q のスクリプトで書かれたゲームの募集を開始しました。期限は来年1月6日までとなっています。

gumonji とはコミュニティーエンジンで運営中のオンライン環境シミュレーションゲームです。公式サイトはこちら

gumonji/Q とは、gumonji 上で、スクリプトを書いてロボットを自由にあやつることができるようになる追加パッケージで、通常のキャラクターでできることとほぼ同じ動作をさせることができます。京都大学の協力を得て開発し、今年8月初旬にリリースしました。本体およびドキュメント類はgumonji公式サイトのページから取得することができます。

今日は、gumonji/Qにおけるスクリプト記述の紹介として、gumonji/Qで Hello World をやってみようと思います。目標は、下の写真のようにロボットに Hello World! と発言させることです。

どうです、おもしろそうでしょう? ではご一緒に。

☆準備するもの

  1. gumonjiのクライアントとサーバー一式 (ここからダウンロードしてインストール)
  2. gumonjiのアカウント (gumonjiのクライアントを起動すると登録できます)
  3. 自分のシミュレーション環境 (ゾーンと言います。自分のサーバー上で作成し、シミュレーションを走らせます)
  4. gumonji/Qのパッケージ (ここからダウンロード)

☆書きます

gumonji/Qのパッケージをダウンロードして展開すると、robot-scenario というフォルダがあります。

そこに以下のような内容で hello.q というファイルを作って保存します。ファイル名の hello がロボットの名前になります。

(defscenario hello-world ()
  (hello
    ((?wait :time 5)
      (!speak :message "Hello world!")
      (go hello))))

※これは本来必要な「ロボットの名前や位置の定義」や「ロボットにシナリオを割り当てる」などの記述を省略した簡単なシナリオ定義の方法です。省略しない書き方は、この記事の最後を見てみてください。

☆動かします

では、動かしましょう。

  1. gumonjiの自分のゾーンを走らせる(「gumonjiゾーンサーバー」ウィンドウが表示される)
  2. gumonji/Qフォルダ直下のrunManager_auto.batを起動する(コマンドプロンプトとQの対話ウィンドウが表示される)

うまくいったら、ゾーンサーバーの画面に赤い点が幾つかあらわれるはず。gumonji/Q には初めから幾つかロボットがついてくるので、点のうちの 1 つが今回作った hello ロボットになります。このままではどれが目的のロボットか分からないので、Qの対話ウィンドウでロボットの位置を取得しましょう。

以下のように、(get-position "hello")とQの対話ウィンドウに入力すると、(robot hello 94 103)のようにロボットの位置が返ってきます。



この位置に行くには、まずgumonjiゾーンサーバーのウィンドウ右下の「3Dブラウザを起動してログイン」ボタンで自分のゾーンにログインします。



それから3DブラウザのURL欄に先程取得したロボットの位置をgumonji://792/94-103のように入力し、エンターキーを押してワープします。(gumonji://792/の部分は自分のゾーンIDで、既に表示されているはずです。94-103が座標部分になるので、ここを追記してください。)



ロボットが Hello world! と繰り返していますね!



ね、簡単でしょう? ...と言っておいてなんですが、gumonji/Qのシナリオは Q というなかなか癖のある Scheme ベースの言語で書くことになっています。括弧の連続が目新しいかもしれませんが、自由に視覚的なエージェントシステムで遊べるgumonji/Q、ぜひ一度試してみてください。再掲になりますが、さらに詳しい使い方のドキュメントはこちらからどうぞ

ゲームの応募もお待ちしています

☆おまけ

もう少しインタラクティブ性のあるスクリプトも用意しました。話しかけられた内容に応じてロボットが行動する、というものです: react.q
インタラクティブな要素はゲームを作る場合に必須になります。こちらはロボット定義なども省略せずに記述したものになっていて、以下の手順で実行することができます。

  1. react.qをダウンロードして、gumonji/Qフォルダ内の scenario フォルダに置く
  2. ゾーンサーバーを起動する
  3. gumonji/Qフォルダ直下のrunManager.batを起動する (コマンドプロンプトとQの対話ウィンドウが表示される)
  4. Qの対話ウィンドウで以下を入力する
    > (load "../scenario/react.q")
    
    > (start)
    
    > 
  5. Robo という名前のロボットが作られるので、3Dブラウザでゾーンサーバーにログインし、チャットで「こい」「よし」「まて」などと言ってみる
  6. それに反応してロボットが行動するはずです


それではよいおとしを