技術簡介
NeoAxis引擎是一個一流的技術,它可以很容易適應,因為它的精心設計和靈活的工具軟體的各種項目。我們的許多客戶聲稱他們從來沒有見過這種極其有效,易於理解的代碼。
引擎的NeoAxis非商業許可證用於非商業套用和學習NeoAxis引擎。
這個SDK包括NeoAxis引擎演示,這展示了幾乎所有的NeoAxis功能。還演示包含資源編輯器和地圖編輯器,以便您可以開始您的項目發展。
對於遊戲
該NeoAxis引擎包括為遊戲開發的最要求的所有功能。
它包含了所有現代圖形,物理和遊戲項目的音頻功能。強大的NeoAxis工具將節省您的項目開發的寶貴時間。
的遊戲種類繁多,從AAA遊戲休閒遊戲,可以創建NeoAxis。
完整的遊戲框架
NeoAxis引擎包含一個快速和直觀的遊戲項目的開發範圍廣泛的基類。
其內容包括:
框架創造新的遊戲類型
可擴展的基於格線的路徑搜尋系統
水量與實際影響力和飛濺
削減現場經理
單位智力系統
單位,人物,車輛,武器,子彈,爆炸,還有更多
技術學習
在開始NeoAxis的學習前,你需要做一些事情
1。安裝最新版本的Dx9.0c
如果你不確定機器上是不是最新版的,可以去微軟下載Dx9最終用戶運行時
2。安裝.Net Framework2.0,我相信大部分人的機器上都有裝,不過如果有人沒有的話也可以去微軟下載
3。好了,你可以下載和安裝NeoAxis了
4。如果你需要學習進一步的開發,我是說到代碼級的開發而不是光點點工具玩玩的話,就必須安裝C#的開發環境了。這個東西我就不提供開發環境了,推薦使用Microsoft Visual Studio 2008,當然如果你有2005或者2010的話也沒問題。這個比較大,大家可以慢慢下載,一時半會兒用不上。
準備工作到此結束,1-3是必須的,當你完成了1-3步後,請繼續看下去
安裝完NeoAxis,讓我們打開目錄看一下裡面的東西
API Reference是他的API文檔,不過沒有看的價值,因為人家壓根沒寫完,裡面就只有一堆函式名...
比較重要的東西是Resource Editor和Map Editor,他是編輯的核心工具,也是前期初級教學的主要內容
另外你現在可以運行一下Demo.exe,看一下他提供的一些Demo,效果挺棒的。如果你跑不了,就說明你的機器悲劇了
下面,我們瞎做一個小Demo玩吧
打開Map Editor,新建一張地圖
第一步,我們給黑漆漆的世界增加一個天空體。在右側的Entity Types中找到BlueDaySky並選中,然後再黑色的地方點擊一下,是不是看到一個半球形的天空體了?
名詞解釋:天空體
天空體是大部分3D遊戲的一個基礎。因為3D世界是有空間的,為了不讓人看到黑色的區域,所以就把Camera包圍在一個天空體中。這樣最壞的情況玩家也能看到藍天白雲。
天空體一般有幾種形式構成,比如我們現在使用的是半球。還有一些做法是使用盒子,也就是一個六面體。但是其實盒子的底面是基本看不到的(因為我們有地面),所以也有使用5面體來做天空盒的。
加完天空就要加大地了,我們在Types-Base中找到HeightmapTerrain並選中,點擊添加看到綠油油的草地了不?這就是基礎的高度圖地面
名詞解釋:高度圖
在很多有室外景的3D遊戲中普遍使用高度圖技術作為地形基礎。高度圖其實就是一張灰度圖,用灰度圖中每個像素點的灰度值來表示地面上每個點的實際高度,然後經過渲染變成一個高低起伏的地形。
下面我們可以開始編輯地形了,在上面MapEntities中雙擊HeightmapTerrain,在Properties視窗中就會看到Edit按鈕,按下去吧,就會出現一個小的編輯窗。
看到視窗里Tool中的下拉窗,Raise是抬高底面,Lower是降低,其他我就不囉嗦了,自己試試就知道是啥了。下面的Shape是筆刷的形狀,Radius是作用半徑和影響半徑,Strength是調整強度。
你選擇Tool中的Paint選項時,就意味著是給底面刷上顏色。現在你看到我們有Base和second兩種Layers,也就是可以刷上這兩種顏色,嘗試著刷一下~~
下面我們看看如何添加自己定義的底面顏色。先關掉edit的編輯窗把,暫時用不到了。在HeightmapTerrain的屬性頁里,找到Layers這項,按“...”點開視窗,看到了剛才我們使用的Base和second layer了吧,點擊添加增加一個layer。然後在屬性中添加BaseMap,DetailMap和NormalMap。由於時間關係我直接添加了BaseMap:Maps\TankDemo\Resources\Terrain\Rock_Diffuse.dds和NoramlMap:Maps\TankDemo\Resources\Terrain\Rock_Normal.dds,DetailMap留空。
名詞解釋:BaseMap,DetailMap和NormalMap
BaseMap是你需要的基色,也就是底色。如果你沒有特殊需求的話,添加這個就ok了
DetailMap是細節圖,是覆蓋在BaseMap上的一層細節紋理
NormalMap可能比較複雜,他是一種利用Shader技術根據法相圖重新計算紋理的光照強度,使貼圖即使沒有很多的面也可以看起來凹凸不平的一門技術,以豐富紋理的細節
確定後再點下Edit,看看是不是已經有了剛才加的東西?
光有底面不好看,我們加一片海吧
找到Types.Special中的WaterPlane,點擊添加。看到海了,可是顏色不對,好像和底面重疊了?那是因為底面和海的高度都是0,所以渲染順序有問題。我們把海抬高一點點吧,雙擊選中WaterPlane,在屬性中找到Position,把高度設為0.5。需要注意的是,NeoAxis的坐標軸是Z軸向上的,所以你需要把z值填餵0.5即可
同時需要設定一個物理高度,把屬性中的PhysicsHeight填個1吧
呵呵,下面你可以玩上一會兒了,我也自己畫了張,如圖
現在怎么樣?是不是有點樣子了?我們進去跑一跑吧,要運行遊戲,你需要添加一個出生點
在Special中找到SpawnPoint,選中後就可以在地圖某個地方放上一個黃色小旗子,這就是角色出生的地方了
現在你可以點擊上面的箭頭運行遊戲了,進去逛逛吧
ps,水裡面也可以游泳喔,倒退著游可以看到水花
然後你覺得奇怪么?底面顏色黑乎乎的,其實是因為我們場景上還沒有光源!
找到Base.Light,點擊添加一個。怎么是錐形燈呢?我們需要的應該是一個平行光源(類似太陽光),雙擊你添加的Light,在屬性中找到LightType,改成Directional,然後在Rotation中把y改為300,讓光源有一個傾角。
名詞解釋:Light
對於3D遊戲,光源的計算是非常重要的。他同時影響模型的受光和陰影兩大要素,也就是影響到遊戲畫面效果最重要的因素。不過,光源越多,程式的計算量就越大,所以一般我們不贊成同一區域有3個以上的光源影響
光有光源是不夠的,我們還需要烘焙一下Lightmap,下一步,添加一個Base.StaticLightingManager,然後選中他,點擊Calculater,發現顯示光源數為0,原來剛才添加的Light沒有開啟靜態光支持。返回選中剛才的Light,把AllowStaticLighting開啟。再次選中StaticLightingManager,你可以點Start開始烘培了。烘培速度有點慢,你可以喝杯茶休息一下。
烘培結束後,點擊運行看看,是不是亮了呢?
名詞解釋:LightMap
LightMap是很多3D遊戲都會採用的一門陰影技術。實際上大部分3D遊戲的陰影都會分為動態陰影和靜態陰影。動態陰影是實時生成的,但是計算量巨大,很影響效率,一般只有運動的物體才會採用這種陰影,比如移動的人物和車輛等。其他靜態的物體,使用的都是LightMap,也就是在地面上貼上一張預先渲染好的圖。這樣在實際運行中就不需要去動態計算諸如建築,樹木這些不會動的物體的陰影了,大大節省效率