小游戏开发指南及过程中的难点问题

article/2025/8/26 14:45:25

如果仅仅针对个人开发者来讲,要独立开发一款大型游戏几乎无可能,更大成功的可能还是开发一款类似《羊了个羊》这样洗脑的小程序游戏。

所以这里主要论述小游戏开发的情况,也就是小程序游戏,首先从小游戏的开发流程来看:主要分为游戏策划、UI设计、音效制作、代码编程和测试上线几个大的流程,中间也会穿插关卡设计、规则设计、人物设计等环节,可以看到其实小程序开发是一个工程量较大的项目。

但从整个流程和其中的环节来看,小游戏开发需要开发人员具备以下几点能力:

  1. 有一定的编程基础,例如 JavaScript、TypeScript
  2. 至少熟悉一种游戏开发引擎,比如 Cocos、Unity等
  3. 对游戏机制、游戏系统有一定的理解
  4. 有一定的 UI 界面审美
  5. 能够开脑洞、有创意能力

一、基本的理论

1、小游戏的内核是什么?

小游戏是小程序的一个类目,所以关键是需要掌握小程序技术,小游戏是微信开放给小程序的更多的能力,让小程序开发者有了开发游戏的能力。小游戏没有WXSS、WXML、多页面等内容,但加了一些渲染、文件系统以及后台多线程的功能。

微信小游戏只支持 JavaScript,当然可以编译为 JS 的 TypeScript 以及 CoffeeScript 都可以作为开发语言使用。

其次是小游戏所支持的游戏库 API,主要包含 HTML5 的 Canvas 2D API 和 WebGL 1.0 API,使用任何一种 API 都可以完成游戏最重要的渲染功能,不过不能够混用,除此之外,只有 WebGL 渲染模式可以支持 3D 渲染。

2、游戏引擎有什么作用?

游戏引擎是游戏研发的主程序接口,它为开发者提供了各种开发游戏的的工具,即可编辑游戏系统和实时图像系统的核心组件,其目的就在于让开发者可以快速的做出游戏而不必从零开始。

从理论上讲小游戏开发是可以直接使用 Canvas 2D 或 WebGL 的,但是门槛非常高,也非常费时费力的一件事。所以使用小游戏游戏引擎其实是非常明智的选择,引擎封装出的高层接口可以大大降低开发者的开发门槛,缩短项目周期。

目前国内的三家主流引擎 Cocos、Egret、Laya 均已支持小游戏发布,Phaser.js、Three.js 等国外 HTML5 引擎虽然并没有支持直接发布,经过一些定制也是可以成功运行在小游戏环境中。
在这里插入图片描述

3、插件对小游戏的玩法有什么帮助?

微信小游戏还提供了丰富的微信内部插件供开发者调用,使用这些接口可以完成用户登录、转发、排行榜等常规可以进行裂变的社交功能。也可以用到例如地图、表单等插件,丰富小游戏的能力,以最简单的办法让小游戏的玩法和效果持续得到强化。

二、上手开发小游戏

如果你有了比较好的想法和较成熟的游戏机制,并能够完成UI界面图的实现,就可以着手开始小程序游戏的开发了。

在这里我仅做初略方法的介绍,因为微信开放平台已经有非常细致的介绍了,细致到完全可以一步一步跟着进行操作:详情可以查阅

step 1 :注册一个小游戏账号

需要到微信开放平台完成小游戏账号的注册。

step 2:安装并启动开发者工具

在这里插入图片描述

包括最上方的工具栏,包含最重要的编译、预览和配置详情;左边是模拟器窗口用来展示游戏运行效果;右上方是代码编辑器,可以查看项目中的文件列表,编辑文本文件;下方是调试器窗口。

step 3:微信小游戏配置和入口文件

在微信小游戏项目中,project.config.json 和 game.json 配置文件是大家首先需要添加的,其中 project.config.json 可以定义你的小游戏 appid、游戏名、配置等。而 game.json 主要用于指定游戏朝向和网络超时时间。

step 4:编译和预览

微信开发者工具会自动监听脚本和配置的变动,发生变动时会自动更新,你也可以通过顶部的编译按钮触发重新编译。当你需要在手机上预览小游戏的效果时,需要点击预览按钮来生成二维码,扫码即可进入小游戏。

三、开发过程中的难点

小游戏开发和 H5 版游戏开发区别并不大,但是小游戏支持的库较少,并且大部分 H5 版开发所使用的到的库是不支持的。另外就是 H5 版游戏的实现方式选择性更多,比如跳一跳原版是使用 createjs 开发,而小游戏版并不能支持所有的引擎,只能通过上面的几个引擎改造适配。

