找回密码
 register

QQ登录

只需一步,快速开始

查看: 1461|回复: 0

[游戏教程] 一、武侠世界2源码分析:全局对象与模块

[复制链接]

[游戏教程] 一、武侠世界2源码分析:全局对象与模块

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
12364
Waylee 2023-6-14 16:55 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
1.1 Game
Client\game\Global.h
对象/变量类型对象/变量名
tDebuger*g_pDebuger
tVariableSystem*g_pVaribleSys
tSoundSystem*g_pSoundSystem
tWorldSystem*g_pWorldSystem
tEventSystem*g_pEventSys
tTimeSystem*g_pTimeSystem
tResourceProvider*g_pResourceProvider
tDataBaseSystem*g_pDataBase
tKernelg_theKernel
HWNDg_hMainWnd
HINSTANCEg_hInstance
const CHARVERSION_INFO[]
const CHARGAME_TITLE[]
boolg_bDebugMode

1.2 核心数据对象

指针指针类型实际类型存储位置备注
s_pInputSystemtInputSystemCInputSystembin\input0.输入管理器
s_pTimeSystemtTimeSystemtTimeSystembin\time1.计时器
s_pNetManagerCNetManagerCNetManagerbin\netman2.网络管理器
s_pSoundSystemtSoundSystemCSoundSystemFModbin\snd3.音效管理器
s_pGfxSystemtGfxSystemCEngineInterfacebin\gfx4.渲染器节点
s_pDebugertDebugertDebugerbin\debuger5.调试器节点
s_pObjectManagertObjectSystemCObjectManagerbin\objman6.物体管理器
s_pUISystemtUISystemCUISystembin\ui_7.UI 管理器
s_pDataBaseSystemtDataBaseSystemCDataBaseSystembin\dbc8.数据库管理器
s_pWorldManagertWorldSystemCWorldManagerbin\worldman9.世界管理器
s_pVariableSystemtVariableSystemCVariableSystembin\var10.系统变量管理器
s_pGameInterfacetGameInterfaceBaseCGameInterfacebin\interface11.接口管理器
s_pUIDataPooltUIDataPoolCUIDataPoolbin\datapool12.UI 数据池
s_pDataPooltDataPoolCDataPoolbin\datapool_12.UI 数据池
s_pCursorMngtCursorSystemCCursorMngbin\cursor13.鼠标指针管理器
s_pScriptSystemtScriptSystemCScriptSystembin\script14.脚本系统
s_pEventSystemtEventSystemCEventSystembin\event15.事件系统
s_pActionSystemtActionSystemCActionSystembin\action16.操作管理器
s_pFakeObjSystemtFakeObjSystemCFakeObjSystembin\fake17.UI 模型显示管理
s_pHelperSystemtHelperSystemCHelperSystembin\helper18.外接帮助系统
s_pResourceProvidertResourceProviderCResourceProviderbin\resprovider19.资源提供
timerSystTimerSystemCTimerManagerbin\timer20.定时器
s_pTransferItemSystemtTransferItemSystemCTransferItemSystembin\transfer21.物品传输系统

取回对象
g_pScriptSys = (tScriptSystem*)g_pKernel->GetNode("bin\\script");
g_pEventSys = (tEventSystem*)g_pKernel->GetNode("bin\\event");
g_pActionSys = (tActionSystem*)g_pKernel->GetNode("bin\\action");
g_pInputSys = (tInputSystem*)g_pKernel->GetNode("bin\\input");
g_pGfxSystem = (tGfxSystem*)g_pKernel->GetNode("bin\\gfx");
g_pObjectSystem = (tObjectSystem*)g_pKernel->GetNode("bin\\objman");
g_pCursorSystem = (tCursorSystem*)g_pKernel->GetNode("bin\\cursor");
g_pDebuger = (tDebuger*)g_pKernel->GetNode("bin\\debuger");
g_pWorldSystem = ( tWorldSystem* ) g_pKernel->GetNode("bin\\worldman");
g_pTimer = (tTimeSystem*)g_pKernel->GetNode("bin\\time");
g_pFakeSystem = (tFakeObjSystem*)g_pKernel->GetNode("bin\\fake");
g_pVariableSystem = (tVariableSystem*)g_pKernel->GetNode("bin\\var");
g_pGameInterface = (tGameInterfaceBase*)g_pKernel->GetNode("bin\\interface");
g_pDataBaseSystem = (tDataBaseSystem*)g_pKernel->GetNode("bin\\dbc");
g_pSoundSystem = (tSoundSystem*)g_pKernel->GetNode("bin\\snd");
g_pTransferItemSystem = (tTransferItemSystem*)g_pKernel->GetNode("bin\\transfer");

