oops Framwork creator游戏开发框架

news2024/10/1 12:13:18

环境: Mac


oops Framework

该框架是由gdflas编写,基于cocosCreator 3.x 而实现的开源游戏框架。特点:

  • 框架通过插件方式提供,与项目相分离,方便不同版本平滑升级
  • 内置模块低耦合, 可根据需要进行删减, 以适应不同类型的游戏
  • 封装了常用的功能库,支持动画状态机,行为树等
  • 支持ECSMVVM框架
  • 支持屏幕适配,脚本模版创建,Excel的解析,ProtoBuf等

作者提供了两个项目工程:

  • oops-framework oops项目实例工程, 可用于学习和研究框架的功能相关
  • oops-game-kit oops的游戏开发模版, 可用于开发微信小游戏等项目

前者用于学习和研究,后者用于开发,方便快捷。该框架通过插件的方式提供, 主要有:

  • oops-plugin-framework 游戏框架插件
  • oops-plugin-hot-update 热更新插件
  • oops-plugin-excel-to-json Excel转Json的插件
  • oops-plugin-bundle AB包资源路径管理插件

作者针对于oops-framework的学习,提供了很多的资料参考:

哔哩视频教程-dgflash

CSDN博客-dgflash

cocos论坛-dgflash

cocosCreator商城搜索oops也可以找到

感谢作者将该框架开源分享给更多的人使用。


项目安装

以项目实例工程: oops-framework 为例:

  1. 打开Gitee的项目工程: oops-framework

  2. 复制克隆/下载下的链接, 打开终端命令,项目克隆:

git clone https://gitee.com/dgflash/oops-framework.git
  1. 项目下载成功后,先不要通过cocosCreator项目编译器打开项目, 因为项目的主体需要插件的支持, 直接打开,会有各种各样的错误。

  2. 终端命令进入到oops-framework的项目目录中, 先执行update-oops-plugin-framework的命令, 用于框架插件的下载:

./update-oops-plugin-framework.sh 

// 如果命令提示错误,类似如下:
// -bash: ./update-oops-plugin-bundle: No such file or directory
// 可以增加 sudo ,它会提示你输入登录密码
sudo ./update-oops-plugin-framework.sh 

// 如果使用sudo后,报错:command not found,那就再运行下命令
chmod u+x fileName.sh
sudo ./fileName.sh

插件下载成功,会放到项目extensions目录下,其他插件根据需要自行下载

sudo ./update-oops-plugin-bundle.sh
sudo ./update-oops-plugin-excel-to-json.sh
sudo ./update-oops-plugin-hot-update.sh
  1. 打开cocosCreator编译器,导入项目并打开,选择资源管理器 -> assets --> main.scene打开,运行游戏:
    请添加图片描述

至此项目配置结束。


项目结构

oops-framework的项目目录结构,跟cocosCreator的项目结构 是一样的,只是额外增加了:

  • doc 放置了core, ecs, mvvm的配置说明文件,建议学习的时候进行参考
  • excel excel表配置文件,用于通过update-oops-plugin-excel-to-json插件转换为json等
  • extensions 插件目录
  • .bat/.sh 更新指定的插件配置相关,以update-oops-plugin-framework.sh为例:
# 检测是否存在extensions目录,不存在则创建
if [ ! -d "extensions" ]; then
    mkdir extensions
fi
# 进入extensions目录
cd extensions

# 检测是否存在oops-plugin-framework
# 不存在,则克隆; 存在则拉取用于更新
if [ ! -d "oops-plugin-framework" ]; then
    git clone -b master https://gitee.com/dgflash/oops-plugin-framework.git
else
    cd oops-plugin-framework
    git pull
fi

根据相关的.bat/.sh命令,就可以下载或更新插件相关,方便快捷。


框架结构

框架的主要结构在插件oops-plugin-framework
请添加图片描述

目录:extensions/oops-framework/assets,主要有:

  • core 框架核心技术库相关
  • libs 框架可选技术库相关, 可根据项目需要自动剔除
  • moudule 通用模块相关

