如何使用Xash3d引擎开发游戏

无论使用任何框架或者任何引擎,第一件事就是要搞明白在哪里写代码、如何输出hello world。

1. 引擎的架构

开发Xash3d引擎的游戏需要开发三个dll:

  1. client.dll (client_amd64.dll)
    游戏客户端,必要。
    存放目录: 引擎目录/游戏名称/cl_dlls/client.dll
  2. mp.dll (mp_amd64.dll)
    游戏服务端,必要。
    存放目录: 引擎目录/游戏名称/cl_dlls/mp.dll
  3. menu.dll (menu_amd64.dll)
    进入游戏前的界面,不必要。
    存放目录: 引擎目录/游戏名称/cl_dlls/menu.dll, 或者: 引擎目录/menu.dll。

2. 导出函数

各个DLL需要导出的函数(具体函数的作用待更新)

  1. client.dll

    void Initialize( cl_enginefuncs_t *pfuncs, int version );
    void HUD_Init( void );
    void HUD_VidInit( void );
    void HUD_Shutdown( void );
    void HUD_Redraw( void );
    void HUD_UpdateClientData( void );
    void HUD_Reset( void );
    void HUD_PlayerMove( void );
    void HUD_PlayerMoveInit( void );
    void HUD_PlayerMoveTexture( void );
    void HUD_ConnectionlessPacket( void );
    void HUD_GetHullBounds( void );
    void HUD_Frame( void );
    void HUD_PostRunCmd( void );
    int HUD_Key_Event( int down, int key, const char *binding );
    int HUD_AddEntity( void );
    void HUD_CreateEntities( void );
    void HUD_StudioEvent( void );
    void HUD_TxferLocalOverrides( void );
    void HUD_ProcessPlayerState( void );
    void HUD_TxferPredictionData( void );
    void HUD_TempEntUpdate( void );
    void HUD_DrawNormalTriangles( void );
    void HUD_DrawTransparentTriangles( void );
    void HUD_GetUserEntity( void );
    void Demo_ReadBuffer( void );
    void CAM_Think( void );
    void CL_IsThirdPerson( void );
    void CL_CameraOffset( void );
    void CL_CreateMove( float frametime, usercmd_t *cmd, int active );
    void IN_ActivateMouse( void );
    void IN_DeactivateMouse( void );
    void IN_MouseEvent( void );
    void IN_Accumulate( void );
    void IN_ClearStates( void );
    void V_CalcRefdef( ref_params_t *rp );;
    void IN_ClientMoveEvent( float forwardmove, float sidemove );
    void IN_ClientLookEvent( float relyaw, float relpitch );
    
  2. mp.dll
    void GetEntityAPI2( serverfuncs_t *serverfuncs, int *version );
    void GiveFnptrsToDll( engineapi_t *pengfuncs, globalvars_t *globals );
    void player( entvars_t *vars );
    void worldspawn( entvars_t *vars );
    void grenade( entvars_t *vars );
    
  3. menu.dll
    int GetMenuAPI(UI_FUNCTIONS * pFunctionTable, ui_enginefuncs_t * pEngfuncsFromEngine, ui_globalvars_t * pGlobals);
    void AddTouchButtonToList(const char* name, const char* texture, const char* command, unsigned char* color, int flags);
    void SetImGuiContext(void *ctx);
    

3.构建项目

这不必多说,用自己最擅长的构建工具创建共享库即可。

