パスワードを忘れた? アカウント作成
3738 story

Javaを対戦ゲームで学ぶRobocode日本カップ開催 36

ストーリー by yourCat
CoreWars現代版 部門より

tomoyu-n 曰く、 "日本IBMは、Javaで書いたプログラムを対戦させるプログラミングコンテスト「Javaプログラミング・ロボット日本選手権 (Robocode Japan cup)」を開催する (プレスリリース)。
Robocodeは、IBMのAdvanced Technologyに属するMathew Nelson氏によって発案された。Robocodeのプログラム自体がJavaで書かれ、クロスプラットホーム対応となっている。開発部分は、GUIのエディタを含んだIDEに一応なっている。
実際にサンプルを動かしてみたが、かなり動作が速く、グラフィックスも美しい。対戦するロボットは砲塔とレーダーを持つロボット戦車で、オプションのレーダーサーチの描画をオンにすると、結構クール。
JavaApplet、ケータイJavaと、Javaに挑戦しては挫折してきたが、「Robocodeで、今度こそ!」と密かに胸に誓うのは、僕だけだろうか?"

jintaro曰く、"登録は9月16日からで、予選リーグは11月25日から、本戦は12月2日にはじまる。サーボモーターが買えない・工作が苦手だからと、ROBO-ONEは見送っていた人でも、こっちはコードさえ書けば参加できるのでいかが?"

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Terrarium (スコア:4, 参考になる)

    by nasb (3002) on 2002年08月27日 15時58分 (#153812) 日記
    同じような企画に、つい先日MicrosoftのTerrariumがありましたが、
    あれは失敗だったと思います。

    多数の分散クライアント上に生態系を構築し、自分でプログラミングした生物
    をその生態系で繁殖させるゲームなのですが、以下のような欠点がありました。


    1. 根本的に多人数が楽しめるゲームシステムになっていなかった。

      プログラムは他者を攻撃する能力があるので、いったんあるプログラムが支配
      権を取ると、独占状態になって他者の新規参入が究めて困難になります。実際、
      新生物を投入すると最初は10匹しかいないのですが、その周りに10倍もの敵がいたらよ
      ほどうまくつくらないとたちまち滅ぼされます。事実上、有意な数を繁殖でき
      たプレイヤーは10人ほどしかいなかったと思います。

    2. 気軽に遊ぶには最初の一歩が重すぎた。

      ライブラリの不備など、「まっとうなプログラム」を組めるようになるまでに
      自分で書かなければならないコード量が膨大すぎて、プログラミング初心者が
      手をつけられるものではありませんでした。

      企画団体のコミュニティに対する支援もほぼ皆無(掲示板を用意するだけ)でし
      た。それにくらべて、Robocodeは豊富な支援がありますね。記事の邦訳もちゃ
      んとされていますし。

    3. 弱いプログラムはまったく評価されない。

      1.とも関連しますが、弱いプログラムはたちまち滅ぼされるので、
      上位のわずかなプレイヤー以外はまったく評価されず、
      達成感を味わえません。

      他の大会だと、順位が500位ぐらいの人でも
      「300位にあがって嬉しい」という形の達成感が得られるのでしょうが、
      Terrariumではほぼ20位以下は全滅するので順位がつきません。
      報われません。

    4. プレイヤーが少なすぎた。

      とにかくプレイヤーが少なすぎました。上に挙げたすべての要因が関係するの
      ですが、(ゲームとしては面白かったと思いますが)多人数が楽しめるゲームシ
      ステムになっていないため、大会期間中にプレイヤーがどんどん減っていきま
      した。

    Robocodeは賞品もいいですね。TerrariumはX-Boxでした。いまいち。
    • by G7 (3009) on 2002年08月27日 16時35分 (#153834)
      >1. 根本的に多人数が楽しめるゲームシステムになっていなかった。
      >2. 気軽に遊ぶには最初の一歩が重すぎた。
      >3. 弱いプログラムはまったく評価されない。
      >4. プレイヤーが少なすぎた。
      > 大会期間中にプレイヤーがどんどん減っていきました。

      これを読んで、ちと話はズレますが、こないだの(サッカーの)ワールドカップを思い出しました。
      世界最高の祭典といえばその通りだし、それゆえに必然的に生じることなんだけど、
      最終日にゃ「2チームしか」残ってないわけで、ちと寂寥感がありました。 #ん、甲子園も同じかな。

      あと、LifeGameなんかでも言われる話だったと思いますが、
      ルールを余程うまく作らないと、多種多様なモノが共存するという感じには
      なかなかならず、ワンパターンな結果にしか到達しないんでしたよね。

      まぁサッカーはあれはあれでいいんですが、見るのとヤルのとを両立(ってのか)させたいGameならば、
      なるべくそう単純な結果にはならないような巧妙なルールとかを作って…ということが望まれるんじゃないかな。
      親コメント
    • by utaro (11154) on 2002年08月27日 19時27分 (#153948) ホームページ 日記
      あと、ファイヤーウォール導入してると、他の人が作った生物が移動してこない
      ってのもあったような。
      親コメント
    • Terrarium のアイデアは良かったと思います。はっきりいって、Robocode はアイデアらしいアイデアがありませんからね。ポトリスが流行っているって聞いて「ふーん」って思ったのと似てる。

      ファミ通やコミックビームで連載してたマンガ家の鈴木みそが、Terrarium そっくりのプログラミング型ネットワークゲームをマンガに描いてたのにはびっくりしました。アリを戦わせるゲームで、プレイヤーのマシンには一人一つアリの巣があって、ネットワークを介して他人の巣に勝手に攻め込んでいく、っていう感じでした。中央集権型らしく、マシンを消しているときも戦いが継続している、っていう違いはありますけど。
      親コメント
    • by Anonymous Coward
      >いったんあるプログラムが支配権を取ると、独占状態になって他者の新規参入が究めて困難になります。
      >実際、新生物を投入すると最初は10匹しかいないのですが、その周りに10倍もの敵がいたらよほど
      >うまくつくらないとたちまち滅
    • by Anonymous Coward
      さらに多少のインチキができたのも問題でしたな
      ピアを閉じてわざと出れなくしたりとか
      自分の自由になるマシンが数台あるひとは囲って飼うことができたりとか

      その辺のことは 【Terrarium】4世代目 最終局面 決戦は金曜日♪ [2ch.net]
      を参照してくださいな
  • by dartei_harry (6792) on 2002年08月27日 15時14分 (#153784) 日記
    >ゲーム感覚で楽しみながら最先端のJava技術を身に付けていくことが
    >可能です。
    とありますが、作ると遊ぶでは、全然違うと思うのですが、
    どちらを指してゲーム感覚といってるのか気になるところです。
    つくる方だったら、未来のJava技術者を確実に減らすことでしょう。
    • 気になるのでしたらdeveloperWorksの記事 [ibm.com]など読んでから投稿されたらいかがでしょうか。
      少しだけ触ってみた感覚としては遊ぶ方にずっと近いですよ。
      ミニ四駆を改造するとかPSのカルネージハートとかが例えとして適当ではないかと。

      私が少ししか触らなかった理由は添付されるエディタがJavaで書かれていて遅かったのと自分のコード中でスレッドを多数立ち上げようと思ったのに失敗したからでしたが、裏をかこうとしないで真剣に取り組んだらもっと長続きしたかも(笑)

      惜しむらくはもう夏休みが終わってしまうことで、高校生の夏休みの課題にして欲しかったかなと思いますが。

      --
      kaho
      親コメント
      • 添付のエディタ使わなくても、
        直接好きなエディタでソース書いちゃえるし、
        コンパイルもコマンドラインから普通に行えるので、
        個人的には、環境にはあまり困らなそうな感じです。
        親コメント
      • こんなに関連サイトが訳されてるんですね、驚きました。
        なるほど、たしかにこれなら「遊び」の感覚みたいですね。

        どこまで「作らされる」のかという意味で
        某フレームワークの生命体モノのイメージかと思ったのですが、
        あれと比べるのがマチガイみたいですね。
        アレは何かやるとすぐ例外を出して、例外処理を入れることを
        覚えさせよう(洗脳しよう?)という、いい意味でも、悪い意味でも
        「崇高な使命」を持っていたようですが
        (それ以外の印象が無かったりしますが)
        これは純粋に「遊びのなかでイベントドリブンのコーディングに慣れる」
        という感じがします。
        親コメント
        • > 某フレームワークの生命体モノのイメージかと思ったのですが、

          今更名前を伏せなくてもよいのでは。

          > アレは何かやるとすぐ例外を出して、例外処理を入れることを
          > 覚えさせよう(洗脳しよう?)という、いい意味でも、悪い意味でも
          > 「崇高な使命」を持っていたようですが

          あれ?Terrariumは例外は異常系にしか使ってませんよ。
          自分のプログラムが正しく書けてればcatchしないでもちゃんと動いたはず。
          例外の乱用はしていなかったと思います。

          > これは純粋に「遊びのなかでイベントドリブンのコーディングに慣れる」
          > という感じがします。

          Terrariumもイベントモデルでしたが、RobocodeはTerrariumに比べて、
          どういう点が教育的に筋がよいのでしょうか?
          興味があるので教えてくださいませ。
          親コメント
          • 例外の乱用はしていないとのことですが、たしかに乱用はされてはいないと思います。コーディングという意味では。
            私はどこかに書いてあった記事の連載で見ただけなのですが、
            行動に異常系が発する条件が、行動に対してそれが行えないとき
            とありました。これは納得いくのですが、その記事では
            「前に動くときに前に動けなかった。
            そのとき例外をとっていないとそれが原因で生命体が死ぬ」
            という、極端な例でした。そのため、
            「おいおい、前に動けないだけで、いきなり死ぬんかい」
            と思ったものです。元ネタ失念で申し訳ないです。

            そのあたりの記述を見つけていないので、比較していいかどうか微妙
            なのですが、見つけた記事すべてが例外処理に終始していたのと
            思考ルーチンの記述に絞られているのとでは、印象が異なってしまう
            としても仕方ないことではないかと思うのです。

            「教育的に筋がいい」とは言ってませんよ。
            筋がいいのは、「例外=死」として、強制的に例外処理を教え込む側だと
            思っています。だから、「いい意味でも、悪い意味でも」と表現して
            いるんです。
            ただ、「遊び」という点だけを捉えると、先にあげた例のように
            「行動の失敗=死」よりも、「行動の失敗=1回やすみ」の方が
            それも1つの選択肢としてある方がいいのではないかと思うのです。
            親コメント
            • > 私はどこかに書いてあった記事の連載で見ただけなのですが、

              たぶん@ITのこの連載記事 [atmarkit.co.jp]だと思います。

              これはまったくの初心者が最初の1歩を踏み出す、という観点からはわりかし
              よくできた記事でした。ただ、中級者以上や、傍観者が気になるような戦略論
              や高度なアルゴリズムはありませんでした。(人がいなかったんでしょうが)

              その点、Robocodeは上位ランカーによる戦略やテクニックの記事をIBMのサイ
              トで披露していて、濃いプレイヤーにも満足できる記事が多くあります。まあ、
              結局は運営者がどこに力点を置くかの問題だと思います。

              > ただ、「遊び」という点だけを捉えると、先にあげた例のように
              > 「行動の失敗=死」よりも、「行動の失敗=1回やすみ」の方が
              > それも1つの選択肢としてある方がいいのではないかと思うのです。

              まあ、ゲームシステムをデザインする人の趣味の問題でしょうが、Terrarium
              では例外は主にロジック誤りなどの異常系で投げられるので、「行動の失敗=死」
              ではなく「バグ=死」です。これはデバッグ中には助かります。
              もちろん、リリース時にcatchすればバグ入りでも死なずに(いい加減ながら)動きます。
              (もっとも、同様のゲームを作ればたいていそうなるでしょうが)

              あと、「CPU時間の使いすぎ=1回休み」「CPU時間の異常な使いすぎ=死」でした。
              親コメント
    • by SteppingWind (2654) on 2002年08月27日 15時38分 (#153798)

      アルゴリズム構築による自動ロボット対戦ゲームとしては, 古くはX68000用のR.C.(1993年)を初めとして多いとは言えないものの, かなりのタイトルが存在していて一つのジャンルを形成していると言って良いと思います.

      見た目にこだわらなければ例えばRealTimeBattle [lysator.liu.se]なんて物がGPLで公開されています.

      親コメント
      • by oltio (3848) on 2002年08月27日 17時05分 (#153855) 日記

        COMSIGHT(TECNO SOFT,1987)

        #super tank相手に勝率50%程度…

        親コメント
      • by happy (8310) on 2002年08月27日 18時08分 (#153897)
        R.C.は けっこうハマった覚えがあります。 プログラミングの自由度は圧倒的に違います(R.C.は電子ブロック風の簡易言語)が。 Robocode もメールとかで知り合いとロボットの交換ができるので、似た感じで楽しめそうな気がします。

        AdvancedRobot に対し、Robot という簡単に使えるクラスを提供しているのも良い感じです。 Java 初心者でもなんとか敷居を越えられそうで。

        # アートディンクの地球防衛軍も同じジャンル?
        親コメント
        • > # アートディンクの地球防衛軍も同じジャンル?

           同じと言えば同じジャンルかも知れませんが、方向性が違うような。
           地球防衛軍は、プログラミングと言うより、パラメータを並び替える
          と言う程度だと印象を受けました。
           一応判断や分岐もありましたが、使える命令数が絶対的に少なかった、、、

           まぁ、自分自身のプログラムに一部BASIC使ってましたし、当時のマシンパワーでは限界でしたかね。
          #STOPキーを押して泣いた事が数度、、、ちゃんと効かないようにしとけよ~
          親コメント
    • by boo (899) on 2002年08月27日 15時59分 (#153815) 日記
      私は crobots [google.co.jp] でCを覚えました。
      ついでに無駄のない速いコードの書き方も覚えました。

      # 多少トリッキーなコードを書く癖がついたかもしれないけど。

      robocode は爆発がリアルでいいですね。
      --
      あぁ、「ン」が消えてるんですよ。「ビーフン・カレー」ね。
      親コメント
    • なぜ減るのかを聞いてみたい。
      というより「遊ぶ」ってのはどんな行為を指してるんだ?
      • ロボットの制御全般つくるのと勘違いしてました。
        こういうのは「遊ぶ」に含まれるので、大変よいと思います。
  • 記述言語 (スコア:2, 興味深い)

    by nasb (3002) on 2002年08月27日 20時13分 (#153978) 日記
    この手のプログラミングゲームで、記述言語が汎用言語(javaとか)か専用言語
    (ZEUSのように簡単なマクロの組み合わせでロジックを組み立てるスクリプト
    言語のようなもの)かの2タイプがあります。それぞれの得失をつらつら挙げてみると、

    【汎用言語】
        A. 自由度が高い。なんでもできる
        B. プログラミングをしたことない人に敷居が高い →パイが小さい
        C. (例えばjavaの)学習を兼ねる、という教育的な大義名分がある →パイが大きくなる可能性
        D. プログラムを強化するに従って、ロジックの微細化や肥大化などが起こってお手軽さが失われていく →ゲーム性の低下

    【専用言語】
        E. 自由度が低い。そのかわりに、ゲーム性を高める方向の制約を組み込める(サイズ制限など)
        F. プログラミング初心者に敷居が低い=パイが大きい
        G. 複雑化に頼らないスマートなプログラムが求められ、熟練してもゲーム性が維持される

    …というぐらいがすぐに浮かびます。私は、純粋にゲームとして楽しむなら
    ば専用言語の方がよいと思いますが、みなさんはどう思いますか?

    # 汎用言語(javaとかC#)でないとスポンサーつきませんね。(^_^;)

    VMに関しては、ここでもTerrariumの話題のときに いくらか [srad.jp]出てました。
    • カルネージハートシリーズは専用言語で一番有名でしょうけど、私はガッカリしました。結構複雑なコードも書けるので、かなりがんばったんですけど、結局は

      G. 複雑化に頼らないスマートなプログラムが求められ、…

      高度で大規模なマシンが、論理も何にもないような超シンプルなマシンに負けてしまうようなので、ガッカリしました。ここんとこを「ゲーム性が維持される」って言うようなら、プログラミングゲームを名乗る資格はないと思います。
      親コメント
      • Re:ZEUS ダメダメ (スコア:2, 参考になる)

        by nasb (3002) on 2002年08月28日 15時19分 (#154629) 日記
        私はTerrariumとZEUSはかなりやりこみましたが、Terrariumのような汎用言語
        を使うものの場合、どうしても「プログラムの肥大化」の問題が付きまとってきます。

        私のTerrariumのプログラムはC#で5000行を越えました。強いプログラムの多
        くはそれぐらいの大きさだと思います。これぐらい大きくなるといい加減疲れ
        てきます。ゲームとして見た場合、労力あたりに得られる娯楽度がどんどん低
        下していきます。これを避けるためにはプログラムサイズを大きくすることに
        対してペナルティを課す、などの歯止めが必要だと思います。

        あと、ZEUSに関して言えば、

        > 高度で大規模なマシンが、論理も何にもないような超シンプルなマシンに負
        > けてしまうようなので、ガッカリしました。

        とのことですが、実際には、経験を積んだプレイヤーが同コンセプト同ハード
        でプログラムを書いたときは、やはりプログラムの大きいものが強くなります(*)。

        ですから、単に戦略やハードの相性が悪かった、またはプレイヤーの経験が足
        りなかったのいずれかではないでしょうか。

        (*)「30ステップ強さ9」のプログラムと「100ステップ強さ10」のプログラム
        では一般には前者のほうがカッコイイとみなされるので、あえて前者を選ぶ人がか
        なりの割合でいます。
        親コメント
        • ひょっとして、Terrarium 日本大会で一世を風靡した nasb_tama の作者のかたですか!? 公式BBS で吠えていた負け犬の Kanji です、こんにちは。

          2ちゃんねるの掲示板で誰かが言うには、色々と細かいことをフォローしていって強くした人が強い、ってことですから、大胆な戦略はほとんど意味ないっていう点では面白くないと思います。せっかく生物で遺伝子を残せるのに、そこまで作り込む人も少なかっただろうし、作り込んだところで目に見えにくいので分からなかった…。

          私は確か最終的には 1500行くらいでしたけど、ガリガリ書いた大戦略型のグリッド式経路検索がほとんど意味なかったのにはガッカリしました。それに、場当たり的に改良していくと、どんどんプログラムが汚くなっていきます。途中からもう仕事と変わんなくなってきたりとか。

          ZEUS でも、動作に制限の多い戦車型のマシンを使って複雑な AI を組んで満足していたのですが、AI 系の BBS で新たな次元があることを知って驚きました。悔しいというより、ゲームシステムが理不尽だと思ったのでスッパリやめちゃいましたけど。

          余談ですけど、ZEUS になる前の初代カルネージハートは、基地でロボットを生産するというシステムが面倒でしたけど、あれはあれで量産型ロボットを作る楽しみがあったんですよねえ。少数精鋭よりも、部品ケチって AI 煮詰めて量産型を安定投入する喜び…。

          職場で Robocode を四人に誘ってみましたが、二人は関心なし、二人は強い興味を持ってました。職場で盛り上がっているところはいいなあ。
          親コメント
          • > nasb_tama の作者のかたですか!?

            はい。

            > 2ちゃんねるの掲示板で誰かが言うには、色々と細かいことをフォローして
            > いって強くした人が強い、ってことですから、大胆な戦略はほとんど意味な
            > いっていう点では面白くないと思います。

            有効な戦略を組み込むことと、重箱の隅を突く細かいチューニングを行うこと
            を比べると、やはり前者が強さの主因だと思います。ただ、前者と後者は独立
            な作業なので、後者は(時間が許す限り)やっとけば得ですね。ただ、それで勝
            率が何%上がるかは謎ですが。

            > それに、場当たり的に改良していくと、どんどんプログラムが汚くなってい
            > きます。途中からもう仕事と変わんなくなってきたりとか。

            私も「バイナリは20KBまで」という制約があったらどれだけ幸せか、と何度も
            思いました。

            > ZEUS でも、動作に制限の多い戦車型のマシンを使って複雑な AI を組んで
            > 満足していたのですが、AI 系の BBS で新たな次元があることを知って驚き
            > ました。悔しいというより、ゲームシステムが理不尽だと思ったのでスッパ
            > リやめちゃいましたけど。

            ZEUSの場合は専用言語ですから、できることが制限されてしまいますね。枠を
            はめることによって、敷居が低くなってプレイヤーが増える効果が見込めます
            が、そのかわり、その枠組みの中では楽しめない濃い人も出てきます。トレー
            ドオフなんだと思います。
            親コメント
      • by pf21 (8857) on 2002年08月28日 13時24分 (#154547)
        高度で大規模なマシンが、論理も何にもないような超シンプルなマシンに負けてしまうようなので
        Keep it simple, Stupid ってのも良いことではないかと思うです。
        親コメント
  • by Anonymous Coward on 2002年08月27日 18時10分 (#153898)
    機能があるようですが、今回のコンテストでは
    対応していないようです。
    次のコンテスト(もしあれば)では是非対応して欲しいと
    思ったりします。

    # フォーメーションを組んで弱いものいじめとか...
  • by Anonymous Coward on 2002年08月27日 14時56分 (#153776)
    プロットホーム?
  • by Anonymous Coward on 2002年08月28日 0時51分 (#154208)
     こんなことしてる場合じゃないのに。月末は納期なのに。
    けど、商品のシンクパッドは俺がいただいた。
     まずは敵の動きを読まなくちゃ。
     けど、本番だと100台まとめて対戦らしいな。そんな
    芋の子を洗うような状態で、アルゴリズムもへったくれもあるのか?
     ぶつかるとエネルギーが減る&動かないとただの的=ぶつから
    ないように動き続けなくてはならないのだが、100台じゃなかなか
    そうもいかないぞ。100台もまとめてシミュレーションできる
    環境ないしな。
  • by Anonymous Coward on 2002年08月28日 22時12分 (#154932)
    体験入学の題材に使わせてもらいました。
    わずか90分の実習ですから満足なことは出来ませんでしたけど、
    結構喜んでもらえました。
    手伝わせた生徒から、うちの実習ではやらないの?と聞かれました。

    まぁ確かに実習への導入も考えているですが、このまま実機が動か
    せれば即導入なんですけどねぇ・・・まだまだC言語のみで頑張る
    しかないですね。(複数言語を覚えさせる余裕が無い)
typodupeerror

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

読み込み中...