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:资源目标位置表达系统.