[PR] | 2025.04.18 20:49 |
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
category : |
カレンダー
プロフィール
最新記事
(10/15)
(06/17)
(01/09)
(12/14)
(06/20) カテゴリー
|
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
| |||||||||||||||||||
PR
ここ数日前まで、またプリント基板作ってました。余り物の板に余った 部品をはんだ付けしただけですけど。 今年3月下旬頃に言っていたC++のオブジェクト指向で何を作るかっという件 で、とりあえずBulletで適当に新しい物を作るとか言っていましたが、最近 やっていないことに気が付きました。ソースファイルの更新日から推測するに 最後に触ったのは4月上旬で、もう1ヶ月近く開発してないことになります。 正月ごろからあんなにやり込んでいたのに、何かを機会に一気に冷めた感じ です。何でだろうか。 ってか次はどうするんだっていう・・・。 XopsAddonCreatorの開発の一件は、今回「PFコンバーター」ならぬものを 作ってみました。 「パラメーター設定ファイル」という、XPE+時代の概念を引き継ぎ採用され ているファイルがあります。ポイント編集時に表示する人・武器・小物の名前 や、3Dビューに表示するモデルデータをカスタマイズするための設定ファイル です。XopsAddonCreatorの説明書には書かれていない秘伝の書き忘れた 機能です。 改造パック集の制作者の方々が、ご自身のパックに合わせたパラメーター設定 ファイルを用意するには、各人・武器・小物の設定パラメーターを手動で入力 して作成する必要がありました。間違いが起こりやすく、非常に面倒極まり ない作業です。 今回開発したPFコンバーターを使用すると、既存のXOPS本体(EXEファイル) から各設定データを自動的に取得し、パラメーター設定ファイルを半自動で 生成してくれます。 膨大な値を手入力しなくても、先にEXEファイルが出来上がっていれば、面倒 な作業を大幅に削減できます。 PFコンバーターは次期バージョン(Ver:1.1?)から収録する予定です。
ここ数日は、「XopsAddonCreator」の開発やったり人から頼まれている 案件を消化したりしています。 現行の「XopsAddonCreator」の3Dビューを良く見ると、開発当初の記事 では人が武器を持っていたはずが、現バージョンで手ぶらになっていたり、 良く見ると人のモデルデータもちょっとおかしかった(違う形が読みこまれ ていた)りと、不思議な不具合があるようです。 原因を突き詰めていくと、去年(2013年)の8月頃に言っていた、自作の INIファイル読み込み関数に不具合があり、XOPSのパラメーター設定ファ イルの一部項目が、正常に読み込めていませんでした。 「== 0」と書かなければならないところを、「!= 0」と書いて逆の処理を 行っていたようです。 関数レベルで十分に動作テストはしたはずで、正しく読み込まれない不具合 を見逃すとは考えにくいのですが・・。 不具合は直しましたので、次回バージョンアップで修正されます。 一部改造パック(MOD)のモデルデータが読み込めない問題も、たびたび 耳にはしていましたが、事態に直面したこともなく、良く分かっていません でした。 今回偶然事態に直面し、原因を特定することができたのですが、モデルデー タに問題がある気がします。正しいファイルパスを渡しても、「ファイル がない」というエラーを返して読み込みに失敗します。 問題のモデルデータを、DirectXのSDKについているビュアーで開こうとし ても、正常に開くことが出来ませんでした。 本家XOPSでは正しく読み込んで表示できているようなので、DirectXのバー ジョンの問題なのかも知れません。 後は、人から頼まれて作ったプリント基板をいじったりしていましたが・・。 こちらはうまくいっていません。
半年ぶりにこのタイトルで書きます。 別件でマルチスレッド処理を検討している時に、ふと現行のVer:1.0系の マルチスレッド周りの処理の改善案が思い浮かびました。 早速実装してみると・・・、これが大当たり! fpsが伸びなかったり、CPU負荷が増えたりと一癖あったマルチスレッド 処理が大幅に改善しました。 以下、実験結果です。 縦軸に「Ver:1.0b」というのが現行品、「ver:1.1」というのが今回開発 した改良型です。 横軸がfps数で、基本的に右に行くほど高速に動作していることを表します。 (クリックで拡大) 実験環境~ CPU:Core 2 Duo 3GHz、Memory:4GB(実質3GB)、 GPU:GeForce 9800 GT、OS:Windows7 32bit ブロック数0個 ポイント数0個 1920x1080のディスプレイに最大化表示 マルチスレッド周りを改良したにも関わらず、なぜかOFFに設定しシングル スレッドで動作させた場合にも改善が見られる理由は分かっていません。 なお、この環境は改良前後に関わらず、CPU負荷はOFFで50%、ONで80% ほどでした。 細かいデータは取っていませんが、PC(環境)によって特徴の出方が 異なるようです。他のPCでは、マルチスレッド時のfpsは大差ないもの の、改良前後でCPU負荷が半減する効果が出る場合も確認できました。 XopsAddonCreatorの次回バージョン(Ver:1.1?)から、この改良した マルチスレッド処理を導入する予定です。 ただし、公開時期などは未定です。 「他所を改良したら全体的に処理が重くなり、fps数の増加(改善)分が 帳消しに」ってこともあり得ますし、全ての環境で動作が改善することを 保証するつもりはありません。
今はとりあえず物理エンジンのBulletで、適当な3Dプログラムを書いていますが、 このまま開発を続行するか、違う物の開発にあたるか 迷っています。 大きく3つの方向性を考えています。 ・Bulletで適当に新しい物を作る ・XopsAddonCreatorを開発し直す ・OpenXOPSを開発する 【Bulletで適当に新しい物を作る】 現状やっている開発の続行です。 利点として、せっかく慣れたBulletを続けられる、過疎化したXOPSに依存しない、 新しいことにチャレンジできるということです。 逆に欠点としては、そもそも開発する物が正式に決まっていない(未検討)である ことや、公開する場所や方法が確保できていないなどの問題があります。 【XopsAddonCreatorを開発し直す】 クラスを全く使っていないXopsAddonCreatorを、オブジェクト指向で全面作り 直す作業です。 利点として、開発する目的と目標が明確である、公開場所(みかん箱)が正式に 用意されている、やろうと思えば海外展開も可能(韓国など)、自身で最も規模 が大きいソフトウェアの開発にオブジェクト指向を活用できる点です。 一方大きな欠点もあり、既に完成したソフトの焼き直しで技術的に面白みに欠ける 、過疎化が深刻になっているXOPSに大きく依存し需要が不透明という問題です。 【OpenXOPSを開発する】 去年の2月下旬頃に考えていた、偽XOPS(fxops)でのノウハウを元に、オープン ソースのXOPS互換を目指したゲームおよびそのプロジェクトです。 利点は、自身で悔いが残る偽XOPSの開発にあてられる、XOPS界内外からの注目 を集めることができればXOPS過疎化を打開できる可能性がある、自身初のオー プンソースプロジェクトを経験できるという点があります。 一方で、そもそもXOPSを名乗った似て非なる別ゲームになる、アイディア自体 はnine-two氏のゲームなのでオリジナルのアイディアを組み込みにくい、同理由 で自作した達成感が少ない、(利点と逆に)内外から注目されないと無意味な 開発で全く需要がない、トラブル防止のため本家のnine-two氏に確認を取りたい がnine-two氏が多忙で難しい可能性がある っといった具合です。 自分の時間と手間の関係で、どれか1つを選ばなければなりません。 (あるいは、いっそどれも選ばない=何もしない) それぞれ魅力的な利点と深刻な欠点を抱えているので、単純に決めることができ ないのが悩ましいところです。
単に「生きています」とか書いて生存報告しても面白くもなんともないので 最近感じていることをダラダラ書きます。 「XopsAddonCreator」の開発 -15 (2013/07/12) ポイントエディタ(XPE+)でHSPを使用していたにも関わらず、XopsAddon CreatorではC/C++を採用した理由は、この時に触れた通りです。 あえて補足しなければいけないこととすれば、この時は曖昧な表現でうまく 誤魔化していますが、「C/C++」っと言ってもC++としては基本的な文法 のみです。クラスなどの言わばオブジェクト指向は一切使用していません。 開発を始めた2012年9月当時はHSPに慣れ過ぎていて、恥ずかしながら純粋 なC言語の細かい文法が理解できていなかった状況でした。 ある程度確実にソフトウェアを完成させるには、あえてオブジェクト指向 には手を入れず、純粋なC言語の文法(厳密には考え方)を使用することに 徹したつもりです。 しかし、今になってここ最近思っていることは、多少強引にでもC++の 機能をフルに活用してオブジェクト指向による開発を選択するべきだった のではないかと悔やんでいます。 確かに純粋なC言語が扱えないのは論外ですが、オブジェクト指向を扱った 経験が圧倒的に足りないのも致命傷になっています。今から経験を積む のも遅くはないですが、XopsAddonCreatorほどある程度の規模をもった ソフトウェアを作る機会は殆どなく、オブジェクト指向をフルに活用して 作れる機会を逃してしまった気がします。 一方で、まともにC言語が扱えなかった2012年9月当時から、いきなり C++でオブジェクト指向を使ってソフトウェア(XopsAddonCreator) を作っていたら、ソフトウェア自体は完成していなかった可能性が非常に 高いです。殆ど経験がない以上クラスの設計や実装も滅茶苦茶になるのは 避けられず、ポイントエディタ(XPE+)のように不具合だらけで完成度 が著しく低いソフトウェアになったかもしれません。 XopsAddonCreatorっという一本のソフトウェアを仕上げるに題して 「物自体の完成を優先するか」「高度な技術習得を優先するか」っという のは、一概には決められない難しい問題です。
※過去のブログ記事は 原則として編集・修正していません。 | ||||||||||||||||||||
△ TOP |