忍者ブログ
カレンダー
07 2026/08 09
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
プロフィール
HN:
[-_-;] (みかん)
性別:
男性
趣味:
プログラミング、XOPS
自己紹介:
東海地方在住です。
最新コメント
[11/30 NONAME]
[11/22 NONAME]
[09/24 NONAME]
[06/10 NONAME]
[01/29 NONAME]
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
Prev Month12345678910111213141516171819202122232425262728293031Next Month
OpenXOPS DXライブラリ移植サンプル公開
大変お久しぶりです。
約10ヶ月ぶりの更新です。


本日2026年8月12日、OpenXOPSの公式サイトにてOpenXOPS 1.080を
ベースにDXライブラリ(DXLib)に移植したサンプルを公開しました。
ソースコード込みでDLできます。

OpenXOPS公式サイト
 http://openxops.net/
サンプルDLページ
 http://openxops.net/developer-sample.php

DXライブラリは、山田巧さんによって開発された無料のC/C++向けゲーム
開発用ライブラリです。
 DXライブラリ置き場
 https://dxlib.xsrv.jp/
DirectX APIやWindows APIを使わなくても、C/C++の知識があれば簡単に
Windows向け3D/2Dゲームが作れることが特徴です。

今回のサンプルは、OpenXOPSの描画・入力・サウンド・その他ウィンドウ
処理などをDXライブラリに移植したものとなります。
DirectXやWindows APIの細々した処理が全てDXライブラリに置き換えられて
いるため、OpenXOPS純正のソースコードよりも該当部分はシンプルになって
いるはずです。


本サンプルは、以下のような人に向いています。
・既にDXライブラリに慣れ親しんだ人。
・DirectX APIやWindows APIの習得、およびDirectX SDKの導入にハードル
 を感じる人。
・DXライブラリを用いて、3D FPSゲームの開発/実装を学びたい人。
・OpenXOPSのプラットフォーム依存処理を別ライブラリへ移植する
 ことを検討している人。(その際の参考資料として欲しい人)

当然exeだけではなく、ソースコードが入っています。
(言うまでもなくむしろソースコードが本命)
基本的な使い方は、
 1、DXライブラリを導入したVisual Studioプロジェクトを用意する。
 2、本サンプルのソースファイル一式をプロジェクトへ追加する。
 3、本家XOPSのdataフォルダーとconfig.datを用意する。
 4、ビルドして.exeを生成。.exeを実行する。
です。
詳細はサンプル同梱のreadmeをご覧ください。

まぁ端的に言えば、DXライブラリをDLして導入した後に、本家XOPSの
dataフォルダーとconfig.datを用意すれば、もう動きます。
あとはOpenXOPS改造し放題です(^^

基本的に前述の処理部分をDXライブラリに移植した以外は、OpenXOPS
そのままの形になっています。
AI(NPC)や物理計算、武器などのパラメーター、マップミッションの
読み込み処理、といったところは一切手を加えていない(はず)です。
後の設計・実装の細かい話は「(ソースコードを)見ればわかる」みたいな
話です。(雑

一点割と大きい話に触れておくと、readmeにも書いてあるのですが、
.xファイルの読み込み処理は自前で書いています。
DXライブラリにも(MV1と呼ぶべきか?).xファイルを読み込む処理が
標準で入っているのですが、使っていません。
 ※一部コメントアウトで部分的にはコード残っていますが、未使用です。
DXライブラリのモデルオブジェクト処理って、常にモデル+テクスチャー
をセットで管理して処理する設計思想なようなのですが、
XOPS・OpenXOPS系って、同一のモデルデータを複数テクスチャーで
使い回す構造なので。
一応DXライブラリにも MV1SetTextureGraphHandle() という関数はあって、
同一のモデルデータに別テクスチャーを適用することは不可能ではなく、
過去には実際それっぽい実装も試したのですが・・。
OpenXOPSと相性が悪く、既存設計とイマイチ合わなかったのでやめました。
まぁ、こればっかりはOpenXOPSとDXライブラリの設計思想の違いなので
仕方がないです。どちらが良い悪いとかそういう議論では一切なく。

.xのモデルデータ自前読み込み、めちゃくちゃ面倒くさかったです(^^;
1.080でもOpenGL版では.xファイルの自前読み込みを行っているので、
最初(当初)はそのままコピペで流用していたのですが。。
試しているうちに、OpenGL向けに作っていた読み込み処理はファイル依存
が激しい設計でなかなか酷く、クソ実装で使い物にならないことが判明。
(誰が作ったんや! ・・・あぁ俺か。)
なので、今回DXライブラリ向けとして全面的に新規に作り直しています。
居るか分かりませんが、OpenXOPSのOpenGL版を使っている開発者は
今回のDXライブラリ版のロジックを持ってきた方が良いと思います。(汗
まぁもしかしたら、既に各自で作り直しているかもしれませんが。
後日、OpenGL版にもコミットします。
 ※DirectX版はDirectX APIを使っているので問題ないです。念のため。


せっかく触れた機会なのでついでに書いておくのですが、
実は、このDXライブラリ移植サンプルですが、直近 急に生まれたものでは
ありません。
何年も前から移植作業はしており、2020年時点では1.020、1.045、1.055
の各バージョンをベースにしたものが手元には存在していました。
・公開するかしないか? どうやって公開するか?
・公開したところで誰が求めるのか?
・OpenXOPS本流の純正版と統合するかしないか?
・(今回のように)別サンプルとして公開する場合、今後OpenXOPS本流
 のアップデートを追いかけて更新し続けるのか?
など色々考えていたのですが、
前述の「向いている人」の説明の通り、出したら出したで誰か有効活用して
くれるかもしれませんし、手元で漬物のごとく眠らせておくのはもったいない
気がしたので、出すだけ出すことにしました。
迷いつつも最終的に出すこと自体を決めたのは、割と直近で数日前です。

さすがに2020年6月の1.055ベースでは古すぎるので、純正版として公開
されている中で最新の1.080をベースに移植し直しています。さすがにね。
なお、現時点では今後OpenXOPS本流のアップデートに追従させることは
考えていません。あまりにDXライブラリ移植版の反響が凄かったり、
強い要望があれば考えても良いのですが。

開発担当としては、どこかで役に立つことを願っています。
category : ソフト・ツール開発 comment [0]
PR
COMMENTS
【本文以外は任意項目です】
SUBJECT(タイトル)
NAME(お名前)
MAIL(メールアドレス)
HOME(サイトURL)
COMMENT(本文)
PASS(削除パスワード)
Secret?(管理者へのみ表示)

※スパム防止のため「Hello!」「website」「ブランド」「みかんの戦闘ブログ」
「http」などの一部キーワードを禁止しています。ご了承ください。

← NEW LOG - MAIN - PREV LOG →

※過去のブログ記事は 原則として編集・修正していません。
 各記事の内容は投稿時のものであり、現在では異なる場合があります。
 最新の情報は、関係する内容について書かれた 最新の記事をご覧ください。

TOP