开发者经验谈:如何一天时间搞定iOS游戏开发?


在一天时间里将完成iPhone游戏开发由梦想变为现实?
本文作者给出了从创意转变成现实的详细答案。使用苹果原生游戏引擎SpriteKit,遵循一定的原则可以保证开发顺利进行,最大程度避免意外情况的发生。

CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、参与内容翻译工作,或寻求近匠报道,请发送邮件至tangxy#csdn.net(请把#改成@)。 


遵循一定的原则可以保证开发顺利进行,最大程度避免意外情况的发生。根据我以往的经验,如果不提前想好运用什么技术?怎么组合这些技术?临时抱佛脚,刷网页搜信息将会耗费掉很多精力。

这篇指南会告诉你什么时候该走哪一步,用苹果的原生游戏引擎SpriteKit,让游戏从创意转变为现实。

1. 创建一个Project

有了一个游戏创意之后,第一步是立刻用苹果的开发IDE——Xcode,创建一个游戏Project。为苹果设备开发App,为什么非得用Xcode呢?因为它更简单,更省事,更方便。

2. 设立Workspace

在Xcode里,Workspace要求有逻辑体系(logistics),一些准备工作也必不可少,比如决定游戏在设备上的orientation,做一些适当的改动——取消选定portrait或landscape view,在project文件或XCODE编辑器里进行编辑。

3. 添加Project资源

Project资源即图像音频文件或其他要添加到project里的外部文件。简单拖放进project导航器就可以了。

4. 改变背景颜色

这一步才真正是好戏开场。要改变背景颜色的话就得多写几行代码,保证运转高效进行,程序员也更有动力继续工作。

这一步看似不起眼,做好了却能大大提升开发者的积极性,让他们更加相信自己有能力为Project带来积极的影响。

5. 为背景添加Sprite

从asset或图像文件夹里获取图片,添加为游戏背景。了解了如何添加以及安置背景sprite的位置后,就能为游戏场景添加sprite了。

6. 添加游戏Sprite

添加了背景sprite后,同时添加in-game sprites,也是不错的想法。

游戏内置sprite也会帮忙节省不少时间,让你安安心心把注意力放在游戏逻辑上。

7. 添加玩家控制的Sprite

添加游戏sprite时,你说不定已经加上了玩家控制的sprite,这一招挺受用的。将两者分开来操作主要是考虑到多数情况下,玩家控制的sprite按照我们的意愿执行一个行为或位置时,可能跟游戏内置的其他sprite有所不同。


添加游戏逻辑

创建了自己的游戏asset之后,就开始为游戏添加逻辑了。在这篇指南中,我们会用到很多iOS游戏喜欢用的“拖放”机制。

执行游戏逻辑时,须采用“分而治之”的方法,也就是将过程分割成最小单位,分别编写代码。

8. “拖放”Sprite——“拖”

I为玩家sprite执行“拖动”机制,要用到touchesBegan功能,该功能现已适用于苹果产品。这个动作只需要轻点屏幕即可引发。

9.“拖放”Sprite——“放”

这一步会用到touchesMoved和touchesEnded功能,判断手指什么时候移开屏幕。

这部分我们创建菜单屏幕,按键还有游戏所需的用户界面工具。

10. 创建主菜单(setUp)

要创建主菜单屏幕,也就是scene(场景)或一个SKNode,要求有Cocoa Touch文件。在这篇指南里,我们用scene。

11. 调用主菜单

创建主菜单后,要调用主菜单,才能开始运作。游戏启动后,应立刻调用主菜单,作为游戏中出现的第一个场景。

12.  添加背景Sprite

这一步跟添加游戏场景背景sprite是一样的。

13. 触摸开始游戏

主菜单加载后,游戏要真正开始,只要给屏幕添加一个触摸功能就好。触摸的动作检测到之后,调用加载游戏场景,然后游戏开始运行直到结束。

14. 返回主菜单按钮

玩家如何从游戏场景返回主菜单呢?方法是重复第13步的touch方法,但这次我们用sprite做按键,玩家按下按键之后,就能返回主菜单。

15. 场景转换

动画让游戏更引人入胜,可谓锦上添花。虽然跟游戏内容没太大关系,但能大大提升游戏体验。

16. 添加一个Play按键

游戏完成之后,用Sprite添加一个Play按键,很简单。按下Play键,就能开始游戏了。


App Store上有更多游戏逻辑和游戏Demo

我曾开发了一个名为Piggie Penny Pincher的iOS游戏,App Store上有,接下来,我将和大家分享我在开发该游戏时用到的一些解决方案。


让游戏动起来

18. 动画&特效

是时候添加动画和特效了,好让游戏看起来更生动一些。

运用动画制作12条准则的任何一条,都会使你的动画更为生动。而最简单常用的是“挤压与拉伸(Squash and Stretch)”,让游戏体验更上一层楼。

19. 音乐和音效