目录结构:

core

common 公共模块相关

audio 音频模块

event 全局事件

loader 资源管理相关

log 日志模块

random 随机管理

storage 本地存储

timer 定时器相关

game 游戏世界类

gui 游戏界面类

layer 多层界面、窗口管理

prompt 公共提示窗口

utils 各类工具

Oop.ts 框架功能访问接口

Root.ts 框架视图层根节点管理组件

libs 框架中可选技术库

animator 可视化动画状态机

animator-effect 动画特效组件

animator-move 动画移动组件

behavior-tree 行为树框架

camera 摄像机控制组件

collection 数据集合处理

ecs ECS框架

gui 界面组件, 比如:红点提示、按钮、标签、多语言等组件

model-view MVVM框架

network 网络模块, 支持Http, WebSocket的请求相关,支持Protobuf

render-texture 渲染纹理组件, 可用于三维模型显示到二维精灵等

module 游戏通用模块

common 公共模块

config 配置模块

基础相关:

  • LayerManager.ts UI界面管理, 可用于显示不同的UI页面相关
  • ResLoader.ts 资源管理相关, 可用于resources及其他bundle的加载
  • TimerManager.ts 时间管理相关,可用于时间的显示及定时器相关
  • AudioManager.ts 声音管理相关,可用于音乐音效的播放
  • MessageManager.ts 可用于消息的注册和监听相关
  • GUI.ts 可用于屏幕匹配相关
  • StorageManager.ts 本地存储,支持AES数据加密

组件相关:

  • libs/gui/button 按钮相关, 支持点击效果,防连点和长按点击等
  • libs/gui/language 多语言相关, 支持Label, Sprite, Spine等
  • libs/model-view MVVM组件库相关
  • libs/animator-effect 特效管理相关,比如流光效果等

网络相关

  • libs/network/HttpRequest.ts Http请求相关
  • libs/network/NetManager.ts webSocket请求相关

工具相关

  • Logger.ts 日志管理,支持网络层,业务,视图,配置等日志的显示
  • RandomManager.ts 随机管理器,支持指定范围内的随机数显示
  • core/utils 工具相关,比如:数学运算、字符串、正则、加密、Json加载等
  • libs/network/protocol zip压缩相关

项目开发

暂且以示例项目为例, 在项目开发中,注意几点内容:

  • 该框架是支持屏幕适配的,通过项目 -> 项目设置 设定宽度和高度后,选择适配屏幕宽度和高度即可,框架那边会进行处理
  • 创建脚本时,框架提供了不同模块的模版文件,主要有:
// oops-framework/.creator/asset-templete/typeScript
Module.ts
ModuleBll.ts		// 业务层对象
ModuleModel.ts	// 数据层对象
ModuleTable.ts	// Excel表导出的Json数据相关
ModuleView.ts 	// 视图层对象
ModuleViewVM.ts // MVVM的视图层对象
  • assets/script/game/initialize/bll/InitRes.ts 它主要用于项目启动时加载必备的资源,注意:要控制资源的大小,避免加载导致黑屏时间过长
entityEnter(e: Initialize): void {
  var queue: AsyncQueue = new AsyncQueue();

  // 加载自定义资源
  this.loadCustom(queue);
  // 加载多语言包
  this.loadLanguage(queue);
  // 加载公共资源
  this.loadCommon(queue);
  // 加载游戏内容加载进度提示界面
  this.onComplete(queue, e);

  queue.play();
}
  • assets/script/game/initialize/view/LoadingViewComp.ts 资源加载进度条,在加载结束后,会通过如下进入设定的主页面
reset(): void {
  setTimeout(() => {
  	// 关闭加载界面
  	oops.gui.remove(UIID.Loading);

		// 打开游戏主界面(自定义逻辑)
		oops.gui.open(UIID.Demo);
	}, 500);
}
  • assets/script/game/initialize/view/HotUpdate.ts 热更新相关, 主要的配置文件在resources目录下,分别为project.manifestversion.mainifest

