Re: [程式] 前、後端物理運算一致性
推
01/31 14:06,
01/31 14:06
→
01/31 14:06,
01/31 14:06
→
01/31 14:07,
01/31 14:07
→
01/31 14:07,
01/31 14:07
→
01/31 14:08,
01/31 14:08
→
01/31 14:08,
01/31 14:08
→
01/31 14:08,
01/31 14:08
→
01/31 14:09,
01/31 14:09
→
01/31 14:10,
01/31 14:10
→
01/31 14:10,
01/31 14:10
>>請問你說的變數常數主要是控制哪些部分?(是指物理參數嗎?)
>>目前想到的方法好像是比較偏向你說的方法2
>>我打算在Client跟Server都用Box2D去創建一個遊戲世界(world)
>>並且讓Client跟Server端的world盡可能保持在一致的狀態
>>當玩家進行遊戲操作後
>>Client會將該操作的RPC封包送至後端
>>後端接收封包後後產生結果(使用物理引擎計算路徑並且包含亂數因素)並回傳前端作演示
>>但這樣似乎有可能會碰到浮點數精準的問題(?)
基本上不會在後端用物理引擎的..
假如有同時10000人遊玩,那麼你的後端就要同時模擬10000場遊戲,很明顯是不切實際的
>>另外場面上如果有移動性的Body
>>似乎也會導致無法單靠物理參數就導出同樣的結果
>>
移動性? 從什麼時候開始移動,從哪裡開始,方向往哪裡,什麼時候轉彎
甚至隨機移動的種子是多少,都是可以固定下來的常數
舉個例子,高爾夫球遊戲,理論上只要角度跟力道兩個變數不變,打出去的結果就要是
固定的,而玩家怎麼打就是這遊戲的變數 (量角器拿出來
因此理論上,控制好常數與變數,就能知道結果,甚至將結果記錄下來,後來的用查表法
直接給你答案
___
不過上面是理論上的東西,實務上,後端真的需要知道精確的結果嗎,驗證的時候也不用
到100%精確,只要能確定是否合法就好
假設有個遊戲
分數落在 0~100分之間,突然來個10000分的肯定有問題 (異常封包)
平均分數60~80,突然有玩家拿個100分再來查也沒關係,甚至不需要去查
為什麼? 你要去靠動作查玩家怎麼達到的,那玩家直接作弊做出能達到的動作,你在後端
就查不到任何東西 (詳見FPS外掛戰爭,可以另開一個專題了XDD)
--
昨天沒說完,補充一下
你說你要對抗作弊,作弊也有很多形式不能一概而論,你還是要有個目標才能對抗
1.封包修改
「所有的封包在client做完運算與表演後,Server都要驗證」
這是入門一定要學的觀念,完全不該犯的錯誤
舉個例子 GTA V 原本我覺得他們規模可以超過 Diablo 的,但是被作弊毀了
一顆手榴彈可以炸毀城市中所有的人,可以生成任意物件,甚至改變自己的數據
會發生這種事情,代表他可以傳任何封包給Server端而沒有驗證,否則他能作的
頂多改變他自己的Client資料,自己顯示自己爽而已
2.DDoS
這個要說作弊也不太對,但是有外掛瘋狂送合法封包過來要你處理,你的後端也會掛掉
基本上是能做到的例如,讓比賽直接中斷,或是直接勒索遊戲商付錢
所以還是要有觀念的東西,正式的DDoS攻擊應該會有MIS搞防火牆去擋
但是設計面上還是要考量到封包數量,跟過多過大封包的處理,不過新手的話遇到再說啦
...想到了啦,天堂加速器咩,加速Client端瘋狂送正常封包Server端都當正常封包處理
3.客戶端作弊
舉個例子 「自動瞄準」
這種類型是Client端另外執行程式,把Client端的資料當成輸入,作出槍槍暴頭的玩家
行為,因此Server端收到的東西是完全正常的
後續遊戲商與反外掛的戰爭可以再寫個10萬字吧...有機會再說
--
明知道這是不可能的願望 卻如同烙印的爪痕沁入大地
假如 可以實現的話 將我的存在剝奪 捨棄也無妨
祈禱著 祈求著 幻想也好
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.115.198 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1612201727.A.23E.html
※ 編輯: LayerZ (59.124.224.47 臺灣), 02/02/2021 09:41:40
推
02/02 12:17,
3年前
, 1F
02/02 12:17, 1F
推
02/05 00:59,
3年前
, 2F
02/05 00:59, 2F
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章