此外整个开发过程中比较典型的困难环节还包括 SDK 能力挖掘、调试、资源管理、第三方库的移植。

1、开放的各种 SDK 接口能力挖掘

小游戏提供的接口能力包括到用户登录接口、转发接口、支付系统、网络接口、文件系统等一些列的接口,这些接口可以极大的丰富小游戏的可玩性,但是如何去发挥他的潜在价值是值得开发者们深入研究的。例如通过转发接口引导用户分析小游戏到聊天窗口引导好友联机;通过游戏的转发邀请获得额外的奖励等等。

2、小游戏的调试

调试是游戏开发的必经阶段,一个好的调试环境和调试工具也会大大提升开发效率。同事能够提高页面加载速度,减少游戏运行中的卡顿,使动画看起来更流畅,游戏的流畅程度及画面直接影响了用户体验。

尽管开发者工具比较好用,但是我们必须面对它的一大问题,它的模拟器运行环境和微信小游戏的真机运行环境可能并不完全相同。也就是说,有可能出现真机环境中的 bug 在模拟器环境中无法重现的问题。

3、资源的管理

小游戏环境和浏览器环境的另一大差异就是资源管理了,小游戏中会首先下载你提交的完整游戏包,再运行 game.js 来启动游戏。所谓完整游戏包,也就是开发者在微信开发者工具中所导入的资源,不管你是否需要这些资源,在玩家打开你的小游戏时,都会被完整下载。所以我们会尽可能减小自己的小游戏包体,将可以按需加载的资源,放在远程服务器上,用脚本进行加载。

4、第三方库的移植

目前部分第三方库已经发现有很多不兼容小游戏环境了,这里可以分享一个判断原则,如果是纯 JS 库,那么是没问题的,但是如果第三方库使用到了 DOM API,多半是无法支持。

最后的话

当然通篇主要研究的内容是微信小游戏,目前还有字节小游戏、百度小游戏、阿里小游戏、FinClip小程序游戏等。当我们开发了微信小程序后,我们也可以适配其他的小游戏平台,让自己的小游戏能够触达最广阔的用户群体,实现最大的价值。

其中 FinClip 小程序游戏还有个需要特别强调的点,只要开发小程序后适配 FinClip 平台,并在第三方 App 中集成 FinClip SDK 即可实现在第三方 App 中运行小游戏,第三方 App 可以是自己的,也可以是外部其他厂商的。这样一来小游戏的价值也能更加广阔,也不限于几大主流平台中。


http://chatgpt.dhexx.cn/article/Du7RjaND.shtml

相关文章

oracle数据库中的注释

oracle数据库中的注释 单行注释-- --这是oracle中的单行注释 SELECT SYSDATE FROM dual; 多行注释/**/ /*这是oracle中的多行注释*/ SELECT 6 6 AS "计算结果" FROM dual;

MYSQL数据库如何写注释

方式一 注意:在写注释时,–与注释之间必须要一个空格 select * from stu -- 注释方式二 注意:这种方式比较随意,加不加空格不影响 select * from t_info #注释select * from t_info#注释select * from t_info # 注释方式三 s…

Idea连接数据库,显示表注释

idea设置显示数据库表名注释 操作步骤: View Apperarance Details in Tree View选上

达梦数据库中的注释的使用

在管理规模较大的数据库时,我们往往需要面对大量的表与视图,与此同时在表与视图中可能会存在着许多的字段,让人难以迅速分辨,不利于对于数据库对象的管理。除了在命名时,对于有意义的表、视图及列,应尽量赋…

Jpa 自动建表的时候在数据库中添加注释。

github地址 本项目可以让 Jpa 自动建表的时候在数据库中添加注释。 为什么做这件事 过去想要让 Jpa 在建表的时候自动添加注释一般需要使用 Column#columnDefinition 属性。示例如下: Column(columnDefinition "INT COMMENT ...") private int unitI…

达梦数据库中迁移过来的数据,在Mysql中批量添加注释,修改注释

一、原因 数据是从达梦数据库中迁移过来的,迁移完成注释丢失 二、方法 利用 information_schema.COLUMNS 这个表 三、执行步骤 1.这是达梦数据库导出的注释2.达梦的数数据库数据导出时是和创建表和索引都在一起,因此需要单独把注释这一块的给提取出…

2021.3.17丨致病菌毒力因子(VFDB)数据库注释