最后祝大家学习oops Framework顺利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/919606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用HTML5新增的标签来构建语义化的页面结构?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ <header>&#xff1a;⭐ <nav>&#xff1a;⭐ <main>&#xff1a;⭐ <section>&#xff1a;⭐ <article>&#xff1a;⭐ <aside>&#xff1a;⭐ <footer>&#xff1a;⭐ <figure> 和 &l…

开黑啦kook 机器人开发 PHP swoole Liunx 服务器(宝塔)

安装环境 PHP 拓展 直接使用 宝塔一键安装 &#xff08;Windows系统不支持&#xff09; 设置命令行的PHP版本避免执行脚本时 获取不到 swoole 检查swoole是否安装成功 获取官方SDK GitHub - kaiheila/php-bot: 开黑啦机器人的php版本https://github.com/kaiheila/php-bot 配…

同态排序算法

参考文献&#xff1a; [Batcher68] Batcher K E. Sorting networks and their applications[C]//Proceedings of the April 30–May 2, 1968, spring joint computer conference. 1968: 307-314. [SV11] Smart, N.P., Vercauteren, F.: Fully homomorphic SIMD operations. IA…

智能井盖传感器,物联网智能井盖系统

随着城市人口的不断增加和城市化进程的不断推进&#xff0c;城市基础设施的安全和可靠性变得愈发重要&#xff0c;城市窨井盖作为城市基础设施重要组成部分之一&#xff0c;其安全性事关城市安全有序运行和居民生产生活安全保障。 近年来&#xff0c;各地都在加强城市窨井盖治理…

多页面应用多次引入同一个资源优化方法

介绍 项目是多页面应用&#xff0c;每个界面都会引入一次layui框架源码&#xff0c;造成未优化之前界面加载十分缓慢 优化探索 想办法让多页面只加载一次 但是由于多页面使用iframe&#xff0c;主页面和子页面资源隔离&#xff0c;无法让资源只加载一次 利用浏览器缓存 在…

为Claude的分析内容做准备:提取PDF页面内容的简易应用程序

由于Claude虽然可以分析整个文件&#xff0c;但是对文件的大小以及字数是有限制的&#xff0c;为了将pdf文件分批传入Claude人工智能分析和总结文章内容&#xff0c;才有了这篇博客&#xff1a; 在本篇博客中&#xff0c;我们将介绍一个基于 wxPython 和 PyMuPDF 库编写的简易的…

计算机安全学习笔记(I):访问控制安全原理

访问控制原理 从广义上来讲&#xff0c;所有的计算机安全都与访问控制有关。 RFC 4949: Internet Security Glossary, Version 2 (rfc-editor.org) RFC 4949 定义的计算机安全&#xff1a;用来实现和保证计算机系统的安全服务的措施&#xff0c;特别是保证访问控制服务的措施…

【Flink】Flink提交流程

我们通常在学习的时候需要掌握大数据组件的原理以便更好的掌握这个大数据组件&#xff0c;Flink实际生产开发过程中最常见的就是提交到yarn上进行调度&#xff0c;模式使用的Per-Job模式&#xff0c;下面我们就给大家讲下Flink提交Per-Job任务到yarn上的流程&#xff0c;流程图…

【图论】缩点的综合应用(一)

一.缩点的概念 缩点&#xff0c;也称为点缩法&#xff08;Vertex Contraction&#xff09;&#xff0c;是图论中的一种操作&#xff0c;通常用于缩小图的规模&#xff0c;同时保持了图的某些性质。这个操作的目标是将图中的一些节点合并为一个超级节点&#xff0c;同时调整相关…

springboot小知识:配置feign服务超时时间

背景&#xff1a;当前项目通过feign服务调用了其他两个项目的接口&#xff0c;但是由于特殊需求&#xff0c;需要调整某一个项目的feign服务的默认超时时间&#xff1a; 默认连接超时10秒&#xff0c;默认读取超时时间 60秒 1.找到定义的FeignClient 2.根据FeignClient定义的名…

