﻿**********************************
**        通信ライブラリ        **
**      created by suntori      **
**            Read Me           **
**********************************

1.はじめに
	ロボカップ秋キャンプにて発表させていただいたライブラリを，
	議論の結果を反映した形に修正しました．

	皆さんにこのライブラリを使用していただいてみて意見をいただき，
	さらに良いライブラリにしていきたいと考えています．

	どうぞご協力をお願いいたします．

	また，このライブラリの背景は秋キャンプの資料に乗っていますので，ここでは割愛させていただきます．


2.使用法
2.1.大きな流れ
	Agent：Centerから送られてきたタスクメッセージを用いて実際の行動を行う．
		   自身の周囲の情報をメッセージとして送信する．
		   Centerから再分配された情報を知識として蓄積する．
	Center:各Agentから送られてきたメッセージから災害空間の状況を捉え，各Agentにタスクを割り当てる．
		   Agentから取得した情報を整理し，再分配を行う．
2.2.使用法
	以下の手順で行います．
		1.本ライブラリのビルドパスを通す．
		2.各エージェントを作成する際，AbstractCSAgentを継承する．

	大まかにはこれだけです．
	ここで，AbstractCSAgentを作成したクラスでは以下の2つのメソッドを実装する必要があります．
		・protected EnumSet<StandardEntityURN> getRequestedEntityURNsEnum();
		・protected void thinking(int time,ChangeSet changed,Collection<Command> heard);

2.3.thinking
	thinkingメソッドは後者は各ユーザが実際に定義する部分で，エージェントの行動を決定するメソッドです．
	ここではいくつかの設定をする必要があります．
	
	1.setMessageChannel(int channel)によってメッセージ送受信に使用するチャンネルを決定する．
	2.送信するメッセージをaddMessage(RCRSCSMessage message)によって送信するメッセージを追加していく．
	3.sendMessage()によってメッセージを送信する．
	
	ここで，メッセージの受信についてですが，setMessageChannel()メソッドによって設定されていた
	チャンネルに送られてきたものについては各ステップの最初にrecievedMessageListにコンバートして格納されます．
	
	※どのメッセージが自分あてに送られてきたメッセージであるかを判断するのは各Agent，Centerに依存します．

3.メッセージ
	現在用意されているメッセージの種類は，秋キャンプの資料と同じものを定義しております．
	より細かい情報は同梱されているjavadocをご参照ください．
	(「こんなjavadocじゃ分かんねぇよ」という場合はsim-jpのメーリングリストにてお申し付けください．)

4.意見について
	本ライブラリを使用して思ったこと，こうした方がいいのでは等の意見がありましたら，
	sim-jpのメーリングリストにて議論を行っていきたいと考えております．
	議論を通じて本ライブラリをより良いものにし，ひいてはロボカップを盛り上げることに通じればと思っています．
	何卒ご協力お願いします．