最后可以为游戏添加音乐和音效了,虽然并非或不可缺,但能让你的游戏更加引人入胜

开发者经验谈:如何一天时间搞定iOS游戏开发?的更多相关文章

  1. 【转】开发者分享如何创造一款优秀的iOS游戏——2013-08-25 17

    http://game.dapps.net/gamedev/experience/889.html 创造出<Temple Run>的夫妻团队在高峰时期每天能够获得"好几万&quo ...

  2. Centos安装FastDFS+Nginx(一天时间搞定)

    最近在研究和使用Fastdfs,别人搭的环境,终究是别人的,绝知此事要躬行~躬行啊~      下面的脚本主要参考了官方的INSTALL文件,这个是比较权威的,部分地方和实际情况不一致.比如配置文件的 ...

  3. [转]Cordova - 彻底搞定IOS编译!

    本文转自:https://www.cnblogs.com/sunylat/p/9946482.html 操作系统:OSX10.14 XCode:10.1 Cordova:8.1.2 假设已经配置好了C ...

  4. Cordova - 彻底搞定IOS编译!

    操作系统:OSX10.14 XCode:10.1 Cordova:8.1.2 假设已经配置好了Cordova开发环境,Apple ID你也有,XCode也可以正常工作了,那么就可以继续看这篇文章了! ...

  5. leetcode 258. Add Digits——我擦,这种要你O(1)时间搞定的必然是观察规律,总结一个公式哇

    Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. ...

  6. 分分钟搞定IOS远程消息推送

    一.引言 IOS中消息的推送有两种方式,分别是本地推送和远程推送,本地推送在http://my.oschina.net/u/2340880/blog/405491这篇博客中有详细的介绍,这里主要讨论远 ...

  7. 5分钟搞定iOS抓包Charles,让数据一清二楚

    Charles安装 HTTP抓包 HTTPS抓包   1. Charles安装 官网下载安装Charles:https://www.charlesproxy.com/download/ 2. HTTP ...

  8. 一句话搞定IOS中View的Frame和Bound

    就一句话,Frame是父View上看到子View的窗户,Bound是子View上可以被父View看见的内容. 稍微解释下.Frame 指子View在父View中的位置以及大小.由两部分构成,第一部分是 ...

  9. [Python] Uvicorn+FastAPI快速搞定Restful API开发

    目录 安装模块 运行代码 运行命令 快速文档 安装模块 # 一个现代的,快速(高性能)python web框架 pip install fastapi # 主要用于加载和提供应用程序的服务器. pip ...

随机推荐

  1. 使用JavaScript创建我的分页

    把下面的方法放到一个js文件,页面引用他就行了 JavaScript function PageList(PageSize, PageIndex, TotalCount, ParList) { $(& ...

  2. WPF自定义RoutedEvent事件示例代码

    ************************* 引用网友,便于查找所用..... 创建自定义路由事件和应用分为6个步骤: (1)自定义路由事件参数对象 (2)声明并注册路由事件 (3)为路由事件添 ...

  3. 获取表单的初始值,模拟placeholder属性

    input和textarea有一个默认属性defaultValue,即初始值. 即使在页面操作修改了input和textarea的内容,获取到的defaultValue依然是初始值.可通过该值模拟pl ...

  4. 【C++】error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型

    刷leetcode 263.uglynumber时,代码如下: class Solution { public: bool isUgly(int num) { int temp = num; ) re ...

  5. JS-005-常见下拉列表 Select 和 datalist

    下拉列表在我们日常的网页浏览的过程中,随处可见,是 web 编程过程中大家非常熟悉的一个页面元素,随着 HTML 语言的日益强大,其在广大攻城狮的手中可谓是千变万化,有了很多不同的实现方式.本文主要以 ...

  6. i++和++i的区别

    先看如下程序: class Program { static void Main(string[] args) { ; ; ; ; x = i++; Console.WriteLine("x ...

  7. .NET基础加强,找工作之前可以看看这些............

    .NET基础知识加强: 1  变量命名规则:骆驼命名法:第一个字母小写之后的首字母大写,[对于方法名和类名首字母大写]→培养良好的命名规范. 2  构造函数:没有返回值,方法名和类名相同,每个类中都有 ...

  8. LeetCode Intersection of Two Linked Lists

    原题链接在这里:https://leetcode.com/problems/intersection-of-two-linked-lists/ 思路:1. 找到距离各自tail 相同距离的起始List ...

  9. hibernate一对多注解

    package net.zmcheng.model; import java.util.HashSet;import java.util.Set; import javax.persistence.C ...

  10. 官方教程:教你用好微信JS-SDK接口

    微信开放JS-SDK接口,开发者和行业用户可谓是欢欣鼓舞.奔走相告,目测将激起一大波第三方开发商的创新产品!真真是H5开发者的利好!但也有用户表示,还不了解JS-SDK接口到底是啥,究竟怎么用.现在, ...