我们平时玩过各种各样的游戏,那么一款游戏是如何开发出来的呢?流程是怎样的呢?如何从零基础来开发一款属于自己的游戏呢?对于新手来说,不知从何下手,也没有系统的资料来参考。万事开头难,很多人就是这样放弃了,很可惜。我也是一个新手,但是我很想体验游戏开发的整个流程,所以,一切从零开始,也饶了很多弯路,但是一步一步走下来,你会体会到其中的乐趣,过程最重要。
今天,我就简单分享一下做游戏的流程,如有描述不当的地方,还望指正。

我的小游戏源码分享:https://github.com/starbxx/Game

对于新手来说,想要做一款游戏,要从几个方面入手;

1. 游戏类型

首先,要确定游戏的类型,是要做HTML游戏,还是手游,还是微信小游戏,这里,我们选择的是微信小游戏,虽然称之为“小游戏”,可内容和技术含量并不小哦!
微信小游戏属于微信小程序的一个类别,需要用官方的web开发者工具来开发,web开发者工具也很容易上手,主界面分为模拟器,编辑器和调试器。对于新手来说有官方示例可以参考,示例是一个2D的飞机大战demo,通过查看源码,可以很快弄清楚每个模块是做什么用的。

2.游戏定位和引擎选择

当我们确定做一款微信小游戏的时候,其次要确定的就是游戏的主题,以及是做2D的还是3D的。我们的游戏主题是基于校园的“捡跑”,excuse me??什么叫“捡跑”??“捡跑”是我们拼凑的一个词,实际上是酷跑的一种,酷跑是角色在固定路线上奔跑,并且收集路上的金币,最后根据金币来排名。那么,我们的“捡跑”,也是奔跑,但不是收集金币,而是收集垃圾!哈哈哈哈哈哈!对,没错,是收集垃圾!最近垃圾分类不是很火吗?而且我们的游戏场景是基于我们的校园环境来设计的,我们的学校真的很美!!想一想,在学校奔跑和收集垃圾是不是很有趣呢?所以我们游戏的主题就是“爱护校园,保护环境”。
既然要打造和校园环境一样的游戏场景,那么2D怎么能满足我们的视觉要求呢?所以我们将游戏定位于3D小游戏。
既然要做一款3D小游戏,那对于新手来说,游戏引擎是少不了的,因为引擎屏蔽了一些底层的操作,让你的开发更便捷。所以,我们就去查找各种引擎的资料,(图来自于网络)

通过对比,支持3D游戏的引擎有three.js、layabox,但是只有layabox完成对微信小游戏的适配,也就是说,使用layabox开发游戏,可以直接发布成微信小游戏,不需要开发者去做适配工作,这对于新手来说很友好。所以我们选择了layabox。

3.游戏制作流程

定位好游戏,选好引擎后,我们该干什么??这里我们饶了很多的弯路,希望大家可以节省时间。

(1)了解游戏的开发流程。

对于一个新手来说,首先要大概了解游戏的开发流程。对于一款3D游戏来说(其他类似),开发分为几个模块:

  • 游戏策划。在开始开发之前,要写好游戏策划,包括游戏的玩法、规则、关卡设计、角色设计等等,各个细节都要写清楚,写详细。一份好的游戏策划可以节约开发时间。
  • 美术设计。要想做一款好的游戏,美术是少不了的。唯美的画面才能给人视觉上的冲击。美术设计主要是设计游戏的场景、人物demo、道具以及游戏UI等。
  • 技术美术。美术设计重点在设计,那么技术美术就是要利用相关软件来实现这些设计,在计算机上制作出完整的模型。
  • 动画设计。对于3D游戏来说,模型少不了骨骼动画,因此还需要制作一些模型动画。
  • 主程序。编写游戏框架和逻辑。
  • 前端。主要负责编写前端程序,与用户直接交互的游戏scene。
  • 后端。主要负责编写后端程序,保存用户的游戏数据。
  • 测试。分为测试和测试开发,测试主要是黑盒测试,可以邀请一些外人来玩游戏demo,提出意见。测试开发是白盒测试,遇见BUG自行修改。

