|
||||||||||
| 前 次 | フレームあり フレームなし | |||||||||
参照先:
説明
| パッケージ | |
|---|---|
| jp.ac.fun.osawalab.tileworld.client | |
| jp.ac.fun.osawalab.tileworld.client.viewer | |
Tile World
サーバーに要求をTCPソケットでおくり,その応答を受けることで, エージェントを動かします. Javaで書いた雛形プログラム(tileworldclient)を利用しない 場合(C言語などでクライアントを書く場合)は, 「通信で利用できるコマンドについて」を読んで実装してみてください.
それ以外に,サーバーからのメッセージとして,
基本的には, タイル(T)を穴(数字)の上に重ねることで, 点数がはいるゲームです. デフォルトのルールでは,タイルをタイルの上に重ねたり, エージェントが穴の上を通過したり, タイルの上にエージェントがのることはできないようになっています.
タイルを利用しない, SimpleTileWorldRuleというルールも用意してあります. プロパティファイル(デフォルトではdefault.ini)で設定 してください.このルールでは, エージェントが穴の上を通過することによって,得点が入ります.
プロパティファイル(デフォルトではdefault.ini)では, それ以外にも, 障害物や穴ユニットが消滅,出現する割合を設定したりできます. この値は, jp.ac.fun.osawalab.tileworld.rule.Rule#changeObstaclesと jp.ac.fun.osawalab.tileworld.rule.Rule#changeHoles に関係しています.この2つのメソッドは, 定期的に世界に変化を加えるメソッドです.実験したい内容によっては, メソッドを丸ごと書き変えたほうがいいかも知れません.
サーバーの起動方法などは,このページの一番下にあります.
通信で利用できるコマンドについて.
| ログイン済みプレイヤークライアントが実行可能なコマンド |
ADD
$agent_id - エージェントの追加が成功したとき,
サーバーが決定したIDが返される."cannot add agent." - 追加できないとき.
MOVE $agent_id $direction
$agent_id
- そのコマンドによって動かしたいエージェントのID$direction
- 'u',d','l','r','s'のアルファベット1文字WORLD$agent_id
$H)
列数($W)を表す.
各変数は空白で区切られている.
2行目以降は,各行は W 字の文字列で構成されていて,
H 行続く.
設定ファイルで指定されたVIEW_SIZEは,
エージェントから見える距離を指定する.
今回の実装では,エージェントの上下左右,
それぞれの方向にVIEW_SIZE分の,正方形の視界を設定した.
5 5
#####
#####
.TaT.
..###
...##
LOGOUT
| ゲーム管理用のコマンド |
TICK
START
STOP
RESET
CLOCK
15 50
LOGOUT
| その他のクライアントが実行可能なコマンド |
LOGIN $client_id $message_port
Viewerという文字列が含まれていれば, ログインしたクライアントは,ビューアーの権限を持ちます.
$client_id - クライアントIDLogin succeeded.
PLAYERLIST または PLAYERLIST
$N $player_id_1 $player_id_2 ... $player_id_N$N はプレイヤー数,その後にプレイヤーIDが N
個続く
AGENTLIST [$player_id]
$player_id - プレイヤID$N $agent_id_1 $agent_id_2 ... $agent_id_N$N はエージェント数,その後にエージェントIDが
N 個続く
SCORE $agent_id
$agent_id - エージェントのID$score - スコア(10進整数)SCORELIST [$player_id]
$player_id - プレイヤーID$N $agent_id_1 $score_1 $agent_id_2 $score_2
... $agent_id_N $score_N$N はエージェント数,
その後に,N 組のエージェントID,スコアが続く
WORLD
$H)
列数($W)を表す.
各変数は空白で区切られている.
2行目以降は,各行は W 字の文字列で構成されていて,
H 行続く.
20 20
####################
#..T.T....T...T....#
#...#.........22..T#
#...#.........2....#
#...##5......T.....#
#..###5T...........#
#....#5..T...a....T#
#...T..............#
#....T..T......TT..#
#.......#T#T.T.....#
#...T...####.......#
#..#.....##....T...#
#..#.T.T.T...T.....#
#..#...........#...#
#............T.#.#.#
#..T.........#####.#
#..#####...........#
#..#..........TT...#
#.........T....T..T#
####################
EXIT
README.txt
(README) author 高山 貴裕 g2104028@fun.ac.jp 1. 以下のファイルをサーバーを起動するディレクトリに置きます. default.dat: 世界の初期状態を記述するファイルです. ファイルの先頭に,その幅と高さを記述すること. エージェントの場所も指定できます(指定のない場合はランダムに置かれます). default.ini: サーバーの設定ファイル. RULE = jp.ac.fun.osawalab.tileworld.rule.TileWorldRule SERVER_PORT = 5000 WORLD_FILE_NAME = default.dat MAX_CLOCK = 50 TICK_SPAN = 1 OBSTACLE_DISAPPEAR_RATE=0.2 OBSTACLE_APPEAR_RATE=0.2 HOLE_DISAPPEAR_RATE=0.2 HOLE_APPEAR_RATE=9.2 VIEW_SIZE = 3 のような設定を含みます. 詳しくは,tileworldserver/default.iniを参照してください. 2. サーバの起動方法 上記のファイルが置いてあるディレクトリで, java jp.ac.fun.osawalab.tileworld.Server.Server (設定ファイルのdefault.iniは,読み込むファイルのパスを起動時に付け加える ことで,変更できます. 例:java jp.ac.fun.osawalab.tileworld.server.Server hoge.ini 3. クライアントの起動方法 java jp.ac.fun.osawalab.tileWorld.client.MyClient $HOST $PORT $HOST: サーバーのIP $PORT: サーバーのポート ビューアーも同様に, jaba jp.ac.fun.osawalab.tileWorld.client.viewer.TileWorldViewer $HOST $PORT 4. クライアントの作成方法 jp.ac.fun.osawalab.TileWorld.Client.Client(ソケット周辺のメソッドが実 装済み)を拡張して,クラスを作成すします. 例) public class MyClient extends Client メソッドの詳細はドキュメントの jp.ac.fun.osawalab.tileworld.client.Clientを参照してください.
|
||||||||||
| 前 次 | フレームあり フレームなし | |||||||||