spritekit 3d游戏 kit 开发了什么大游戏

创建SpriteKit游戏的最佳范例
招聘信息:
本文会从拓展性、游戏构造和性能三个方面分别讲述建立SpriteKit游戏时的一些实践经验和范例。建议先阅读 有助于理解本文内容。
拓展性最佳范例
硬编码问题
在以前,程序员在场景中做了所有的事情,在代码中引用美工,游戏第一关采用硬编码,第二关第三关就是一顿复制粘贴修修补补。修改美工图片也意味着要改代码,每次预览修改后的效果都要Build和Run,而设计游戏的人甚至要会编程,因为修改设计(比如一些游戏参数)也要改代码。如果项目接着编写下去,这导致重复性的构建代码,将数据硬编码到代码中也是种低效率做法,编码与美工和设计人员之间合作困难。
解决方案:
1.将游戏内容与游戏逻辑分离
2.将场景构造与素材分离
3.将数据与代码分离
4.在Xcode中所见即所得
具体实现:
1.游戏逻辑写在MyScene.m文件中(使用SpriteKit的模板)
2.游戏场景结构创建在MyScene.sks文件中
3.场景用到的素材使用单独的sks文件分开管理
4.数据要存储在plist文件中(XML格式)
Xcode6为我们提供的工具:
1.SpriteKit模版,支持OC和Swift.
2.SpriteKit编辑器:可视化编辑sks文件,即时预览效果,实时物理模拟.
3.plist数据编辑器:XML语言被可视化成字典来编辑,简单高效.
在MyScene.m文件中使用下面的模板来加载MyScene.sks中设计好的场景结构,然后你就可以接着写游戏的逻辑了:
let&path&=&NSBundle.mainBundle().pathForResource(file,&ofType:&"sks")&var&sceneData&=&NSData.dataWithContentsOfFile(path,&options:&.DataReadingMappedIfSafe,&error:&nil)&var&archiver&=&NSKeyedUnarchiver(forReadingWithData:&sceneData)&archiver.setClass(self.classForKeyedUnarchiver(),&forClassName:&"SKScene")&let&scene&=&archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey)&as&GameScene&archiver.finishDecoding()&
游戏构造最佳范例
程序员总是想让游戏尽可能早地跑起来。为了完成这个目标,我们要懂得与美工和设计合作,毕竟程序员不能独自完成所有事情,下面列举下快速达成目标的步骤:
1.先把一般性的工作做完,这只是逻辑布局上的编程,不必等美工提供素材。标记好英雄、敌人等人物出现的位置,设计好背景、平台等。
2.用只有颜色没有贴图的SKSpriteNode来充当英雄和敌人,只要能区分开就好。现在可以设定父子层级关系,比如设定粒子发射位置,连接组件和关节(胳膊腿儿啥的)
3.设定物理层面的相互作用,比如各种物理体的类别,碰撞掩码,是否受物理世界的影响等。在Xcode中模拟物理场景,保证你做的这些从一开始就万无一失。
4.初始化场景逻辑和游戏逻辑,把之前在场景上布置好的物体与代码中的游戏中的物体用之前设定好的名字(英雄or敌人)联系起来。使用SpriteKit模板加载好游戏场景后,SKScene的initWithCoder会被调用,我们可以在这里加载声音和AI数据等不会变化的数据。当SKView.presentScene:被调用时,SKScene的didMoveToView:会被调用,在这里你要缓存可见的元素,比如敌人,你可以通过名字将它们从场景的子节点中遍历出来。
5.完成游戏:将美工给你的素材替代以前的纯色,增加关卡和效果(Shader,滤镜等),迭代测试。
PS:两种搜索节点元素的方法:
&&childNodeWithName:&&&enumerateChildNodesWithName:usingBlock:&
关于搜索文本的语法补充:
通过name查找:
&hero&是查找叫做&hero&的子节点,不迭代。
&//hero&是查找场景图中所有叫做&hero&的子节点,迭代。
通过class查找:
&//SKEmitterNode&会在场景图中迭代查找所有粒子节点。
通过通配符查找:
&//he*&查找所有以&he&开头的子节点。
性能最佳范例
我们要尽可能维持游戏每秒60帧频率的刷新,就需要从性能上优化。
Drawing performance
影响绘图性能的两个主要因素:
1.绘制顺序:默认的绘制顺序是按照代码中构造节点树的顺序绘制的,先绘制父节点,然后依次绘制子节点,并向下迭代。你可以将SKView的ignoresSiblingOrder属性设为YES,然后利用Z轴的层级深浅关系来定制绘制次序。
2.共享:使用纹理图集(texture atlases),共享法线贴图,从文件加载Shader而不是字符串,将混合模式放在Z轴同一层级。
下面的工具能帮你评估图形性能:
SKView上的HUD flags:
showsFPS&showsDrawCount&showsNodeCount&showsQuadCount&
profile:检测硬件使用情况。
Actions and constraints
使用SKAction类实现SpriteKit中的动画是很高效的。用一行代码就能实现诸如平移、旋转、缩放、渐入渐出等动画效果。你可以将多个动画组成一个序列(sequence)来依次执行,也可组成一个group来同时执行,sequence和group之间也可以互相嵌套。SKAction有很多方法,可以查看它的API文档。
如果你给Action使用Key命名的话,你还可以通过Key来动态删除和重写这个Action。
SKConstraints类能在节点与节点或固定点之间建立约束。详见我的另一篇文章SpriteKit在iOS8和OSX10.10中的新特性中New Physics->Constraints小节。
模拟物理世界需要很多的硬件计算,当务之急就是减少能耗。
静态物体耗能较小,即使他们外形复杂。所以尽可能的将物理体的dynamic属性设为NO.
物理体的外形复杂程度也决定着能耗。圆形是最简单的,耗能最少,再往上依次是矩形、多边形、复合图形、alpha像素图形:
所以你需要权衡利弊来设计你游戏中物理体的外形。上图的后两种外形是iOS8新加入的,你可以在SpriteKit在iOS8和OSX10.10中的新特性中的New Physics->Per-Pixel Physics和Improvements->Physics Updates这两个小节中学到有关它们的更多知识。
在设置碰撞掩码(mask)时,尽量将相同类别的物体归为一类,用尽可能少得类别来划分你游戏中的物体。这样能减少很多能耗。
尽可能使用iOS8新加入的SKFieldNode来模拟一些物理场景,而不是通过传统代码方式(自己向各种物体施加各种力)。有关SKFieldNode的知识可以查看SpriteKit在iOS8和OSX10.10中的新特性中New Physics->Physics Fields那节。
将SKView的showsFields属性设为YES可以将SKFieldNode的debug信息显示出来:
上面两个场景是我的一个SpriteKit游戏ColorAtom中的秘密模式和黑洞模式截图,欢迎Star和Follow。
SKShapeNode的耗能层级图如下:
上图中的分界线区分了低功耗和高功耗的Shape。绘制分段的linear strok所需的功耗也很少。
SKEffectNode可以将它的子节点渲染的更加出彩,比如用CoreImage滤镜等合成出复杂的特效。但这也会对性能有很大影响,请谨慎使用。
Shader是一个不错的选择,它不需要离屏渲染,想用就用,节能环保。有关SKShader的知识可以查看SpriteKit在iOS8和OSX10.10中的新特性中Shader那节。
shouldRasterize属性暗示是否缓存以备将来之需。如果你的画面会停留一段时间,可以考虑设置为YES。
我们还可以从SKNode中获取纹理(这不费吹灰之力),还可以对纹理进行滤镜加工:
SKTexture&*texture&=&[myView&textureFromNode:node&size:size];&&SKTexture&*texture&=&[myTexture&textureByApplyingCIFiler:filer];&
光照的功耗是跟像素数量成比例的,每个SKSpriteNode最多能被八个光源照射,你可以利用光照掩码来优化性能。
环境光照(ambient light)所需功耗是免费的,而法线贴图(Normal Maps)功耗很低。
阴影的功耗跟光源数量成正比,所以尽可能减少光源数量。
有关Lighting的更多知识可以查看SpriteKit在iOS8和OSX10.10中的新特性中Lighting and Shadows那节。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量16272点击量10875点击量8664点击量8017点击量7488点击量7063点击量6588点击量6497点击量5716
&2016 Chukong Technologies,Inc.
京公网安备89最后登录16-7-12在线时间63226 小时赞10 注册时间05-4-23积分57253帖子精华1UID8
( 超级版主 )
注册日期: 05-4-23
帖子: 18907|积分: 57253
赞助商广告
Chrome 27.0.
Mac OS X 10.8.4
本帖最后由 - 于 13-6-21 22:21 编辑
苹果全新Sprite Kit开发框架的目的是让开发者更容易为iOS 7移动设备和Mac桌面电脑创建2D游戏,这还暗示着Apple TV可能在未来支持游戏。Sprite Kit中的sprite一词是指视频游戏中独立的图形元素,通常情况下在不同的背景层中进行活动。为了能使这些sprite运动起来,Sprite Kit还模拟真实的物理效果,比如说重力和惯性等等。
13-6-21 22:19:57 上传
Sprite Kit能为游戏开发者提供高级框架,这意味着他们可以在游戏中轻松的让各种元素动起来,而且不需要了解内在的OpenGL代码。Sprite Kit的等级与Core Animation相似,Core Animation是苹果为iPhone发布的框架,可以允许应用开发者轻松的打造平滑的转换效果和其他的图形特效,开发者无需掌握复杂的GPU编程。
Zynga和Cocos2D的故事
13-6-21 22:19:58 上传
那么苹果为什么要退出Sprite Kit 2D游戏开发框架呢?首先,Sprite Kit的概念并不是最新的,iOS开发者目前已经可以从大量第三方游戏框架中选择,比如Cocos2d-iphone等。苹果发布自家的Sprite Kit框架后,苹果不仅仅可以将其紧密集成在Xcode开发环境中,而且还可以保证Sprite Kit的未来按照苹果拟定的路线发展。
目前第三方游戏开发框架的问题就在于未来不确定,虽然大部分游戏框架是开源的,比如说Cocos2D,不过该项目可以被收购,这样其未来就无法被苹果控制了,对于OS X和iOS开发者来说这些都是不稳定的因素。以Cocos2D来看,其主要开发者Ricardo Quesada就被Zynga雇佣,Cocos2D的未来就成了疑问。
在Zynga雇佣Ricardo Quesada前,Quesada曾计划让Cocos2D支持Mac,不过现在该项目的未来就不知道如何发展了。Zynga将Cocos2D未来的重点放在了网页开发,开发者可以使用全新的Cocos2D JS为所有支持HTML5的浏览器开发游戏,其性能接近iOS和Android原生程序。Zynga的重点在HTML5应用,苹果则更希望为用户提供原生的iOS应用。
苹果将为iOS和OS X普通提供统一的2D游戏开发框架
苹果一直想要将第三方的内容移除自己的生态西宫,比如开发自家的浏览器Safari,摒弃Flash,再比如降低Office、Adobe应用和谷歌地图对自己普通的影响。游戏开发者Steffen Ltterheim表示:“有了自家的框架后,苹果可以保证开发者再也不会遇到新版iOS发布后的兼容性问题,Sprite Kit 肯定会支持最新版的Xcode、iOS、OS X和苹果将来发布的各种新系统。”
13-6-21 22:19:56 上传
Sprite Kit对于初学者来说不算太难,设计很优雅,精简。Cocos2D的主开发者Quesada也在推特上表示:“Sprite Kit非常不错,虽然功能上没有Cocos2D多,不过却更好。”
苹果与3D开发
Ltterheim同时表示,苹果似乎不可能涉足3D游戏开发引擎,比如Unity和虚幻引擎。基本上大型开发者包括id Software、Epic、育碧和EA都采用复杂的3D引擎。3D游戏也是区分大型开发商和小型开发商的主要因素。2011年,苹果为OS X发布了Scene Kit框架,该框架可以导入COLLADA 3D物体并打造光影效果的场景。不过Scene Kit一直没有支持iOS平台。
13-6-21 22:19:56 上传
最后登录16-7-1在线时间3249 小时赞25 注册时间12-6-24积分8849帖子精华0UID365069
( ☆☆☆☆☆ )
分享于 13-6-21 22:30:17
Safari 6.0.5
Mac OS X 10.8.4
最后登录16-3-31在线时间6201 小时赞99 注册时间11-10-5积分23667帖子精华0UID249126
分享于 13-6-21 22:40:43
Chrome 27.0.
Mac OS X 10.8.4
&在Zynga雇佣Ricardo Quesada前,Quesada曾计划让Cocos2D支持Mac,不过现在该项目的未来就不知道如何发展了。&
cocos2d很早就支持Mac了..
最后登录16-3-31在线时间6201 小时赞99 注册时间11-10-5积分23667帖子精华0UID249126
分享于 13-6-21 22:42:49
Chrome 27.0.
Mac OS X 10.8.4
熟练cocos2d的转sk瞬间的事,因为两者实在太像了..
最后登录16-3-31在线时间6201 小时赞99 注册时间11-10-5积分23667帖子精华0UID249126
分享于 13-6-21 22:44:27
Chrome 27.0.
Mac OS X 10.8.4
期待下Steffen Ltterheim的KK以及KT 7
最后登录16-4-1在线时间1885 小时赞77 注册时间12-3-24积分23831帖子精华0UID322928
分享于 13-6-22 02:04:35
Firefox 21.0
Mac OS X 10.7
最后登录16-7-12在线时间2831 小时赞112 注册时间09-11-1积分70959帖子精华0UID129252
( ★★★★★ )
分享于 13-6-22 11:10:02
Chrome 26.0.1410.43
不是技术控啊,真不懂开发
MacX 网友&
分享于 13-6-22 12:13:36
Safari 7.0
Mac OS X 10.9
我比较期待类似Scene Kit的框架能在下一代ios系统出现~~iOS7 SpriteKit仿微信打飞机源码,Cocos2D-X,游戏源码,6m5m游戏素材
请求处理中...
&iOS7 SpriteKit仿微信打飞机源码,这个代码网上比较稀少,代码逻辑清晰,是很不错的学习iOS7 SpriteKit的代码。注:Sprite Kit是iOS 7中内置的一个新的框架,该框架主要用来开发2D游戏。目前已经支持的内容包括:精灵、很酷的特效(例如视频、滤镜和遮罩),并且还集成了物理库等许多东西。
或 0 积分 ()
下载92浏览人数1288交付方式直接下载
注意:【1】本站只是个免费分享平台,并不敢保证所有源码人人都能编译,因素太多,旨在学习研究,如果您有顾虑或斤斤计较就请不要下载了,大家都不容易,互相理解,才能让更多的好资源出现!【2】本站资源仅限于学习研究,请在下载后24小时内删除,不要用于任何商业用途。【3】部分素材压缩包因体积过大而上传到百度等网盘上,如果发现在本站下载的压缩包只要有几K大小,说明该压缩包里只是网盘的下载链接,并非文件损坏,本站的所有素材都是经过了审核,大家可放心下载,欢迎监督反馈。【4】做个好平台真心不容易,我们一直在努力,因本站素材量大,难免会出现某网盘下载链接失效等问题,请大家及时反馈,我们会及时修正保证您可以拿到素材,请大家支持和理解!
免责声明:本网所展示的素材与服务信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。本网不提供任何保证,并不承担法律责任,如有不妥之处请及时反馈,本网将会妥善处理。
友情提醒:本站旨在提供游戏素材的分享与交流,所展示的素材版权归原作者或公司所有,如果本站素材侵犯了您的权益,请与联系我们,我们将及时处理。
您可能感兴趣的同类素材
5金币 / 个
1金币 / 个
2金币 / 个
0金币 / 个
1金币 / 个
1金币 / 个
好评率100%ios spritekit可以开发游戏吗_百度知道
ios spritekit可以开发游戏吗
提问者采纳
苹果带来的 SpriteKit 不仅仅只是增加了制作2D游戏的 API,还在 Xcode5 中集成了包括 Texture Atlas 和粒子系统等等专为 SpriteKit 服务的插件。本文将介绍如何在 SpriteKit 中使用 Texture Atlas和需要注意的一些问题
其他类似问题
为您推荐:
您可能关注的推广
ios的相关知识
其他1条回答
太激动了,我想很多人都是很喜欢的,赞啊
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁jumpNRun 使用Sprite Kit开发编写简单的小人跑步跳越障碍物的游戏。 Game Program
238万源代码下载-
&文件名称: jumpNRun
& & & & &&]
&&所属分类:
&&开发工具: Objective-C
&&文件大小: 1279 KB
&&上传时间:
&&下载次数: 4
&&提 供 者:
&详细说明:使用Sprite Kit开发编写简单的小人跑步跳越障碍物的游戏。-How to make a Jump and Run Game
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&jumpNRun&&........\.DS_Store&&__MACOSX&&........\jumpNRun&&........\........\._.DS_Store&&jumpNRun\.git&&........\....\branches&&........\....\COMMIT_EDITMSG&&........\....\config&&........\....\description&&........\....\HEAD&&........\....\hooks&&........\....\.....\applypatch-msg.sample&&........\....\.....\commit-msg.sample&&........\....\.....\post-update.sample&&........\....\.....\pre-applypatch.sample&&........\....\.....\pre-commit.sample&&........\....\.....\pre-push.sample&&........\....\.....\pre-rebase.sample&&........\....\.....\prepare-commit-msg.sample&&........\....\.....\update.sample&&........\....\index&&........\....\info&&........\....\....\exclude&&__MACOSX\jumpNRun\.git&&........\........\....\info&&........\........\....\....\._exclude&&jumpNRun\.git\logs&&........\....\....\HEAD&&........\....\....\refs&&........\....\....\....\heads&&........\....\....\....\.....\master&&........\....\objects&&........\....\.......\02&&........\....\.......\..\90bb30ba0ffcafdcb&&........\....\.......\17&&........\....\.......\..\cee965f3b042b2c756d2a3ea8a2a8&&........\....\.......\..\d690c5e0af60a2dedaa2a4ed525&&........\....\.......\19&&........\....\.......\..\889fcb034d58a39fcd7f2c3f07e7&&........\....\.......\21&&........\....\.......\..\850ce372b9d7bedfd&&........\....\.......\25&&........\....\.......\..\60a2b9abfdebd3b4af46dbe4c272&&........\....\.......\41&&........\....\.......\..\b157b2c1aa3d9591bdd307a94c72c93c5ff3a0&&........\....\.......\47&&........\....\.......\..\7b28ff8f86a4fbd3aa&&........\....\.......\4b&&........\....\.......\..\eb4c7ec07fb70bdb1b1eb6515e&&........\....\.......\4e&&........\....\.......\..\7fca7c220f1d4aa0d01bd326b10e8b12bb3b6f&&........\....\.......\54&&........\....\.......\..\c40b5badb0a7b95ba962be&&........\....\.......\57&&........\....\.......\..\a2a660a33fad98b791bb19b4e8222&&........\....\.......\5b&&........\....\.......\..\f68a6b031d59ebe3d8e3d8c79721&&........\....\.......\5d&&........\....\.......\..\1bc79b1c267dbb561f8f41cafeb821c2eecabf&&........\....\.......\..\47f811d93ddb798e6d44c9cffe&&........\....\.......\..\8cffd51abe&&........\....\.......\61&&........\....\.......\..\17bf3f&&........\....\.......\64&&........\....\.......\..\7ba47cbdfc5f0cefbd&&........\....\.......\65&&........\....\.......\..\b1f66fbe3eb6e7baaeff73097eb24&&........\....\.......\68&&........\....\.......\..\8d1bc7c612ba0e3f5111add3bb4e0ea898219c&&........\....\.......\..\b71d0a5c4922d6babce222b324cd76395eda10&&........\....\.......\6c&&........\....\.......\..\7308acc705ac09346&&........\....\.......\..\f9d12b4b39d6e0fb24ab06f57add&&........\....\.......\..\fc746d4ecf2e3ac67bb0cf6c4013e1aff9b1f1&&........\....\.......\6e&&........\....\.......\..\4efb88e77ac11efee&&........\....\.......\6f&&........\....\.......\..\3b0ab3c176f81e4b2e202efa0b&&........\....\.......\72&&........\....\.......\..\ac130a363ed904b4de27d93c42e0a37df0dc71&&........\....\.......\76&&........\....\.......\..\6c7f243c204d31e86d2ed4629a&&........\....\.......\7d&&........\....\.......\..\b6034772fbeadd29ef157ac3496d&&........\....\.......\82&&........\....\.......\..\a2bbcea579e&&........\....\.......\89&&........\....\.......\..\a3d6ebdc6efdcde0ec8f0a4c1e8494&&........\....\.......\..\a68dae28395aaa71c2dbbabdce1c&&........\....\.......\9b&&........\....\.......\..\ce00b99efd9ac7c016da600dd91&&........\....\.......\a3&&........\....\.......\..\9cfca4d984d38b90dc8098bded40&&........\....\.......\a5&&........\....\.......\..\7bccb5f5e78b3bafb4&&........\....\.......\a7&&........\....\.......\..\224e168e7f4c14ec6fd2a36e85000ddc0ac1ad&&........\....\.......\aa&&........\....\.......\..\7a7db25c9edac5d1e90cec3fd71
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 新东方项目,模拟腾讯公司QQ网络多线程通讯软件,功能主要有群聊,私聊,上线隐身。
&[] - android文本框的实现程序,通过绝对布局实现。
&[] - ios game development document
&[] - 闪电脚本引擎1.6版模块源码,应用程序编程源码,很好的参考资料。
&[] - iPhone的小游戏,是斯坦福课程的案例。名为Matchismo。欢迎大家下载学习

我要回帖

更多关于 ios spritekit 的文章

 

随机推荐