unity3d游戏开发要思考的问题

代码驱动带来的技术题

游戏碎片化。U3D 引擎有个很有力的特色,就是实时编译运行。这意味着无论在任何时候,只要按下运行图标,当前的场景就会进入可执行状态。这导致了游戏在开发的过程中经常陷入一种不应当的自信状态。同时也导致了游戏内容长期处在碎片状态下,并低估游戏功能整合时可能遇到的困难。

资源管理是 U3D 引擎的一个难点。U3D 的资源管理系统因为跨平台的缘故和操作系统的文件系统是脱钩的,需要熟练的掌握 Resources 目录和 Assetbundle 的技术才能灵活的控制游戏中的资源使用情况。但这一工作时常会被简单的理解为将资源放置在游戏工程目录下,剩下的交给引擎自己搞定 ……

需要自己做数据系统。我们如今国内研发的作品,绝大多数是数据密集型(策略、经营、卡牌、KRPG),这和 Temple Run 这样的游戏类型有些不同。数据密集型的游戏需要采用数据驱动的形式来进行游戏的设计和开发,但是 U3D 提供的框架是一个代码驱动型的结构(对于原型开发来说极为有力)很多时候会让研发团队陷入泥潭 —— 看起来功能开发出来了(只要在U3D的对象检查器里调调参数就能工作),却迟迟无法进入大规模制作阶段(策划拿着数据表格却无法应用到游戏里)。U3D 引擎本身也没有提供任何在数据方面的支持,数据表要么需要自行处理,要么需要自己寻找嵌入式的数据库解决方案。

网络连接部分其实也是类似。U3D 本身集成的网络模块并不是为大规模 C/S 结构的游戏所设计,常需要自行开发一套客户端和服务器结构。当然也可以求助中间件来解决 …… 但是容易让人迷惑的地方在于,U3D 既可以使用 .net 的网络机制像端游一样工作,也退一步可以用加密的 www 机制,当一个简单的页游来处理。如何抉择是个难题,贸然贪多求全往往换来遥遥无期。

测试 U3D 开发的游戏亦一个很麻烦的过程。原因也是那个几乎不会崩溃,随时可运行的场景/逻辑混成编辑器 —— 它会让开发团队误算自己当前的游戏完成度,以及需要什么样的测试。

尖端技术带来的麻烦事

高精尖的动态光照和复杂材质系统。U3D 比起其他的移动平台或者网页游戏开发工具而言,往往最打动人的就是其无与伦比的画面渲染效果。但是在光鲜的官方演示背后,仿佛总有看不到的壁垒阻碍着其他开发者的步伐。实际上驾驭 U3D 所需要的能力是超乎一般想像的。U3D 的渲染架构的确够强大,完成 Unreal 甚至 CryEngine 级别的画面渲染质量都是可能的,但是它并没有包装这些系统而是将灵活性交给了开发者。我们的程序员是否已经控制住了渲染管线的复杂度?我们的技术美术是否可以指导我们的美术完成充分发挥 U3D 能力?美术制作人员是否有具有胜任所谓“次世代”精度要求的游戏内容制作?这些东西属于小团队吗?

全局光照烘培。这是一个非常非常非常实用的 U3D 功能。理应所有的 U3D 团队都灵活使用。但是想要用好就有了另外一番难度 —— 美术和场景制作人员的配合,而谁来负责就比较难说了。另外美术必须用非常精准的尺寸来制作场景中的物件,否则 U3D 将无法正确的处理全局 UV。

工具链带来的纷纷扰扰

GUI 系统的各种理论。所有人都在吐槽 U3D 自带的 GUI 系统太慢 —— 问题是真的有证据吗?一方面很多人说我做测试的时候做了一大堆的控件,的确很慢。另外一方面大家也会发觉 GUI 系统会带来一些不必要的渲染请求(Draw Call)。于是大家都在拼了命的做两件事情,一个是减少渲染请求,一个是想尽一切办法的避开 GUI。但其实情况没那么严重,无论是挑选替代中间件如 NGUI 还是直接使用 U3D 的 UI 系统都不会巨大的影响 —— 除了不当使用之外极少见到 GUI 成为性能焦点的时候。不过无论是 NGUI 还是 U3D 内置 UI 都没有很好的 UI 工具 —— 要么过于程序员导向,要么过于偏向布局而不方便增加代码功能。内部开发一些扩展工具或者工作流程都很有必要。

版本控制的难题。Asset Server 还是 SVN 其实多多稍稍都有不适应 U3D 的情况。但是更关键的地方在于整理好文件的内部结构以及经常备份。恰当的使用 U3D 的命令行模式可以实现 U3D 工程的自动编译发布。

扩展 U3D 本身功能的能力。因为 U3D 较为完整的功能而忽视对 U3D 本身的功能拓展是一种常见状态,随时保持专人不断的优化 U3D 本身的功能是非常重要的,譬如各种各样的批量化操作等等。但是这有个前提,扩展工具需要充分理解工具,U3D 相对来说功能过于强大,以至于很多团队中的成员会害怕学习,而将 U3D 作为少数团队成员或专属于程序员的工具 —— 这就很成问题了。

需要前瞻性的判断能力

每一个,每一个国内开发 U3D 游戏的团队都在抱怨 U3D 的中文字体支持问题等等。可是实际上真正用前瞻性的角度在使用 U3D 引擎的团队并不多 —— 以今天此时此刻为例,U3D 4.0 已经可以在任何平台上使用动态的字体,支持 Unicode 编码 —— 中文不在话下。从 U3D 3.5 迁移到 4.0 几乎不用对项目做任何的修改,而如果说之前并不知道 4.0 会支持动态字体的话,那么为什么不多去官方论坛关注一下每个版本的开发进度情况呢?每一个在 2013 才会发布的游戏都不应该担心字体问题才对嘛 ……

