Nebula3学习笔记(1): 序
2016-06-20 00:00
260 查看
前言
目前这个引擎只是一个预览版, 很多功能仍在开发当中
硬件需求: 显卡支持ShaderModel3.0
作者Blog: http://flohofwoe.blogspot.com
用到的开源工程
为了避免版本之间的不兼容, 已经在SDK中包含
LUA (http://www.lua.org)
SQLite (http://www.sqlite.org)
TinyXML (http://www.grinninglizard.com/tinyxml)
ZLib (http://www.zlib.net)
体系结构一览
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直接编译就成了, 没见过这么简单的开源工程^_^
就以这个程序做为测试程序的模板吧
目前这个引擎只是一个预览版, 很多功能仍在开发当中
硬件需求: 显卡支持ShaderModel3.0
作者Blog: http://flohofwoe.blogspot.com
用到的开源工程
为了避免版本之间的不兼容, 已经在SDK中包含
LUA (http://www.lua.org)
SQLite (http://www.sqlite.org)
TinyXML (http://www.grinninglizard.com/tinyxml)
ZLib (http://www.zlib.net)
体系结构一览
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: }
相关文章推荐
- Win8.1RTM英文版安装中文语言包的两种方法
- 想改名了
- Nebula3脚本系统
- 项目经理成长日记(1)—— 启言
- 对Native API NtSystemDebugControl的分析
- 半条命2(HalfLife2)的源代码
- 对自己严重缺乏自信
- D3D中粒子效果实现示例
- Direct3D中的绘制(1)
- 【ZT】中国的希望,80后
- OGame防御说明
- Windows Server 2012 离线安装.NET2.0-3.5的方法
- 创建索引缓存
- D3D编程必备的数学知识(5)
- 从内存中加载动态库(一)
- 我的世界观(Albert Einstein)
- 最小的MFC程序
- 使用DirectPlay进行网络互联(3)
- PHP7新特性 What will be in PHP 7/PHPNG
- 实用级反主动防御rootkit设计思路[转载]