2007-12-20-01-いろいろな環境で閉口 - project-enigma

2007-12-20-01-いろいろな環境で閉口

>> Site top >> weblog >> 月別アーカイブ >> 2007年12月のlog >> 2007-12-20-01-いろいろな環境で閉口

最終更新日付:2014/01/01 18:01:36


いろいろな環境で閉口

2007 年 12 月 20 日

今日は面倒くさい話。

2006年の初頭から企画を練っていたゲーム。この時点では(というか今でもだけど)Palmware として考えていました。その後、2006年6月くらいからは別の Palmware ── そう、リリースが目前に迫っているあのPalmware ── の開発が始まったこともあり、お蔵入りしておりました。

で、2007年の年末リリースに目処が立ったため、2年前の構想を引っ張り出してきたわけです。しかし、今度のは異常なまでにややこしく、いきなりちっこい Palm デバイス上で動かすことはとてもできないような面倒臭いシロモノ。陰郎はこういうとき、コアの部分だけを独立したソフトウェアコンポーネントとして書き、PC などのデバッグしやすい環境で動かします。今回もそうしているわけです。

ところが。

今回は、ゲームでありながら相当重い処理をしなければならないため、コアエンジンを丸ごと ARM ネイティブコードで書くことになりそうなんです。すると、陰郎の開発環境である CodeWarrior、その中に組み込まれた ARM 用コンパイラ、そして Palm OS Simulator でデバッグをかけるときに使用する Windows DLL をビルドするための Microsoft Visual C++ 6.0 という、これだけで3種類のコンパイラを通さなければなりません。

陰郎は C++ プログラマです。ARMlet ですからポリモーフィックなクラスや例外処理、RTTI などは使えませんが、テンプレートは使えますし使います。階層化も使います。その他、普通ならば重箱の隅っこと見なされるような言語機能も使います。すると問題になるのが、各種コンパイラの挙動が微妙に異なるということ。普通は気にならないようなことかもしれませんが、キャスト演算子オーバーロードをメンバ関数テンプレートとして書いたりクラステンプレートの内部に別のクラステンプレートを作ったりすると、コンパイラごとに言うことが違ったりするんですよ。

しかも、それだけじゃありません。最近は、職場で過ごす昼休みは開発サーバである Solaris 上で作業させてもらっています。自宅では、Linux 上で gcc を使って開発しています。こういった様々な環境やコンパイラ全部で通るコードを書くというのは、意外と大変。どこかのコンパイラに文句を言われて直したかと思うと、それが原因で他の環境で叱られたりするわけです。実際にはまだ Solaris 上と gcc on Linux でやっているだけなので、このまま突き進んで CodeWarrior や Visual C++ に文句言われたら目も当てられません。嗚呼。

まぁそれはそれとして、構想と実験を重ねるにつれて、Palmware に仕立てるのは無理なのでは...と感じ始めています。現時点で書けることは非常に少ないのですが、シミュレーションゲームなのです。ひょっとしたら Palm ではなく PC 向けの作品になっちゃうかもしれません。あるいは再びお蔵入りになるかも。(汗

 

コメント

min - 12/22/2007 07:20:46 PM

僕など未だにC++らしいプログラムが書けないんですよまだK&RのCの呪縛に縛られてるようです。

しかし、そのゲームはお蔵入りは残念ですよね。スケールの大きいゲームが無い昨今、切望していますよ。

陰郎 - 12/22/2007 11:48:18 PM

> min さん

いやー、C++ プログラマは肩身狭いですよ。C 系からは「なに言ってるかわからん」的に扱われますし、Smalltalk 系からは「オブジェクト指向として邪道」みたいに言われるし。( 被害妄想かもしれませんが )

個人的には、Stroustrup の現実的な哲学に共鳴してるんですけどねぇ...

さて、例のゲームの話ですが、お蔵入りにはしませんよ。なんとか形になるよう、頑張るつもりです。ひょっとしたらPalm 用にはならないかもしれませんが...(汗

このページにコメントする

 

このページのタグ

Page tag : 開発

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.