Heliodorさんをフォローして、最新情報をチェックしよう!

マイページへ

Ci-enはクリエイターに対して、金銭的な支援を送ることができるサービスです。

プログラム開発環境について

何を使って開発してるんですか?という質問をたまに頂くので、開発環境について少しお話しします。

まず、プログラム的な環境でいえば、有料ツールは一切使っていません。全て無料で手に入るモノです。
ヴィータ大脱出や滅びの国の王女のプログラムはC++を使って開発しました。統合開発環境(IDE)は無料で入手できる Visual Studio Express で、これにDirectX 9.0 SDK October 2004 や Ogg vorbis, TinyXml, Lua などのライブラリを組み合わせています。

ちなみにDirectX9.0のSDKがなぜ最新版ではなく古い October 2004 なのかというと、実はこのSDKは、D3DXを使うのにDLLを必要としない最後のSDKなんです。つまり、これ以降のSDKでD3DXの関数を使おうとすると、d3dx9_43.dllとかのDLLが必要になります。そしてこれらのDLLは結構な確率でユーザーのPCにインストールされておらず、トラブルの元になります。
なので、プログラム的な利便性(新しく追加されたライブラリ関数が使えないとか)を多少犠牲にして、古いSDKで作っていました。

プロジェクトファイルは最初は手動で設定していましたが、いろいろオプション設定などを変えているうちに、クリーンな状態のプロジェクトファイルが欲しくなる場合が何回かあったため、そういうことが簡単にできるように cmake を使うようになりました。ちなみにプロジェクトは普通複数のビルド構成を含んでいますが、ヴィータ大脱出の場合は基本的に通常版と体験版があり、それぞれについて開発デバッグ用、友人テストプレイヤー配布用、製品版(デバッグ用の機能を完全に削除したもの)等があります。さらに、そのそれぞれについてステップ実行やランタイム情報の取得などが可能なDebug版と、最適化コンパイルするためのRelease版があるため、最終的には10以上のプログラム構成を含んでいます。

マップエディタなど、内製GUIツールの作成にはC#を使いました(もちろん Visual Studio Express で)。C#はちょっとしたツールを作るのにもかなり便利で使いやすく、ついでにゲームもC#で作れば楽だったのかもしれませんが、ヴィータ大脱出を作り始めた当時、まだ使っている人の多かったWindowsXPをサポートするという条件を考えた時に .net frameworkがインストールされていない可能性があったため、C++のままで行く事にしました。
(さすがにもうXPはいいよね……?という気もするので今後は変わるかもしれませんが)

GUIを伴わないツールやバッチファイル的なモノを作る時には Python です。例えばデータとexeファイル、readmeなどのテキストファイルをまとめて zip に固め、公開可能なファイルを作る作業などです。以前はゲームのスクリプトとして Python を使っていた時期もあったのですが、C側のコードがかなり巨大になってしまうことと、Pyhton のクラスをC側で定義するのが結構面倒だったので、ゲームへの組み込みはやめてしまいました。その代わりに使うようになったのが Lua です。ゲームのシーン進行や、会話スクリプトは全て Lua でやっています。Luaはとにかく構造がシンプルで、C側の実装が楽なんです。ただ、配列のインデックスが1起算なのはいまだに慣れません……。

キャラクタアニメの定義やデータテーブルなどには XML を使いました。YAML を使っていた時期もありましたが、YAMLは文法があまりにすっきりしすぎていて(冗長な情報がほとんどない)なんとなく不安に感じるという点と、タブではなくスペースでのインデントを強制されるのが個人的に嫌だったので、やめてしまいました。C側では TinyXml を使って読み込んでいます。

その他のツールとしては、、テキスト編集には Sakura Editor、バイナリエディタは Starling、zipの作成や中身の確認には7-zip portable、テキスト比較は WinMerge、バージョン管理は TortoiseHg です(そうです私はMercurial派です)。
ちなみにバージョン管理ツールは複数人で使うもの、と思っている方も多いと思いますが、これは個人で使うにも非常に便利なものです。私はバックアップと編集差分の確認、複数のPCでソースコードを同期する目的で使っています。

それと、CG関係のツールは語るとまた長くなるのでそのうち別にまとめるかも?
(ツールの変遷とか部分的に使っているものとか、まあ色々と……)。

\いいねで応援!/