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

所以这里主要论述小游戏开发的情况,也就是小程序游戏,首先从小游戏的开发流程来看:主要分为游戏策划、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小程序游戏等。当我们开发了微信小程序后,我们也可以适配其他的小游戏平台,让自己的小游戏能够触达最广阔的用户群体,实现最大的价值。

最后

整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

如何开发一个小游戏?其中有什么难点相关推荐

  1. 如何不用服务器来开发一个小游戏

    我是代长新,来自上海享物说,主要负责游戏客户端研发. 享物说是一个大家可以互相赠送物品,有趣.不花钱的社区平台.为了创造更好的社区氛围,我们决定通过小游戏来增加社区的趣味性和互动性. <乐享花园 ...

  2. 【h5白鹭引擎】如何快速开发一个小游戏

    1.环境搭建 安装教程传送门:http://edn.egret.com/cn/index.php?g=&m=article&a=index&id=207&terms1_ ...

  3. libGDX跨平台游戏开发框架入门:开发一个小游戏之加载资源

    目录 前言 加载资源 libGDX资源目录说明 配置各个平台启动器 desktop模块启动器设置 Android模块启动器设置 加速度计和指南针 html模块启动器设置 编写加载资产代码 1. 加载图 ...

  4. 用JavaFx开发一个小游戏

    老婆特喜欢一个叫做ColorLinez的小游戏,但这个叫做WinLinez的小游戏的界面实在太老了,而且很多老婆大人想要的功能都没有,因此我一直想给老婆亲手做一个,她想要的,谁让咱是程序员呢? 我目前 ...

  5. 使用pygame开发一个小游戏

    学习了pygame,身为一个IKUN所以,做了一个简单的小游戏.游戏规则是,使用键盘的方向键控制坤坤,当坤坤触碰到篮球,就会爆发出音乐"只因你太美".代码如下: import ra ...

  6. 如何开发一个小程序游戏?

    小程序游戏开发需要开发人员具备以下几点能力: 有一定的编程基础,例如 JavaScript.TypeScript 至少熟悉一种游戏开发引擎,比如 Cocos.Unity等 对游戏机制.游戏系统有一定的 ...

  7. Python开发转盘小游戏

    Python开发转盘小游戏 Python  一 原理分析 Python开发一个图形界面 有12个选项和2个功能键 确定每个按钮的位置 每个按钮的间隔相同 点击开始时转动,当前选项的背景颜色为红色,其他 ...

  8. 我在公司做的一个小游戏的总结感想

    这次这个小游戏真的让我感受到了学校与公司的最大不同.在学校里的时候我们给学校交学费,所以老师的任务就是教会我们东西,学习的时候不懂就问他,实在太笨了就坐下来给你写代码.而在公司是给我们钱,分下来的任务 ...

  9. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

最新文章

  1. UIView之动画效果的实现方法(合集)
  2. js hover 触发事件_为什么说JS的DOM操作很耗性能
  3. 从下往上看--新皮层资料的读后感 第一部分:皮层细胞
  4. 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...
  5. android device action and adb command
  6. 20155325 2017-2018-1 《信息安全系统设计基础》第五周学习总结
  7. 如何用PHP和JavaScript比较时期(包括时间)
  8. PHP判断手机号码是否正确
  9. 计算机圆半径计算公式,圆半径计算公式是什么?
  10. MATLAB验证泊松亮斑,北大附中2014届高三物理一轮复习单元训练:波粒二象性
  11. linux主机独立显卡切换,Linux Deepin 2013 设置双显卡之关闭独显
  12. 第17章 文字和字体
  13. 2017 Top 10 Web 应用安全威胁,你的企业正在经历哪些?
  14. 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
  15. 信息系统安全期末复习笔记
  16. 解构给默认值_函数的对象参数的解构和默认值
  17. 向量维数与向量空间维数的区别
  18. python教学计划_2017从零开始数据分析学习计划
  19. CSDN首例Python自动化运维实战:从Linux系统中收集数据
  20. 【方法】STM32F103C8单片机通过定时器DMA测量脉冲宽度,无需CPU干预(以DHT11传感器为例)

热门文章

  1. 【深度学习】mmclassification mmcls 实战多标签分类任务教程,分类任务
  2. 问题解决:System.TypeLoadException: 未能从程序集“XXX”中加载类型“XXX
  3. 获取指定日期的下个月
  4. java程序员兼职平台,快来收藏!
  5. 以前的朋友都在做什么
  6. 报错ModuleNotFoundError: No module named ‘easydict‘
  7. 数据结构——二路归并排序和基数排序
  8. 码云图床php,PHP 脚本实现 Markdown 文章上传到七牛图床
  9. cyberdog-铁蛋众测报告
  10. 回溯法解旅行商问题java,回溯法解旅行商问题 | 学步园