平民程序 - linghuye's blog

天下风云出我辈,一入江湖岁月催。皇图霸业谈笑中,不胜人生一场醉。提剑跨骑挥鬼雨,白骨如山鸟惊飞。尘事如潮人如水,只笑江湖几人回。

随笔 - 221, 文章 - 0, 评论 - 680, 引用 - 0
数据加载中……

Unreal 2 引擎学习笔记.2700

1.需要安装Microsoft Visual C++ 6.0 + Service Pack 5 + Processor Pack编译,需要安装OpenAL以运行,否则使用-NOSOUND参数启动各主要程序.

2.主运行目录在Unreal\System下

3.使用开源工程http://www.vorbis.com

4.Core.dll模块之全局变量于Core.h以C Extern方式声明,而定义于Core.cpp,有注释.

5.app前缀的源码内容于Core模块,

6.默认为Unicode编译,but why trouble Unicode?

7.TCHAR_CALL_OS,TCHAR_TO_ANSI定义于Core\Inc\UnGCNEmu.h

8.初始化函数appInit,从属Core模块,负责初始化程序应用环境,包括
    本地文件系统(由接口FFileManager表达,定义于Core.h)
    初始化用于哈希计算的表数据缓冲
    Log系统(由接口FOutputDevice表达,定义于Core.h)
    Error报告系统(由接口FOutputDeviceError表达,定义于Core.h)
    Warning系统(由接口FFeedbackContext表达,定义于Core.h)
    内存分配系统(由接口FMalloc表达)
    名字系统(由FName类的各静态函数表达,定义与UnName.h)
    操作系统相关初始化,函数appPlatformPreInit,收集操作系统信息,并Log输出.appPlatInit创建USystem根对象,输出物理内存,CPU等的参数.
    配置文件系统(由接口FConfigCache表达,定义于Core.h)
    UObject::StaticInit(),脚本对象系统初始化.
    文件流系统(由接口FFileStream表达)
   
9.InitWindowing:窗口创建   

10.InitEngine:进入引擎初始化,先加载脚本类工厂EngineClass,然后使用这个工厂, ConstructObject相当于脚本中的new出程序脚本混合体UGameEngine对象,这个对象可以在程序或脚本中控制,因此Unreal引擎是个建立在脚本系统上的程序系统.
 UClass* EngineClass;
 EngineClass = UObject::StaticLoadClass( UGameEngine::StaticClass(), NULL, TEXT("ini:Engine.Engine.GameEngine"), NULL, LOAD_NoFail, NULL );
 UEngine* Engine = ConstructObject<UEngine>( EngineClass );
 Engine->Init();
   
11.appStrihash:字符串哈希函数,基于GCRCTable表实现.   

12.Name System:名字系统表达了Unreal对字符串资源的管理,包括程序硬编码和外部读取.由类FName负责实现.其静态变量FName::Names为所有字符串项目内存仓库表,FName::NameHash是部分需要被Hash的字符串资源.
FNameEntry的Index成员变量是到Names的索引,被Hash的字符串的hash值是到NameHash数组的索引,处理代码集中在Hardcode函数中.一个FName对象仅是包含一个到Names的索引.

13:FURL:资源目标位置表达系统.

posted on 2005-09-05 22:16 linghuye 阅读(2729) 评论(2)  编辑 收藏 引用 所属分类: 3D图形学研究

评论

# re: Unreal 2 引擎学习笔记.2700  回复  更多评论   

有没有Unreal系统结构图等之类的东西帮助学习源代码?
2008-01-07 00:40 | hexianmang

# re: Unreal 2 引擎学习笔记.2700  回复  更多评论   

不错,顶一下,刚看代码的人可以学习学习,如果再详细点就好了:)
2008-12-22 23:56 | siliangliu@msn.com
只有注册用户登录后才能发表评论。