Posted on 2008-12-14 21:52
Condor 閱讀(1800)
評(píng)論(0) 編輯 收藏 引用
概述
- 一些為了兼容Nebula2的代碼所做的修改, 主要是一些宏的名字受到影響(DeclareClass -> __DeclareClass, ImplementSingleton -> __ImplementSingleton etc...)
- 著手刪除#ifndef/#define/#endif 這些防止重復(fù)include的宏, 因?yàn)閹缀跛械木幾g器(VStudio, GCC, Codewarrior) 都支持#pragma once
- 把同的樣Win32 和Xbox360 代碼移動(dòng)到一個(gè)共同的Win360 命名空間來消除代碼冗余
- 加入了一個(gè)新的Toolkit層, 它包含了一些導(dǎo)出工具和輔助類
編譯系統(tǒng)
- 重新組織了 VStudio解決方案的結(jié)構(gòu), 讓所有的依賴工程都在一個(gè)解決方案中, 這樣就不用再同時(shí)打開多個(gè)VStudio了
- 現(xiàn)在可以通過.epk編譯腳本來導(dǎo)入VStudio工程(對(duì)于不在Nebula3 SDK目錄下的工程很有用)
- 新的"projectinfo.xml" 文件為一些有用的導(dǎo)出工具定義了工程和平臺(tái)特有的屬性
- 把 export.zip 檔案文件分割到一個(gè)獨(dú)立的平臺(tái)無關(guān)文件和幾個(gè)特定平臺(tái)的文件 (export.zip 包含所有平臺(tái)無關(guān)的文件, export_win32.zip, export_xbox360.zip, export_wii.zip 包含特定平臺(tái)的文件)
- 加入一個(gè)統(tǒng)一的多平臺(tái)支持到 asset-pipeline (如 "msbuild /p:Platform=xbox360" 來生成XBOX360的東西)
- 一個(gè)新的命令行生成工具 (有代碼):
- audiobatcher3.exe (包裝了音頻導(dǎo)出)
- texturebatcher3.exe (包裝了紋理導(dǎo)出)
- shaderbatcher3.exe (包裝了 shader 編譯)
- buildresdict.exe (生成資源詞典文件)
- 這些工具大部分只是調(diào)用其它的生成工具(像xactbld3.exe, nvdxt.exe, 還有其它命令下的生成工具)
- 注意公開的N3-SDK因?yàn)榉稍蛑话琖in32平臺(tái)的支持
基礎(chǔ)層
- 修正Core::RefCounted 和Util::Proxy 引用計(jì)數(shù)線程不安全的BUG
- 加入 WeakPtr<> 類用于更好地處理環(huán)形引用
- 在 Ptr<>中加入類型轉(zhuǎn)換的方法
- 簡化System::ByteOrder 類接口
- 加入平臺(tái)相關(guān)的面向任務(wù)的"virtual CPU core id" (如 MainThreadCode, RenderThreadCore, 等等...)
- 加入一個(gè) System::SystemInfo 類
- 加入 Threading::ThreadId 類型和 Threading::Thread::GetMyThreadId()靜態(tài)方法
- 現(xiàn)在可以在VStudio調(diào)試器和其它的高度工具中看到線程的固有名稱了
- SetThreadIdealProcessor() 現(xiàn)在用于在Win32平臺(tái)上把線程分配給可用CPU核心
- 新的線程子系統(tǒng)的HTTP 調(diào)試頁面(現(xiàn)在只列出Nebula3的活動(dòng)線程)
- MiniDump支持: 崩潰, n_assert()和 n_error() 現(xiàn)在在Win32平臺(tái)上會(huì)生成 MiniDump 文件
- 新的 Debug 子系統(tǒng)用于代碼分析:
- 提供 DebugTimer 和 DebugCounter 對(duì)象
- HTTP 調(diào)試頁面允許在運(yùn)行時(shí)檢查DebugTimers和 DebugCounters
- 新的Memory::MemoryPool 類來分配同樣大小的內(nèi)存塊(加快分配速度和減少內(nèi)存碎片)
- Math::matrix44在中的一些新的和改名的方法
- Http 子系統(tǒng)現(xiàn)在運(yùn)行在它自己的線程里
- 把 SVG 支持加入到 Http 子系統(tǒng)(Http::SvgPageWriter 和Http::SvgLineChartWriter) (xoyojank:難道是Scalable Vector Graphics?這樣的話可以輸出圖表了)
- 加入 IO::ExcelXMLReader 流讀取類, 允許讀取XML模式的MS Excel電子表格文件
- 在Messaging::AsyncPort加入行為方式, 定義了處理線程怎樣去等待新的消息:
- WaitForMessage: 在消息到達(dá)前一直阻塞
- WaitForMessageOrTimeOut: 在消息到達(dá)或超時(shí)前一直阻塞
- DoNotWait: 不等待消息
- 加入 Remote 子系統(tǒng), 允許通過TCP/IP連接遠(yuǎn)程控制N3應(yīng)用程序
渲染層
- 把渲染移動(dòng)了它自己的線程 (InternalGraphics子系統(tǒng)在渲染線程這邊, Graphics 前端子系統(tǒng)在主線程這邊)
- 加入了 CoreAnimation 和 Animation 子系統(tǒng) (構(gòu)造中)
- 為簡單的用戶界面加入了UI子系統(tǒng) (構(gòu)造中) (xoyojank: 這個(gè)不錯(cuò)^_^)
- 加入CoreAudio和 Audio 子系統(tǒng)(構(gòu)造中):
- CoreAudio 是后臺(tái)的, 運(yùn)行在自己的線程里
- Audio 是前臺(tái)的"客戶端", 運(yùn)行在主線程里 (或者其它任何線程)
- 圍繞XACT的概念設(shè)計(jì)
- 提供 XACT 的包裝實(shí)現(xiàn)
- 加入 CoreGraphics::TextRenderer 和 CoreGraphics::ShapeRenderer 類, 打算用于渲染調(diào)試信息
- 加入調(diào)試渲染子系統(tǒng)(現(xiàn)在在Debug命名空間下)
- Frame 子系統(tǒng): FramePostEffect 現(xiàn)也也許會(huì)包含 FrameBatch
- Input 子系統(tǒng): 斷開 XInput 游戲手柄接口現(xiàn)在對(duì)于連接中的設(shè)備每隔0.5秒才檢測一次
- Resources 子系統(tǒng): 加入 ResourceAllocator/ResourceLump 系統(tǒng)為Console平臺(tái)真正的資源流做準(zhǔn)備
應(yīng)用層和插件:
- 刪除了 CoreFeature (這東西不得不進(jìn)入GameApplication類來阻止雞生蛋問題)
- 加入 NetworkFeature (構(gòu)造中)
- 加入 UIFeature (構(gòu)造中)
- 加入 CoreNetwork 和 Multiplayer 插件(RakNet的包裝)