Naoki Kurosawa
n-kur****@nri*****
2003年 12月 17日 (水) 18:06:59 JST
黒澤です。 > > ※課題 > > ・定期戦の「部」の問題 > > レーティングシステムっぽいものを採用して > 昇格や降格するようにするのが、スムーズではないかと思います。 > レーティングの値を表示しちゃうと、どこぞのサイトの > パクりっぽく見えて嫌だというなら、システム内部だけで > 使うというのはどうでしょう。 > レーティングシステム案は、近いうちに書きます。 > 採用か不採用かの判断は、それからでもいいかと思います。 ま、定期戦はまだですしね。 > もう少し付け加えるとすると、 > タイプとして > ・リーグ戦 > ・総当たり戦 > ・トーナメント戦 > ・タイムトライアル戦(詳細はまだない) > などなど これはどんどんいろんなバリエーションがでてくると思います。 ・リーグ戦にしても予選・決勝に分かれるタイプ ・ 分かれないタイプ という具合で。 なので、大会属性としては持たず、 大会を実行するワークフロープロセスの違いで区別しようと思います。 プロセスがどのように動いていくか(どうスクリプトを書いたか)で 区別できると。 なので、 「大会フロープロセス定義名」と「大会フロープロセスID」 というプロパティが必要になります。 > 途中参加やバージョンアップ > ・あり、なし これはそうですね。追加しましょう。 「(無題)」メールでも書きましたが、参加受付中フラグを ワークフロープロセスが上げ下げします。 > 参加資格 > ・コードサイズXX以上、以内 > ・レーティングXX以上、以内 > ・そのた これも、大会のタイプと同様いろいろなバリエーションがあり、 参加資格チェックプロセスの種類で区別しようと思います。 あと、「大会名」というプロパティを忘れてました。 > 一つの大会で、リーグ戦のあとで決勝トーナメントとかも > 考えられますが、それらはデータ上別大会として管理するのが > いいと思います。 データ上、まずは 大会 リーグ という2段階構成にしようとしています。 「リーグ」はリーグ戦だったりトーナメントだったりします。 #リーグという名前はよくないかな で、予選のリーグ戦の後に決勝トーナメントにしたいときは 1.予選リーグ戦「リーグ」 2.決勝トーナメント「リーグ」 という形にして、1と2がデータ連携します。 なので、大会としてはひとつにしようと思っています。 これまであった、シーズンという概念が消えてますが、 これは消えたのではなく、シーズンという概念が必要でないときもある (トーナメントのときなど)からで、 従来どおりのリーグ戦をやるときには出てきます。 > > ※課題 > > > 賞品付の冠大会は、指定の分散サーバのみが実行できるようにする > > > 必要がありますよね。対戦結果を改ざんされて送られると > > > まずいですもんね。 > > やっぱこれ、考えなきゃダメですか? > > どうにかして、そもそも不正データを送ることができないように > > できませんかねぇ。 > > 難しいですね。 > コンパイル時にID見たいな物を埋め込んで、 > リコンパイルされると値が変化して、怪しいと判定できるとか > できませんかね? JARに署名して、VMがその署名を確認し、不正ならばロードできない とかいう仕組みならできそうな気がするんですよ。 VMが使う暗号化ライブラリなんかはこれをやっていそうな感じですし、 アプレットに署名をつけてやるとSandboxセキュリティモデルから 逸脱する処理が可能になったりとか。 なんですが、中央サーバ側で、アップロードされたデータが不正でないかを チェックする仕組みが思いつかないんです。 分散サーバプログラムでもなんでもないプログラムからデータが送られてきたり してもそれを検出できないんですね。 不正でないプログラムだけが生成できる「証明書」とか、 そういう仕組みが実現できるといいんですけど…。 データマイニング的に、 ・ある特定のサーバから送られた対戦結果では、 - ある特定のロボットが勝つ確率が高いとか - ある特定のロボットが負ける確率が高いとか - ある特定の組み合わせの勝敗が偏っているとか といった検査はできそうですけど。 -- Naoki Kurosawa <naoki_kuros****@ybb*****>, <n-kur****@nri*****> Sharpen up JAVA skills. - Robocode Rumble-JP Project - http://rumble-jp.sourceforge.jp/ http://robocode.ddo.jp/rumblejp/