ENIXERの日記

2015-12-06

JavaChallenge2015の裏話

00:26

この記事は?

この記事は、Competitive Programming (その2) Advent Calendar 2015の6日目の記事です。

先日つくばで行われたACM-ICPC 2015 地区予選の余興として行われたJavaChallengeの裏話です。

間に合わなくてすみません。

JavaChallengeってなに?

本来のプログラミングコンテストとは少し異なり、「あるゲームを攻略するAI」を作って競うタイプのコンテストです。

ゲームはなんだったの?

カービィ64の「おちおちファイト」を元ネタにしたゲームです。

リポジトリはこちら

元ネタのゲームについてはググればいくらでも出てくるのでここでは割愛します。

そんなこといいから早く提出先公開しろ

すみません。

提出先(予定)はこちらですが、現在対戦用サーバが稼働しておらず、提出しても対戦が行われません。

申し訳ありませんが、本公開までもう少々お待ちください。

公開しました。

Contestsの「Java Challenge 2015 Free Battle」からご投稿ください。実際にJavaChallengeで行われた各ラウンドの結果も確認できます。

(アドレスがjavachallenge201"4"となっていますが、間違いではありませんのでご安心ください。

2015が利用できるようになったらリンクを貼り替えます貼り替えました)

本題

今回のチームは

でした。

僕(ENIXERvsREXINE)はビューワ開発には関わっていないので、ゲーム本体開発のお話です。

〜9月
  • 8月に、「今年もJavaChallengeやる?」という話をexKAZUuから受け、メンバー探しを始める。
  • とりあえず7月にあったTopCoderOpen 2015 Hackathonでチームを組んだメンバーに話を持ちかけてみたところ、kenkooooが興味を持ってくれて、そのまま引き込む。
  • 上旬、exKAZUuの伝手でpuyokwが参戦。
  • 下旬、kenkooooがゲームの開発を始める。(僕は就活を理由に開発には携わってませんでした)
10月
  • 上旬、ゲーム本体が完成。ログ仕様をもとにpuyokwがビューワの開発を始める。
  • 中旬、ビューワが完成。
  • 謎の空白期間。
  • 末、exKAZUuによるサーバへの組み込みのための作業が開始される。

立ち込める暗雲。

(僕は10月半ば頃まで就活が終わらず別の意味で暗雲が立ち込めていました)

11月
  • 初頭、kenkooooが論文関連で忙しくなってしまい、代わりに就活が終わった自分が開発を引き継ぐ。
  • リファクタリングしたり、テストケースを生成したり、ぬるぽをガッしたり、などなど様々なチケットを立てては消化していくうちに、「これ間に合わないんじゃね?」的な空気が漂い始める。
  • 結局、前日の夜まで組み込み作業は続き、しかも度重なる仕様変更によりドキュメントが古くなっていたので変更作業に追われ、出来上がったのが当日の朝。

見事に大炎上したプロジェクトは、当日サーバが落ちたりしたものの、なんとか致命傷で済んだ。

kenkooooの卓越したトークスキルにより結果発表も楽しんでもらえたようで何より。

思ったこと

スケジュールには余裕があったはずなので、就活が終わってからしばらくの間、このプロジェクトから逃げていた自分に喝を入れたい。

明日は?

明日(というかもう今日)はnotさんの記事です。お楽しみに。

2015-08-09

GDSkillGetter ver.0.0.1-beta2 公開

22:30

XGCrawlerの更新までの繋ぎとして、GDSkillGetterを作成しました。こちらからダウンロードできます。

!!注意!!

  1. 本ツールはまだベータ版のため、正常に動作しない可能性があります。本ツールを利用してスキルを登録する際には必ず現在のスキル帳をいったんエクスポートするようにしてください。
  2. 本ツールを使用した結果生じたいかなる損害も作者は責任を負いません。予めご了承ください。
  3. 本ツールのソースコードは大部分がXGCrawlerを参考にしています。本ツールがXGCrawlerに対して何らかの不利益を発生させていることが分かった場合、本ツールは予告なく配布を終了することがあります。

概要

