前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nebula3 SDK (Apr 2009)更新内容

Nebula3 SDK (Apr 2009)更新内容

作者头像
逍遥剑客
发布2022-01-11 15:08:42
1.1K0
发布2022-01-11 15:08:42
举报
文章被收录于专栏:逍遥剑客的游戏开发

相对于Sep 2008SDK的新内容:

工具

  • 新命令行工具: archiver3 – 为多平台文件档案生成所做的包装
  • 新命令行工具: n2converter3 – 转换.n2 文件到.n3文件(Nebula 图形对象)
  • 新命令行工具: suiconverter3 –SUI (simple user interface)资源的批处理转换器, 现在只在Wii平台有效
  • 新命令行工具: synctool3 – 从版本服务器上同步本地工程目录(只对我们内部的开发流程有用)
  • 新命令行工具: countlines3 – 对N3 源代码行数进行统计并生成Excel兼容的csv文件(comma separated values)

基础层

  • 更新Wii平台到最新(当然这不属于公开的SDK)
  • Util::CmdLineArgs 更名为Util::CommandLineArgs
  • Scripting 子系统移入一个addon
  • Remote 子系统移入一个addon
  • 新宏__ConstructInterfaceSingleton / __DestructInterfaceSingleton
  • 做为Maya插件编译时采用新的标准定义__MAYA__
  • 新内容: ExitHandlers (见Core::ExitHandler)
  • 新的底层调试方法Core::SysFunc::MessageBox()
  • 新内容"根目录(root directory)" (见 CoreServer::SetRootDirectory)
  • 为了在N2/Mangalore中使用N3的代码所做的各种各样的改变 (N2 现在基于很少一部分的N3基础层)
  • SizeT 和IndexT 现在是有符号的了(为了兼容N2/Mangalore不得不这样)
  • IO::Console 现在是一个InterfaceSingleton
  • 各种HTML调试处理(handler) 页面的表格可以按列进行排序
  • Debug::DebugServer 现在是一个InterfaceSingleton
  • 加入一个最小的Debug::HelloWorldRequestHandler 做为HttpRequestHandler 的示例
  • 好用的新方法Http::HtmlPageWriter::TableRow2(), 结省创建两列HTML表格时所需要的代码量
  • 加入 Http::HttpClient 类, 允许发送请求至HTTP服务器
  • Http::HttpInterface 现在是一个InterfaceSingleton 并且从Interface::InterfaceBase派生
  • 新类Http::HttpRequestWriter
  • 新类Http::HttpResponseReader
  • 为HttpServer加入一个"单线程模式"
  • 加入一个新类InterfaceBase 和InterfaceHandlerBase
  • 把IOInterface相关的移到IO 下
  • 新类Debug::ConsolePageHandler, 在web服务器上显示命令行输出
  • Zip 文件系统应归于档案文件系统, ZIP支持做为一个特例(Wii上使用 ARC文件代替)
  • ZipFileSystem 现在是一个InterfaceSingleton (没有增加各线程的内存消耗)
  • 为IO::FileTime增加一个"AsString()" 方法
  • Win360FSWrapper中新的方法: SetFileWriteTime(), GetAppDataDirectory(), GetProgramsDirectory()
  • IO::ZipFileStream 类移动到io/zipfs
  • 移动路径重定向(path assign)方法从IoServer 移动到新的InterfaceSingleton: IO::AssignRegistry
  • 新的Windows下的标准重定向符(assign): "appdata" 和"programs", 主要用于工具
  • 修正IO::ExcelXmlReader 对于表格包含空单元格时的Bug
  • 新类IO::HistoryConsoleHandler, 捕获命令行输出到一个环形缓冲(Debug::ConsolePageHandler使用)
  • URI 模式方法从IoServer 移动到IO::SchemeRegistry InterfaceSingleton
  • 从Stream::Open / Stream::Close 中删除临界区
  • 新方法: IO::XmlWriter::WriteComment()
  • 新的float4特殊加载方法: Math::float4::load_float3(), Math::float4::load_ubyte4n_signed()
  • Math::float4 的向量比较方法更加直观和灵活了
  • Math::matrix44() 默认构造函数设置自身为单位矩阵(Math::float4的默认构造函数仍然为空!)
  • Math::quaternion的新的从float4构造的构造函数
  • 从scalar.h移动许多数学方法到d3dx9_scalar.h , 使平台特定的优化成为可能
  • Memory::Heap 构造函数现在接受初始化和最大堆大小
  • Memory::Heap的内存泄露检测 (还不是很令人满意)
  • 移除全局堆: SmallBlockHeap, LargeBlockHeap, StringHeap
  • 加入全局堆: PhysicsHeap, AppHeap, StringObjectHeap, StringDataHeap
  • 试验性的Win360MemoryPool新类
  • Messaging::AsyncPort: 现在可以在已经打开的端口(port)中加入消息处理器(message handler)
  • 加入"延迟处理(deferred handled)" 标记到Messaging::Message (用于渲染线程中的CreateEntity消息在加载完之前保持履行职责)
  • 包装套接字和TCP/IP 类使Wii上的"TCP/IP-over-HIO2-Tunneling" 成为可能
  • System::Win32Registry(): 把Read() 方法分成ReadString() 和ReadInt()
  • System::ByteOrder::Convert<TYPE>() 现在返回一个值, 加入新方法System::ByteOrder::ConvertInPlace<TYPE>()
  • 新方法Threading::Interlocked::Exchange() 和 CompareExchange()
  • Win360Thread::IsRunning() 现在使用Win32 函数GetExitCodeThread() 来检线程是否运行中
  • 新方法Threading::Thread::YieldThread() (放弃时间片)
  • 新类Threading::SafeFlag
  • 新内容: Timing::MasterTime 和Timing::SlaveTime, 主线程有一个MasterTime 对象, 分发"main time" 到附属线程 (如渲染线程)
  • Util::Array 现在有一个MinGrowSize 和MaxGrowSize 来防止巨大数组的内存浪费
  • 试验性的新类Util::Delegate (不幸的是在Codewarrior中不能工作)
  • 新方法Util::FixedArray::AsArray()
  • 新方法Util::Dictionary::KeysAs<TYPE>(), 和Util::Dictionary::ValuesAs<TYPE>()
  • 新类 Util::PriorityArray (我想应该不需要了吧)
  • 新类Util::RandomNumberTable
  • 新类Util::Round
  • 很多Util::String 不常用的方法不再内联

