2D饥荒角色解锁代码游戏开发需要有哪些功能的代码?

不写代码,也能做游戏?
任何一个热爱游戏的玩家都会有自己也做游戏的想法;我们也会对一个烂游戏发出这样的感叹:这算什么,我都能做的更好。有些人会仅仅感叹完就算,而另外一些人会去尝试:既然我玩过那么多游戏,我也想自己做一个游戏试试看。在如今这个手游风行的时代,做一个具有基本的技术水平的游戏的门槛已经降到了最低:一个独立开发者不用担心发行渠道,不用担心工具,只需要有过得去的美术和程序能力,和一颗热爱游戏的心就可以做出一款大热的游戏出来,App Store上也到处是个人开发者做出的游戏大红大紫的例子,比如《Flappy Bird》(至于《Flappy Bird》为什么火,那是另外一个故事)。
为大型游戏和专业开发者准备的工具已经相当多,这些工具之间的优劣也属于常年在专业开发者内部争论的话题,在此我们并不过多的深入。前段时间一个在线应用开发网站Appy Pie推出了新的GameBuilder,提供游戏模板,宣布用户不需要任何编程能力便足以做出一个新游戏出来,并且由网站提交给苹果进行审核。加之最近在WWDC中苹果也推出了新的开发工具Xcode Playgrounds,开发者可以更加直观便利的开发游戏,这再次引发了我们的思考:市面上这么多工具所号称的“不需要写一行代码就能够开发游戏”的口号真的是否现实?我们可以来考察一下这些工具。
■ 个人游戏制作工具的历史
RPG Maker VX,可以看出软件中已经提供了大量的素材可以使用,不过游戏机制还是勇者斗恶龙式的
个人独立开发游戏的工具大概可以追溯到很早以前的RPG Maker,其最早版本是在92年由日本公司Enterbrain发行。而第一个在Windows PC上运行的版本则是RPG Maker 95。从名字可以看出这是一个专门用来制作RPG游戏的软件,游戏里自带大量素材,使用者不需要编程只需要利用内置的事件编辑器和战斗编辑器就能够写出游戏的基本逻辑。
从名称上也可以看出这个软件能够开发出的软件基本上仅限于日式脚本RPG类型的游戏,但是仍然有玩家自己做出ARPG或者SLG类型的游戏。这需要重写游戏机制,玩家得非常熟练的使用编辑器才能做到。从这个角度而言,RPG Maker的地位相当于后来很多RTS自带的地图编辑器,只是可以导入游戏以外的美术素材。而著名的魔兽3的地图编辑器则相当于一个非常简化版的游戏制作工具,连目前大热的MOBA类型的游戏都是从魔兽3的个人自制地图开始的。
GameMaker: Studio,这已经算是一个比较现代和系统的开发工具了,提供大量的控件使用
GameMaker: Studio则是另外一个较早的个人游戏制作工具。GameMaker: Studio最早的版本发行于1999年,那时的名字还是Animo,原本是一款制作2D动画的软件。之后这个软件改名为Game Maker,变为一个主要是制作2D游戏的软件,只有有限的3D画面的支持。跟RPG Maker一样,用户不需要编程,可以只使用拖曳操作便可完成制作。软件还提供了一门脚本语言Game Maker Language可以应用于简单的编辑器无法满足要求的场合。
与同类工具一样,如果用户想要在不写代码的情况下完成一个游戏,那么就只能利用软件内部已经打包好的游戏机制来制作出游戏;但是如果用户所构思的游戏机制的复杂度达到一定的门槛,那么编写脚本和事件逻辑是不可避免的。随着现代游戏变得愈加精巧,这个工具本身也在随之进化;到现在为止GameMaker: Studio仍然在开发中,而且官网上也展示了不少使用他们的工具开发出的游戏。可以看出有不少独立开发团队也使用这个工具在开发游戏,但是恐怕优秀的游戏就不是宣传的“不需要编程”就能开发出来的了,而是需要大量的脚本编辑器使用。
■ 移动游戏时代的DIY套件
在如今的移动时代,软件和游戏开发门槛降低,工具也变得十分多样。商业开发者可以使用成熟的引擎开发,比如Unity3D或者更加复杂的PC界的虚幻引擎;具备比较强悍的编程能力也有野心的个人开发者可以使用诸如Torque3D这样的开源3D引擎;想要做普通2D游戏的个人开发可以使用Cocos2d-x这样的开源2D游戏开发环境,或者使用诸如PhoneGap这样的网页包装工具将已经做好的网页游戏包装为移动平台应用。
以上所述都是相对而言专业正统的游戏开发工具,使用这些工具的仍然是专业的开发者:程序员、设计师和美工。个人游戏开发工具的目标用户则非常明确:业余开发者。所有的个人开发工具都强调不需要编程即可使用,是否真的如此?
“不需要写一行代码”是网站宣传里强调的
GameSalad是比较著名的个人游戏开发工具。使用他们的软件仍然需要安装软件到本地电脑,想要开发iOS游戏,也需要安装标准的苹果开发环境Xcode以及购买99美元的苹果开发者资格 。软件里提供的是一个比较标准的软件开发环境,只是软件开发环境里所必须的很多需要编程的基础逻辑和机制结构都被作为控件向用户提供,用户只需要输入参数就可以使用。从这种意义上来说,使用GameSalad的确不需要编程,但是用户不可避免的需要了解一些软件工程的基础流程才能比较顺畅的实现目标中所需要的游戏机制。
据使用过GameSalad开发过游戏的用户介绍,使用GameSalad生成的项目无法转为Xcode下的源代码进行二次开发,也有很多在Xcode环境下可以实现的功能无法在GameSalad下实现。这也说明了其并不是一个商业开发工具,不过个人用户想要做一些游戏机制比较简单固定的游戏是足够了。在官网上开发者不无得意的展示了不少已经发布的使用GameSalad开发环境所编写的游戏,其中还包括若干进入了排行榜前100位的游戏。
GameBuilder Studio
支持的平台繁多,还包括开源游戏机Ouya
在GameBuilder Studio 的官方网站上这个工具被宣传为全平台的游戏制作工具。 在宣传中,软件的集成开发环境中功能和插件非常齐全,用户可以在同一个环境中开发iOS、安卓、Kindle、Ouya、Windows Phone、Facebook和网页以及Flash游戏,还提供了多人游戏和应用内购买的功能插件,功能玲琅满目。开发商还特别强调了,他们是唯一一个能够在Windows环境下开发iOS游戏的工具。
不过在对这个工具的官方网站进一步的观察之后,不难发现一个事实:GameBuilder Studio的用户群非常有限。工具Github页面已经数年没有进行大的更新,官方论坛上讨论寥寥。如果是一个流行的游戏制作软件,那么官方论坛上肯定满是讨论群组,会有大量的新用户会问一些最基础的问题,这是正常规律。但是官方论坛从这个软件2010年发布到目前为止只有96个帖子 。所有这样的个人开发工具的网站上都会提供一个展示页面,显示用户使用他们的工具开发出的游戏,但是这个工具的官方网站上虽然提到了这一点,却没有展示任何一款游戏。 到底有多少人在使用这个GameBuilder Studio,也就可想而知了。
Appy Pie’s GameBuilder
从网站的宣传来看,应用开发就是简单的选择模板并且适当的自定义就可以了
是一个在线应用开发网站,用户并不需要下载一套软件来进行应用开发工作,只需要点选网站提供的相应的模板然后适当的上传素材,或者干脆在网站提供的素材库里挑选,就可以完成一个应用,网站可以帮助你提交苹果进行审核。 这样开发出来的应用从本质上仍然是HTML5网页应用的打包,针对的是那些没有任何开发基础但是需要或者想要制作移动应用的用户的 。值得注意的是国内也出现了这样的自助应用创建网站:、、,等等。
不难想象一个典型的快速移动应用开发的典型场景:一个需要一个移动应用招揽客户的小餐馆老板,他没有时间和精力去学习程序开发,也没有足够的预算去请一个专业开发者,这样的快速开发工具正好给他提供了条件来做一个功能简单而明确的应用。然而任何事情到了中国都会带上某种中国特色。在金和IU APP工厂的宣传里,强调了“月饷计划”,鼓励开发者将生成的移动应用进行推广,并按照用户数与开发者结算收益。本来设想中的这种快速开发应用应该只是实现某些特定功能的辅助应用,但是以国内这样强调用户的推广方式,显然就不再是以实现简单功能的应用作为主要目标了。
这个网页游戏制作工具的具体流程就是这样几个极其有限的步骤
那么能不能将这种快速应用制作的方式扩展到游戏领域?Appy Pie最近做了一次尝试:。工具提供六个模板,用户只需要很少的几步就可以做出一个完整的应用并且提交审核。不过只需要稍微试验一下就能发现,用户所能控制的内容极少,基本上仅限于一些美术素材,而游戏最重要的游戏机制等等全都是模板已经限定清楚了的。在这六个模板里开发商还不无恶意的提供了“像素鸟”模板,用户能做的差不多只是将《像素鸟》里的鸟换成一些别的什么奇奇怪怪的物体,比App Store上铺天盖地的像素鸟寨版更加山寨,基本不可能通过苹果的审查。 从这个角度来看,Appy Pie提供的这个Game Builder与其说是一个工具,还不如说是一个玩具。
■ Swift:新希望?
Playgrounds的可视化开发环境的确直观,但仍然是一个编程开发工具
在最近的WWDC大会上,苹果宣布了新的开发语言Swift,号称降低了大量Objective-C的编程复杂度,以及与之相伴的新工具:Xcode的可视化游戏开发插件Playgrounds。这两个新工具的发布无疑为开发者带来了新希望,让人想起了微软在很多年前已经做过的工作,XNA,同样是面向开发者的轻量游戏开发平台。然而面向开发者的轻量游戏开发工具并不代表着对开发者毫无要求。在Playgrounds这种可视化工具下使用Swift语言编程与在XNA环境下使用C#语言编程一样,只是将游戏编程变得更加直观和方便,并没有降低编程本身的复杂度。这对于游戏开发者是一个利好消息,对于想要真正学习游戏开发的玩家同样是一个利好消息,但是这并不是那些号称“不需要编程就能开发游戏”的工具。
总有人会想要自己做游戏,就跟总有人需要一个简单的应用开发工具一样。但游戏毕竟是艺术与技术的结合:它的核心不是某些明确的功能,而是“玩”这个行为本身。所以想要让游戏变得“好玩”,任何设计师都仍然需要亲力亲为,自己去打造出一个游戏的核心机制出来,没有捷径可走。所谓个人游戏开发工具,只是将这个过程变得门槛更低,更加容易学习,而不是把“游戏”本身也一股脑的打包给用户。如果真的是想要自己设计游戏的未来设计师,无论使用什么样的工具,他们都会去实现自己的想法,去把游戏变得更好。
特约作者 台伯河
资深VR从业者
登录触乐账号
请登录后发表评论、没有账号请或评论
使用社交账号登录
作为游客留言
请或,更顺畅地进行交流
使用社交账号登录
共有条评论查看的相关新闻游戏开发流程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
游戏开发流程
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 27, 距离下一级还需 173 积分
论坛徽章:0
最近,准备换工作,浏览招聘信息时,发现很多游戏公司招聘要求中都有熟悉常用的2d和3的图形算法,可是这些图形算法有哪些呢?望各位不吝赐教哈,先在这里提前谢过了
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
白手起家, 积分 27, 距离下一级还需 173 积分
论坛徽章:0
自己先顶下
白手起家, 积分 27, 距离下一级还需 173 积分
论坛徽章:0
各种路径搜索,DFS,BFS,各种树?
论坛徽章:5
提示: 作者被禁止或删除 内容自动屏蔽
白手起家, 积分 27, 距离下一级还需 173 积分
论坛徽章:0
本帖最后由 skychongrichie 于
11:54 编辑
BlueGuy_ DFS大学的数据结构课上应该有吧,应该算是很基础的。谢回复
论坛徽章:5
提示: 作者被禁止或删除 内容自动屏蔽
论坛徽章:5
提示: 作者被禁止或删除 内容自动屏蔽
白手起家, 积分 27, 距离下一级还需 173 积分
论坛徽章:0
BlueGuy_ 你高中生啊?这么牛?当年我高中的时候连c++是啥都不知道,见笑了哈。言归正传,我还没用DFS求过组合数呢,实际应用中用的最多是遍历某种树形结构,就一个典型的深度优先搜索来说,的确很easy啊
论坛徽章:5
提示: 作者被禁止或删除 内容自动屏蔽
论坛徽章:5
提示: 作者被禁止或删除 内容自动屏蔽
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处极致2d游戏开发 - 简书
极致2d游戏开发
火男无脑开发录
开发引擎:SpriteKit
开发语言:Swift
其他:NodeJS(放弃) ,MySQL(放弃)
我写了个标题叫极致,我要做个游戏,然后顺带写这个教程,但是实际上意思是反的,我以做个游戏的名义来特地写个教程。
先介绍将要开发的游戏,一款类似跑酷类型,主角为一只小兔子,游戏开始会一直往前冲,但是前面却是万丈深渊,所以需要玩家点击屏幕在下方生成一个平台,避免小兔子掉下去,玩家需要控制平台升降的高度,太高了小兔子会上不去gg,如果平台降得很低,小兔子也将掉出屏幕,同样gg。游戏的目标是,在有限的下降空间内让小兔子跑得更远,后面编写的后台程序将纪录下每次小兔子的跑酷纪录,然后写入数据库,当点开排名界面的时候,将从后台获取前10位玩家的纪录。
流程就介绍完了,开干吧……
因为打算只针对游戏开发流程,所以其他不相干的知识尽量摒弃,前提是熟悉Swift 这门语言,而SpriteKit 也仅支持Obj-C 和Swift 。
以下为将用到的美术资源
下午8.09.53.png
下午8.11.16.png
下午8.11.51.png
直接选择Game ,填写项目名语言、框架、运行的平台。
下午8.12.16.png
next保存到目录,xcode与git是无缝衔接的,需要版本管理或远程协同就选上吧。
下午8.12.40.png
一个简单的工程,默认有架飞机,但是删掉,GameScene中涉及不相干逻辑的部分也删掉,并且不涉及游戏逻辑的类文件或资源文件放在新建的Group 中。
创建第一个类
configue 用来保存游戏中的全局属性。
下午8.14.29.png
游戏画面尺寸设置为,因为我们的游戏场景是用的sks文件读取的方式,所以sks文件中需要手动设置一下场景尺寸跟winSize一致即可。
下午8.14.51.png
下午8.16.00.png
设计好游戏逻辑的层级关系
下午8.55.59.png
游戏中各类元素的前后关系写在configure中,姑且把configure看作是包含各种宏定义的类吧。
下午9.01.08.png
notificationCenter为获取的消息中心实例,backgroundMove``backgroundStop用来表示控制背景移动和停止的消息名称。
下午9.05.30.png
先从地面平台开始,一步步拓展看,地面以一条三块土方组合成的平台柱子为一个单位,分为上中下,中层可以根据需要放置一个或者多个土块,上下土块固定好。
打开GroundCobe.swift编写以下代码
下午9.11.45.png
以最上层的土块贴图创建SKSpriteNode对象,在此基础上添加中层土块,最后在底部添加下层土块。完成这一步,开始创建整个游戏的背景类,稍后将在背景类中添加土块。
打开Background.swift编写以下代码
下午9.28.40.png
notificationCenter.addObserver(self, selector: #selector(Background.move), name: kBackgroundMove, object: nil)notificationCenter.addObserver(self, selector: #selector(Background.stop), name: kBackgroundStop, object: nil)添加两个消息监听用来控制背景的移动和停止,当小兔子掉落的时候,背景保持禁止,当小兔子跑动的时候,背景往后移动。
在GameScene.swift中的didFinishUpdate中添加背景的更新函数调用
override func didFinishUpdate() {
background.didFinishUpdate()
创建小兔子
下午9.35.42.png
小兔子的素材分三组动画序列帧,跑动,禁止,下落
打开Player.swift编写以下代码
下午9.54.43.png
state用来表示小兔子当前的状态,并定义分别包含三种状态序列帧的贴图数组runTextures fallTextures stayTextures。
添加以下方法,用来切换小兔子状态,并通知背景层做相应停止或移动处理,这样只需要控制小兔子的状态,便能让背景的状态与只同步。
//Mark:角色动作状态切换
func setState(newState: PlayerState){
state = newState
removeAllActions()
switch state! {
case .Run:
let action = SKAction.animateWithTextures(runTextures, timePerFrame: 0.1)
runAction(SKAction.repeatActionForever(action))
//通知背景开始平移
notificationCenter.postNotificationName(kBackgroundMove, object: nil)
case .Fall:
let action = SKAction.animateWithTextures(fallTextures, timePerFrame: 0.2)
runAction(action)
//通知背景停止平移
notificationCenter.postNotificationName(kBackgroundStop, object: nil)
case .Stay:
let action = SKAction.animateWithTextures(stayTextures, timePerFrame: 0.1)
runAction(SKAction.repeatActionForever(action))
//通知背景停止平移
notificationCenter.postNotificationName(kBackgroundStop, object: nil)
需要模拟兔子的坠落效果,那么给兔子添加物理体
private func setPhysics(){
physicsBody = SKPhysicsBody(circleOfRadius: size.width * 0.4)
physicsBody?.allowsRotation = false
physicsBody?.categoryBitMask = Bitmask.player
physicsBody?.collisionBitMask = Bitmask.cobe
//设置能与之产生物理碰撞的物体
physicsBody?.contactTestBitMask = Bitmask.cobe | Bitmask.enemy
//设置能与之检测碰撞的物体
physicsBody?.restitution = 0
//设置反弹力度
configure.swift中定义的各个物体物理体是UInt32类型,意味着一个游戏可以创建32种不同类型的物理体,应该足够了
struct Bitmask{
static let cobe:UInt32 = 0x1 && 1
static let player:UInt32 = 0x1 && 2 //角色
static let enemy:UInt32 = 0x1 && 3
在GameScene中合并它们
准确的说法是编写控制土块移动的交互代码和小兔子状态被动切换的代码
物理体协议
这个。。。有个小意外,本来是通过物理体碰撞来控制小兔子的状态切换,后来发现这种方式很不靠谱,所以不用了。而且后来我做的项目基本上是避免让他附带物理效果,或者能自己写编自己写,实际上原生得并不好控制细节(除非只需要真实的物理模拟)
让兔子活动起来
在GameScene.swift下的Update函数中写一些简单代码
override func update(currentTime: CFTimeInterval) {
//当小兔子位置超出屏幕便结束游戏
if player.position.y & 0 || player.position.x & winSize.width || player.position.x & 0 {
isGameover = true
//既然结束游戏了,下面就不执行了guard的具体含义百度百度
guard !isGameover else{
//通过获取小兔子当前的运动矢量来判断小兔子当前的状态
//dy&0 意味着它正在下落,那么切换兔子状态吧
//否则dx&0意味着它被卡住了,游戏结束,并切换状态为停止
//否则意味着它在平地上了,那么让它跑起来吧
let playerVelocity = player.physicsBody!.velocity
if playerVelocity.dy & 0 {
player.setState(.Fall)
if playerVelocity.dx & -0.05 {
isGameover = true
player.setState(.Stay)
player.setState(.Run)
大概就是这么个过程,原来还有不少东西要写,我简化了些,但是。。。这玩意能跑呵呵美术图地址:
伪艺术家/iOS开发工程师/独立游戏开发者/游戏设计师

我要回帖

更多关于 android游戏开发代码 的文章

 

随机推荐