eAMUSEMENTサイトからGITADORA Tri-boostのプレイデータを読み込み、GITADORA Tri-boost スキルシミュレータ(http://tri.gfdm-skill.net)にインポート可能なCSVファイルを出力するツールです。

特徴

・XGCrawler(http://suitap.iceextra.org/xgcrawler/)と同じ環境で実行できます。前作までこちらを利用していた方は同じ設定ファイルを使いまわせます。

内容物

・config.xml(設定を記述するファイル)

・GDSkillGetter.jar(ツール本体)

・README.txt(説明書(このエントリと同じ内容))

・run.bat(Windows実行用バッチファイル)

使い方

・動作にはJava 1.7以上が必要です。Javaのバージョンをご確認いただき、1.7未満の場合はアップデートを行った上で本ツールを実行してください。

・基本的にはXGCrawlerと同じです。詳しい利用方法はそちらをご覧ください。

・設定ファイルを書いた後、Windowsはバッチファイルをダブルクリック、Mac / Linuxはターミナルで解凍したディレクトリまで移動してjavaコマンドを打てば実行できます。

・実行後、同ディレクトリ内に作成された「gfoutput.csv」「dmoutput.csv」をスキルシミュでインポートするとスコアを登録できます(残念ながら自動ではありません)。

・現在、"UpdateOnlySkillTarget" / "AddSkillInfoToComments"は未対応です。全曲をただCSVに変換するだけです。

・"SkillNoteId" / "SkillNotePassword" は、そもそも出力したCSVをシミュに自動投稿しないので必要ありません。

おかしいな?と思ったら

・ほとんどはXGCralwerのサイトを見れば解決すると思います。

・作者Twitterは "@ENIXERvsREXINE" です。もし上記サイトを見てもわからなかった場合、あるいは不具合などを見つけた場合にはご連絡ください。

既知の不具合

原因不明

・なし

修正中

・なし

修正済み

・誰が実行しても作者のスキルが反映されてしまう(原因: jarファイルの中に作者のconfig.xmlが紛れ込んでいたため)

今後の予定

・UpdateOnlySkillTargetの対応

・AddSkillInfoToCommentsの対応

・スキルシミュへの投稿の自動化

・すまほ・・・?

更新履歴

8/12(0.0.1-beta2): 誤って混入していた作者の設定ファイルを消去

8/9(0.0.1-beta): 配布開始

2015-02-12

Mac OS X 10.9.4 環境構築

17:10

Mac OS X 10.9.4に開発環境を構築したので備忘録的にまとめ。

システム環境設定

  1. Dock
    • 好きなサイズに調整する
    • 画面上の位置を左に変更する
    • 「Dockを自動的に隠す」「起動中のアプリケーションをアニメーションで表示」「起動済みのアプリケーションにインジケータ・ランプを表示」にチェックを入れる
  2. Mission Control
    • Dashboardを操作スペースとして表示」のチェックを外す
    • 「ホットコーナー」から左下を「デスクトップ」にする
  3. 言語と地域
    • 言語一覧の+ボタンから日本語を選ぶ
      • 再起動が必要になるので少し待つ
    • 「時刻の書式」の「24時間表示」にチェックを入れる
  4. ディスプレイ
    • 「輝度」をいじって適当に暗くする
      • fnキーを押しながらF1,F2キーでも変更できる
  5. 省エネルギー
    • 「コンピュータのスリープ」「ディスプレイのスリープ」を適当にいじる
      • コンピュータ: 15分、ディスプレイ: 3分
  6. キーボード
    • 「キーボード」タブから「キーのリピート」と「リピート入力認識までの時間」を両方とも右端にする
    • F1,F2などのすべてのキーを標準のファンクションキーとして使用」にチェックを入れる
    • 「ショートカット」タブの「Spotlight」から「Spotlight検索を表示」のチェックを外す
  7. トラックパッド
    • 「ポイントとクリック」タブの「タップでクリック」、「3本指のドラッグ」にチェックを入れる
    • 「スクロールとズーム」タブの「スマートズーム」、「回転」のチェックを外す
    • 「その他のジェスチャ」タブの「アプリケーションExpose」にチェックを入れる
  8. 日付と時刻
    • 「時計」タブの「日付を表示」にチェックを入れる

諸々インストール

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    • Homebrew CaskはHomebrewにビルトインで入っているようになったので、別途インストールする必要はなくなった
  • Google Chrome, Java, Eclipse, Sublime Text, iTerm, Alfred, Slack
    • 全てHomebrew Caskで入れられるので、brew cask searchで探して入れる
  • Xcode
  • Google日本語入力
    • Caskで入れた後、システム環境設定の「キーボード」->「入力ソース」から選択
  • oh-my-zsh
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
chsh -s /bin/zsh

2015-02-02

実績1月まとめ

23:48

しょぼい。合計19pt。

日時達成項目得点備考
01/04過去問をACする1ptSRM644 Div1Easy
01/08競技プログラミング勉強会を開く2pt-
01/11AOJ-ICPCの難易度100〜250をACする1ptAOJ2589 North North West
01/11AOJ-ICPCの同難易度の問題をすべてACする10ptAOJ-ICPC 150 Completed!
01/14競技プログラミング勉強会を開く2pt-
01/14AOJ-ICPCの難易度100〜250をACする1ptAOJ2600 Koto Distance
01/21競技プログラミング勉強会を開く2pt-

2015-01-04

今年の目標

20:21

目標というかノルマ。ポイント制。

いわゆるゲームの「実績」みたいな感じで埋めるのを楽しめたらな、と思います。

「得点」の項における「×」の記号は、達成した回数分得点が入るということを意味します。

SRM

条件得点
SRMに参加する×1pt
リアルタイムでDiv2HardをACする×5pt
リアルタイムでDiv1EasyをACする×2pt
リアルタイムでDiv1MediumをACする×5pt
リアルタイムでDiv1HardをACする×10pt
過去問をACする×1pt
問題を解いた上で解法や感想をブログに書く×1pt
SRM参加が年通算10回に到達する5pt
SRM参加が年通算20回に到達する10pt
SRM参加が年通算30回に到達する20pt
黄コーダーになる30pt
赤コーダーになる100pt
ターゲットになる1000pt

Marathon

条件得点
Marathon Matchに参加する×5pt
ランダム行動よりもよい点数を得るコードを提出する×5pt
Marathon Match以外のマラソン系イベントに参加する×5pt
緑コーダーになる10pt
青コーダーになる30pt
黄コーダーになる100pt
赤コーダーになる500pt

ICPC

条件得点
AOJ-ICPCの難易度100〜250をACする×1pt
AOJ-ICPCの難易度300〜550をACする×2pt
AOJ-ICPCの難易度600〜750をACする×5pt
AOJ-ICPCの難易度800〜950をACする×10pt
AOJ-ICPCの難易度1000〜1200+をACする×30pt
AOJ-ICPCの同難易度の問題をすべてACする×10pt
AOJのICPC過去問以外の問題をACする×1pt
後輩チームのコーチを担当する10pt

音ゲー系

条件得点
SP皆伝100pt
DP十段100pt
DP皆伝300pt
ギター銀ネ30pt
ギター金ネ100pt
ギター虹ネ300pt

その他

条件得点
競技プログラミング勉強会を開く×2pt
オンサイトイベントに参加する×10pt
Java以外の言語でDiv2Med以上かAOJ-ICPC200以上を5問以上ACする×10pt
筋トレする×1pt