# 库-游戏引擎 **Repository Path**: MtDesert/libGamesEngines ## Basic Information - **Project Name**: 库-游戏引擎 - **Description**: 这是自研的游戏引擎,用于游戏的客户端和服务端,以及相关的辅助工具 此项目为实验性项目,不保证完全包含市面上游戏引擎所用到的技术 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2021-06-23 - **Last Updated**: 2025-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 这是自研的游戏引擎,基于C++开发,用于游戏的客户端和服务端,以及相关的辅助工具 此项目为实验性项目,不保证完全包含市面上游戏引擎所用到的技术。模块分类如下: Cpp11,基于C++11而研发的模块,主要用于解决系统相关的问题 Cpp11/Containers,基于C++11的容器模块,用于容纳不定量的数据(不同的编译环境的容器头文件是有差异的,但是此目录下的则没有) Zipper,压缩模块,基于zlib工作,封装了压缩与解压的主要过程 Lua,lua语言的交互模块,以支持读取游戏中的lua配置文件、剧情脚本等 Math,数学模块,主要处理与数学相关的运算,比如四舍五入的乘除法、向上向下取整等 Network,网络模块,基于epoll开发,以简单的协议处理网络传输的问题 Images,图像模块,处理与图像相关问题,包含一些自定义的绘制算法 Images/FileStructs,图像文件结构,用于读写特定格式的图像文件,比如png、bmp等 Images/ColorSpaces,图像色彩空间,用于将RGB转换成特定的色彩格式,以供特定的算法模块进行图像处理 MapEdit,地图编辑模块,用来支持在游戏中设计各种场景 WarChess,战棋游戏模块,提供对战棋游戏的一些支持 ---------------------------------------------------------------- 游戏设计过程:(假设游戏名字叫“游戏人生”,英文名叫"GameOfLife",本项目的本地路径为/my/path/libGamesEngines) 1.在/my/path下建立文件夹libGameOfLife(用于放源代码)和GameOfLife(用于方非代码的资源文件) 注:整个游戏的编译过程会把执行文件和库文件放在GameOfLife的根目录下,而可以将整个文件夹打包直接发给玩家,玩家无需安装,可以直接运行游戏 如果GameOfLife作为版本库提交的话,不需要提交这些执行文件和库,打包发布给玩家的时候注意不要把".git"".svn"这些版本相关的文件夹也打包了 2.在libGameOfLife下建立文件夹Game,Client,Server,Tools,其中: Game包含游戏核心代码,主要为与界面无关的核心计算,客户端和服务端可以引用这一部分的代码 Client包含客户端代码,主要是界面代码,以及界面对接Game模块的代码,界面的代码只负责传递操作和渲染 Server包含服务端的代码,主要用于跑服务端,与界面无关(如果是单机游戏,则不需要此文件夹) Tools包含工具集的代码,主要是针对本游戏的辅助工具,比如格式转换器,服务端管理员登陆工具等(如果没有此需求,则不需要此文件夹) 3.建立Makefile,并写入如下内容(全英文行) GAME_NAME:=GameOfLife GAME_DIR:=. CLIENT_DIR:=. Scenes Layers Sprites Menus Dialogs Tables SERVER_DIR:=. TOOLS_DIR:=. include ../libGamesEngines/Makefile.inc 其中,*_DIR赋值都是目录,GAME_DIR、CLIENT_DIR、SERVER_DIR、TOOLS_DIR分别对应Game、Client、Server、Tools,libGamesEngines会在这些目录下自动搜索出所有源文件进行编译