コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
ろどに ◆vU1zN5Kpe4Y3
2018/8/23 16:57
情報交換
VSYNCの位置
私はメインループの最初に書くのですが、皆さんどうしてますか?
理由:最後に書くと、ループ1回目と2回目の間にウェイトが入らないから。

コメント

アバター
こういち 2018/8/23 17:07 ◆ou0jbJnEJ0Kb
最初派です。
理由:CONTINUE対策(そもそもBREAK、CONTINUE、GOTOは使わない派ですが…)
アバター
あまさとしおん 2018/8/23 17:19 ◆mzDKTVUAtwqE
最初
アバター
だにえる 2018/8/23 19:46 ◆m76OCAQyrWGt
最初派✊
アバター
あきと 2018/8/23 21:29 ◆qGd5dQw2g3a2
ループの最後
アバター
クロマリオ 2018/8/23 21:30 ◆jST6XW8BxBax
最初派多いな…俺は最後派
まあ、VSYNCではなくWAIT使ってる変わり者だけど。
アバター
こういち 2018/8/23 21:32 ◆ou0jbJnEJ0Kb
ボクもWAIT派です。
アバター
ぷちぷち 2018/8/24 8:06 ◆kpPS9hWwTEKE
最初や中間に書くこともあるけど、
最後派ですね。
VSYNCをしないでループを回す強引な早送りモードとかつけやすいですね
アバター
Ryou Tanpo 2018/8/24 12:24 ◆AI5iRr9FjmkJ
最初に VSYNC 置く派です。

WHILE 1
 VSYNC
 ...
WEND
アバター
だにえる 2018/8/24 14:04 ◆m76OCAQyrWGt
(尚、STGツクールのタイトル画面に限ってはVSYNCやWAITは一切使われていない)
アバター
SilverBlue(with PC) 2018/8/24 16:56 ◆Bz8zeG7wRHNQ
最後派
アバター
moi 2018/8/24 17:15 ◆hL/XpFV8MD2F
I VSYNC it last.
僕は最後にVSYNC。
アバター
ろどに 2018/8/24 19:14 ◆vU1zN5Kpe4Y3
分かれますね…
サンプルプログラムでは最後に置いてあるので不安だったのですが、
最初派も一定数いるようで安心しました
アバター
SilverBlue(with PC) 2018/8/24 20:29 ◆Bz8zeG7wRHNQ
vsyncって動詞だったのか...(困惑)
あとlastよりin the lastの方がいいのでは
アバター
SilverBlue(with PC) 2018/8/24 20:29 ◆Bz8zeG7wRHNQ
これもうわかんねぇな
アバター
おちゃめ 2018/8/24 21:53 ◆jH1opV6FnGyx
VSYNCはループ内で確実に実行できる場所であればどこにおいても問題ありません。(ちなみに私は最後に置くことが多い)
BREAKやGOTOでループから抜ける場合には「確実に実行できる」ためにはBREAK、GOTOより前に置く必要があります。
VSYNCはRUNをしてから最初の1回目はスルーされる仕様となっている(VSYNC命令は前回のVSYNC命令からの経過時間が指定値より大きい場合はスルーされる)ために最初の方が望ましいという意見があるのも事実ですが、60fpsで動作しているゲームであればVSYNCの代わりにWAITを使えばこの問題はなくなります。

ループ内のどこに置いても良いとはいえVSYNCは元々表示の垂直同期とのタイミングを取る命令なので画面表示の途中でVSYNCを挟んでしまうと表示の途中の状態で垂直同期のタイミングまで待つことになるため表示が乱れたりちらついたりする可能性があります。
また、ボタン入力等も垂直同期のタイミングで情報更新されているためVSYNCを挟んでボタン入力判定を行うと正常に判定ができない場合があります。

ボタン入力や表示のタイミングは考えるのが面倒というのであれば、ループ内の最初と最後のどちらかに置けば問題ありません。
これはBREAKを行わない場合は好みの問題でしょう。

詳しくは私のプチコン3号入門講座を読んでください。
http://ochameclub.web.fc2.com/petitcom3/lecture/vsync.htm
アバター
おちゃめ 2018/8/24 21:54 ◆jH1opV6FnGyx
ちなみに私のQSPでループの最初と最後のどちらが多いかを数えてみたら最初が7、最後が11でした。(VSYNCはゼロ個ですべてWAITで記述)
http://ochameclub.web.fc2.com/petitcom3/soft/qsp.htm
最後派の割りには最初に記述しているものが多いのですが、それはQSPでは「どちらに記述したら短くできるか」ということを重視しているためです。
短くするためには「記述しない」という選択もありです。(私のQSPの半数はメインループ内にVSYNCもWAITも記述していない)
もちろん、これはVSYNCやWAITを記述しなくても支障のないプログラムに限られます。

「PETIT PAINT 2 QSP」(冒頭のプログラム)では「短くするため」だけではなくちゃんと意図があってWAITを省略しています。(普通のお絵かきツールではあり得ないこと)
VSYNCやWAITを付けないと誤動作をすることがあるのですが、それを逆手に取ったプログラムの例といえます。(どういうことかは、詳しくはプチコン3号の本「プチコン3号 QSP究極完全マニュアル」を参照)
http://ochameclub.web.fc2.com/petitcom3/soft/qsp2.htm#pnt2

プログラミングには正解はありません。
自分が意図した通りに動いていればどのような記述であっても問題はないのです。
アバター
Soybeanman 2018/8/25 20:13 ◆/ggd1c6ZKIiI
私は最後にWAITですね。
VSYNCだとたまにBUTTONが誤作動することがあったので(おちゃめさんの解説にも書いてありますね)

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -