作者chenglap (無想流流星拳)
看板GameDesign
標題Re: [請益] 整個遊戲設計結構
時間Wed Dec 26 23:27:23 2012
※ 引述《yoll522 (522)》之銘言:
: 我遊戲的主迴圈大概如下
: while(quit!=ture){
我不懂 SDL.
但我建議你用 timer 回圈, 而不要用 while loop, 因為這東西
代表將你的所有系統機能吸盡.
這會產生兩個壞處:
1. 在不同的電腦上, 效能會不一樣
2. 一 frame 裡的動作沒必要地精細
後者的問題就是, 你一秒到底檢查過多少次輸入, 以及做過多少
次輸出? 我認為你是過多了. 人類來說, 25 fps 已經去到很流
暢的效果, 也就是說, 一秒只需要執行 25 次. 而 60 fps 再上
去就沒有意義了.
從你寫的看, 我懷疑你執行了超過 60 次, 那就是效能上的浪費
. 另外更新顯示(輸入輸出)和遊戲邏輯運作, 應該使用不同的迴
圈. 盡可能將遊戲邏輯和系統邏輯分離, 方便移植.
: 當然也有可能是我那些函式的內容設計的不夠好才會造成延遲 @@
: 不好意思麻煩各位高手給點意見,謝謝
--
戰略遊戲版 SLG
(C)lass > 8 戰略高手 > 11 GameTopics > 28 SLG
絕望人民共和國官方網站...
http://chinesepeking.wordpress.com/
--
1F:→ VVll:用while當然也是可以 但必須加個sleep避免 系統資源 被綁架 12/26 23:49
2F:推 yoll522:請問什麼是timer loop? 12/27 00:30
3F:→ yoll522:感謝大大的提醒,難怪我之前再用執行緒時如果while 12/27 00:30
4F:→ yoll522:沒有delay一下,程式一直行瞬間當掉,大概就是因為 12/27 00:31
5F:→ yoll522:我執行緒的while把所有效能全部吃光了 12/27 00:31
6F:→ yoll522:另外你說的遊戲邏輯跟系統邏輯我之前也沒想到,感謝你 12/27 00:33
7F:→ yoll522:等之後有時間的話我想再重寫一次整個遊戲架構,不然好爛 12/27 00:34
8F:推 fasthall:可參考看看MVC pattern 找些開源的遊戲來看看source code 12/27 01:34
9F:推 juicefish:25fps是指人眼普遍的最高視覺頻率 在指令鍵簡單的可以 12/27 03:16
10F:→ juicefish:60fps甚至120fps那種比較是格鬥或動作遊戲比較需要用到 12/27 03:16
11F:→ juicefish:指令輸入的順暢感會有差異 12/27 03:17
12F:→ yoll522:瞭解了,感謝你們的幫忙 12/27 07:39
13F:推 BSpowerx:就算用delta time去控制速度,也要設一個sleep把fps控制 12/27 09:29
14F:→ BSpowerx:在60,畢竟超過60基本上沒什麼意義 12/27 09:29
15F:推 yoll522:原來如此,我那時候以為既然有delta time的話就不需要限制 12/27 09:43
16F:→ yoll522:fps了,結果卻造成系統浪費效能,感謝你們的幫忙與提醒 12/27 09:44
17F:推 yoll522:之前沒限制的時候我fps時cpu跑25,限制fps60後cpu是2 12/27 09:47
18F:→ yoll522:之前沒限制fps的時候我cpu是25『上一行打錯』 12/27 09:47
19F:推 LayerZ:fps要看遊戲說,對FPS這種類遊戲100fps跟120fps其實還是有 12/27 10:07
20F:→ LayerZ:差別..會影響到一瞬間甩槍的精準度 12/27 10:07
21F:→ LayerZ:我甚至覺得只要能自由調整視角的都要維持60..不過這好像比 12/27 10:09
22F:→ LayerZ:較難辦到 如果視角固定,又沒有太多瞬間的動作 30fps還ok 12/27 10:10
23F:→ azureblaze:視角會動的低於45我就分得出來 12/27 10:18
24F:→ azureblaze:高於60一般沒意義,因為顯示器通常是60Hz 12/27 10:18
25F:→ LayerZ:給樓上,我以前也是這樣覺得,現在似乎不只了.. 12/27 10:20
26F:→ VVll:玩第一人稱射擊 FPS 30跟60就很明顯 12/27 21:32
實話說, 我一向都是用 10 fps.
※ 編輯: chenglap 來自: 61.18.51.146 (12/27 21:34)
27F:推 Bencrie:開 vsync 就會自己鎖 fps 了,省效能又可以消除 tearing 12/28 00:47