# CLEngine **Repository Path**: jnd/CLEngine ## Basic Information - **Project Name**: CLEngine - **Description**: 基于MonoGame开发的游戏引擎 - **Primary Language**: C# - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: http://hyuan.org - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 29 - **Created**: 2018-08-24 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CLEngine ### 项目介绍 基于MonoGame开发的游戏编辑器 官网: http://www.hyuan.org ### 软件架构 MVVMLIGHT实现视图与逻辑分离 WPF高性能界面 ### 当前功能 1. 自动定位和锚定系统,无论屏幕大小如何,都可以轻松放置元素。 2. 捕获和响应用户与UI交互的事件系统 3. 智能段落和标题,具有多行文本,自动换行,轮廓和其他文本效果 4. 面板(用于小部件的框架容器),内置皮肤和拖动功能 5. 复选框和单选按钮 6. 光标渲染 7. 图像和图标小部件(附带40多个内置图标) 8. 滚动条和动态内容的列表 9. 滑快和进度条 10. 用户文本输入的文本框 - 支持多行,自动换行,滚动条 11. PanelTabs可轻松创建多图表面板 12. 工具提示文字 13. 消息框 14. 样式表和主题,易于扩展 15. 锁定,禁用,阴影和其他基本UI效果和状态 16. 全局缩放属性,以支持不同的屏幕大小 17. 应用转换矩阵 18. 提供了一个通用游戏对象系统,您可以在其中附加/分离组件。 19. 计时器 20. TiledMap 21. 粒子系统 22. 场景管理器 23. 音频管理器 24. 提供简单的API以在磁盘上存储与配置相关的数据(播放器首选项等) 25. 用于从位于特殊游戏文件夹中的文件中编写和读取可序列化对象。 如:动态读取和写入游戏文件 26. 提供诊断和调试数据 27. Bullet3D库 - 刚体。 - 运动体。 - 静态体。 - 碰撞检测和射线投射。 28. 自定义插件 29. 自定义组件 ### 引擎提供 1. 动画 - Animations > 使用Textures和Sprites,我们可以导入Sprite Sheets,在同一个文件上maped图像集合,并通过SpriteBatch在屏幕上绘制它们 2. 位图字体 - BitmapFonts > 使用BMFont工具生成的位图字体用于代替内置SpriteFont的方法之一 3. 相机 - Cameras > 相机的目的是创建一个转换矩阵,改变精灵批处理的渲染方式 4. 集合 - Collections > 集合是对C#集合的扩展,更适合游戏使用 5. 碰撞 - Collisions > 基于2D网格的碰撞系统 6. 资源编译 - ContentPipline 7. 资源 - Content 8. 实体 - Entities > Entities包是一个基于Artemis的现代高性能实体组件系统 9. 图形 - Graphics > 包含用于生成动态几何和批处理绘制调用的扩展 10. 界面 - GUI 11. 输入 - Input 12. 对象池 - ObjectPooling > 对象池是一种优化模式, 在某些情况下,它通过重用对象而不是按需为它们分配内存来提高性能。 在C / C ++中,对象池提供的是一个避免内存碎片的解决方案。 在C#中,由于垃圾回收,我们不必担心内存碎片。 但是,在CPU速度较慢且垃圾收集器较简单的移动设备上我们还是特别需要对象池。 13. 粒子 - Particles > 高性能粒子系统 14. 场景图 - SceneGraphs > 含一个场景图(树)系统 15. 场景 - Screens > ScreenGameComponent管理各个Screen对象 16. 序列 - Serialization > 序列化助手 17. 地图 - Tiled > 加载和渲染使用Tiled Map Editor创建的地图 18. 缓动 - Tweening > 基于补间的动画的类扩展 ### 未来实现功能 1. GPU粒子系统 2. LoD渲染器 3. 物理特性材料 ### 注意事项 1. 仅在Windows上测试过 2. 理论上它应该适用于MonoGame支持的任何平台,但它可能需要对某些设备进行一些调整 3. 文本输入非常弱。不支持高级文本编辑以及复制和粘贴,选择等内容。因此,如果您的项目需要大量文本编辑,则可能需要对文本输进行一些代码编写 4. 适用于鼠标/触摸屏。 它目前不是为仅键盘/操纵杆输入而设计的(例如,它不支持标签导航等) ### 安装教程 1. 下载项目 2. 安装Fonts下所有字体 3. 安装Tools下所有的文件 4. 还原NuGet包 5. 重新生成项目 6. 如果遇到任何问题,可提交issue ### 参与贡献 1. Fork 本项目 2. 新建 feature_xxx 分支 3. 提交代码 4. 新建 Pull Request > 参与项目将在游戏贡献名单中标注,对于提交重大更新将划为 `CLEngine` 工作成员。 # 常见问题 1. 为什么创建游戏后提示丢失资源 > 检查编辑器下是否存在Content文件夹,是否拥有内容,如果没有内容手动打开 `Content.mgcb` 进行编译生成Content文件,如果遇到编译失败问题请查看 `安装教程`