1.3 CEngineInterface

CengineInterface 其实是上层图形适用接口层,叫 GraphicInterface 或 GfxInterface 更合适。在核心数据对象中排老四:“4.渲染器节点”。

1.3.jpg

初始化
过程名: VOID CEngineInterface::Initial(VOID* pParam)
主要工作:
1. 对各个全局对象进行赋值
2. 加载场景资源配置文件(simpleResources.cfg)
3. 加载渲染插件

RenderSystem_Direct3D9_d.dll

Plugin_ParticleFX_d.dll

Plugin_ParticleFX2_d.dll

Plugin_OctreeSceneManager_d.dll

Plugin_CgProgramManager_d.dll

4. 设置 FSAAvsync
5. 创建查询射线
6. 初始化调试面板
7. 创建摄像机
8. 创建 PostFilter

Floodlighting

Bloom

HeatVision

Fade

MotionBlur

9. 设置声音接口
10. 创建 fake obeject
11. 设置粒子 Iteration Interval 为 0.033
12. 设置光照

加载人物阴影配置

加载全局泛光配置




1.4 Client 模块表


  1. 序号    module      Tick    描述                    class
  2. 1       -           0       -                       -
  3. 2       -           0       -                       -
  4. 3       Database    0       数据库系统               CDataBase
  5. 4       Datapool    0       -                       -
  6. 5       Event       Yes     游戏事件处理器           CEventSystem
  7. 6       fakeObject  Yes     用于在 ui 上显示的物体管理器接口   CFakeObjSystem
  8. 7       Helper      0       程序外接帮助系统          CHelperSystem
  9. 8       Input       Yes     输入管理器               CInputSystem
  10. 9       Interface   0       整个游戏的外部控制接口类   CGameInterface
  11. 10      Network     -       -                       -
  12. 11      Object      Yes     -                       -
  13. 12      Procedure   Yes     游戏运行的流程            CGameProcedure
  14. 13      Script      Yes     脚本系统管理器(LUA PLUS)  CScriptEnvironment
  15. 14      Sound       -       -                       -
  16. 15      Variable    0       配置参数系统             CVariableSystem
  17. 16      World       -       -                       -
复制代码



1.6 Tick()
以下是涉及到Tick()的部分主要类:
tNode 
tTimeSystem 
CUICreatureBoardSystem 
CUISystem 
CActionSystem 
CDetailAttrib_Base 
CDetailAttrib_Pet 
CDetailAttrib_Player 
CDataPool 
CUIDataPool 
CEngineInterface 
CEventSystem 
CFakeObjSystem 
CHelperSystem 
CInputSystem 
CInputManager 
CGameInterface 
CNetManager 
CObjectDestoryQueue 
CObjectLoadQueue 
CObject_Bus 
CAI_Base 
CAI_MySelf 
CObject_Character 
CObject_PlayerPet 
CObject_Phy 
CObject_ProjTex_MouseTarget 
CObject_ProjTex_AuraDure 
CObject_ProjTex_BloodStain 
CObject_Bullet 
CObject_Effect 
CObject_Special 
CTripperObject_ItemDrop 
BulletFlowSystem_Logic 
CBulletEntityManager 
CFakeObjSystem 
CObjectManager 
CGamePro_ChangeScene 
CGamePro_CharCreate
CGamePro_CharSel 
CGamePro_Enter 
CGamePro_Login 
CGamePro_Main 
CGameProcedure 
CScriptSystem 
CSoundSystemFMod 
CScene 
CWorldManager



2 代码风格

局部对象 s_或 m_
全局对象 g_


您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-20 04:36 , Processed in 0.100340 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表