まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
*6/20 追記
下記の問題はhspdxfixの作者であるSinagawaさんにより修正されています。
最新のDLLはDivide by 0よりダウンロード出来ます。
**********************************************************************
前々から気になっていた事があります。
es_window命令についてなのですが、この命令のヘルプには
「この命令により、スプライトを画面内の限られた範囲内にのみ表示することが
可能です。指定した範囲内がスプライトの表示エリアになります。」
とあります。
ヘルプを読む限りでは、指定した範囲のみスプライトが描画されるような命令に思います。
ですが私が初めて使用した時は、指定した範囲を超えてもスプライトが表示されていました。
なので、こんなもんなんかな?と思ってハミ出した所はes_fill命令で塗り潰していたのですが
先日、マクセル手動ブログさんの6/15のエントリーを読んでいると
「es_windowが効かず、スプライト描画範囲をはみ出してても描画されてしまうというエラーに遭遇。
しかたなくes_fillで画面左右を塗りつぶして対処したマクセルであった。」
と書いてありました。
という事は、やはりes_windowは私の思っていたように描画範囲を指定すれば
指定した部分以外では描画されない命令って事になります。
でも、私のスクリプトでも実際にはハミ出して描画されていました。
で、簡単なスクリプトを作って検証してみました↓
es_window検証スクリプト
十字キーで自機移動、Zキーで弾発射です。
このスクリプトを実行すると↓のように真ん中の青い部分がes_windowで指定した
スプライト描画範囲なのですが、その範囲を超えて弾を表示してしまいます。
で、試しにこのスクリプトの10行目の「es_window 150,0,490,480」の第4パラメータ
を「es_window 150,0,490,479」と480から479に変更してみると・・・↓
ちゃんと描画されるようになりました!
色々と検証見てみた所、どうもes_screenとの兼ね合いでおかしくなるようで
es_screenで指定した解像度よりも、es_windowで指定した範囲のx軸もしくは
y軸のどちらかが(第3、第4パラメータ側)、同じかそれ以上になると、ハミ出して描画される模様。
このスクリプトで言うと
es_window 150,0,490,480 :NG
es_window 150,0,490,479 :OK
es_window 150,1,490,480 :NG
es_window 151,0,490,480 :NG
と言った感じでした。
これは、DLLの不具合なのかな?それとも私の使い方がおかしい???
よくわからないのですが、es_window 150,0,490,479とすれば
画面一番下の1ドットのみ表示されませんが、プレイには支障ありませんし
なにより、今まで行っていた画面右側を塗りつぶす命令(es_fill命令)を
行わなくて良いので、スクリプト自体も軽くなりますし、良い発見でした^^
下記の問題はhspdxfixの作者であるSinagawaさんにより修正されています。
最新のDLLはDivide by 0よりダウンロード出来ます。
**********************************************************************
前々から気になっていた事があります。
es_window命令についてなのですが、この命令のヘルプには
「この命令により、スプライトを画面内の限られた範囲内にのみ表示することが
可能です。指定した範囲内がスプライトの表示エリアになります。」
とあります。
ヘルプを読む限りでは、指定した範囲のみスプライトが描画されるような命令に思います。
ですが私が初めて使用した時は、指定した範囲を超えてもスプライトが表示されていました。
なので、こんなもんなんかな?と思ってハミ出した所はes_fill命令で塗り潰していたのですが
先日、マクセル手動ブログさんの6/15のエントリーを読んでいると
「es_windowが効かず、スプライト描画範囲をはみ出してても描画されてしまうというエラーに遭遇。
しかたなくes_fillで画面左右を塗りつぶして対処したマクセルであった。」
と書いてありました。
という事は、やはりes_windowは私の思っていたように描画範囲を指定すれば
指定した部分以外では描画されない命令って事になります。
でも、私のスクリプトでも実際にはハミ出して描画されていました。
で、簡単なスクリプトを作って検証してみました↓
es_window検証スクリプト
十字キーで自機移動、Zキーで弾発射です。
このスクリプトを実行すると↓のように真ん中の青い部分がes_windowで指定した
スプライト描画範囲なのですが、その範囲を超えて弾を表示してしまいます。
で、試しにこのスクリプトの10行目の「es_window 150,0,490,480」の第4パラメータ
を「es_window 150,0,490,479」と480から479に変更してみると・・・↓
ちゃんと描画されるようになりました!
色々と検証見てみた所、どうもes_screenとの兼ね合いでおかしくなるようで
es_screenで指定した解像度よりも、es_windowで指定した範囲のx軸もしくは
y軸のどちらかが(第3、第4パラメータ側)、同じかそれ以上になると、ハミ出して描画される模様。
このスクリプトで言うと
es_window 150,0,490,480 :NG
es_window 150,0,490,479 :OK
es_window 150,1,490,480 :NG
es_window 151,0,490,480 :NG
と言った感じでした。
これは、DLLの不具合なのかな?それとも私の使い方がおかしい???
よくわからないのですが、es_window 150,0,490,479とすれば
画面一番下の1ドットのみ表示されませんが、プレイには支障ありませんし
なにより、今まで行っていた画面右側を塗りつぶす命令(es_fill命令)を
行わなくて良いので、スクリプト自体も軽くなりますし、良い発見でした^^
PR
この記事にコメントする
見事改善されました。
こんばんは。
助言いただきました通り、es_windowの縦の高さを1ピクセル減らして実行してみると、見事にドンピシャで上手く表示されました!
色々試してみたつもりでしたが、1ピクセル単位の指定の違いというのはまったくの盲点でした。
DirectDraw使用時のスプライト消滅も、やっぱりこのes_windowの微調整でサッパリ解決してしまいました。
Divide by 0さんの掲示板を見てると、HSPDXFIXにも結構仕様の変更や未解決の不具合もあるようですね。
エフェクトを使わず作ろうとしてたので、これでDirect3Dモードやめてもいいかなと思いましたが、DirectDrawモードで終了後にエラーメッセージが出るっていうのがやっぱりめんどくさいので、今後もDirect3Dモードで作って行こうと思います。
本来必要ないはずのes_fillとかで強引に解決するのも、なんとなく精神衛生上よろしくないので、kt.さんのおかげですっきり眠れそうです。
ありがとうございました!
助言いただきました通り、es_windowの縦の高さを1ピクセル減らして実行してみると、見事にドンピシャで上手く表示されました!
色々試してみたつもりでしたが、1ピクセル単位の指定の違いというのはまったくの盲点でした。
DirectDraw使用時のスプライト消滅も、やっぱりこのes_windowの微調整でサッパリ解決してしまいました。
Divide by 0さんの掲示板を見てると、HSPDXFIXにも結構仕様の変更や未解決の不具合もあるようですね。
エフェクトを使わず作ろうとしてたので、これでDirect3Dモードやめてもいいかなと思いましたが、DirectDrawモードで終了後にエラーメッセージが出るっていうのがやっぱりめんどくさいので、今後もDirect3Dモードで作って行こうと思います。
本来必要ないはずのes_fillとかで強引に解決するのも、なんとなく精神衛生上よろしくないので、kt.さんのおかげですっきり眠れそうです。
ありがとうございました!
カレンダー
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 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事