摘要 接到一个常规细菌的组装注释项目,不过客户提出想要获取关于组装结果与病毒之间的联系/按之前的操作,dfast没有病毒相关的数据库,无法满足客户需求。一番查阅,发现大家用这个VFDB数据库进行常规的病毒注释,下面将介…

【TP5】获取数据库注释信息

author:咔咔 wechat:fangkangfk table为表名 $data Db::query(SHOW FULL COLUMNS FROM .$table);

SpringBoot中使用Mybatis逆向工程(实体类含数据库注释)

Mybatis逆向工程:根据创建好的数据库表,生成对应的实体类、DAO、映射文件 文章目录 开发环境1.新建SpringBoot应用2.添加逆向工程插件依赖3.执行逆向生成 开发环境 开发工具:IntelliJ IDEA 2021.3.3 (Ultimate Edition)SpringBoot版本&#…

达梦数据库中注释的使用

在管理规模较大的数据库时,我们往往需要面对大量的表与视图,与此同时在表与视图中可能会存在着许多的字段,让人难以迅速分辨,不利于对于数据库对象的管理。除了在命名时,对于有意义的表、视图及列,应尽量赋…

达梦数据库注释的使用方法

在管理规模较大的数据库时,我们往往需要面对大量的表与视图,与此同时在表与视图中可能会存在着许多的字段,让人难以迅速分辨,不利于对于数据库对象的管理。除了在命名时,对于有意义的表、视图及列,应尽量赋…

数据库注释符

数据库注释符 MySQL数据库支持3中注释: 从‘#’字符到结尾;从‘- -’序列到结尾(‘- -’要求第二个破折号后面至少跟一个空格);从/*到*/,可跨行; 例:

k8s安装kuboard面板

前面介绍了k8s的dashboard面板,这里介绍国人开发的kuboard面板,相较于dashboard面板,kuboard面板对很多运维调试功能做了很多增强。 官方文档:https://www.kuboard.cn/install/v3/install.html#kuboard-v3-x-%E7%89%88%E6%9C%AC%E…

[CKA]考试之K8s 版本升级

由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅 题目为: Task 现有的Kubernetes 集群正在运行版本1.22.0。仅将master节点上的所有 Kuberne…

k8s kuboard-部署skwalking-es

1.导入变量 前提安装:helm export SKYWALKING_RELEASE_NAMEskywalking export SKYWALKING_RELEASE_NAMESPACEskywalking 2.添加仓库 export REPOskywalking helm repo add ${REPO} JFrog 3.安装部署 helm install "${SKYWALKING_RELEASE_NAME}" ${REPO}/…

Kuboard Spray+Kuboard搭建k8s集群

使用Kuboard Spray搭建k8s集群 服务器环境 使用3台centos7.6系统虚拟机,4核4g内存,使用最小化安装系统,并修改配置好网络 k8s版本1.23.12,docker版本20.10.18,集群角色规划如下 192.168.2.101 k8s01 master,etcd,wor…

k8s-RBAC

一、认证及sa 1.进入到证书目录 cd /etc/kubernetes/pki/2.创建kxq用户的私钥 (umask 077; openssl genrsa -out kxq.key 2048 )3.创建kxq用户的证书 openssl req -new -key kxq.key -out kxq.csr -subj "/CNkxq"4.利用ca.crt,ca.key进行签证 [rootm…

【Kubernetes系列】Kubernetes管理工具Kuboard的安装使用

目录 一、Kuboard 简介二、安装方式三、安装四、升级1.停止已有 kuboard 容器2.使用新版本的镜像启动 kuboard 五、访问 一、Kuboard 简介 Kuboard 是一款专为 Kubernetes 设计的免费管理界面,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI…

linux下kegg注释软件,工具篇丨GO和KEGG富集不到通路?快试试这个超赞的功能分析工具吧...

原标题:工具篇丨GO和KEGG富集不到通路?快试试这个超赞的功能分析工具吧 i生信 专注生物分析最前沿 定期解读生信文章 提供生信分析思路和套路 方便大家短平快发SCI GO和KEGG富集分析是我们在筛选出差异表达基因之后,都会去做的套路性分析。然鹅……我相信,总有那么一些“倒…

Kubernetes: Overview, Kaniko Helm

文章目录 OverviewConceptHardware1. Node2. Cluster3. Persistent Volumes Software1. Container2. Pod3. Deployment4. Ingress Kanikousing dockerusing k8s Helm Overview **kubelet: **An agent that runs on each node in the cluster. It makes sure that containers ar…