书海网短评:
适读人群:游戏开发与设计者基于位置的AR游戏类型带来了新的平台和技术难点。不过这本书会帮你简化这些难点,展示如何*大化受众。本书将带你经历制作基于位置的AR游戏的过程,涵盖的核心技术概念有:GIS基础概念、移动设备上
基于位置的AR游戏类型带来了新的平台和技术难点。不过这《AR游戏:基于Unity 5的增强现实开发》会帮你简化这些难点,展示如何*大化受众。《AR游戏:基于Unity 5的增强现实开发》将带你经历制作基于位置的AR游戏的过程,涵盖的核心技术概念有:GIS基础概念、移动设备上的GPS、地理映射、在Unity里映射贴图、移动设备上的相机、在Unity里的相机贴图、访问基于位置的服务,以及其他有用的Unity窍门。技术分析部分进一步讨论制作一个多人版本游戏的必需组件。最后,分享一个疑难解答章节,以防你遇到困难时需要一点点帮助。
你会学到:
√制作一个基于位置的增强现实游戏FoodyGo
√在地图上让玩家角色运动起来
√使用相机作为游戏背景
√使用SQLLite4Unity3D实现数据库持久化,以跨会话保存库存物品
√创建基础UI元素,包括游戏界面、库存、菜单和设置
√用GooglePlacesAPI执行定位和内容搜索
√添加图像着色器效果来改进游戏气氛
√添加多人网络或者别的增强模块来扩展游戏
基于地理位置虚拟现实游戏已经有几年了,"口袋妖怪GO”的发布是游戏史上的变迁,催化市场发展,引导了大波的需求。是时候让新手和有经验的人把他们的点子投入增强现实的移动端游戏,满足市场需求了。如果你想使用*新的Unity5toolkit来开发游戏,那这《AR游戏:基于Unity 5的增强现实开发》就是为你准备的。这种类型的基于地理位置的增强现实游戏给我们介绍了一个新平台同时带来技术上的挑战,但是这《AR游戏:基于Unity 5的增强现实开发》会简化这些难题,告诉你怎么*大程度吸引游戏受众。它能带你体验塑造这种游戏来表现技术概念的这段旅程:GIS的基本原理,移动设备卫星定位,映射,Unity中的地图映射,移动拍照设备,Unity中摄影映射,访问基于位置的服务,和其他有用的建议。这种技术物质探讨了对于长远开发多玩家版本游戏来说哪些是必要的。*后,书会教你故障排除技术以防你遇到麻烦需要一些帮助。
MichealLanham是为petroWEB工作的一位解决方案架构师,目前居住在加拿大阿尔伯塔省的卡尔加里(Calgary,Alberta)。他目前的职责之一是开发具有先进空间搜索能力的综合GIS应用。他曾担任专业和业余游戏开发人员,制作桌面和手机游戏超过15年。2007年,Micheal接触到Unity3D,从此以后就一直是Unity3D狂热的粉丝和开发者。
龚震宇是一位资深的游戏开发工程工程师,有十余年从事游戏开发的工作经验。曾在富士通从事编程工作,之后一直在神游科技从事游戏开发工作。周克忠是一位谷歌专业AR开发工程师,长期从事增强现实相关研究和实践。
这《AR游戏:基于Unity 5的增强现实开发》非常适合没有任何AR开发经验,甚至没有游戏开发经验的开发者,从零开始学习增强现实的开发。文章的内容从安装Unity引擎和配置相关环境开始,进而介绍AR及游戏开发中的一些基本概念等,整个讲解过程循循善诱,使初学者不用担心错过任何一个细节而止步不前。
学习软件开发的方式就是学习案例,并亲自动手实现。如果像传统的教科书过多地介绍概念和理论,往往让读者读完之后仍不能独自完成一个完整的作品。这《AR游戏:基于Unity 5的增强现实开发》介绍了目前火爆的一款AR游戏PokemonGo,并将其关键技术一一拆解,章节顺序遵循游戏开发的标准流程,使读者在学习相关的技术以外也能了解到游戏开发的工作流程。
AR被很多人认为是一种革命性的技术,因为它并不是一个游戏专用的技术。恰恰相反,AR被认为在未来可能会影响到每个人日常生活的方方方面。比如AR眼镜可以在现实世界的背景上增加虚拟的画面。当你在商场购物时,戴上它你可以看到每一样商品的详细信息。当你需要导航时,再不用担心看不懂地图,它可以在现实世界里叠加虚拟的导航路线,即使是路痴也只要跟着箭头的方向行走即可。AR技术还可以应用在很多领域,这里不再一一阐述。
这《AR游戏:基于Unity 5的增强现实开发》介绍的核心工具是Unity引擎。就像AR技术一样,Unity已经不仅仅是一款游戏引擎。在游戏行业以外,它已经被应用在AR、VR、影视、建筑可视化(BIM),甚至汽车制造等领域。Unity是全球应用广泛的VR、AR开发平台,目前全球大部分的VR、AR内容都是通过Unity开发的。就AR来说,具体的技术还分很多种,比如ARKit、ARCore、Vuforia、Hololens、MagicLeap等。Unity是目前官方支持AR技术的开发平台。可以说Unity是目前学习AR技术、开发AR产品的有效工具。
就像其他所有的新兴技术一样,AR处于发展的初期,技术和硬件上还存在着些许不足。但是由于它拥有的巨大潜力,我相信这些困难都会很快被克服。希望有更多的开发者加入增强现实的世界,让增强现实更快进入现实。
张黎明Unity大中华区技术总监
2018年3月5日
第1章准备开始1
现实世界冒险游戏1
基于位置2
增强现实3
冒险游戏3
使用Unity进行移动开发4
下载和安装Unity5
设置Android开发环境6
设置iOS开发环境10
Unity入门10
创建游戏项目10
生成和部署游戏14
总结17
第2章映射玩家位置18
GIS基础知识18
映射19
GPS基础知识22
Google地图23
添加地图25
设置服务37
总结42
第3章制作游戏角色43
导入标准Unity资源44
添加一个角色45
替换摄像机46
跨平台输入48
修正输入49
替换角色66
总结68
第4章生成猎物69
创建一个新的“怪物服务”70
理解地图映射的距离72
GPS精度78
检查怪物81
投影坐标到3D空间84
在地图上添加怪物85
在UI中追踪怪物93
总结96
第5章在AR中捕捉猎物97
场景管理98
引入游戏管理器100
加载场景102
更新触控输入103
碰撞体和刚体物理106
构建AR捕捉场景110
使用相机作为场景背景112
添加捕捉球116
投掷球117
检查碰撞121
粒子效果反馈125
捕获怪物126
总结130
第6章保存猎物132
库存(Inventory)系统133
保存游戏状态135
搭建服务137
代码审查139
怪物的CRUD(创建,读取,更新,删除)操作144
更新Catch场景146
制作Inventory(库存)场景152
添加菜单按钮158
合成游戏160
移动开发中的痛161
总结162
第7章创建AR世界163
回到地图164
单件模式165
GooglePlaceAPI入门167
使用JSON169
配置GooglePlaceAPI服务172
产生标记173
优化搜索176
总结180
第8章与AR世界交互181
Places场景182
用谷歌街景作为背景184
GooglePlaceAPI照片幻灯片186
增加卖出的UI交互192
卖出的游戏机制198
更新数据库200
把片段拼接起来204
总结208
第9章完成游戏209
未完成的开发任务209
缺少的开发技能214
清理资源216
发行游戏219
开发基于位置游戏的一些问题220
基于位置的多人游戏221
使用Firebase作为多人开发平台225
其他一些基于位置的点子229
这个种类的未来230
总结231
第10章疑难解答232
Console窗口232
编译错误和警告234
调试235
远程调试237
高级调试239
记录日志240
CUDLR244
UnityAnalytics246
每章的问题和解决方案249
总结251
译者序1
作为一名程序员在游戏圈工作了十几年,这是第一次参与翻译工作,因为这《AR游戏:基于Unity 5的增强现实开发》的书名引起了我的兴趣:《AugmentedRealityGameDevelopment》,“AugmentedReality(AR)”这个词一下子就映入眼帘。最早认识到这个词应该是在2011年任天堂公司的3DS上。这台掌机自带了一款AR游戏,通过3D液晶屏可以看到各种动画形象跃然于桌子或者地面上,效果非常震撼。但是从那以后,AR从我的视野中淡出了,直到去年PokemonGO的突然走红。在这之后,国内也涌现出了许多手机端的AR游戏和应用,甚至过年时都流行起了AR“抢红包”。而随着谷歌Tango手机和微软HoloLens眼镜等设备的推出,AR的应用必然会更加广泛。当然,我最关心的还是能否有更好的AR游戏出现。《AR游戏:基于Unity 5的增强现实开发》详细介绍了一个简单的AR游戏的开发过程,非常适合想要一窥AR开发之究竟的读者。本人也是带着这样的心态来翻译的,在翻译的过程中学习和验证,获益匪浅。希望读者也能从中找到乐趣,对于翻译中的一些瑕疵请多多包涵。
感谢翻译合作者Kai,感谢编辑的辛勤校对。另外献给我的宝贝女儿和在我翻译期间辅导女儿学习的妻子,你们给了我莫大的帮助和动力。
——龚震宇
译者序2
因为一个很偶然的机会,本来已经离开游戏圈,走向万恶金融界的我,又回到了游戏相关的行业,从事GoogleAR和VR技术在亚太国家的推广。恰好以前在EA的同事沙鹰在朋友圈牵线,就决定参与翻译这《AR游戏:基于Unity 5的增强现实开发》。公司有规定,不论在哪里发表观点,都必须表明我与Google的雇佣关系,这样读者可以假设我的观点带有偏见,请酌情考虑。
作为一个游戏人和铁杆玩家,我觉得,一个游戏最重要的还是得好玩。其次才是赚不赚钱,有没有独特的美术风格,复杂的画面渲染什么的。最典型的例子就是任天堂的游戏,过去十几年分辨率都是主机里面最低的,可它的游戏就是那么好玩。我一直以来都对任天堂致以最高的敬意,所以能够和震宇一起翻译这《AR游戏:基于Unity 5的增强现实开发》,我很欢乐。
游戏开发者一直都在探索新的人机交互,任天堂在这方面做出过很多尝试,比如很早就制作过VR头盔。这在AR领域,精灵宝可梦GO也实现了前所未有的成功。这《AR游戏:基于Unity 5的增强现实开发》从精灵宝可梦GO的功能出发,讲解怎么使用Unity,制作基于位置并利用地图,街景以及地点网络服务的AR游戏,对开发者来说是个很好的AR游戏入门教材。
那么究竟什么才是AR。这个问题还没有确定的答案,世界上的开发者都在探索AR是什么,可以做什么。维基百科上有一个观点,你想象一个一维的坐标轴,左边无穷远代表完全真实,右边无穷远代表完全虚拟。那么AR就在坐标轴的左半边,代表负数的那个部分;相对的,VR就在坐标轴右边,代表正数的部分。可见AR的定义不是绝对的,有很大的一段区域都可以叫做AR。中间一段区间也叫做XR混合现实,然而这些定义有着非常模糊的边界。
实现AR有很多种核心技术,GPS,StreetView,SLAM,计算机图形,计算机视觉,图像处理,基于大数据的机器学习等等,都有切实的应用例子。《AR游戏:基于Unity 5的增强现实开发》讲解的基于位置的应用,微软的HoloLens,Google的Tango,它们都属于AR的应用。任天堂的3DS里面就有基于卡片的AR玩法,那也是一种早期AR;类似的,目前的技术已经可以做到基于卡片的AR不需要一直盯着卡片也能实现设备定位。
从今年的行业动态来看,接下来基于计算机视觉的AR将会慢慢走出实验室进入消费者领域,美国四大科技雇主公司F.L.A.G.里面有三个都在做:4月份的时候Facebook推出了ARStudio,5月份Google在I/O宣布基于Tango的WorldSense和VPS(视觉定位服务),6月份苹果宣布了iOS11里面的ARKit。根据目前的信息来看,Google的Tango能获得的对现实世界的描述信息最多,因为它硬件上使用了专门的深度传感器和鱼眼镜头。相比之下苹果的ARKit和Facebook的ARStudio只使用了一个或两个RGB摄像头。当然,这只是我的推测,毕竟ARKit和ARStudio都还没有正式对外公开,我还没有看过它们的文档。说不定苹果和Facebook会拥有怎么样的黑科技呢!科技的发展早已不是线性的;十几年前在我上大学那会儿,人工智能教科书都说超级计算机也绝对没办法下围棋战胜人类;这不,5月份AlphaGo单机4TPU就挑战了人类冠军柯杰。
最近几年国内创业气息浓重,投资氛围也活跃,连习大大都有鼓励大家创业。希望大家紧跟时代,在AR这股风刚刚开始刮的时候就让自己站在风口,迎接被风吹起的感觉。
最后感谢翻译同伴震宇,感谢沙鹰牵线带来这《AR游戏:基于Unity 5的增强现实开发》,感谢编辑的提示和帮助。书中有一些句子为了通顺,采取了意译而不是直译,实属中英文的用词习惯差别太大。希望大家不要介意。
——周克忠KaiGoogleAR/VR技术推广工程师
2017年6月26日新加坡
前言
在2016年初,世界上大多数人对增强现实和基于位置的游戏知之甚少。当然,这一切都随着那一年PokemonGo的发布而改变了。一夜之间,这种游戏类型就不容置疑地成为了游戏开发的发展趋势。可能你已经玩过PokemonGo,而且你阅读这《AR游戏:基于Unity 5的增强现实开发》正因为你对AR和基于位置的游戏类型产生了兴趣。
在《AR游戏:基于Unity 5的增强现实开发》中,我们将详细探讨创建像PokemonGo这样的基于位置的AR游戏的各个方面。基于位置的AR游戏是代价昂贵的,需要为游戏中的一切建立很多服务,从地图映射到生成怪物。然而,我们开发的游戏将是零成本的,使用的都是可以免费获得的服务。虽然由于一些许可限制,这可能不是你可以用于商业发布的东西,但是一定能介绍给你大部分概念。而且整个过程中,你还将学习如何使用一个伟大的工具Unity。另外还会向你介绍游戏开发的许多其他概念。
在《AR游戏:基于Unity 5的增强现实开发》中,我们将详细探讨创建像PokemonGo这样的基于位置的AR游戏的各个方面。基于位置的AR游戏是代价昂贵的,需要为游戏中的一切建立很多服务,从地图映射到生成怪物。然而,我们开发的游戏将是零成本的,使用的都是可以免费获得的服务。虽然由于一些许可限制,这可能不是你可以用于商业发布的东西,但是一定能介绍给你大部分概念。而且整个过程中,你还将学习如何使用一个伟大的工具Unity。另外还会向你介绍游戏开发的许多其他概念。
《AR游戏:基于Unity 5的增强现实开发》涵盖内容
第1章,准备开始,介绍了构成基于位置的AR游戏类型和我们的虚构游戏FoodyGo的概念。随后是下载所有必需软件,并使用Unity设置移动开发环境的所有步骤。
第2章,映射玩家位置,首先介绍GIS、GPS和地图映射的基本概念。然后说明如何应用这些概念,来生成实时地图并绘制玩家在游戏中的位置。
第3章,制作游戏角色,在前一章的基础构建,把我们简单的位置标识转换成一个移动的动画角色。这样,玩家在携带着移动设备走动时,可以看到他们的游戏角色在地图上四处走动。
第4章,生成猎物,解释了FoodyGo的假设背景是关于捕捉实验怪物。在本章中,我们学习了如何在玩家的周围生成怪物到地图上。
第5章,在AR中捕捉猎物,内容更加密集:通过访问设备相机引入游戏的集成AR部分;引入用于投掷球的物理;追踪玩家的划动输入;使用了生物的反应;并且使用新的游戏场景。
第6章,保存猎物,致力于开发玩家的装备包,用于保存抓获的所有Foody生物,以及其他有用的道具。在这里,我们让读者对于添加永久的存储和添加一个简单的库存场景有大致的了解。
第7章,创建AR世界,基于一个实时的数据服务,在玩家周围添加兴趣点。
第8章,与AR世界交互,让玩家与兴趣点进行互动。在我们这个简单的游戏中,玩家将能够出售他们捕获的怪物。
第9章,完成游戏,告诉读者如何完成游戏,或者更好地编写自己的基于位置的AR游戏。为了《AR游戏:基于Unity 5的增强现实开发》,我们将只开发FoodyGo这个示例游戏。
第10章,疑难解答,涵盖了一些故障排除建议和技巧,以克服这些开发障碍。与所有的软件开发练习一样,都可能会遇到问题。
阅读前的准备
为了跟着《AR游戏:基于Unity 5的增强现实开发》的内容练习,你至少需要一台能够运行Unity5.4+的计算机,以及一部可以运行Unity游戏并配备GPS的iOS或Android设备。
更多关于Unity的系统需求请参考:https://unity3d.com/unity/system-requirements
《AR游戏:基于Unity 5的增强现实开发》的目标读者
《AR游戏:基于Unity 5的增强现实开发》适用于任何有兴趣开发自己的PokemonGo,基于位置的AR游戏的读者。虽然《AR游戏:基于Unity 5的增强现实开发》假定你以前没有游戏开发技巧或Unity开发经验,但你需要对C#或类似的(C、C++、Java或JavaScript)语言有基本了解。