保持对每个版本 U3D 更新内容和未来 U3D 功能的关注可以大量减少重新发明轮子的问题,也能在遇到一些困境时保持更好的心态。直接邮件开发者也会是个很好的选择,请一定要多骚扰他们!一般提前3个月到6个月就能获知将来版本可能更新的内容的。

1  “Code-Driven”
State Management
Assets Management
Data Management
Networking
Testing

2 CuttingEdge Techs
Dynamic Lighting & Complex Materials (Textures)
Lightmapping
Nav mesh
Mecanim
DX11

3 Toolchain
GUI
VersionContorl

4 Vision

更多精彩请点击http://www.gopedu.com/article

时间: 2024-11-05 21:56:17

unity3d游戏开发要思考的问题的相关文章

[Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果

大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3D游戏开发之从<魂斗罗>游戏说起(上)--目标追踪这篇文章后再写一篇<Unity3D游戏开发之从<魂斗罗>游戏说起(下)>,只是眼下博主的项目进度有些缓慢,所以想等项目稳定下来以后再和大家分享. 作为大家等待博主更新博客的回报,我们今天来说一说Unity3D中的游戏场景异步

Unity3D游戏开发从零单排(六) - 人物运动及攻击连击

提要 今天要实现的是一个简单人物控制器.包括用w,a,s,d来控制人物上下左右跑动,鼠标左击发出连招,都是基于老的lagacy的动画.虽然unity3d自带有charactorcontroller,但是并不是很好用,所以人物控制相关的全部自己来实现.先上效果图: 场景搭建 首先下载这个package,里面包含了人物的动作还有地面的模型.将人物和地面都拖进场景中.这里的模型默认的动画模式是lagacy,不用修改.模型有点偏小,改变模型的scale值为10.最好不要改源文件的scale的scale

Unity3D游戏开发之网络游戏服务器架构设计培训

下面我们开始今天的Unity3D游戏开发技能培训. 我们专业培养"游戏主程",挑战20W年薪,初期学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好的主程 入手 假如,我现在接手一个新项目,我的身份还是主程序.在下属人员一一到位之前,在和制作人以及主策划充分沟通后,我需要先独自思考以下问题: 1.服务器跑在什么样的操作系统环境下?2.采用哪几种语言开发?主要是什么?3.服

Unity3D游戏开发初探—2.初步了解3D模型基础

一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被.机械等等,比如一个大楼的3D模型图.3D模型也包括玩具和电脑模型领域. 互联网的形态一直以来都是2D模式的,但是随着3D技术的不断进步,在未来的时间里,将会有越来越多的互联网应用以3D的方式呈现给用户,包括网络视讯.电子阅读.网络游戏.虚拟社区.电子商务.远程教育等等.甚至对于旅游业,3D互联网也能

unity3D游戏开发实战原创视频讲座系列10之《保卫战:异形入侵》游戏开发第一季

讲解目录 <保卫战:异形入侵>游戏开发    1 第一讲   游戏演示和资源的介绍    1 第二讲  "异形"怪物的实现    1 第三讲  "异形"怪物生命值的体现    9 第四讲  "异形"怪物死后处理    12 第五讲  玩家的制作    15 第六讲  玩家的行走控制(键盘)    16 第七讲  武器的切换(鼠标)     16 第八讲  摄像头的变化(鼠标)    19 第九讲  子弹预制体和特效的制作    20

Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D

游戏动画基础 Animation组件 Animation组件是对于老的动画系统来说的. 老的动画形同对应的动画就是clip,每个运动都是一段单独的动画,使用Play()或CrossFade(),直接播放动画 或淡入淡出播放动画. animation.Play("name"); animation.CrossFade("name"); 下面的是它的几个属性 Animation:默认的动画片段: Aniamtions:包含的动画片段: Play Automaticall

【Unity3D游戏开发】—— 导入网上下载的.unitypackage包

这两天遇到了这样一个问题,网上下载的别人导出的.unitypackage包.如果双击打开,则会出现"Failed importing package "的错误. 为此很头疼,查了一些资料,需要将.unitypackage包复制到Editor\Standard Packages文件夹下, 然后ctrl+9打开 Asset Store, 点击下载然后找到刚刚复制的包名,点击Import导入即可. 还有一种方法类似,将.unitypackage包复制到Editor\Standard Pack

Unity3D游戏开发之详解 Animation类和Animator类

Unity3D游戏开发之详解 Animation类和Animator类 Animation类 animation组件用于播放动画.可以指定动画剪辑到动画组件并从脚本控制动画播放.在Unity的动画系统基于权重并且支持动画融合,叠加动画,动画混合,标签和完全控制动画播放的各个方面. 如果想播放一个简单的动画,可以使用Animation.Play:如果想在动画之间交叉淡入,可以使用Animation.CrossFade:如果想改变动画模式(循环,一次,乒乓),可以改变动画导入设置里面的动画帧的Wra

Unity3D游戏开发之当游戏开发遇上Excel

各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://blog.csdn.net/qinyuanpei. 今天我们的话题是Excel,作为常用的办公软件的Excel相信大家都不陌生啦.可是如果我们认为Excel只是办公软件的话,那么这就不只是天真而是Out了.事实上Excel和游戏开发有着密切的联系,不知道大家还记不记得那款利用Excel开发出来的三国杀,这可能是Excel第一次以游戏开发的身份出现在大家面前吧.我们知道在游戏开发领域有一种工作叫做策划,就像在软件开发领