基于YOLOV8模型的课堂场景下人脸目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOV8模型的课堂场景下人脸目标检测系统可用于日常生活中检测与定位课堂场景下人脸&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检…

Unity实现UI图片面板滚动播放效果第二弹

效果&#xff1a; 场景结构&#xff1a; 特殊物体&#xff1a;panel下面用排列组件horizent layout group放置多个需要显示的面板&#xff0c;用mask遮罩好。 主要思路&#xff1a; 这次是要在最后一个toggle的地方&#xff0c;依然向左滚动回1&#xff0c;这是难点。因此实际…

【接口优化方案解决】

文章目录 前言1、批量插入或者查询数据库2、异步思想 耗时操作&#xff0c;考虑放到异步3、空间换时间思想&#xff1a;恰当使用缓存。4. 预取思想&#xff1a;提前初始化到缓存5、借用线程池6. 事件回调思想&#xff1a;拒绝阻塞等待。7、锁粒度避免过粗8、切换存储方式&#…

考研数据结构:第八章 排序

文章目录 一、排序的基本概念二、插入排序2.1插入排序2.1.1算法思想2.1.2算法实现2.1.3算法效率分析2.1.4算法优化——折半插入排序 2.2希尔排序2.2.1算法思想2.2.2代码实现2.2.3算法性能分析 三、交换排序3.1冒泡排序3.1.1算法思想3.1.2代码实现3.1.3算法性能分析 3.2快速排序…

flutter对数组中某个数据二次加工成单独的数组

如何将数据[2,1,2,2,2,1,2,2,3,2,2,2,2,3,2,2,2,2,2,3,2,4,2,2,1,2,3,2,4,2]加工成 [[2], 1, [2, 2, 2], 1, [2, 2], 3, [2, 2, 2, 2], 3, [2, 2, 2, 2, 2], 3, [2], 4, [2, 2], 1, [2], 3, [2], 4, [2]]。这是实际工作中遇到的问题&#xff0c;UI要求将某一类型数据&#xff…

【无标题】idea 中 SpringBoot 点击运行没反应,按钮成灰色

问题描述 在使用 Spring Boot 开发项目时&#xff0c;可能会遇到一个问题&#xff1a;点击运行按钮后&#xff0c;控制台没有任何输出&#xff0c;项目界面也没有显示。这种情况可能是由多种原因导致的&#xff0c;本文将介绍一些常见的解决方法。 解决方法 首先看下Groovy插…

Nexus 如何配置 Python 的私有仓库

Nexus 可作为一个代理来使用。 针对一些网络环境不好的公司&#xff0c;可以通过配置 Nexus 来作为远程的代理。 Group 概念 Nexus 有一个 Group 的概念&#xff0c;我们可以认为一个 Nexus 仓库的 Group 就是很多不同的仓库的集合。 从下面的配置中我们可以看到&#xff0…

自带云盘的内网即时通讯软件,保障数据在公司局域网内安全流通

在信息时代&#xff0c;很多对于内部机密性要求较高的企业&#xff0c;都不惜成本地选择在内网搭建专属的私有化即时通讯系统。企业员工在内部通讯与协同办公的时候&#xff0c;会分享一些文件、文档等资料&#xff0c; 为了保证所有在通讯软件流通的文件&#xff0c;就需要选…

高性能服务器Nodejs操作Mysql数据库

目录 1 Node 操作 mysql1.2 操作 mysql 数据库 2 Web 开发模式2.1 服务端渲染2.2 前后端分离2.3 如何选择 3 身份认证3.1 Session 认证机制3.2 JWT 认证机制 1 Node 操作 mysql 数据库和身份认证 配置 mysql 模块 安装 mysql 模块 npm install mysql建立连接 const mysql …

Windows下编译boost库

准备工作 下载boost库。官方下载地址&#xff1a;为了避免官方版本下载较慢&#xff0c;可以在这里下载版本为1.78安装Virtual Studio&#xff0c;测试过2013以上的版本都可以编译最新版本的boost库&#xff0c;2013之前的版本没有做过测试。 启动编译 启动vistual studio的命…