Posted on 2008-12-14 21:03
Condor 閱讀(2220)
評論(1) 編輯 收藏 引用
前言
目前這個引擎只是一個預覽版, 很多功能仍在開發當中
硬件需求: 顯卡支持ShaderModel3.0
作者Blog: http://flohofwoe.blogspot.com
用到的開源工程
為了避免版本之間的不兼容, 已經在SDK中包含
體系結構一覽
- Nebula3 分成三層, 每一層都是建立在另一層之上的:
- 基礎層: 最底層, 提供了一個圖形和音頻之下基本的平臺抽象. 基礎層可以用作任意類型的程序開發平臺, 而不僅僅是實時3D程序.
- 渲染層: 這是中間層, 它在基礎層之上另加了許多特性, 像3D渲染, 音頻, 物理和場景管理等.
- 應用程序層: 這是最高的一層, 提供了一個完整的游戲框架, 這使得開發人員可以集中精力在游戲邏輯上, 而不用對關心各種細節實現.
- Nebula3 會跟Mangalore 合為一個整體, Mangalore的各種子系統會集成到Nebula3的適合它們的層中去.
- Nebula3 比 Nebula2更趨向于使用C++.
- Nebula3通過引用計數和智能指針實現了對象生命周期的管理.
- Nebula3的新對象模型使用一個4 byte的基類來代替Nebula2中70+ bytes的.
- RTTI更高效, 更易用.
- Nebula3仍然不使用C++異常, RTTI和STL(所有這些不是降低性能就是降低便攜性).
- 根據類名來創建對象更快更易用.
- Nebula3 避免使用C Lib, 去除了附加的代碼層.
- Nebula3 使用LUA 代替TCL作為標準的腳本語言(當然也可以增加其它腳本語言的支持)
基礎層
- App 包含各種Application類
- Attr 屬性注冊
- Core Nebula3的對象模型
- Debug 程序內存轉儲和基于HTTP的調試信息(這個真是個好東西, 第一次聽說)
- Http 實現了HTTP服務器和客戶端, 這樣可以在瀏覽器中實時查看調試信息
- IO 輸入輸出系統, 很方便
- Math 基于C++的數學庫, 沒什么特別的
- Memory 實現了定制的內存分配器
- Messaging 消息定義
- Net 最基本的基于TCP協議的C/S架構, 更多的功能會在高層的網絡擴展中給出
- Scripting 腳本系統
- System 硬件平臺和特定操作系統相關的一些特性
- Threading 多線程
- Timing 時間/定時器管理
- Util 工具庫, 包括各種容器, 數據結構, 還有一個強大的string類(拋棄STL吧!)
渲染層
- CoreGraphics 圖形庫核心類
- Frame 基于幀的處理, 如RenderTarget, PostProcess等
- Graphics 一些實體類型定義, 如Camera之類
- Input 輸入設備, 就是鼠標鍵盤手柄…..
- Lighting 光照處理, 包括陰影算法(竟然要SM3.0@_@)
- Models 骨骼模型&粒子系統
- RenderUtil 目前就只有一個Maya的攝像機…..
- Resources 資源管理器
應用程序層
application_win32工程就是一個簡單的游戲, 框架, 但是已經包含了許多特性, 如果物理, 數據庫等. 不過好像還缺少GUI系統.
插件
目前有三個, 基于ODE的物理引擎, 基于SQLite的本地數據庫, 基于nebula2模型的骨骼模型系統
編譯
沒什么好說的, 打開.sln直接編譯就成了, 沒見過這么簡單的開源工程^_^
就以這個程序做為測試程序的模板吧
1: #include "stdneb.h"
2: #include "core/debug.h"
3: #include "core/coreserver.h"
4: #include "core/sysfunc.h"
5:
6: using namespace Core;
7:
8: void
9: __cdecl main()
10: {
11: Ptr<CoreServer> coreServer = CoreServer::Create();
12: coreServer->SetAppName("Nebula3 Hello World!");
13: coreServer->Open();
14:
15: n_printf("Hello World\n");
16: system("pause");
17:
18: coreServer->Close();
19: coreServer = NULL;
20:
21: Core::SysFunc::Exit(0);
22: }
