スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【ゲーム開発】新しい描画システムを導入

訓練所の全武器制覇まで達成し、
モンハン全クエが本当の意味で終了しました。
残す所勲章集めくらいです。


ま、それは置いといて、
何回か言葉で出てきたと思いますが、ようやっと新しい描画システム実装できました。
ちょっとした不具合が昨日見つかったのでソレは要修正です。

で、今回の導入に至ってですが、
機能修正や追加、作りの改変等やりたいことが多かったので
修正を兼ねるのと、一ヶ月半程モンハンで空いてて何やってたか、
関数の使い方を忘れてる等があってプロジェクトを一から作り直しました。
今はばっちり把握出来ました。


サンプルでは上手い事いけてたんですが、
いざ実装すると意味不明な所で落ちてなんでやねんという状態から始まり、
登録した覚えのないオブジェクトが大量に登録されてたり(約350個程)
落ちてる場所とは違う所でデバッガが止ったりと、ちょっと大変でした。


意味不明な所で落ちてたのは出力ウインドウにデバッグ情報を出力する関数・・・
というかマクロを組んでトレスしたら結構早い段階で見つかりました。
OutputDebugString 関数をつかったマクロです。


// ログ出力用マクロ
#ifdef _DEBUG
#define DEBUGOUT(Str, ...)\
{\
char wDebugStr[512];\
sprintf_s(wDebugStr, Str, __VA_ARGS__);\
OutputDebugString(wDebugStr);\
}
#else
#define DEBUGOUT(Str, ...)
#endif


これの前は、ファイルに出力してたんですがいちいちメンドイので廃止しました。
printf 感覚で使えるのがいいです。
C++ 使ってるので << 演算子とかオーバーロードしてみよっかなぁ~と思ったんですが
そこまでしなくてもいいかなってことでやめましたw
気が向いたらデバッグ用のクラスとして何か作るかもしれません><


とまぁ、これで変数の中身を出力したり、文字列出力出来るので便利かな?
こまめにコメントや、変数の中身を出力しながら戦ってました。



登録した覚えのないオブジェクトに関してはこちらの設計ミス。
継承させるクラスをミスしてて、それが影響して勝手に登録されてました。
こちらは継承を修正して大丈夫でした。

今の状態でタイトルに約350個もの描画対象があれば不自然ですw
パーティクルとか使ってるなら別ですが、そんな豪華なもの今はありません><


とりあえず今の所各シーン毎に画像を読み込む形に変えようかなと思ってます。
どうせPCだし、いっぱい読み込んでも 50MB も喰わんってことで
最初に一気に読み込む形にしてました。

どっちがいいかは解らないです。
最初に読み込んでおく方が個人的には楽ですw
ただ、メモリの使用量は抑えといた方がいいのかな?と言う感じです。


この新しいのにちょっとした問題を抱えております。
描画する対象がコンストラクタを呼ぶタイミングで
描画システムに登録される仕組みになってます。
なので、今は描画しなくてもいいオブジェクトも登録されてます。

回避案は思いついた限りで三つ。
[1] 実際描画したい時にインスタンスを生成するように変更する
[2] 描画をするのかしないのかをフラグで管理する
[3] このシステム案を廃止する


と言う感じです。
[1]は結構メンドイです。
登録は自動ですが、今度はインスタンスの管理をしっかりやる必要があります。
初期化のタイミング、破棄のタイミングを常に気にしなければいけないのがネックになりそうです。


[2]は一番簡単な回避方法でちょっとした追加でいけそうな気もします。
Flag が ON なら描画させる。 OFF なら描画させない。
リストに追加されたままフラグでどうするかを見る方法なので、
描画しないオブジェクトに対してもループしなければなりませんし、
一つ一つチェックする処理が入るのでどうかなとは思います。

これも[1]のように、描画するのかどうかを管理しておく必要があります。
[1]よりは修正箇所が少ないはずです。


[3]も実は悩んでます。
入れてみたものの実際使いにくいんじゃないのかって言う事態が発生してます。
使いやすければいいのですが、使う前から不安要素が出てきているので
ちょっと怪しいです。
一端[2]を実装してみようと思います。






とりあえず今回の改変でグローバルオブジェクトを廃止しました。
そのままでもよかったんですが、どうせ最初からって事ならこの際と思いまして。


で、スクリーンキャプチャの機能を実装したいんですが
どうしてもフルスクリーンのキャプチャが駄目なんですよね・・・。

ウインドウモードはバッチリ撮れてます。
フルスクリーンは確かに保存された画像の縦横サイズがフルスクリーン(1280*1024)なのですが
実際キャプチャされてる画像はウインドウモード(640*480)のサイズなんですよね・・・。

ウチの環境で、1280*1024のサイズで保存されて、
640*480の部分だけにキャプチャ画像がある感じ。
残りの空白は黒色です。
何が原因なのかさっぱり解らんのでこれも見ていかなければなりませぬ。
そんまま保存するだけじゃだめなのかな・・・。


そんな訳でかなり後退してしまいましたが、一応は前進した感じになってるはずです。
最後に、獅電のボムカットイン絵が完成ってことで載っけときます。


獅電ボムカットイン

足をコピペしたとか内緒なんだぜ?


この記事へのコメント

トラックバック

URL :

検索フォーム
プロフィール

DVDM

Author:DVDM
自作ゲームの開発過程ブログ。
赤髪愛なら誰にも負けない。

 
Pixiv バナー


ブロとも申請フォーム
最新記事
カテゴリ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
ブロとも一覧
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。