做一个2.5d单机的单机游戏最好用什么游戏引擎?

游戏蛮牛 ( 原名:unity3d教程手册 ) 网站上有100000多unity3d程序员, 1000多集公开课~~ 无数资源文章素材~~&br&&a href=&& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
游戏蛮牛 ( 原名:unity3d教程手册 ) 网站上有100000多unity3d程序员, 1000多集公开课~~ 无数资源文章素材~~
3DCG应用到漫画里有两大问题&br&1 画风。到现在反真实渲染技术还是很不成熟,大部分外行人一眼就能看出这不是人画的。而最麻烦的是漫画的画风往往是个卖点,CG很难模拟,如果画家有意识地改变自己的画风去迎合CG,搞不好卖点就没了。&br&&br&2 效率。任凯 说的对,其实对于会画画的人来说,在纸上画才是最简单的,电脑只能辅助。真的完全依赖电脑,对大部分画家都是更麻烦了。&br&真正省事的只有3D场景,但这个优点其实在日本漫画中很难体现出来,因为对于背景之类的东西画家都有自己的方式省略。而且漫画中除了主人公的家里,其他场景重复使用的概率实在是太低,有那功夫造3D建模还不如拿张照片描下线。&br&3D背景要大幅应用,需要有一个成熟的商用的3D素材库,能让漫画家使用,而且方便修改,这个市场实在不大,现在的技术条件下难以发展。&br&&br&&br&我记得最早3D软件绘制整个漫画是1997年日本某个漫画赏,大便君的故事。&br&我是在《MAGIC地带》上看到的。&br&&br&而CG辅助绘画80年代就有了,都筑和彦,他出名的地方是用的绘图软件是自己开发的,比PHOTOSHOP强大得多,当然那时候3D技术还在黎明期。&br&赤之角笛中的一张,这张图的年龄比知乎多数人的年龄大。&br&&img data-rawheight=&1210& data-rawwidth=&912& src=&/f5ce3ed058c_b.jpg& class=&origin_image zh-lightbox-thumb& width=&912& data-original=&/f5ce3ed058c_r.jpg&&&br&麻宫骑亚很早也开始用CG辅助作画,但是对3D构件的使用只限于抽象场景和特效。我98年买过一个他的教程。&br&魔法阵都市&br&&img data-rawheight=&334& data-rawwidth=&500& src=&/c97b4bc073496ccfaa0f475_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/c97b4bc073496ccfaa0f475_r.jpg&&&br&另一个对CG比较敏感的人是士郎正宗,他在90年代就大规模使用3D素材到漫画里,不光是场景,还包括部分角色,说实话效果非常糟糕。也正是因为士郎正宗的失败,3D漫画这事现在没人提了。&br&攻壳2 MANMACHINE INTERFACE,大部分人没看过这部,其实这才是攻克的续集&br&&img data-rawheight=&800& data-rawwidth=&534& src=&/20a6e02d29c03aeacf03d5476a90cea8_b.jpg& class=&origin_image zh-lightbox-thumb& width=&534& data-original=&/20a6e02d29c03aeacf03d5476a90cea8_r.jpg&&&br&&br&目前日本流行的是利用3D辅助绘画场景。&br&最熟练的应该是滨田义一,《破鞋神二世》中大部分场景都是他自己建模后反真实渲染输出的。他的教程NICONICO上很多。&br&感谢楼下提醒,他的3D模型只是辅助作画,很多部分还是手绘的。&br&&br&&img data-rawheight=&1201& data-rawwidth=&800& src=&/1f9ce84fd1e906a89fb06aa69b2fe2a2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/1f9ce84fd1e906a89fb06aa69b2fe2a2_r.jpg&&
3DCG应用到漫画里有两大问题1 画风。到现在反真实渲染技术还是很不成熟,大部分外行人一眼就能看出这不是人画的。而最麻烦的是漫画的画风往往是个卖点,CG很难模拟,如果画家有意识地改变自己的画风去迎合CG,搞不好卖点就没了。2 效率。任凯 说的对,其实…
我目前的角色也不太方便说什么。所以我只描述事实。&br&&br&在2013年底的时候,很多大佬预言2014年是3D的天下, cocos死定了;这个状况呢,我在2012年底就经历过了。实际情况是,现在已经7月份了,7月份之前最赚钱的几个游戏,刀塔传奇、放开那三国、雷霆战机、全民飞机大战,全部是基于cocos2d-x的2D游戏。&br&&br&我觉得造成这种结果的原因:&br&1. 端游全部3D化,导致大家误判,而实际上2D游戏玩家和CP都被赶到页游上面了。但本质上,端游和页游仍然是共享一个平台:桌面电脑。&br&2. 手机上尚未诞生页游形态。也就是说ipa和apk需要承载PC时代的端游+手游+新进入的初级玩家。&br&3. 手机游戏玩家比页游玩家更休闲,甚至大量非核心向游戏玩家比如你我老婆、父母、孩子都加入手机游戏玩家阵营。&br&&br&一般情况下我不在知乎回答问题,今天例外。除了我说的废话之外,本周发布的cocos2d-x v3.2已经支持3D模型加载和3D骨骼动画。我认为2D和2.5D游戏还将持续1年到2年的时间。
我目前的角色也不太方便说什么。所以我只描述事实。在2013年底的时候,很多大佬预言2014年是3D的天下, cocos死定了;这个状况呢,我在2012年底就经历过了。实际情况是,现在已经7月份了,7月份之前最赚钱的几个游戏,刀塔传奇、放开那三国、雷霆战机、全民…
MMO寻路的各种实现方式:&br&&ol&&li&服务端执行寻路,客户端纯粹表现。&/li&&li&客户端执行寻路,服务端验证结果(可能抽样验证)。&/li&&li&客户端和服务端都执行寻路,并保证同步。&br&&/li&&/ol&如果NPC需要寻路,服务端就必须有寻路功能。&br&Unity本身的设计不适合用于MMO服务端,而一般公司也很难取得源码再实现相同的寻路规则。&br&如果服务端就必须有寻路功能或验证功能,建议不要使用Unity本身的寻路功能。可以选择自行开发或使用一些中间件如&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PathEngine&i class=&icon-external&&&/i&&/a&、&a href=&/navigation& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Autodesk Navigation&i class=&icon-external&&&/i&&/a&。
MMO寻路的各种实现方式:服务端执行寻路,客户端纯粹表现。客户端执行寻路,服务端验证结果(可能抽样验证)。客户端和服务端都执行寻路,并保证同步。如果NPC需要寻路,服务端就必须有寻路功能。Unity本身的设计不适合用于MMO服务端,而一般公司也很难取得…
还得看NVidia良心免费彩色pdf 《GPU GEMS IIIIII》。这三本书十分精彩,我在当初还没免费的时候就买过了,一本一百多。
还得看NVidia良心免费彩色pdf 《GPU GEMS IIIIII》。这三本书十分精彩,我在当初还没免费的时候就买过了,一本一百多。
&a href=&/miloyip/archive//3029852.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&面试题:检测点是否在扇形之内&i class=&icon-external&&&/i&&/a&
&p&第三人称比第一人称视角要好点,上帝视角比第三人称好点,场景开阔点比狭窄的山洞房间要好点,帧数不稳定容易晕,摄像机频繁和地形碰撞容易晕&/p&
第三人称比第一人称视角要好点,上帝视角比第三人称好点,场景开阔点比狭窄的山洞房间要好点,帧数不稳定容易晕,摄像机频繁和地形碰撞容易晕
&p&还有一种比较常用的方法是 &strong&细分正二十面体&/strong& 。&/p&&p&先构造标准的正二十面体,然后迭代对每个面片进行细分,最后生成接近均匀的三角网格球体。过程如图(图片来自网络):&/p&&img src=&/be3aaf99bc29fdd_b.jpg& data-rawheight=&295& data-rawwidth=&833& class=&origin_image zh-lightbox-thumb& width=&833& data-original=&/be3aaf99bc29fdd_r.jpg&&&img src=&/30dcca106_b.jpg& data-rawheight=&478& data-rawwidth=&512& class=&origin_image zh-lightbox-thumb& width=&512& data-original=&/30dcca106_r.jpg&&
还有一种比较常用的方法是 细分正二十面体 。先构造标准的正二十面体,然后迭代对每个面片进行细分,最后生成接近均匀的三角网格球体。过程如图(图片来自网络):
作为一个现在实际在这么做的独立团队开发者(我们一共就2人,然后在做一个手机网游)来说几句&br&首先如果 你有自己觉得不错的创意 先不要动手也没关系&br&找几个人 爱玩游戏的,不爱玩游戏的讨论一下,看他们怎么看这个游戏&br&在被大家评价之后(也许都是负面的)你依然觉得你的创意很好&br&&br&动手弄个游戏主体的demo 这个视觉什么的随便凑一下就好了,因为游戏的核心玩法(特别是创意游戏)不会被视觉削弱太多,参考最近很火的 a dark room就告诉我们 视觉其实可以弱化到这个程度~~&br&不过其实大部分传统类型游戏还是视觉王道的...真的....&br&然后多找几个人玩玩,找你觉得游戏的目标受众,看看大家的反馈&br&听完反馈之后,你依然觉得自己游戏很好,那就继续下一步.&br&&br&因为你只有一个人,所以你得自己来做很多代码之外的事情.&br&你不太可能给美术一个文本,然后期望他返回你想要的视觉需求.&br&你得先自己先梳理一下整个游戏过程&br&然后有几个页面,每个页面你得把界面分布自己画好线框图,自己把游戏交互确定好.确保流畅.&br&然后你把交互图给到视觉,以及你希望的视觉风格,找一些你需要风格的例子给视觉.另外请务必提升下自己的审美,多看看优秀的视觉案例,之前认识不少程序员gg总可以觉得一些在我看来巨丑的界面,画面还不错. 不过视觉总体还是仁者见仁,自己喜欢就好, 主要是找个水平还不错的视觉一般偏差不会大.
想要自己独特的视觉风格? 额,建议还是不要瞎尝试了,毕竟你是程序员,能做自己独特风格的视觉其实还真的很难找.&br&&br&然后就是你自己来实现了咯,自己策划自己开发,所以自己总不需要和自己沟通吧,自己一开始就要想明白打算做的游戏,想清楚流程,做下文字记录还是比较好的,因为自己也可能忘记了. 和美术的沟通主要是说清楚自己想要就好了.&br&&br&游戏自己觉得做完了之后,请多测试,而且如果就一个人,建议先ios平台,问题相对少不少,而去iOS火不了,Android就别浪费时间了,换下个idea吧. 这个我可能说的稍微武断了一点...iOS先做最大的优势一个是适配容易做,bug比较少. 另外iOS市场集中程度高很多,其他第三方市场还是不如 App Store. 对于没有推广资源的独立开发者还是相对公平的地方.&br&基本上绝大部分游戏一个平台能火,另外一个也能.一般情况,肯定还是有例外~&br&&br&再给个建议, 因为是个人开发者,推广资源基本为零,如果你做的游戏不是很惊艳很独特能让人眼前一亮,游戏自推广一定绞尽脑汁做好他,没办法自推广的话死得很快的.&br&&br&最后,其实如果是你第一款游戏,建议先去山寨热门游戏吧(也可以加入自己小创新),先练练手,把ASO做好,并且上得快的话还是能赚点的.&br&还有不要轻易尝试太大的游戏,建议最好开发时间能控制在3个月之内....&br&&br&好了先说到这里,以后想到什么再补充~~~
作为一个现在实际在这么做的独立团队开发者(我们一共就2人,然后在做一个手机网游)来说几句首先如果 你有自己觉得不错的创意 先不要动手也没关系找几个人 爱玩游戏的,不爱玩游戏的讨论一下,看他们怎么看这个游戏在被大家评价之后(也许都是负面的)你依然觉得…
顏色相加是指光的疊加,物理上是光的強度相加。例如多個光源照射到一個表面後反射至攝像機,就可以把各個光照的反射結果相加。而題目中的例子是Phong或Blinn材質的反射模型,其意義可以算是一種擬合,把材質的反射分解成漫反射和鏡面反射,然後把兩種反射光的結果相加。&br&&br&而題目中的顏色相乘,其實並不是數學中常見的矢量積(学术上叫&a href=&http://en.wikipedia.org/wiki/Hadamard_product_(matrices)& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hadamard product (matrices)&i class=&icon-external&&&/i&&/a&,在《RTR》中使用&img src=&/equation?tex=%5Cmathbf%7Ba%7D+%5Cotimes+%5Cmathbf%7Bb%7D& alt=&\mathbf{a} \otimes \mathbf{b}& eeimg=&1&&写法),而應該理解為顏色的非等比縮放。例如,光通過有色玻璃時,玻璃吸收某百分比的紅、藍、綠,就可以把光的紅藍綠強度分別乘以對應的百分比。漫反射也可以理解成材質吸收了某百分比的入射光後向各方向反射。 &br&&br&如果考慮HDR的情況,光的顏色可以大於1,但吸收率應仍是[0, 1]。這樣大概更不會混淆兩種運算。
顏色相加是指光的疊加,物理上是光的強度相加。例如多個光源照射到一個表面後反射至攝像機,就可以把各個光照的反射結果相加。而題目中的例子是Phong或Blinn材質的反射模型,其意義可以算是一種擬合,把材質的反射分解成漫反射和鏡面反射,然後把兩種反射光…
我的代码大概遵循这么几条原则吧(想到哪儿写哪儿不分先后):&br&1.逻辑脚本基于场景划分&br&2.抽离静态配置数据、全局管理数据以及对局临时数据的管理&br&3.使用单例模式创建不依赖于场景的游戏对象及其上的全局管理器&br&4.避免使用GameObject.Find以及SendMessage,声明对象引用以显示标明脚本之间的依赖性,活用delegate解耦合&br&5.多用组合少用继承(Component的架构真的是太棒了)&br&6.数据行为与逻辑表现分离,即V与MC的分离,换句话说多写class少写MonoBehavior。(通常初期在快速开发原型时会把一个功能全部实现写在一个继承于MonoBehavior的脚本中,尽早进行重构,抽离出负责数据管理与控制的类,这对于后期功能的增加与修改时很有必要的)&br&7.善用Coroutine(Coroutine真是太方便了)&br&8.尽量能够使用自定义的配置文件辅助Prefab上脚本参数的配置。&br&&br&总的来说记得知乎上看到谁说过cocos2d是程序员友好的,而Unity3D是设计师友好的,写了这么多年Unity3D代码我真是觉得我的思考方式越来越像策划而不是程序员了,使用Unity3D开发,写代码应该只占了大概50%的工作,另外50%都在编辑器上,如果你用过相信你懂得。
我的代码大概遵循这么几条原则吧(想到哪儿写哪儿不分先后):1.逻辑脚本基于场景划分2.抽离静态配置数据、全局管理数据以及对局临时数据的管理3.使用单例模式创建不依赖于场景的游戏对象及其上的全局管理器4.避免使用GameObject.Find以及SendMessage,声明…
&p&以下我以“大型3D、大型2D、中小型2D和微型2D”来划分,尽可能减少”纠结“感。&/p&&p&因为引擎的选择一向做不到“以偏概全”,他们各有所长,应选择自己适合的。&/p&&p&尤其是差异化这么明显的两个引擎。&br&&br&&b&一、&/b&&b&3D&/b&&b&游戏(包含&/b&&b&2.5D&/b&&b&)&/b&&/p&&p&只能:&b&Unity3D&/b&&br&作品:职业棒球、星际陆战队等&br&分布:欧美国家用Unity3D的较多。商业化引擎中,3D游戏占比最高&br&原因:&/p&&br&&p&
就像 &a href=&/people/b65ec66e94eb5c& class=&internal&&@朱云&/a&所说。&b&Cocos2d-x&/b&&b&目前还不支持&/b&&b&3D&/b&&b&。&/b&相比而言,U3D就是你唯一的选择了。&br&&br&&br&&b&二、大型&/b&&b&2D&/b&&b&游戏(可以指安装包上百兆的)&/b&&br&推荐:&b&Unity3D&/b&&br&作品:捣蛋猪、冰雪奇缘、天天飞车、绝代双骄等&br&分布:欧美国家用Unity3D的较多,国内用Cocos2D-X的多&br&原因:&br&&br&&/p&&b&1&/b&&b&、游戏这东西,就是要跟&/b&&b&“&/b&&b&直觉&/b&&b&”&/b&&b&打交道的&/b&&br&&br&&p&我的想法有点极端,我感觉在游戏世界里,代码似乎更像是“妥协”的产物。&br&&br&如果能做到“所见即所玩”,那真的是一个非常惬意的事。到时候,或许一个8岁小孩就能独立自主的开发一款游戏。&/p&&br&&p&而这一点,Unity3D的王者地位,当之无愧!&br&&br&&/p&&b&2&/b&&b&、&/b&&b&Unity3D&/b&&b&提供了超赞的设计工具,让你感觉像是在用&/b&&b&3DMax&/b&&b&和&/b&&b&Flash&/b&&b&来做游戏&br&&/b&&br&&b&3&/b&&b&、适合大型团队,美工、动画更容易上手&/b&&br&&br&U3D可以让美工、动画、码农在同一个平台上各司其职。这点从目前来看,Cocos2D-X望尘莫及。&p&&br&&br&&b&三、中小型&/b&&b&2D&/b&&b&游戏(百兆以内的)&/b&&br&推荐:&b&Cocos2D-X&/b&&br&作品:捕鱼达人、我叫MT、2048等&br&分布:东亚游戏多出自Cocos2D-X,尤其中国。但大多为小型游戏&br&原因:&br&&br&&/p&&b&1&/b&&b&、&/b&&b&Unity3D&/b&&b&比&/b&&b&Cocos2D-X&/b&&b&的&/b&&b&APK&/b&&b&包要大了&u&近十倍&/u&&/b&&br&&br&&p&仅以Android手机为例,同样的一个&b&2D&/b&&b&版&/b&&b&HelloWorld&/b&,两者的安装包大小:&br&Unity3D:约为&b&9.27M&/b&&br&Cocos2D-x:约为&b&1.67M&/b&&br&&br&解开包后发现,里面除了两个一共占据近12M的SO库(libmono.so和libunity.so),还有一票的DLL文件。其中System.dll、Assembly-CSharp.dll和mscorlib.dll这三个核心文件就占了5M。虽然它们压缩比约为50%,但仅这些文件就占了这么多。心疼啊。&/p&&br&&p&&b&而这,在&/b&&b&“&/b&&b&寸土寸金&/b&&b&”&/b&&b&的中小型游戏面前是多么可怕的数字。&/b&&br&&br&&/p&&b&2&/b&&b&、&/b&&b&Cocos2D-X&/b&&b&比&/b&&b&Unity3D&/b&&b&快很多&/b&&br&&br&&p&即使不用测试工具,也可以轻易的发现这一点。&/p&&br&&p&主要因为Unity3D用了Mono架构,它移植自微软的.Net。每次启动都会加载Mono框架和Unity3D引擎,再加载.Net Assembly(一堆DLL文件),这可比Cocos2D-x这种纯C++(包括Lua和JS)实现要慢很多。&br&&br&&/p&&b&3&/b&&b&、独立开发者更喜欢&/b&&b&“&/b&&b&码&/b&&b&”&/b&&b&游戏&/b&&br&&br&&p&独立开发者大多是“技术达人”(不然怎么开发游戏)。U3D会让他们有“无所适从”感,从而影响了对U3D的灵活运用。对这些人而言,这是赤裸裸的时间成本。在游戏开发中,这点尤为重要。&b&还是&/b&&b&Cocos2D-X&/b&&b&让他们更感到&/b&&b&“&/b&&b&亲切&/b&&b&”,更有&/b&&b&成就感&/b&&b&。&/b&&/p&&br&&p&也许你会问:“你怎么知道?”&/p&&p&因为我就是搞技术的。&/p&&br&&b&4&/b&&b&、中国游戏多出自&/b&&b&Cocos2D-X&/b&&br&&br&&p&Cocos2D-X是正宗国产货,又是优秀的开源项目,国外用户群也不少。&/p&&p&也正是因为这个原因,C2D天生就对中国用户很“偏爱”。比如社区,我在上面问了两个问题,基本上当天问当天答,而且非常热心。从这一点我就对C2D产生了不错的好感。&/p&&br&&b&5、Unity3D要收费&/b&&br&&br&&p&对大型2D游戏团队来说或许还不算什么。&/p&&br&&p&初步算一下,Pro要1500$,手游怎么至少也得兼容iOS和Android吧,各自1500$,再加个Team套装,加一块儿,5000$,两万多银子。&/p&&br&&p&&b&Cocos2D-X免费、开源。&/b&遇到问题可以研究源码或向社区求救。&/p&&p&&br&&br&&b&四、微型游戏(指争取安装包在&/b&&b&1M&/b&&b&以内的)&/b&&br&推荐:&b&AndEngine、Cocos2D-iPhone&/b&&br&作品:Flappy Bird、小球快跑、五子棋等&br&分布:不需要跨平台的超小游戏用的多。&br&原因:&/p&&br&&b&如果只想在一个平台上开发游戏,无疑上述两种是最好的选择&/b&&br&&br&&p&其中AndEngine开发出来的游戏最小才400多KB,大名鼎鼎的Flappy Bird就是用它做出来的。&br&&br&另外,iPhone的Cocos2D划到这里似乎不太合适,但仔细想想,现在有更成熟的Cocos2d-x方案,Cocos2D划到微型游戏一列,相信是早晚的事(个人看法,轻拍)。&br&&br&&br&&b&五、总结&/b&&/p&&br&&p&1、Unity3D:如果你需要开发&b&大型游戏&/b&,或需要开发3D游戏的,请选这个。&/p&&br&&p&2、Cocos2D-x:如果你开发的是&b&中小型游戏&/b&,对安装包大小比较在意的,请选这个。&/p&&br&&p&3、Andengine、Cocos2D-iPhone:如果你只为开发&b&单平台游戏&/b&,又非常在意速度和安装包大小,请选这个。&/p&&p&&br&最后。俗话说:&b&没有最好的,只有最适合自己的。&/b&我想这句话同样适用于开发游戏。&/p&&p&共勉!&/p&&br&&p&&b&转载请注明出处。谢谢!&/b&&/p&
以下我以“大型3D、大型2D、中小型2D和微型2D”来划分,尽可能减少”纠结“感。因为引擎的选择一向做不到“以偏概全”,他们各有所长,应选择自己适合的。尤其是差异化这么明显的两个引擎。一、3D游戏(包含2.5D)只能:Unity3D作品:职业棒球、星际陆战队…
我总结一下吧,我最近问了很多关于Unity的问题,有许多大牛为我解惑,以下是这些人的知乎档案和精彩回答。各位可以一一关注了,以便以后邀请他们回答问题。&br&&br&&ul&&li&&a href=&/people/zhou-hua-78& class=&internal&&周华&/a& : &a href=&/question//answer/& class=&internal&&在Unity中StartCoroutine/yield return这个模式到底是怎么应用的?其中的原理是什么?&/a&&br&&/li&&li&&a href=&/people/iSamurai& class=&internal&&伍一峰&/a& : &a href=&/question//answer/& class=&internal&&如何在Unity中实现MVC模式?&/a&&br&&/li&&li&&a href=&/people/waigo& class=&internal&&梁伟国&/a& : &a href=&/question//answer/& class=&internal&&Unity3D如何有效地组织代码?&/a&&/li&&li&&a href=&/people/kang-yu-ying& class=&internal&&康与缨&/a& : &a href=&/question//answer/& class=&internal&&GDC 2014 之后,游戏引擎市场会有怎样的变化?&/a&&br&&/li&&li&&a href=&/people/songjian& class=&internal&&宋健&/a& : &a href=&/question//answer/& class=&internal&&计算机专业大学生如果想毕业后进入游戏行业,在大学期间应该怎样准备?&/a&&br&&/li&&li&&a href=&/people/deng-kai-20& class=&internal&&邓凯&/a& : &a href=&/question//answer/& class=&internal&&游戏引擎 Unity 的入门易精通难体现在哪?为什么?&/a&&br&&/li&&li&&a href=&/people/kuang-toby& class=&internal&&kUANG tOBY&/a& : &a href=&/question//answer/& class=&internal&&Unity3d客户端开发,要深入学习,更需要先从哪方面入手?&/a&&/li&&/ul&
我总结一下吧,我最近问了很多关于Unity的问题,有许多大牛为我解惑,以下是这些人的知乎档案和精彩回答。各位可以一一关注了,以便以后邀请他们回答问题。 : …
不应该说“采用了Unity技术”,而应该说,“采用了之前团队并不熟悉的技术,低估了学习适应成本,低估了开发风险,低估了3D游戏对客户端性能门槛要求”,Unity本身很好,也极其适合小团队开发,更是有神一般的跨平台性能。如果有熟悉Unity的客户端程序,客户端开发效率可以提升很多。PS,补充一句,Unity的网络真是烂到家了,如果要做网游,客户端网络层必须自己重新写。
不应该说“采用了Unity技术”,而应该说,“采用了之前团队并不熟悉的技术,低估了学习适应成本,低估了开发风险,低估了3D游戏对客户端性能门槛要求”,Unity本身很好,也极其适合小团队开发,更是有神一般的跨平台性能。如果有熟悉Unity的客户端程序,客…
我在还不会重载,继承,多态,抽象,接口,委托什么的时候, 就只会用 struct + point (换成 C# 就是 class + reference ). 然后吧, 我就只会这招, 所以就一招鲜地闯江湖, 差不多就是笑傲江湖里那个令狐冲的玩法. 然后我发现这样居然可以解决大部分问题, 而且很幸运, 入行3年里公司丢给我解决的问题都没有重复过. 所以比别人知道的少, 却比别人写的代码多很多, 解决的实际问题也多很多, 然后养成了独立思考和随手用代码写问题解决方法的习惯. &br&&br&回顾了一下, 我大概用一招鲜的方法写了: 一套 Vim 的插件, 一个波浪模拟的特效, Check Point 存储, Motion Builder 的插件工具, 一些植物自然生长的模拟代码, 各种 Procedural Texture (Perlin Noise, Celluar, ...), Camera 追踪, 一堆 gl/directx 的函数 wrap, 一些 C 的 Serialize 方法, 一些 shader 特效, 一些测试 gpu profile 的代码... 反正是又傻又天真的时期, 但是年轻就是资本, 你就是比别人有时间去瞎玩编程. &br&&br&说白了, 你不知道那些东西完全不要紧, 一招鲜够用了, 拿起问题就用一招鲜的方法去写, 写多了代码你自然会去思考有没有更好的方法, 然后去看看理论, 不懂就算了, 悟性不够何必强求, 悟性到了无师自通.&br&&br&============== 附录: 且看令狐冲怎么玩 :D ===============&br&&br&练了一会,顺手使出一剑,竟是本门剑法的“有凤来仪”。他一呆之下,摇头苦笑,自言自语:“错了!”跟着又练,过不多时,顺手一剑,又是“有凤来仪”,不禁发恼,寻思:“我只因本门剑法练得纯熟,在心中已印得根深蒂固,使剑时稍一滑溜,便将练熟了的本门剑招夹了进去,却不是独孤剑法了。”突然间心念一闪,心道:“太师叔叫我使剑时须当心无所滞,顺其自然,那么使本门剑法,有何不可?甚至便将衡山、泰山诸派剑法、魔教十长老的武功夹在其中,又有何不可?倘若硬要划分,某种剑法可使,某种剑法不可使,那便是有所拘泥了。”此后便即任意发招,倘若顺手,便将本门剑法、以及石壁上种种招数掺杂其中,顿觉乐趣无穷。但五岳剑派的剑法固然各不相同,魔教十长老更似出自六七个不同门派,要将这许多不同路子的武学融为一体,几乎绝不可能。他练了良久,始终无法融合,忽想:“融不成一起,那又如何?又何必强求?”当下再也不去分辨是甚么招式,一经想到,便随心所欲的混入独孤九剑之中,但使来使去,总是那一招“有凤来仪”使得最多。又使一阵,随手一剑,又是一招“有凤来仪”,心念一动:“要是小师妹见到我将这招‘有凤来仪’如此使法,不知会说甚么?”
我在还不会重载,继承,多态,抽象,接口,委托什么的时候, 就只会用 struct + point (换成 C# 就是 class + reference ). 然后吧, 我就只会这招, 所以就一招鲜地闯江湖, 差不多就是笑傲江湖里那个令狐冲的玩法. 然后我发现这样居然可以解决大部分问题, 而…
Unity 3D是我用过的3D引擎中最好的一个。功能强大,效果逼真,运行流畅。&br&&br&它提供了一个整合的编辑器、跨平台发布、地形编辑、着色器,脚本,网络,物理,版本控制等特性。可以开发桌面版、WEB版、手机版的游戏。据说将来还会支持发布到Flash,是一个非常理想的三维游戏开发平台。 &br&&br&最近一直在用Unity3D进行开发,多少研究的又深入了一些,所以再补充一些吧。我觉得Unity3D的厉害主要体现在以下几个方面:&br&&br&1. 专业级的效果,傻瓜级的操作。连我这样完全不懂3D的人,也可以轻松制作出很好的3D应用。&br&&br&2. 同时支持JavaScript 和 C#,做开发的分为两类,做前台的和做后台的,前者一定会js,后者一定会JAVA或者C#,Java程序员看C#,完全没问题,所以任何人都能够轻松的使用这个工具做开发。&br&&br&3. 支持多平台,谁都想一次开发到处显示,以前是JAVA后来是FLASH,现在是UNITY了,同样的程序:桌面,浏览器,iOS,Android,Xbox,Wii,现在还添加了Flash导出,几乎无所不能。&br&&br&4. 做2D和做3D一样强大,最近的一个项目里同时有2D和3D部分,在以前2D部分是用FLASH完成的,因为现在要放到IPAD上,所以在FLASH和UNITY中间做了一下抉择,最终选择了Unity,Unity很好的完成了2D部分的所有功能,可我觉得用Flash可能没法实现Unity的3D效果。
Unity 3D是我用过的3D引擎中最好的一个。功能强大,效果逼真,运行流畅。它提供了一个整合的编辑器、跨平台发布、地形编辑、着色器,脚本,网络,物理,版本控制等特性。可以开发桌面版、WEB版、手机版的游戏。据说将来还会支持发布到Flash,是一个非常理想…
本人游戏公司美术一枚,说下个人看法&br&&strong&Unity3d个人觉得网页游戏,手机游戏,或房地产用的比较多,对于各个平台支持都很好。去年又支持flash,网页运行再也不用安装浏览器插件。这块做的不错。开发人员起点比较低。基本的资料文档都很丰富了。缺点就是画面不给力。灯光、画面各方面在这三个引擎里都是最差的,并且对于美术人员来说,做开发不是很好上手。很简单的一个材质。都要去写shader。。&/strong&&br&&strong&UDK,商用版叫虚幻3,业界早就名声在外的引擎,个人觉得首先,商业方面,虚幻3在PC游戏市场占有方面,绝对是老大。我们可以看到很多虚幻3网游,单机游戏,XBOX游戏,因为首先,虚幻引擎的画面一直就是招牌。从战争机器系列,虚幻竞技场,还有IOS上的无尽之剑,就能看出。当然好的画面,80% 的功劳是美术制作人员的.但就从技术方面,个人觉得虚幻3一直是走在前端的,本人曾经在苏州EPIC工作。当时用的是虚幻2,后来去9游,用虚幻3,所以,对虚幻引擎开发也有一定了解。在美术开发方面,虚幻3的材质编辑界面对一般的美术人员来说,很友好,节点式的编辑,很直观,至于kismet脚本,更加简化了不会程序的同学对脚本的使用。UDK的免费,也直接推动了UDK的知名度,不过我觉得UDK只能支持PC和IOS,略显不足,去年官方出了个FLASH的DEMO。不过一直没有免费出来,也算是个小遗憾吧。&/strong&&br&&strong&CE3,从出世以来,就是打的画面牌,和EPIC的战争机器一样,用孤岛危机系列当样板工程,给自己的引擎打广告,不过话说回来。第一代的孤岛危机,画面是不错,但基本没几个显卡能跑动。后来的二代,做了优化。并且推出了主机版本,性能上好了很多。CE3引擎的特点,就是大量的动态光的使用。对于室外大场景有很好的渲染效果。以前在9游的时候,有一个项目组用的是CE2,由于美术不给力,画面看上去也相当差。&/strong&&br&&strong&最后。题主如果是美术出身,我推荐UDK,如果是程序出身,我推荐Unity3d,如果是煤老板,富二代出身,我推荐CE3&/strong&
本人游戏公司美术一枚,说下个人看法Unity3d个人觉得网页游戏,手机游戏,或房地产用的比较多,对于各个平台支持都很好。去年又支持flash,网页运行再也不用安装浏览器插件。这块做的不错。开发人员起点比较低。基本的资料文档都很丰富了。缺点就是画面不给…
说到Coroutine,我们必须提到两个更远的东西。在操作系统(os)级别,有进程(process)和线程(thread)两个(仅从我们常见的讲)实际的“东西”(不说概念是因为这两个家伙的确不仅仅是概念,而是实际存在的,os的代码管理的资源)。这两个东西都是用来模拟“并行”的,写操作系统的程序员通过用一定的策略给不同的进程和线程分配CPU计算资源,来让用户“以为”几个不同的事情在“同时”进行“。在单CPU上,是os代码强制把一个进程或者线程挂起,换成另外一个来计算,所以,实际上是串行的,只是“概念上的并行”。在现在的多核的cpu上,线程可能是“真正并行的”。&br&&br&Coroutine,翻译成”协程“,初始碰到的人马上就会跟上面两个概念联系起来。直接先说区别,Coroutine是编译器级的,Process和Thread是操作系统级的。Coroutine的实现,通常是对某个语言做相应的提议,然后通过后成编译器标准,然后编译器厂商来实现该机制。Process和Thread看起来也在语言层次,但是内生原理却是操作系统先有这个东西,然后通过一定的API暴露给用户使用,两者在这里有不同。Process和Thread是os通过调度算法,保存当前的上下文,然后从上次暂停的地方再次开始计算,重新开始的地方不可预期,每次CPU计算的指令数量和代码跑过的CPU时间是相关的,跑到os分配的cpu时间到达后就会被os强制挂起。Coroutine是编译器的魔术,通过插入相关的代码使得代码段能够实现分段式的执行,重新开始的地方是yield关键字指定的,一次一定会跑到一个yield对应的地方。&br&&br&对于Coroutine,下面是一个实现的function,里面的片段被yield关键字分成2段:&br&&br&&div class=&highlight&&&pre&&code class=&language-csharp&&&span class=&n&&IEnumerator&/span& &span class=&nf&&YieldSomeStuff&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&k&&yield&/span& &span class=&s&&&hello&&/span&&span class=&p&&;&/span&
&span class=&n&&Console&/span&&span class=&p&&.&/span&&span class=&n&&WriteLine&/span&&span class=&p&&(&/span&&span class=&s&&&foo!&&/span&&span class=&p&&);&/span&
&span class=&k&&yield&/span& &span class=&s&&&world&&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&推进的代码(模拟,非实际):&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&IEnumerator e = YieldSomeStuff();
while(e.MoveNext())
Console.WriteLine(e.Current);
&/code&&/pre&&/div&&br&以此来推进整个代码片段的分段执行。更详细的分析如 &a data-hash=&310b328f96& href=&/people/310b328f96& class=&member_mention& data-editable=&true& data-title=&@邓凯& data-tip=&p$b$310b328f96&&@邓凯&/a&的文章里提到。这里只要说明的是,对于Coroutine,是编译器帮助做了很多的事情,来让代码不是一次性的跑到底,而不是操作系统强制的挂起。代码每次跑多少,是&b&可预期的&/b&。但是,Process和Thread,在这个层面上完全不同,这两个东西是操作系统管理的。在unity中,StartCoroutine这个方法是个推进器。StartCoroutine会发起类似上面的while循环。因为是while循环,因此,Coroutine本身其实不是“异步的”。&br&&br&Coroutine在整个Unity系统的位置,下面一张图可以说明:&br&&br&&img src=&/3f7f23b7ca2cd8d92e6f97_b.jpg& data-rawwidth=&798& data-rawheight=&561& class=&origin_image zh-lightbox-thumb& width=&798& data-original=&/3f7f23b7ca2cd8d92e6f97_r.jpg&&注:图片来自&a href=&/coroutines/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Coroutines++&i class=&icon-external&&&/i&&/a&&br&&br&Unity官方文档里也写到&Normal Coroutine在Update之后&的字眼,如下内容第一行:&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&Normal coroutine updates are run after the Update function returns. A coroutine is a function that can suspend its execution (yield) until the given YieldInstruction finishes. Different uses of Coroutines:
The coroutine will continue after all Update functions have been called on the next frame.
yield WaitForSeconds(2); Continue after a specified time delay, after all Update functions have been called for the frame
yield WaitForFixedUpdate(); Continue after all FixedUpdate has been called on all scripts
yield WWW Continue after a WWW download has completed.
yield StartCoroutine(MyFunc); Chains the coroutine, and will wait for the MyFunc coroutine to complete first.
&/code&&/pre&&/div&&br&由上面的图和文字可以大致猜测,.net虚拟机在每一帧循环中,会依次进入每个编译器预定义好的入口。对于Coroutine,编译器需要产生一些代码,在每次的大循环中,Unity的Update()返回后,保证是yield后的代码被正确调用,这样就形成了我们看到的一个function能分段执行的机制。
说到Coroutine,我们必须提到两个更远的东西。在操作系统(os)级别,有进程(process)和线程(thread)两个(仅从我们常见的讲)实际的“东西”(不说概念是因为这两个家伙的确不仅仅是概念,而是实际存在的,os的代码管理的资源)。这两个东西都是用来模…
根据我遇到的情况,我可以说不重要。使用Unity3d,大多数时候是用C#(js不用也没有问题),只有在需要写插件的时候(很少的情况),会需要用到C、C++、Object-C、Java这些语言。我带过的项目中,很多的程序员都只是用C#,根本就不会接触到C和C++。&br&&br&上面的话题是针对做游戏来说。如果是需要研究3D引擎,那么C++就非常重要,不需要其他的理由,因为大多数书籍、网络资料,在说明一个引擎(无论是实时渲染还是离线渲染还是物理引擎或者AI引擎)知识的时候,都会用C++来写代码,这个是事实上的标准。C语言的话,还是在嵌入式的设备上,以及操作系统的开发上用的多,其他领域应该算是很少用到的。&br&&br&就这三种语言:C语言是过程式语言的代表,C++是在游戏领域用的非常广泛的对象式语言,C#是对象式的、类java语言(简单说跟C++不同就是不需要显式释放内存)。三种语言我都接触和长期使用,从长期发展的角度来讲,根据自己的不同阶段,逐渐了解各个语言,主要是能理解其中不同的设计理念和组建自己的工具盒,不怕工具多,在什么场合用什么工具很重要。&br&&br&另:&br&&br&在我接触的公司中,买Unity3d source code的公司没有见过,我相信这个主要是官方的这一点说明(见下面英文中的黑体部分,摘自官方的FAQ):&br&&br&We license Unity source code on a per-case and per-title basis via special arrangements made by our business development team. As this can be quite expensive, we do not generally license source code to smaller operations, educational institutions, &b&nor to companies in countries which do not have adequate legal intellectual property protection.&/b&&br&&br&&br&也就是Unity不会向对公司所在地是知识产权保护薄弱的国家的客户提供源代码级的licence。
根据我遇到的情况,我可以说不重要。使用Unity3d,大多数时候是用C#(js不用也没有问题),只有在需要写插件的时候(很少的情况),会需要用到C、C++、Object-C、Java这些语言。我带过的项目中,很多的程序员都只是用C#,根本就不会接触到C和C++。上面的话…
MSDN看得差不多是差多少?&br&我08年算过,如果天天看MSDN,80岁大概能看完一半。&br&&br&没学过数据结构算法就去学啊,好歹学完查找排序二叉树再来问。&br&&br&建议自己做个小游戏看看,哪怕照着现有游戏模仿一个,真的动手你就知道自己差在哪了,也就知道MSDN到底有多大了。
MSDN看得差不多是差多少?我08年算过,如果天天看MSDN,80岁大概能看完一半。没学过数据结构算法就去学啊,好歹学完查找排序二叉树再来问。建议自己做个小游戏看看,哪怕照着现有游戏模仿一个,真的动手你就知道自己差在哪了,也就知道MSDN到底有多大了。

我要回帖

更多关于 2.5d引擎 的文章

 

随机推荐