Windowsに対応しました

with コメントはまだありません

こんにちは、基本情報技術者試験に合格してホッとしている管理人です。

C++版Cities BoxがようやくWindowsで動きました。

今までずっとWindowsで開発してきたので、

「Windowsに対応しました」なんてタイトルを付ける日が来るなんて思ってもいませんでした。

 

Windowsで作ってきたものをMacで作り直し、またWindowsで組み直す、いわば逆輸入みたいなもんでしょうか。

おそらく、今までHSPが話題の中心になっていたこのサイトをご覧になっている方の殆どは

Windowsユーザーだと思いますので、Windowsに対応しないと話になりません。

 

Mac版と全く同じタイトルメニュー画面。

この画面を出すだけでも1週間くらいかかりました。

 

こちらがプレイ画面。Mac版と一緒ですね。表示のバグり方も一緒です(一部修正しましたが)。

 

そうそう、新しい機能を作ったんですよ。

サブウィンドウもどきです。

これはOpenSiv3Dの新しい機能であるレンダテクスチャ機能を用いています。

ウィンドウと同じように、タイトルバーの部分をクリックしながらマウスをグリグリするとサブウィンドウが動きます。

設定画面とか、予算パネルとかを表示するときに使おうと思います。

 

今回は前述のレンダテクスチャ機能を用いて、動作も改善しました。

前回の記事では毎フレームすべての画像を配置し描画していましたが、今回は描画先をレンダテクスチャにし、

必要なときだけマップの描画内容を変更することでCPUの負担を大幅に下げることができました。

 

ここで、Windows版のCPU使用率とメモリ使用量を見てみましょう。

まずは、マップ上で視点を動かしているとき。

なんと、一番負担がかかる動作でさえ、およそ1%台、低ければ0%台、高くても4%台という結果になりました。

ちなみにCPUはintel i5-6500@3.20GHzです。

 

次に、静止しているとき。

驚異の0%。

静止しているときはマップを更新する必要がないため、レンダテクスチャを使うことで負担がほぼない状態に。

HSP版も比べものにならないほどの軽快さです。

 

メモリ使用量も29MB前後と、Mac版の半分以下の大きさです。

OSが違うだけでこんなにも変わるとは…

 

Mac版も同様にして動作が改善しました。

マップ上で視点を動かしているとき:

 

静止しているとき:

こちらも大幅にCPU使用率が下がりました。

Macの場合、WindowsのCPU使用率とは違い、1コアあたりの使用率が表示されるようです。

なので、CPU全体で見てみれば、Windows版と大差ないと思います。

 

今回は、極力すべて共通のソースコードでWindowsとMacの両方で動かしたかったんですが、

残念ながらコンパイラの違い、ディレクトリの違い、ライブラリの違い、文字コードの違いなどから、

完全に共通とまではいきませんでした。

でも、OpenSiv3Dというライブラリがとても優れているおかげで、

OpenSiv3D関連のソースコードはすべて共通化できました。

 

では、どこが異なるのか。

それは、

・ファイルの読み込み

・ディレクトリ内のファイルリストの取得

です。

どちらもOpenSiv3Dには関係ない部分です。

幸い、OSによって実装方法を変えなければならなかった部分はこれだけだったので、

OSによって異なる部分だけ一つのソースファイルにまとめ、他のソースファイルはすべて共通化することにしました。

この調子でどんどん開発を進めていきたいと思います。

Leave a Reply