主循环是主要的框架,相当于骨骼, 而主要的血肉则是由各种不同子系统的函数集合和类组成的。
由于TASpring主要使用C++,所以先看看类的个数和根据名字大概的推测吧,一些不能马上根据名字推测出来的
则只能通过阅读详细的代码来分析具体功能了。
这些类当中,除了基本的渲染绘图类外, 一很大一部分是游戏中逻辑层中的对象类。
比如 飞机类, 运输车类, 激光 大炮类, 各种 导弹类, 各种 地面的破坏程度类等。
详细见下表。
//TASpring类名-功能推测
class zip_exception - zip压缩异常
class WinFileSystemHandler - Windows文件系统处理
class Win32Cmd - Win32命令行处理
class TdfParser - ?
class SyncedFloat3 - ? 推测为向量类
class SharedLib - 动态链接库加载
class RegHandler - 注册表处理
class PlayerRoster - ?
class Plane - 平面
class ObjectPointerType - ?
class ostream_actor - IO处理
class MemStaticTimeTracker - 内存静态时间跟踪
class IPathFinder - 寻路类(接口)
class IPath - 路径根类(接口)
class IMouseInput - 鼠标输入(接口)
class IMapDamage - 获取地图损伤(接口) 地图被炸出洞就损伤了。
class ILogSubscriber - Log信息
class IGroupAICallback - AI组回调
class IGroupAI - AI组
class IGlobalAICallback - 全局AI回调
class IGlobalAI - 全局AI管理
class IFramebuffer - 帧缓冲
class IAICheats - AI欺骗,假设网络不可靠
class IAICallback - AI回调
class Frustum - 视锥管理
class FileSystemHandler - 文件系统处理
class FileSystem - 文件系统
class FBO - FrameBuffer对象
class float3 - 向量类
class DLLLib - 动态链接管理
class CWreckProjectile - 弹片残害处理
class CWorldObject - 世界对象
class CWordCompletion - 单词管理?
class CWind - 风,游戏中的风用来风力发电
class CWin32MouseInput - Win32的鼠标输入
class CWeaponProjectile - 武器射弹
class CWeaponDefHandler - 武器定义处理
class CWeapon - 武器类
class CWakeProjectile - 发射激光吗?
class CWaitCommandsAI - AI等待命令
class CVFSHandler - 虚拟文件系统处理?
class CVertexArrayRange - 顶点数组范围
class CVertexArray - 顶点数组
class CUnitTracker - 单位跟踪
class CUnitLoader - 加载单位
class CUnitHandler - 单位管理
class CUnitDrawer - 单位绘制
class CUnitDefHandler - 单位定义处理
class CUnit3DLoader - 3D单位加载
class CUnit - 单位
class CTWController - 摄影机控制类
class CTransportUnit - 运输单位
class CTransportCAI - 运输电脑AI
class CTracerProjectile - 跟踪飞弹
class CTorpedoProjectile - 鱼雷飞弹
class CTorpedoLauncher - 鱼雷发射台
class CTooltipConsole - 控制台提示
class CTimeProfiler - 时间配置文件管理?
class CTextureHandler - 纹理处理
class CTextureAtlas - 纹理地图
class CTestScript - 测试脚本
class CTeam - 分组
class CTAPalette - TA调色板
class CTAAirMoveType - TA飞机移动类型
class CSyncTracer - 同步跟踪内存错误吗?
class CSyncedPrimitiveBase - 同步图元基类
class CSyncDebugger - 同步调试内存?
class CStdExplosionGenerator - 标准爆炸发生器
class CStartPosSelecter - 起始位置选择器
class CStarburstProjectile - 星星爆裂弹片
class CStarburstLauncher - 星星爆裂发射器
class CStandardGroundFlash - 标准战场闪电
class CSpherePartSpawner - 属于弹片部分?
class CSpawnScript - Spawn脚本
class CSound - 声音处理
class CSolidObject - 实体对象
class CSmokeTrailProjectile - 烟轨迹弹片?
class CSmokeProjectile2 - 烟弹片2
class CSmokeProjectile - 烟弹片
class CSmfReadMap - 读取地图? Smf?
class CSm3ReadMap - Sm3读取地图
class CSm3GroundDrawer - Sm3地面绘制?
class CSkyBox - 天空盒
class CSimpleParticleSystem - 简单粒子系统
class CSimpleGroundFlash - 简单地面闪光
class CShipMoveMath - 船移动Math
class CShieldParProjectile - 零件弹片部分?
class CShareBox - 共享盒子
class CShadowHandler - 阴影管理
class CSensorHandler - 传感器管理
class CSelectionKeyHandler - 选择键处理
class CSelectionUnitsAI - AI单元选择器
class CSelectedUnits - 已被选中的单位
class CScriptHandler - 脚本处理
class CScript - 脚本
class CSaveInterface - 保存接口
class CS30Parser - S30分析器
class CRotOverheadController - 机器人头上控制器?
class CRifle - 来复枪?抢夺?
class CResourceBar - 资源条
class CRepulseGfx - 拒绝Gfx
class CRefractWater - 水面折射
class CReadMap - 读取地图
class CRangedGoalWithCircularConstraint - 山脉圆环约束
class CRadarHandler - 雷达处理
class CQuitBox - 退出按钮
class CQuadField - 四边形平原
class CProjectileHandler - 闪光弹片处理?
class CProjectile - 射弹
class CPreGame - 预处理游戏
class CPlayer - 玩家
class CPlasmaRepulser - 等离子排斥
class CPieceProjectile - 弹片块
class CPathManager - 路径管理
class CPathFinderDef - 路径找寻定义
class CPathFinder - 寻路实现
class CPathEstimator - 路径评估
class CPathCache - 路径缓冲
class COverviewController - 一般摄影机控制器
class COverheadController - 一般头步摄影机控制器
class COutlineFont - 绘制字体轮廓
class CObject_pointer - 对象指针
class CObject - 物体对象基类
class ConfigHandler - 配置处理
class CNoWeapon - 没有武器
class CNet - 网络类
class CMyMath - 我的数学
class CMuzzleFlame - 喷嘴火焰
class CNoMapDamage - 地图无损害
class CMoveType - 移动类型
class CMoveInfo - 移动信息
class CMouseHandler - 鼠标管理
class CMouseCursor - 鼠标光标
class CModInfo - Mod信息?
class CMobility - 移动性
class CMobileCAI - 移动的电脑AI
class CMissileProjectile - 导弹发射物
class CMissileLauncher - 导弹发射台
class CMiniMap - 小地图
class CMetalMap - 金属地图
class CMessages - 消息类
class CMemPool - 内存池
class CMeleeWeapon - 混战武器
class CMatrix44f - 4x4矩阵
class CLuaUI - LuaUI类
class CLuaState - Lua状态
class CLuaBinder - Lua绑定
class CLosHander - ???
class CLogOutput - 日志输出
class CLogger - 日志
class CLoadScript - 加载脚本
class CLoadSaveInterface - 加载保存接口
class CLoadInterface - 加载接口
class CLineDrawer - 绘制线
class CLightingProjectile - 激光弹片
class CLightingCannon - 激光大炮
class CLaserProjectile - 激光弹片
class CLaserCannon - 激光大炮
class CLargeBeamLaserProjectile - 大电波射弹
class ClassAliasList - 类转换表
class CKeySet - 关键集
class CKeyCodes - 关键代码
class CKeyBindings - 关键捆绑
class CKeyAutoBinder - 关键自动绑定
class CInterceptHandler - 截取处理
class CInputReceiver - 输入接收
class CInMapDraw - 绘制内部地图?
class CInfoConsole - 控制台信息
class CIconHandler - 图标处理
class CIcon - 图标
class CHoverMoveMath - 盘旋移动
class CHeatCloudProjectile - 地热弹片?
class CGuiHandler - GUI处理
class CGroupHandler - 组处理
class CGroupAICallback - 组AI回调(实现)
class CGroup - 组
class CGroundMoveType - 组移动类型
class CGroundMath - 组移动数学
class CGroundFlash - 地面闪电
class CGroundHandler - 地面处理
class CGround - 地面
class CGrassDrawer - 绘制草
class CGrassBlockDrawer - 绘制草地块
class CGlobalUnsyncedStuff - 全局非同步stuff
class CGlobalAITestScript - 全局AI测试脚本
class CGlobalSyncedStuff - 全局同步Stuff
class CGlobalAIHandler - 全局AI处理
class CGlobalAICallback - 全局AI回调
class CGloblaAI - 全局AI
class CGfxProjectile - Gfx弹片
class CGeoThermSmokeProjectile - GeoTherm烟雾弹片
class CGeoSquareProjectile - 几何正方形弹片
class CGemetricObjects - 几何对象
class CGenericParticleProjectile - 一般粒子弹片
class CGameSetup - 设置游戏
class CGameServer - 游戏服务器
class CGameInfo - 游戏信息
class CGameHelper - 游戏帮助
class CGameController - 游戏控制?
class CGame - 游戏
class CglTextBox - gl文本按钮
class CglList - gl列表
class CglFont - gl字体
class CFPSController - FPS摄影机
class CFlareProjectile - 闪光弹片
class CFlameThrower - 火焰抛射
class CFlameProjectile - 火焰弹片
class CFireProjectile - 火弹片
class CFireBallProjectile - 火球弹片
class CFileHandler - 文件处理
class CFeatureHandler - 特性处理
class CFeature - 属性
class CFartextureHandler - 远纹理处理
class CFactoryCAI - 工厂电脑AI
class CFactory - 工厂
class CExtractorBuiding - 吸取器构造
class CExploSpikeProjectile - 爆炸Spike弹片
class CExplosiveProjectile - 爆炸弹片
class CExplosionGeneratorHandler - 爆炸发生器管理
class CExplosionGenerator - 爆炸发生器
class CExpGenSpawner - ???
class CEndGameBox - 结束游戏按钮
class CEmptyScript - 敌人脚本
class CEmgProjectile - Emg弹片
class CEmgCannon - Emg大炮
class CDynWater - 力学水
class CDxSound - Dx声音
class CDirtProjectile - 泥土弹片
class CDGunWeapon - 大武器
class CDefaultMouseInput - 默认鼠标输入
class CDamageArrayHandler - 损害数组管理
class CCustomExplosionGenetor - 自定义爆炸发生器
class CCursorIcons - 自定义图标
class CConsoleHistory - 控制台历史
class CCommanderScript2 - 指挥官脚本
class CCommanderScript - 指挥官脚本
class CCommanderColors - 指挥官颜色
class CCommandAI - 指挥官AI
class CColorMap - 颜色地图
class CCobThreadPtr_less - 线程指针_less
class CCobThread - Cob线程
class CCobInstance - Cob实例
class CCobFile - Cob文件
class CCobEngine - Cob引擎
class CClipboard - 剪切板
class CCategoryHandler - 分类处理
class CCannon - 大炮
class CCameraController - 摄影机控制
class CCamera - 摄影机
class CBuilding - 构造
class CBuilderCAI - 建造电脑AI
class CBuilder - 建造者
class CBubbleProjectile - 泡沫弹片
class BombDropper - 炸弹Dropper
class CBitmapMuzzleFlame - 位图喷嘴火焰
class CBitmap - 位图
class CBFGroundTextures - BF地面纹理
class CBFGroundDrawer - BF地面绘制
class CBeamLaserProjectile - 链条激光弹片
class CBeamLaser - 链条激光
class CBasicWater - 基本水
class CBasicTreeDrawer - 基本树绘制
class CBasicSky - 基本天空
class CBasicMapDamage - 基本地图损害
class CBaseWater - 水基类
class CBaseTreeDrawer - 树绘制基类
class CBaseSky - 天空基类
class CBaseGroundDrawer - 地面绘制基类
class CBackgroundReader - 后台读取
class CAVIGenerator - AVI产生器
class CArchiveZip - Zip档案处理
class CArchiveScanner - 档案扫描
class CArchiveHPI - 档案HPI???
class CArchiveFactory - 档案工厂???
class CArchiveDir - 档案显示
class CArchiveBuffered - 档案缓冲
class CArchiveBase - 档案基类
class CArchive7Zip - 档案7压缩???
class CAICheats - AI欺骗,模拟???
class CAICallback - AI回调
class CAirScript - 飞机脚本
class CAirMoveType - 飞机移动类型
class CAirCAI - 飞机电脑AI
class CAirBaseHandler - 飞机基类处理
class CAdvWater - 高级水
class CAdvTreeGenerator - 高级树产生器
class CAdvTreeDrawer - 高级树绘制
class CAdvSky - 高级天空
class C3DOParser - 3DO分析???
class C3DModelParser - 3D模型分析
class content_error - 内容错误???
class BGet - 内存分配器
class BaseCmd - Cmd基类
class AbicProxy - Abic代理???
// 其中有一个类叫做BGET类,这个类主要用于分配内存, BGET类的算法已经诞生了20多年了,其设计者John Walker
把此算法作为了公共领域的算法而发布,这是一种开源行为,他没有把他的算法申请专利,是值得我们称颂的。
就像TASpring一样, 都是开放源代码的。 BGET内存分配器算法 诞生于 1972年, 在多个平台进行了重新实现,
包括 大型机 PC机 小型机, 此算法经过了长期的检验,非常稳定,快速。
关于BGET
Buffer allocator [缓冲分配]
1972年John Walker设计并实现,基于1966年的Algol OPRO$ 算法实现。
此程序为 public domain
//TASpring代码对象分析
//文件 宏和常量 命名空间 全局变量和全局函数 类 和结构
//类 结构 全局变量 名字空间 枚举值
// 玩家看到了这些类,一定知道开发者多么辛苦了,所以希望很多玩家要尊重广大游戏开发者。