FreecivCalc2を公開しました
Category: dev
Freecivのユニット同士の戦闘勝率を手軽に行えるソフトであるFreecivCalcの新バージョン、FreecivCalc2を公開しました。
FreecivCalc2: http://tatamo.81.la/freecivcalc2/
以前から公開していたFreecivCalcはSilverlight上で動作するソフトのため、現状では動作するブラウザがほとんどなくなってきています。
そこでHTML5+JavaScript/TypeScriptに移植し、機能やインターフェースを大幅に見直したFreecivCalc2を開発しました。
Chrome, Opera, Firefox, Edgeでの動作を確認しています。
FreecivCalc2の新機能
FreecivCalc2の画面からユニットを選択し、各種補正情報を入力することで戦闘勝率を表示できます。また詳細結果タブを開くことで、戦闘後のユニットHPの期待値を表示できるほか、タブを保持しておくことで復数の戦闘の予測結果を見比べることなどができます。
従来バージョンでは、地形による防御ボーナスの適用の可否や特定のユニット同士の戦闘にかかる特殊補正などの補正の情報を手動で入力する必要がありました。 FreecivCalc2ではこれらの特殊補正は自動で適用されるため、Freecivの複雑な戦闘補正を十分に把握していない場合でも正確に戦闘勝率の予測が可能です。 ユニットにかけられている補正の一覧は、詳細結果タブ内で確認することができます。
複数の言語、多様なルールセットに対応可能な拡張性
戦闘補正の自動適用を実現するために、ユニットの情報や補正の条件など、ルールセットに関連するすべての情報を外部データ化しました。 これによってclassicルールセットだけでなく、多様なルールセットに対応することが可能です。 同時に、FreecivCalc2のインターフェース部分もテンプレートを用いて外部ファイルからコンテンツ内容を流し込んでいるため、容易に多言語化が可能になっています。
現状では、classicルールセットを日本語および英語の2か国語で対応しています。
開発について
FreecivCalc2は三条項BSDライセンス下で公開されています。
ローカル環境でのビルド、他のルールセットや言語に対応させるためのデータセットの文法などについてはGitHubリポジトリ上で記述しているため、そちらを参照してください。
FreecivCalc2は大半をTypeScriptで、jQuery UIのウィジェット定義など一部を生のJavaScriptで書いています。
また使用したライブラリはjQuery, jQuery UI, amChartsです。 当初jQueryを使う予定はなかったのですが、ユニット選択用のUIとしてコンボボックスを実現するためのライブラリを探していたところjQuery UIが最も用途に適っていたため採用し、その流れでjQueryも使用することになりました。 amChartsは簡単にグラフを表示できるライブラリとして使いやすそうだったため使用しました。
その他、外部JSONファイルからテンプレートを通してHTMLファイルを生成するためのテンプレートエンジンとしてEJSを使用しました。