HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0303
Ve画像によって画面がチラチラする10解決


Ve

リンク

2009/3/3(Tue) 18:04:02|NO.23702

製作中のゲームで画像によって画面がチラチラと点滅のような減少が起こります。
プログラムの問題なのか画像の問題なのか分かりません。


;ウィンドウの大きさ、1=1倍、2=2倍 wsize=1 ;ウィンドウサイズ指定 dialog "2倍で表示しますか?",2 if stat=6:wsize=2;はいが押されたら2倍に。 dialog "マップ1で表示しますか?",2 buffer 5 if stat=6{ picload "map.bmp" ;マップ画像 }else{ picload "map2.bmp" ;マップ画像 } buffer 2 ;バッファ buffer 7 : picload "char.bmp" ;キャラ画像 buffer 3,480,480 ;マップ repeat 841 pos x*16,y*16 if t=0{ gcopy 5,0,0,16,16 t=1 }else{ gcopy 5,16,0,16,16 t=0 } x++ if x=29:x=0:y++ loop ;拡大用 buffer 10,240,240 ;メインウィンドウ screen 0,240*wsize,240*wsize //初期状態 cx=12 cy=12 *メイン stick key,15 gosub *マップ描画 gosub *キャラ移動 gosub *キャラ描画 gsel 10 gmode 0 color:boxf pos 0,0 gcopy 2,((cx*16)-112)+tx,((cy*16)-112)+ty,240,240 gosub *描画 await 32 goto *メイン *キャラ移動 ;-------移動処理------- if movecnt=0{ if key&15{ //縦横移動 // 左:1, 上:2, 右:4, 下:8 if key=1:movex=-1 if key=2:movey=-1 if key=4:movex=1 if key=8:movey=1 } } if movecnt=0{ if (movex!=0)or(movey!=0):movecnt=16 } if movecnt!=0{ // 左:1, 上:2, 右:4, 下:8 if movex=-1:tx-=2 if movey=-1:ty-=2 if movex=1:tx+=2 if movey=1:ty+=2 movecnt-=2 if movecnt=0{ cx+=movex cy+=movey movex=0 movey=0 tx=0 ty=0 } } return *キャラ描画 ;描画 gsel 2 gmode 2 pos (cx*16)+tx,(cy*16)+ty gcopy 7,0,0,16,16 return *マップ描画 gsel 2 gmode 0 pos 0,0 gcopy 3,0,0,480,480 return *描画 gsel 0 gmode 0 pos 0,0 redraw 0 if wsize=1{ gcopy 10,0,0,240,240 }else{ gzoom 240*wsize,240*wsize,10,0,0,240,240 } redraw 1 return

※問題となるプログラムから関係する箇所だけ抜き出しています。
※下記から問題となるソース+画像入りをダウンロードできます。
http://vel.go2.jp/test090303.zip

画面サイズのダイアログの次に出てくるダイアログで”はい”を選ぶとチラチラします。
”いいえ”を選ぶとチラチラしないという結果が出ます。

どういう事か説明ないし改善点がありましたらお願いします。



この記事に返信する


レヴィン

リンク

2009/3/3(Tue) 19:49:53|NO.23703

確かにマップ1選択すると、2を選択した時に比べちらつくという印象は
あります。
しかし、マップチップのファイル名を入れ替えてみると、今度は
マップ2(チップは1のもの)でちらつきが起きているように見えます。

このことからおそらく目のせいではないかと思います。

見る側の目にはそう見えているものの、実際はちらつきなど起きてはいないのでは?



neko

リンク

2009/3/3(Tue) 21:19:45|NO.23704

一瞬暗くなってチラついているように見えるのは
スクロールにgcopyを使っているからではないでしょうか。
grollを使えば解消できるはずです。



Ve

リンク

2009/3/3(Tue) 22:14:32|NO.23706

>groll
使用後のソースを添えてくれるとありがたいです。
1倍・2倍表示でgcopyおよびgzoomは必ず使うので。



neko

リンク

2009/3/3(Tue) 23:21:07|NO.23707

grollのサンプルはhsp31\sample\new\内にマウス用がありますが、
基本的にはこれと同じような考え方でなんとかなるんじゃないでしょうか;

screen 0,1200,600,0,,,480,360 repeat 6 y=cnt*100:i=cnt repeat 12 x=cnt*100 if i&1 : color 255,0,0 : else : color 0,0,255 boxf x,y,x+100,y+100 i++ loop loop color 255,255,255 font msgothic,120 pos 20,320: mes "カーソルキーでスクロールできます。" *main await 0 stick key,15 ; キー入力 if key>0 { x=ginfo_vx y=ginfo_vy mx=0:my=0 if key&1 : mx=-1 if key&4 : mx=1 if key&2 : my=-1 if key&8 : my=1 groll x+(mx),y+(my) } goto *main



Ve

リンク

2009/3/4(Wed) 00:46:06|NO.23708

現在のプログラムに沿ってソースを出して欲しかったんですが…



船丸

リンク

2009/3/5(Thu) 23:44:41|NO.23741

僕は、フレームが少ないからちらつき?が出ているのだと思います。
もうちょっと細かくしてみたら?
await 16みたいに。
そして、移動速度を半分。



Y+Y=M.H

リンク

2009/3/6(Fri) 01:49:39|NO.23742

30FPSにしたいならば、普通に考えればawait 33になりそうですが、
私も色々と試したところawait 30が色々な面で安定しています。
なので、私の作品のRPGは全て30FPS相当ですが、await 30にしています。
また、黒と赤のコントラストの強さも一つの原因ではないかと思います。

とりあえずは、船丸さんもおっしゃるとおりawaitの値を調整してみてはどうですか?



Ve

リンク

2009/3/6(Fri) 12:05:25|NO.23744

床チップのコントラストと細かさを減らしてawait 10ぐらいに落ち着きました。

await値が大きいとCore2DuoのPCだとチラついて、Athlon64だとチラつかない
await値が小さいとCore2DuoのPCだとチラつかず、Athlon64だとチラつきはないけど重い

…という八方塞がりな問題なので、開発はawait 10で、
重い人用にawait値の変更に対応させていきます。


原因解決したわけではないけど一応解決…と



s

リンク

2009/3/6(Fri) 15:56:05|NO.23747

await 1〜15ってHSPだとあまり変わらない気がしました。
await 16は安定しやすいのでそちらをおすすめしますが

解決ということなので以上にさせていただきますmm



Ve

リンク

2009/3/7(Sat) 02:37:55|NO.23750

await 16でもチラつくそうなので書かなかったんですが。
まぁもうこれ以上話す事もないで以降はスルーしてもいいですかね。



ONION software Copyright 1997-2021(c) All rights reserved.