虽然一款游戏的开发流程分为多个模块,但是都可以并行的,像我们的团队其实就只有两个人,但是明确的分工能够节约很多的时间。

(2)熟悉和学习相关软件。

熟悉相关软件真的太重要了!!而且要了解相关软件的兼容性以及插件的使用。在我们的开发中,用到了很多软件。

  • web开发者工具。用于微信小游戏的开发,调试,真机调试,以及最终的发布。
  • layaAir。layabox出的一款IDE,这款IDE内嵌LAYABOX引擎,可视化开发,一键发布微信小游戏,兼容三种不同的语言(AS,JS,TS),2D、3D混合开发,很适合新手。但是IDE的文档不是很完善、有些地方经常出BUG,需要去社区找答案,新手需要花点时间熟悉。
  • unity3D。layaAir虽然提供了可视化开发,但是并不适合制作游戏的元素,比如游戏场景、人物模型、道具模型等,需要在别的软件制作好,再导入layaAir。layaAir提供了兼容unity3D的插件,可以一键导入,包括模型网络、场景文件、光照贴图等等。所以我们需要在unity3D里面制作好场景,使用插件导出。这里有一个问题,同一个场景在unity3D和layaAir里面的颜色表现可能不太一样,导出的时候需要选择laya的材质,并且最好使用最新的插件。
  • 3Dmax。unity3D虽然可以制作场景,但是设计一些模型的细节的时候,不好掌控。3D模型需要有专门的制作软件,目前主流的有maya和3Dmax,那么我们选择的是3Dmax,maya偏向于影视动画的制作。3Dmax可用于制作各种3D模型,还可以制作骨骼动画。蒙皮:在带有动画的骨骼上蒙上角色皮囊的过程叫蒙皮。3Dmax可将制作好的蒙皮角色直接导入unity使用。
  • Photoshop 以及 paint3D。制作贴图。3Dmax中制作的3D模型,需要赋予贴图来让它表现出不同的纹理,贴图就是将一张图片贴在模型的表面。那么贴图需要自己去画,可以用Photoshop或者paint3D自己设计贴图。
  • Crazybump。在给模型贴贴图的时候,如果想要有立体感和凹凸感,就需要使用法线贴图。Crazybump是一款可以制作法线贴图的软件。
  • TileMap 。游戏中,如果使用到地图,还需要地图制作软件,TileMap可以实现。

好了,我们的小游戏使用到的工具主要的就是这些,希望新手宝宝们可以快速找到要使用的工具,不像开始的我们一样迷茫。。。

(3)明确的分工。

开发游戏,明确的分工真的很重要,特别是人手不够用时,一个人可以挑两个扁担,哈哈哈哈哈。

序号 任务 人员 备注
1 游戏灵感提出
2 游戏策划编写
3 场景实地考察
4 3D模型设计
5 骨骼动画制作
6 2D UI设计
7 贴图制作
8 3D场景建模
9 游戏框架编写
10 逻辑编写
11 角色滑动算法设计
12 道路旋转算法设计
13 摄像机跟随算法设计
14 障碍物加载算法设计
15 测试
16 ………… …………

(4)先制作一个简单的demo,web工具跑起来,再去优化。

当游戏有完整的思路,并且写好策划后,就可以动手了!一开始并不需要好看的模型和场景,只要用一些简单的场景来代替,完整的实现一下游戏的整体逻辑,然后发布成微信小游戏,使用真机调试一下,这样就可以熟悉整个游戏开发的流程,对于游戏中的场景和模型,只要写好接口,后期直接替换就行了。

(5)真机调试,设置玩家权限。

