天天看點

伺服器3D場景模組化(二):Physx與PVD

模組化思路

目前流行的幾大實體引擎庫均可以用來做伺服器端的3D場景模組化。

這裡選擇使用physx。因為untiy3d内置的實體引擎也是physx。減少學習溝通成本。

通常伺服器3D場景模組化的運作方式有種:

  1. 伺服器通過3D實體引擎模組化靜态3D場景;并圍繞射線檢測,來檢查是否碰撞、是否可行走等等。進而達到伺服器直接支援3D世界的玩法
  2. 伺服器通過3D實體引擎模組化靜态3D場景;并在場景内建立可以控制的剛體,每幀實時計算模拟場景。進而達到伺服器直接支援3D世界的玩法

性能問題

伺服器3D場景模組化的概念,很久就有。真正用上的不多。主要原因就是性能方面的考慮。

而從另外一方面來看:

  1. 基于防外挂的需求,為了能滿足某些玩法,不得不在伺服器進行3D場景模組化
  2. 目前的伺服器架構上流行的可擴容特性,為伺服器同時承載人數上提供了基礎支援。

從這2方面來看,伺服器3D場景模組化是可以嘗試的。

Physx

Physx是一個很好的3D實體引擎庫,有非常好用的API接口。

它的代碼是免費發放的。上官網,新增賬號,加入它的git組織。即可拉取代碼。

PVD

PVD, PhysX Visual Debugger 通過它可以做Physx代碼調試。

在本系列1中提到的使用PyOpengl來做調試,也是可行的,不過會稍微麻煩點。目前本人遇到的主要問題是,PyOpengl性能有點低,畫幾百個物件就加載過程時間太久。(顯然這對伺服器程式來說,是個不小的坑,慎入!)

Physx封裝代碼實作

本人在git上實作了一個Physx封裝的庫,尚在繼續完善中:

https://github.com/fananchong/PhysxWrap

繼續閱讀