如何使用Xash3d引擎开发游戏一相关推荐

  1. 基于引擎开发HTML5游戏实战(二)---游戏剧本

    STEP2 设计游戏情节 体验基于引擎开发游戏之后,让我深切感受到,游戏=情节+美工+引擎,编程技术在里面不是决定性因素.一个游戏成功与否很关键的一点是导演和编剧,这和电影电视很类似.当然,两个小时之 ...

  2. 使用 Unity 3D 开发游戏的几个架构设计难点

     Unity 3D 引擎对于开发者来说,入手非常快,因为它采用的是 C# 作为开发语言,这也大大降低了开发者的门槛.但凡只要懂一门编程语言的人都能使用 Unity 3D 引擎开发,另外 Unity 3 ...

  3. 使用 Unity 3D 开发游戏的架构设计难点

    作者:姜雪伟,网名:海阳,CSDN 博客专家,资深 3D 游戏引擎,IT 高级讲师,畅销书作者,从事 IT 行业 15 年,主导或参与了 18 款大型游戏的研发:国家专利发明人:已出版书籍:<手 ...

  4. 打开iPhone自拍,就能用虚幻引擎开发3A游戏大作!新应用无门槛创造超逼真游戏角色...

    贾浩楠 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 3D游戏人物建模,虚幻引擎可以算标杆了吧? 要是我告诉你,只要会自拍,就能用虚幻引擎开发出和3A游戏一样逼真的3D角色呢? 表情.毛 ...

  5. 如何用虚幻引擎4和C++开发游戏?斯坦福相关课程上线

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 如何用虚幻引擎4开发游戏? 现在,斯坦福的相关课程上线啦. 代码.视频.PPT.课后作业一应俱全,还会教你如何在游戏中设置基于行为树的AI, ...

  6. 游戏引擎开发和物理引擎_视频游戏开发的最佳游戏引擎

    游戏引擎开发和物理引擎 In this article, we'll look at some of the most popular game engines for video game deve ...

  7. 虚幻引擎 js开发游戏_通过编码3游戏学习虚幻引擎4-5小时免费游戏开发视频课程

    虚幻引擎 js开发游戏 One of the most widely used game engines is Unreal Engine by Epic Games. On the freeCode ...

  8. 【转载】浅析游戏引擎开发

    浅析游戏引擎开发 1 引言 电脑游戏作为一种娱乐方式越来越为人们所接受.即时通讯开发对于电脑游戏来说, 游戏引擎是用于控制游戏功能的 主程序, 如接受玩家控制信息的输入, 选择合适的声音以合适的音量播 ...

  9. 手把手教你架构3d游戏引擎pdf_游戏开发中的算法

    游戏技术这条路,可深可浅.你可以满足于完成GamePlay玩法层面的东西,你也可以满足于架构和框架设计层面的东西,你也可以醉心于了解某一游戏引擎带来的掌控感.但是,我们不该止步于此,止步与目前所见或所 ...

最新文章

  1. @SupperssWarnings注解
  2. Swift2.0语言教程之下标脚本
  3. windows(64位)下使用curl命令
  4. 最让人头疼的清洗数据过程----选择合适的方式快速命中所需的数据
  5. 每日小记2017.2.22
  6. Android之Camera拍照
  7. 2022美赛备赛资料大全
  8. NSA 将向公众开源逆向工程工具 GHIDRA
  9. 网页的背景颜色变化效果
  10. Micro LED 巨量转移技术
  11. linux强制连接蓝牙键盘,Thinkpad 蓝牙键盘 Fn 键处于锁定状态的解决方法
  12. ubuntu的不同版本
  13. (9)数据分析-相关性分析
  14. 控制/ 状态寄存器(RCC_CSR) 复位
  15. pycharm异常问题之Unable to save settings: Failed to save settings. Please restart PyCharm
  16. 猿创征文|我在人间编程那些年
  17. LSTM和GRU的对比和分析
  18. Pytorch快速搭建Alexnet实现手写英文字母识别+PyQt实现鼠标绘图
  19. 发了两个月传单,转行做了程序员
  20. 发动机控制器集成测试系统

热门文章

  1. OSG 渲染剖析 之 Geometry 的 VBO生成
  2. 【机器学习】Pandas入门
  3. html旋转及自适应
  4. 金蝶获取登录密码方式
  5. 3分钟学会绘制统计图来分析表格数据
  6. COMSOL帮助文档使用总结
  7. 什么是互联网骨干网,它是怎样工作的
  8. linux软连接解决文件目录空间不足的问题
  9. 怎样将Excel包含某字符的单元格填充颜色
  10. 6月城市之星领跑活动获奖名单已出炉