由于最后要发布成微信小游戏,最终的玩家是在手机上体验的,所以真机调试很重要,web开发者工具的模拟器虽然是模拟手机,但有些时候会出现意想不到的BUG ,而且不同的手机型号还需要做适配,所以需要管理员在后台设置一些玩家权限,邀请一些人来体验游戏。游戏未发布的时候可以设置体验版,但是需要管理员设置权限。

(6)优化。

优化!优化!优化!重要的事情说三遍。
小游戏的开发局限性比较大,游戏的demo包整体大小不能超过4M,对于2D游戏这不算什么,一般都可以压缩到4M以内,但是!!对3D游戏来说,特别是逻辑还挺复杂的3D游戏,几个模型的大小估计就超过4M了,别说加上贴图和代码包了。所以!优化很重要!
优化可以从几个方面入手:

  • 优化3D模型大小。3D模型是以文件的形式存放,文件中记录着点数和面数。所以我们在制作3D模型的时候,尽量使用最少的点数和面数,这样可以减少加载和渲染的时间,还可以减少包的大小。
  • 贴图压缩。一般来说贴图的大小必须是256256,512512,10241024.。。等,那么对于场景中的一些小的道具,比如吸铁石,就不需要用10241024的图或者更大的图,可以使用相关工具将图片的大小调的很小,在体积和视觉上做一个折中。
  • 图集打包。UI界面中的一些元素图片、按钮图片,不用每个都存为一张单独的图,可以整体打包成一个图集,加载的时候一起加载,可以节约空间。
  • 代码冗余。对于一些需要重复使用的代码块,比如触发器、碰撞器等,可以生成一个相应的组件,需要的时候挂在物体上,不需要的时候移除。
  • 模型,贴图循环利用。对于一些重复使用的模型或者贴图,在内存中保留一个副本就行了,需要使用多个的时候clone就好了。

如果!!以上优化之后,还是超过4M,那么就要考虑网络动态加载和分包了。分包对于新手来说不太友好,所以能动态加载的尽量选择动态加载。
网络动态加载是指将一些资源包放在服务器上,游戏运行的时候通过URL动态下载到本地,但是注意JS文件是不能动态加载的!!layabox是通过设置URL.basePath来实现资源的动态加载的,但是有一个问题,微信小游戏不支持http,只支持https,所以在配置服务器的时候需要相应的SSL证书。

好了!啰嗦了半天,只是希望新手胖友们可以少走些弯路,同时,放出我们的demo供大家参考,希望一起进步!、
(我们的demo是原创设计,仅供学习 !)

部分图片:

游戏源码(仅供学习):https://github.com/starbxx/Game

