|
||||||||||
前 次 | フレームあり フレームなし |
参照先:
説明
パッケージ | |
---|---|
jp.ac.fun.osawalab.tileworld.connector | |
jp.ac.fun.osawalab.tileworld.game | |
jp.ac.fun.osawalab.tileworld.rule | |
jp.ac.fun.osawalab.tileworld.server |
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) 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を参照してください.
|
||||||||||
前 次 | フレームあり フレームなし |