渲染层

  • 新的Character子系统(模块化的角色渲染, N2的Character3系统的重写)
  • 新的CoreFX 子系统(从Mangalore的 VFX(visual effects) 子系统引入) -> 注意: 会被移进addon
  • 新的CoreUI 和UI 子系统(简单的用户界面系统) -> 注意: 会被移进addon
  • 新的Video 子系统(视频播放, 现在只有Xbox360的) ->注意: 会被移进addon
  • 新的Particles 子系统(从头重写) -> 注意: 会被移进addon
  • 新的PostEffect 子系统(从Mangalore引入) -> 注意: 会被移进addon
  • 新的Vibration 子系统(游戏手柄震动支持) ->注意: 会被移进addon
  • 新的 Vegetation 子系统(Drakensang的植被渲染, 现在在N3下不可用) -> 注意: 会被移进addon
  • 新内容: RenderModules, 为渲染线程增加功能的干净框架(xoyojank: 正愁写demo咋办呢, 哈哈)
  • 新内容: AnimEvents, 动作可以在特定的采样时间触发一个事件 (如在合适的时间播放脚步声)
  • 新内容: 角色附属物(attachments) (剑什么的...)
  • Animation系统的很多bug修正和改进
  • 新内容: AnimDrivenMotion, 以当间动作来同步角色的移动
  • 新内容: 消息批次, 以客户端消息打包的方式彻底解决线程间的通信开销
  • 新方法: Audio::AudioEmitter::Pause() 的Resume()
  • 新方法: AudioDevice::SetGlobalVariable() / GetGlobalVariable()
  • 加入/修正Xbox360 对 XACT 音频类的支持
  • 新类: MultipleRenderTarget, 包装了MRT 渲染
  • 新类: MouseRenderDevice (现在只在Wii实现了)
  • 加入GPU 实体(instance)渲染
  • RenderTarget: 加入解析深度缓冲到纹理的支持(只有Xbox360才行)
  • RenderTarget: 加入创建张CPU可以快速访问的解析纹理的支持
  • 加入"late-binding" 到 ShaderVariableInstance
  • D3D9StreamTextureLoader 和D3D9Texture 从win360 移至d3d9, 因为现在有Xbox360的特定版本了
  • Debug::MeshPageHandler 可以在web浏览器显示顶点数据
  • Debug::TexturePageHandler 现在显示当前资源状态(Initial, Pending, Loaded, 等等...)
  • 新类CoreGraphics::MemoryMeshLoader
  • CoreGraphics::Shape 重命名为 CoreGraphics::RenderShape (因为CodeWarrior对于不同目录中的文件名会产生混淆)
  • Frame::FramePass 和 Frame::FramePostEffect中加入Multiple Render Target的支持
  • Graphics::Display::GetDisplayMode() 现在返回CoreGraphics::DisplayDevice设置的参数 (可能跟需要的显示模式不一样)
  • Graphics::GlobalLightEntity: 所有光源参数移动到渲染线程创建
  • Graphics::GraphicsEntity: 内部实体(entity)只有在资源在渲染线程中载入完毕后处理才可以
  • Graphics::GraphicsInterface 现在使用消息批次来跟渲染线程通信(一帧只发送一次消息)
  • Graphics::Handle 现在是一个智能指针(解决了渲染线程实体过早销毁的问题)
  • Graphics::ModelEntity: 支持AnimDrivenMotion
  • Input::GamePad 的新方法: ButtonAsString(), AxisAsString(), GetStateAsInputEvents()
  • InternalGraphicsEntities 由InternalGraphicsServer 进行注册
  • InternalGraphicsServer 的许多改变和需要适当整理的InternalModelEntity
  • 为全局光加入双面光照支持
  • 新类: Models::AnimatorNode 和Models::AnimatorNodeInstance (Nebula2 遗留)
  • 新类: Models::CharacterNode 和 Models::CharacterNodeInstance, 使角色渲染与模型结点结合到一起
  • ModelNode的加载基本上重写了(新的.n3 文件格式, 还有n2converter3 工具用于转换.n2 文件到.n3)
  • 新方法Model::OnResourcesLoaded(), 方便Model子类在资源加载完毕时做初始化工作
  • 新方法用来在 ModelInstance中查找ModelNodeInstance
  • 新类Models::StreamModelLoader
  • Models命名空间下的许多小的更改
  • 新类: RenderUtil::MouseRayUtil, 转换2D鼠标位置到世界空间的3D射线
  • 新方法: ResourceManager::CheckPendingResources(), 在当前没有等待加载的资源时返回true
  • SharedResourceServer: 几个方法现在创建共享资源时接受ResourceLoader 对象

这里还有一些针对Foundation和Render层的有趣的代码统计 (希望图片没有缩放的太失真):

"General"为平台无关的代码, "Win360" 是Win32 和Xbox360通用的代码.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2009/04/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档