游戏开发流程-微信小游戏(含源码)相关推荐

  1. 极光会客厅:大型H5游戏如何登陆微信小游戏及游戏性能优化分享

    上周末,由极光网络主办的首期"极光会客厅"正式开门迎客.在本次的"2D小游戏开发实战技术沙龙"上,极光网络客户端主程陈策以及极光网络项目总监陈源向一众与会者分享 ...

  2. 网易严选php版本小程序,Thinkphp5.0内核开发仿网易严选微信小程序商城源码 电商小程序源码...

    仿网易严选微信小程序商城源码 电商小程序源码 安装环境:php5.3及以上+mysql,开启https Thinkphp5.0内核开发的电商类小程序源码整站后端+前台仿网易严选商城化妆品电商小程序,完 ...

  3. h5小游戏嵌入到微信小游戏中(以egret为例)

    H5小游戏源代码不能直接转换为微信小游戏发布,但是可以把现有的h5小游戏嵌入到微信小游戏中,这里使用egret举例.使用egret创建一个空的微信小游戏,在main.ts中资源加载完成后执行Webvi ...

  4. DirectX 12 3D游戏开发实战 -- 龙书随书源码各章项目运行结果概览

    DirectX 12 3D游戏开发实战 -- 龙书随书源码各章项目运行结果概览 第1章 向量运算 第2章 矩阵运算 第4章 Direct3D初始化 第6章 利用Direct3D绘制几何体Box 第7章 ...

  5. 微信小程序实例源码大全demo下载

    怎么本地测试微信小程序实例源码 1.下载源码 2.打开微信开发者工具 3.添加项目->选择本项目目录->编译执行 微信小程序实例源码大全 微信小程序游戏类demo:识色:从相似颜色中挑选不 ...

  6. 微信小程序github源码大全下载

    微信小程序实例源码大全下载 微信小应用示例代码(phodal/weapp-quick) 源码链接:https://github.com/phodal/weapp-quick 微信小应用地图定位demo ...

  7. (转)微信小程序实例源码大全

    https://www.cnblogs.com/tuyile006/p/6268961.html 微信小程序实例源码大全下载 微信小应用示例代码(phodal/weapp-quick) 源码链接:ht ...

  8. 实用微信小程序项目源码

    微信小程序疯狂猜成语小程序源码UI美观 知识答题类小程序源码 200多套微信小程序源码带后台+教程+源码 校园小情书小程序前端+后端源码 微信版flappybird小游戏源码下载,经典像素鸟小游戏源码 ...

  9. chatgpt智能问答微信小程序+后端源码+视频搭建教程

    chatgpt智能问答微信小程序+后端源码+视频搭建教程,这是一套微信小程序,后端是thinkphp框架为接口的,后端是前后端分离用elmentUI的源码框架. 小狐狸GPT付费体验系统是一款基于Th ...

  10. thinkphp三级分销小程序源码_山东谷道微信小程序商城源码带后台 公众号平台三级分销系统...

    山东谷道微信小程序商城源码带后台 公众号平台三级分销系统 那么微信二级分销系统与微信三级分销系统到底有什么区别和联系呢?为什么改了个数字地位就天差地别? 1.微信分销模式等级的区别 用简洁的话来说,微 ...

最新文章

  1. PostgreSQL SQL 语言:并行查询
  2. java中自造类是什么意思_Java建造者模式是什么?如何实现?(附代码)
  3. WPF 4 单词拼写检查(SpellCheck)
  4. HttpClient和HttpURLConnection的使用和区别(上)
  5. 规模估算失准 软件开发成空中楼阁
  6. 单词拆分Python解法
  7. 快速搭建Python+Selenium+Sublime 自动化测试环境方法
  8. linux 内核空间 缺页,Linux-3.14.12内存管理笔记【缺页异常处理(1)】
  9. fzyzojP2291 -- 小添添的庄园之道路修复
  10. html 脚本 gdi,基于gdi的简单画图
  11. 网易新闻 鸿蒙,本报记者体验华为首款鸿蒙产品
  12. python股票数据分析_Python股票分析(一)获取历史数据
  13. bootstrapinput传参数_bootstrap-fileinput组件在上传时传递额外参数
  14. GBaseDataStudio 管理工具简介
  15. 人工智能ai下海百度云_云AI就像核电
  16. Android 手机录制wav格式音频文件实现
  17. zookeeper节点类型,整合代码实现服务器动态监听
  18. 正规的棋牌游戏开发公司需要具备哪些条件
  19. JVM概览:内存空间与数据存储
  20. “云计算机”是什么?

热门文章

  1. linux下R及Rstudio及Rhadoop安装
  2. 网络运维工程师常见的面试题及需掌握的知识点
  3. influxdb可视化工具
  4. SAP ABAP开发实战——从入门到精通系列教程目录
  5. html播放flv直播源,http-flv 直播
  6. C# 使用X509Certificate2获取数字证书信息对接联通沃支付
  7. 谷歌浏览器用的是什么内核
  8. 记录点滴,善于分享-Microsoft Visio 2016下载与安装教程(全)
  9. 流畅的Python之奇技淫巧(一)
  10. 汤家凤高等数学2020年基础课手写笔记汇总