忍者ブログ
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール
HN:
[-_-;] (みかん)
性別:
男性
趣味:
プログラミング、XOPS
自己紹介:
中部地方在住です。
最新コメント
[11/30 NONAME]
[11/22 NONAME]
[09/24 NONAME]
[06/10 NONAME]
[01/29 NONAME]
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
Prev Month123456789101112131415161718192021222324252627282930Next Month
そろそろ限界か
・・・「やり残した」というより「時間が無かった」って感じだなぁ
 (意味深?


OpenXOPSの開発ですが、とりあえずやれるところはやったようで、
最近は落ち着いてきています。
ピークはいつだったのかと聞かれると難しいですが、超ハイペースで
作業できていた時と比べて、開発ペースが落ちていることは認めざる
負えません。

残るは、OpenGLコアを載せて、人と弾の当たり判定を作り直したら
ひと段落かな。
それと、血などの描画サイズが違うとか、一部効果音の再生音量が
異なるとの報告も頂いてるいるので、その辺も修正したりとか。

本来は相違点ゼロを目指すべきですが、さらなる改良(相違点の改善)
が難しいレベルに達しつつあります。
これ以上本家XOPSを再現するのは、技術的に不可能だったり、ある
いは手間と時間が掛かり過ぎるため現実的ではなかったり。
最も分かりやすいのは、人とマップの当たり判定とか、他多数。

そろそろ開発から次のステップに進む時なのかもしれません。
OpenXOPSを、いかにして世の中に広めていくかを真面目に考え
ないといけないですね。ユーザーコミュニティ(掲示板?)の用意は
必須だろうなぁ。


OpenXOPSのニコ動向けの動画について、実は既に3本目の動画も
ある程度ネタを思い付いているのですが、やはりネタ仕込みをする
時間がありませんorz
(1本目・2本目にコメントを残して頂いた方々、ありがとうございます。)

4月1日のエイプリルフールも色々考えていたのですが、やはり実行
する時間がなさそうです。
category : ソフト・ツール開発 comment [0]
PR
OpenXOPSの1.011「手榴弾投げ」にバグ
突然ですが、4月から名古屋に住むことになりました。
各所で公言している通り今は東京に住んでいますが、諸事情により
3月中に名古屋に引っ越さなければなりません。
「荷物」という名のガラクタを全部捨てて、物を減らさないとorz


2月22日に公開したOpenXOPS 1.011ですが、バグがあるようです。

AIの「手榴弾投げ」パスに対する処理について、正しい高さに投げない
ようです。
一部標準ミッションのプレイにも支障が出るレベルで、場合によっては
上手く動作しないaddonもあるかもしれません。

不具合自体は初歩的なミスだったので解決は容易だったのですが、
修正したバイナリ版の公開は、次回バージョンアップ時に合わせたい
と思います。


全く関係ないですが、色々な経緯で去年12月から務めさせて頂いている
Invisible Alpaca(IA)のアドバイザーについて、自分は少々勘違いを
していたようです。
就任当時の記事では、務めさせて頂くからにはそれ相当の責任がある
と考えていましたが、実際にはかなり緩い雰囲気でした。
あまり細かいことは考えずに、楽しむことを最優先でやっていこうと
心を改めることにしました。
category : ソフト・ツール開発 comment [2]
GLUTなしでglGenTextures()関数を使う
このブログ初のOpenGLネタです。
OpenXOPSの件で試しに使ってみると、ハマった点があったのでメモメモ。


OpenGL 1.1でテクスチャをGPUに転送する場合、glTexImage2D()関数が使えます。
複数のテクスチャを使う場合も、その都度glTexImage2D()関数で転送することも
不可能ではないですが、枚数・種類や切り替えタイミングが増えるとパフォーマンス
に影響します。

そこで、OpenGL独自の「テクスチャオブジェクト」と呼ばれるものを作成し、予め必要
なテクスチャを転送しておくことで、(毎フレーム大量のテクスチャ情報を転送する必要
がなくなり)パフォーマンスが向上します。
glGenTextures()関数でテクスチャオブジェクトを作成、glBindTexture()関数を用いて
バウンド(指定)します。後はglTexImage2D()関数で転送します。
毎フレーム描画する際に、必要に応じて再度glBindTexture()関数を呼び出せば、
予め設定したテクスチャを指定できるっといった感じです。
テクスチャオブジェクトは、不要になった時点でglDeleteTextures()関数で解放します。
 (OpenGLの詳しい使い方は、他の文献を参考にしてください。)

何も知らずに、逐一glTexImage2D()関数でテクスチャを転送する設計で作ってしまい
ました (汗
描画の高速化を試みるため、テクスチャオブジェクトを活用することにしたのですが、
うまくテクスチャが読み込めません。
VC++のデバック機能を活用して色々調べた結果、テクスチャオブジェクトを作成する
glGenTextures()関数の動作がおかしそうだと気が付いたものの、サンプル通りの
関数呼び出し手順や引数でも動かず困っていました。

各参考文献と明らかに異なる点は、GLUT(OpenGL Utility Toolkit)を使う前提の
サンプルが多い中、自分は使っていない点です。
まさかと思いGLUTとの関係性を調べてみると、どうやらGLUTを正しく初期化しない
と動作しないとの解説を発見。
あぁこりゃダメだ っと諦めかけたその時、デバイスコンテキストを正しく用意してあげ
れば動作するとの報告が。

そんなこんなで、GLUTを一切使用しなくてもWinAPIで動作させることに無事成功
したので書いておきます。
--------------------------------------------------------------------------------
    //デバイスコンテキストのハンドルを取得
    HDC hDC = GetDC(hWnd);

    //カレントコンテキストに設定
    wglMakeCurrent(hDC, hGLRC);

    //テクスチャオブジェクトを生成
    glGenTextures(1 , &textureobj);

    //デバイスコンテキストのハンドルを解放
    ReleaseDC(hWnd, hDC);
--------------------------------------------------------------------------------
(全角スペースがいっぱい入っているのでお気を付けあれ~)

とりあえずこれで動きました。
経験豊富な方からすれば、もっと効率的で良いやり方があるかもしれません。


注意:
使用環境は、Windows7 VC++2008 OpenGL 1.1です。
OpenGLを始めたばかりで良く分かっていません。
よって、記述の正当性や効率・動作速度などは、自信も保証も一切ありません。
category : ソフト・ツール開発 comment [0]
送って頂いたメールを見て思うこと
先に言っておきます。 今回はダラダラ独り言を書く回です。
OpenXOPS開発ネタなど有益(か?)な情報を期待している方は
読んでも時間の無駄です。


ご存知の方も多いように、私は日頃Yahoo!メールを使っています。
去年(2014年)7月にWEBメーラーがリニューアルしてから一気に
使いにくくクソになりましたが、それまではブラウザ上の画面も軽くて
使いやすく、迷惑メールの判別も高精度で、無料でも10GBも使える
ことなどが気に入り何年も使っています。

XOPS界で活動を始めた2006年から、XOPS関係者数十名(百人
いくか?)から様々なメールを頂き、コミュニケーションを取っていま
す。当然、既に連絡が取れない方々ばかりで、今でも連絡が取れる
のは何人かしかいないと思います。
事故で消した数件を除き、原則として全てのメールを保存している
はずです。

XOPSに限らず、様々な案件で数年前のメールを検索し引っ張り
出して調べることが多々あるのですが・・・、いやー色々な人が
いたなぁっと。
category : 管理人の独り言 comment [0]
OpenXOPSをOpenGLに移植してみた
えぇ、もう3月じゃん。 <急にどうした

Invisible Alpaca主催の、第十回親睦戦に参加してきました。
パックは「Qq」で、私のプレイヤー名は xopsplayer でした。
マップと武器が最後まで分からず、まともな戦略を立てないまま場の
流れで適当にやっていたので、終始”動く的”になっていましたw


前にちょっと書いた通り、OpenXOPSをOpenGLに移植してみました。


(クリックで拡大)

本家XOPSはDirectX 8.1、OpenXOPSは現状DirectX 9.0cを使っています
が、今回グラフィック周りをOpenGLに乗せ換えてみました。
OpenXOPSはRev.55を元に、グラフィック周りをOpenGL 1.1に移植して
います。 コンパイル環境はVC++2008です。
基本的にはD3DGraphicsクラスをごっそり入れ替えただけで、他の部分は
殆ど触れていません。

OpenGLとか初めて触ったので、色々分からないことがたくさんあって大変
でした。 にしても、初めてOpenGLを使って作った3Dゲームで、いきなり
XOPSレベルのFPSゲームになるとは・・・。


上の画像ではうまく誤魔化していますが、実は致命的な問題点が2点あり
ます。
 ・テクスチャは.bmpファイルと.ddsファイルしか対応してない
 ・システムフォントの表示に非対応

前者は、テクスチャの読み込み部分を独自に書いているためです。その
フォーマットを選んだ理由は、とりあえずTENNKUU氏のグラフィックデータ
に対応させるため。
残念ながら殆どのaddonは、正しくマップが表示されません。
まともに使うならば、llibjpegとlibpngを乗せるか、OpenCVでも使うべきだ
と思います。

後者は、OpenGLをやったことある人なら分かる通り、Windowsに依存す
る部分で、なんか面倒くさかっただけ。
まぁ、標準ミッションプレイするだけなら、ブリーフィング文章とかイベント
メッセージくらい読めなくても大して問題ないですし。

これら以外にも細かな不具合がありますが、まぁ近いうちに修正できるで
しょう。きっと。


なお今回はVC++を使いましたが、BorlandC++でもそのままコンパイル
できました。
さらに一部ヘッダーファイルを追加すれば、GCC(MinGW使用)でも無事
にコンパイルできるようです。

今回の成果物であるOpenGLのソースは、近いうちにOpenXOPS自体にも
載せる予定です。
標準では、今まで通りDirectXのプログラムをコンパイルする設定にしておき、
定数を変更することでOpenGLを有効化してコンパイルできるようにする
つもりです。
category : ソフト・ツール開発 comment [1]
[36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46]

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

TOP