1. 程式人生 > >網路遊戲之物理模擬

網路遊戲之物理模擬

筆者介紹:姜雪偉,IT公司技術合夥人,IT高階講師,CSDN社群專家,特邀編輯,暢銷書作者,已出版書籍:《手把手教你架構3D遊戲引擎》電子工業出版社和《Unity3D實戰核心技術詳解》電子工業出版社等。

目前市面上的網路遊戲,競技遊戲逐漸成為主流,這樣也就出現了大家經常熱議的幀同步策略,本部落格將做一個系列文章分別介紹:幀同步,快速插值,狀態同步等。遊戲中的物理模擬一直是同步中的難點,本篇部落格先給讀者介紹幾個物理碰撞的案例,然後在後面的系列文章中給讀者提供解決方案。

為了能讓讀者更好的理解同步策略,我們將花點時間探索一下網路的物理模擬,在這裡我已經在開源物理引擎ODE(官方網站:http://www.ode.org)中設定了一個立方體的簡單模擬, 玩家通過在其質心中施加力量來移動, 物理模擬採用這種線性運動,並且當立方體與地面碰撞時計算摩擦力,引起滾動和翻滾運動,這些運動我們在後面的系列文章中會用不同的同步策略去模擬它的物理表現。先看如下的效果圖:

這就是為什麼我選擇一個立方體而不是一個球體我想要這種複雜的,不可預測的動作,因為剛體通常根據其形狀方式移動。

當玩家與其他物理模擬物件進行互動時,特別是當這些物體推回並影響運動時,網路物理學將變得非常有趣。所以讓我們新增一些更多的立方體進行模擬:

當玩家與立方體集進行互動時,會變成紅色當這個立方體停止時,它變成灰色(不相互作用)。再給讀者看一幅圖:

你可以看到,互動不僅僅是直接的, 由玩家推送的紅色立方體也會轉動其他立方體,通過這種方式,互動可以覆蓋所有受影響的立方體物件。

我也想要一個非常複雜的運動,在玩家和非玩家的立方體之間,它們成為一個系統:一組剛體通過約束連線在一起。為了實現這一點,

我認為如果玩家可以滾動並建立一個立方體的球,效果如下所示:

玩家的一定距離內的立方體具有向立方體中心施加力以使這些立方體保持一個物理模擬。

       如果在網路中模擬這些物理效果是有一定困難的,但是我們可以使用不同的網路同步方式模擬出上面的物理效果並且做到不同玩家的同步。我們將在後面的系列文章中給讀者介紹網路物理模擬實現方案。。。。。。。。