3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 侠客前传 | 刺客信条 论坛

注册 登录

QQ登录

只需一步,快速开始

楼主: dracozq
打印 上一主题 下一主题

[原创] 假如姚用虚幻3,做出来还是一坨屎,不信进来看原因~

  [复制链接]

72

主题

6136

帖子

7584

积分

游戏精英

Rank: 8Rank: 8

贡献度
1075
金元
32836
积分
7584
精华
0
注册时间
2009-6-29
61#
发表于 2015-7-11 19:53 | 只看该作者
mayafei 发表于 2015-7-11 14:59
胡乱加载资源这事确实不假,贴个开启console后的截图,读取第一个迷宫的存档时就加载了扁络桓(这明明是 ...

看到大神在秀技术,一头雾水的只好摇旗呐喊。不过BUG这么好找,看样子仙六是完全没有优化意识了。
回复 支持 反对

使用道具 举报

2

主题

69

帖子

279

积分

高级玩家

Rank: 4

贡献度
2
金元
3307
积分
279
精华
0
注册时间
2013-3-3
62#
发表于 2015-7-11 20:41 | 只看该作者
mayafei 发表于 2015-7-11 14:59
胡乱加载资源这事确实不假,贴个开启console后的截图,读取第一个迷宫的存档时就加载了扁络桓(这明明是 ...

我说为什么仙剑6的读条速度堪比模拟人生……原来也有这种加载一大堆东西的爱好。
回复 支持 反对

使用道具 举报

16

主题

1344

帖子

1354

积分

游戏狂人

Rank: 6Rank: 6

贡献度
19
金元
12778
积分
1354
精华
0
注册时间
2010-8-15
63#
发表于 2015-7-12 01:51 | 只看该作者
本帖最后由 JP001 于 2015-7-12 01:53 编辑
dracozq 发表于 2015-7-11 14:37
哦..这样理解,C#也确实是U3D“原生”语言,哈哈~
刚才@mayafei 仁兄提醒我U3D是纯C#写的... ...

c#是语言,c++是语言,仅从语言的层面看,无所谓好坏,因为它们都还需要经过编译。只不过C++更接近原生代码,通常native比IL代码更快,但并不绝对!还是要看是什么代码、干了什么事,具体问题具体分析。

unity不是纯C#引擎,底层仍然是C++写的。只不过用户只能以c#或js或boo进行开发,引擎通过mono把它们编译为程序集(managed dll),最后从本地代码调用,因此不管你用c#还是javascript都一样。这种做法保证了使用者用同一套代码就能跨所有平台,各平台间差异的部分已经由Unity团队解决。缺点是不可能在每个平台上达到最高效率,但这并不是unity一家所存在的问题,大家都一样。


需要注意的是,上述问题仅限于CPU的方面,在GPU的渲染效率上Unity并不弱。其实总体上看,Unity的效率已经算是非常高了,只是它缺少自带的各种牛B特技,比如全局照明、屏幕空间光线跟踪等等(Unity5已有改观)——不是它不能实现,而是多数使用者没这么高超的数学基础和专业技能去理解和实践一些复杂而不高深的理论研究成果而已。


简而言之,如果游戏需要CPU执行大量计算,比如庞大的动态的沙盒开放世界、复杂的游戏规则/AI等等,那么Unity的效率就会显得比较低,而其中的原因主要是它作为一个通用引擎,无法针对具体某一个游戏的特性做底层优化,其它引擎或多或少也会有同样的问题。若是大厂私有的知名引擎,自然可以针对具体项目做相应的调整或订制,否则的话,Unity有Unity的缺点,虚幻有虚幻的缺点,不可能有一套解决方案能满足一切需求。


于是,说回到仙剑6,很明显,它不需要CPU做什么惊人的计算,这复古的画质也不会有太多GPU的负担,那么为什么它能陨落泰坦呢?因为北软员工全体上下各个部门都是业余的水准。为什么我们要骂他们?因为他们非但没有自知之明,反而相当的自以为是,还两百万套,我去,一群蠢蛋是在侮辱玩家的智商吗,老子笑傻了……
回复 支持 反对

使用道具 举报

1

主题

566

帖子

518

积分

高级玩家

Rank: 4

贡献度
32
金元
3900
积分
518
精华
0
注册时间
2009-3-18
64#
发表于 2015-7-12 11:44 | 只看该作者
突然感觉对中国游戏前景没有好感咯
回复 支持 反对

使用道具 举报

9

主题

511

帖子

592

积分

高级玩家

Rank: 4

贡献度
42
金元
4236
积分
592
精华
0
注册时间
2008-8-29
65#
发表于 2015-7-12 13:42 | 只看该作者
虽然说了很多看不懂· 但仍然学到了很多东西....感谢楼主和各位技术大神
回复 支持 反对

使用道具 举报

3

主题

143

帖子

129

积分

中级玩家

Rank: 3Rank: 3

贡献度
11
金元
1445
积分
129
精华
0
注册时间
2010-4-8
66#
发表于 2015-7-12 14:33 | 只看该作者
感谢楼主和各位技术大神科普
回复 支持 反对

使用道具 举报

72

主题

1547

帖子

1427

积分

游戏狂人

Rank: 6Rank: 6

贡献度
24
金元
13311
积分
1427
精华
0
注册时间
2011-8-18
67#
发表于 2015-7-12 14:45 | 只看该作者
说白了就是,抠门,制作人员要么新手,要么技术不行,没什么有经验有技术的员工

别说优化了,能把场景相对完整的摆放出来就够费力的了

回复 支持 反对

使用道具 举报

73

主题

1585

帖子

1809

积分

游戏狂人

( ̄_, ̄ )

Rank: 6Rank: 6

贡献度
5
金元
17893
积分
1809
精华
0
注册时间
2013-8-29
68#
发表于 2015-7-12 14:47 | 只看该作者
ilovevc_82 发表于 2015-7-11 13:58
楼主明白人,这和游戏引擎关系不大,好的技术,好的态度,U3D照样出好作品。关键是这两样他都没有 ...

比如I社的新作PLAY CLUB就是U3D
回复 支持 反对

使用道具 举报

23

主题

629

帖子

600

积分

超级玩家

Rank: 5Rank: 5

贡献度
30
金元
4802
积分
600
精华
0
注册时间
2009-3-21
69#
发表于 2015-7-12 14:54 | 只看该作者
U3D有纹理加载的,可是他连cocos2d-x都已经提供了的纹理加载功能都不用,每次读图都是重新绘制整个模型,地图,这样还敢说优化个鬼。
任何一本简单的游戏开发书都有提到过这个问题的吧,还有每次进入都把东西加载到内存,有病呢。
我怀疑为什么之前厚脸皮的说游戏不行怪系统:建议玩家升级X64位才能体验游戏。他就是内存不足吧
回复 支持 反对

使用道具 举报

4

主题

535

帖子

439

积分

高级玩家

Rank: 4

贡献度
3
金元
4266
积分
439
精华
0
注册时间
2011-8-8
70#
发表于 2015-7-12 15:05 | 只看该作者
是啊,这不是引擎的问题,很多人都说U3D是个开发手机游戏的引擎,但是很多手机游戏做的都要比你这个好很多,这就不是引擎的罪过了。
回复 支持 反对

使用道具 举报

12

主题

180

帖子

2363

积分

版主

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

贡献度
488
金元
3310
积分
2363
精华
8
注册时间
2009-4-26

3DMer

71#
发表于 2015-7-12 15:34 来自手机 | 只看该作者
nmhkyiuj 发表于 2015-7-12 14:54
U3D有纹理加载的,可是他连cocos2d-x都已经提供了的纹理加载功能都不用,每次读图都是重新绘制整个模型,地 ...

我记得cocos2dx才是真正的手机用的吧,这里说的win下的unity3d跟这个貌似没什么关系吧
回复 支持 反对

使用道具 举报

23

主题

629

帖子

600

积分

超级玩家

Rank: 5Rank: 5

贡献度
30
金元
4802
积分
600
精华
0
注册时间
2009-3-21
72#
发表于 2015-7-12 15:48 | 只看该作者
本帖最后由 nmhkyiuj 于 2015-7-12 15:56 编辑
mayafei 发表于 2015-7-12 15:34
我记得cocos2dx才是真正的手机用的吧,这里说的win下的unity3d跟这个貌似没什么关系吧 ...

我是说连手机游戏引擎都加了的优化纹理贴图的功能情怀6都没有做
相当于城市中做了5个房子,模型一样,用了贴图有2种,这样实际内存预载入用的是2个贴图和1个模型,而这个我怀疑是5个模型+5个贴图占掉了内存
如果真的是这样这已经不是新手的问题……是连说明书都没有看
回复 支持 反对

使用道具 举报

12

主题

180

帖子

2363

积分

版主

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

贡献度
488
金元
3310
积分
2363
精华
8
注册时间
2009-4-26

3DMer

73#
发表于 2015-7-12 15:58 来自手机 | 只看该作者
nmhkyiuj 发表于 2015-7-12 15:48
我是说连手机游戏引擎都加了的优化纹理贴图的功能情怀6都没有做


这个就不清楚了,我也没玩过unity3d,这次内存耗用大与乱加载资源是有关系的,可以看下我上面贴的开启console的截图,按常理讲应该是需要什么就加载什么,但为什么要一次性加载那些资源,如果不是u3d本身问题的话,那就是程序员没有半点优化意识
回复 支持 反对

使用道具 举报

1

主题

134

帖子

92

积分

初级玩家

Rank: 2

贡献度
3
金元
1400
积分
92
精华
0
注册时间
2011-7-8
74#
发表于 2015-7-12 16:11 | 只看该作者
吃屎屎
回复 支持 反对

使用道具 举报

46

主题

962

帖子

1166

积分

游戏狂人

Rank: 6Rank: 6

贡献度
50
金元
9663
积分
1166
精华
0
注册时间
2009-9-28
75#
发表于 2015-7-12 16:14 | 只看该作者
他们要有血狮团队的那种毅力,我看3A不远!
回复 支持 反对

使用道具 举报

46

主题

962

帖子

1166

积分

游戏狂人

Rank: 6Rank: 6

贡献度
50
金元
9663
积分
1166
精华
0
注册时间
2009-9-28
76#
发表于 2015-7-12 16:17 | 只看该作者
加载地图根本没优化!好像是加载所有地图。。。并不是当前地图!程序员滚粗!
回复 支持 反对

使用道具 举报

12

主题

180

帖子

2363

积分

版主

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

贡献度
488
金元
3310
积分
2363
精华
8
注册时间
2009-4-26

3DMer

77#
发表于 2015-7-12 16:17 | 只看该作者
JP001 发表于 2015-7-12 01:51
c#是语言,c++是语言,仅从语言的层面看,无所谓好坏,因为它们都还需要经过编译。只不过C++更接近原生代 ...

说真心的我不太看好IL代码的执行效率,C++编译出来的直接是机器码可以交由CPU处理,优化大牛甚至还可以用汇编在寄存器上完成进一步优化
但是IL代码还要经过二次编译才会真正的交由CPU处理,就是这个二次编译我就不太看好了,一两个函数执行起来看不出来差距很正常,但是一大堆函数同时执行我相信差距还是很明显的(具体没做过实验)

另外,我觉得unity3d最大的优势不是win跟手机跨平台,而是ios跟android跨平台,一套源码就可以忽悠两个平台的手机用户买买买了,势必也是手游厂商的最爱了吧

至于仙剑6需不需要大量的CPU计算,其实你去看看那个代码你就懂了(这里也不太方便说,毕竟是反编译),从某些核心函数就看的出来,程序员完全没有优化意识
回复 支持 反对

使用道具 举报

23

主题

629

帖子

600

积分

超级玩家

Rank: 5Rank: 5

贡献度
30
金元
4802
积分
600
精华
0
注册时间
2009-3-21
78#
发表于 2015-7-12 16:17 | 只看该作者
mayafei 发表于 2015-7-12 15:58
这个就不清楚了,我也没玩过unity3d,这次内存耗用大与乱加载资源是有关系的,可以看下我上面贴的开启con ...

之前看的了。我自己做2D游戏demo玩的时候刚开始喜欢用一个函数在游戏载入界面的时候把所有东西载入到一起,这样不会出现调用问题。
后来写了一个根据下一个需要载入的场景控制预载入管理函数,并随时销毁上一个场景。
再后来写了保留前一个场景,当前场景,和运行时预先绘制下一个场景,提高载入速度(2D来说也没啥必要)
然而情怀6真的看不懂……实习生做?

回复 支持 反对

使用道具 举报

118

主题

5556

帖子

4657

积分

游戏精英

Rank: 8Rank: 8

贡献度
131
金元
41329
积分
4657
精华
0
注册时间
2005-3-8
79#
发表于 2015-7-12 16:22 | 只看该作者
支持技术帖
回复 支持 反对

使用道具 举报

351

主题

3547

帖子

4364

积分

游戏精英

Rank: 8Rank: 8

贡献度
305
金元
31441
积分
4364
精华
0
注册时间
2012-12-16
80#
发表于 2015-7-12 16:25 | 只看该作者
赞!说到底还是人的问题。
回复 支持 反对

使用道具 举报

16

主题

1344

帖子

1354

积分

游戏狂人

Rank: 6Rank: 6

贡献度
19
金元
12778
积分
1354
精华
0
注册时间
2010-8-15
81#
发表于 2015-7-12 18:48 | 只看该作者
本帖最后由 JP001 于 2015-7-12 18:51 编辑
mayafei 发表于 2015-7-12 16:17
说真心的我不太看好IL代码的执行效率,C++编译出来的直接是机器码可以交由CPU处理,优化大牛甚至还可以用 ...

你的观点并不完全正确。C++一般会编译为汇编(Object code),这并不能保证它必然拥有最高的运行效率,因为其生成的汇编代码不一定经过最佳的优化,也无法预测运行时的实际情况和它运行的平台,编译后的兼容性和稳定性才是第一要务,效率次之。

当然首先,上述一些提法就不准确,C++是语言,同一种语言也可以编译出各种五花八门的东西,否则你置C++/CLI于何处,不过在这里讨论就不必那么严谨了。

尽管CLR的JIT编译器如它的名字一样,是动态编译,但不能想当然的认为他是“编译两次”,所以他就“一定更慢”。即便是“一大堆函数同时执行”的时候,也不能(或者说“反而更不能”)妄下结论。因为,“动态编译”意味着它能实现动态优化、甚至是主动优化,包括针对硬件和软件两方面的优化。比如动态编译器知道当前的系统/CPU是32位还是64位(如果是64位就用更多的寄存器),同样也知道机器内存多大、CPU有几个核等等,它生成的代码完全针对当前硬件环境。再比如传统的编译器不可能准确预知程序运行时每个函数的调用频率(例如游戏中战场上有多少敌人、是什么敌人、执行什么AI、一段时间内总共执行多少次…),而动态编译器就可以几乎实时的检测当前程序状态,根据需要重新编译部分代码,使得频繁调用的程序分支(Hot path)达到最佳的优化及资源配置。另外,不要忘了在.NET中还可以执行Pre-JIT编译,即在程序启动前就把整个程序集全部编译为native code并缓存起来,运行时可不必再次编译。C#程序在运行时也已经是原生代码了,不要将其与脚本语言和动态语言混淆。


综上,如果只是简单的判断,C++编译静态库通常会更快、内存占用率更低,这几乎是一定的,而且往往是程序越简单,它的优势越明显,因为对于简单的、纯粹执行计算的程序,JIT编译器的优势完全来不及发挥。要说具体应用情况的话,则很难一概而论,两者各有长短,更像是互补的关系,事实上现在很多软件都是这样操作的,你可以形象的理解为:C#搭架子、C++干重活、大量重复的劳动交给GPU去并行(形象表述,不求严谨:)。




至于虚幻和Unity的比较,我找到一个比较中肯的评论
http://www.quora.com/What-are-the-main-pros-and-cons-of-Unity-3D-and-Unreal-Engine
还是应当根据游戏的实际需要来选择






回复 支持 反对

使用道具 举报

12

主题

180

帖子

2363

积分

版主

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

贡献度
488
金元
3310
积分
2363
精华
8
注册时间
2009-4-26

3DMer

82#
发表于 2015-7-13 00:03 | 只看该作者
JP001 发表于 2015-7-12 18:48
你的观点并不完全正确。C++一般会编译为汇编(Object code),这并不能保证它必然拥有最高的运行效率,因 ...

其实我一直把IL代码视为win98年代vb的pcode,就是vm执行,但是本质不同在于IL最终还是会编译成机器码

其实我是业余玩反汇编的,所以对这些比较敏感,就拿一个最简单的sin函数来说,用c++再加上内联汇编就可以把速度提高很多,其核心关键的是计算基于eax寄存器,而c#怕是达不到这种程度

最近帮小幸姐搞修改器也是搞得头大,代码也不像5前那样固定好的,代码是即时编译,需要什么代码就生成什么代码,给人感觉就是u3d(或者说c#)执行一段代码要:读取文件数据(或内存读取)->分配内存->编译放入代码->执行,而对于已编译为native code的程序,就是执行没有其他过程了;所以我说的后者效率高就是基于这种想法

另外就是有个事,你说的.net现在可以用Pre-JIT能直接编译成native code?我不知道我这vs2010行不行,如果可以的话烦请告知一下怎么做(不用壳的前提下),我想做几个研究~如果是用户那边设置Pre-JIT就算了~
回复 支持 反对

使用道具 举报

21

主题

1175

帖子

1810

积分

游戏狂人

Rank: 6Rank: 6

贡献度
207
金元
9716
积分
1810
精华
1
注册时间
2005-7-17

G胖の微笑

83#
发表于 2015-7-13 00:22 | 只看该作者
ilovevc_82 发表于 2015-7-11 13:58
楼主明白人,这和游戏引擎关系不大,好的技术,好的态度,U3D照样出好作品。关键是这两样他都没有 ...

说到点上了!
回复 支持 反对

使用道具 举报

0

主题

358

帖子

238

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
2981
积分
238
精华
0
注册时间
2011-6-10
84#
发表于 2015-7-13 01:41 | 只看该作者
一方面是技术问题,另一方面是经验问题,还有一个方面是情怀问题(雾)
回复 支持 反对

使用道具 举报

16

主题

1344

帖子

1354

积分

游戏狂人

Rank: 6Rank: 6

贡献度
19
金元
12778
积分
1354
精华
0
注册时间
2010-8-15
85#
发表于 2015-7-13 04:31 | 只看该作者
本帖最后由 JP001 于 2015-7-13 04:32 编辑
mayafei 发表于 2015-7-13 00:03
其实我一直把IL代码视为win98年代vb的pcode,就是vm执行,但是本质不同在于IL最终还是会编译成机器码

其 ...

如果你追求极高的performance、希望得到更多更底层的控制,那么C/C++是最好的选择(我说了,这几乎是一定的)。虽然JIT编译器理论上也能达到同样、甚至更高的效率,但仅仅是理论上。C#可以执行非托管代码、可以调用静态类、当然也可以内联汇编,只不过通常来说——“你都涉及到如此底层了、都放弃JIT的优势了,干嘛不直接用C/C++?”JIT在运行时也会自动完成内联、优化的工作,如将虚函数替换为静态调用等但你不能控制。

况且c#并不是慢到令人发指,实际也并非你感觉的“每执行一段代码就要经过怎样怎样”。我找了个benchmark

这是09年的老图了,那时mono还比较屎。如果数字太多的话,直接看右边的结论吧,看看.net比c++慢多少、比PHP/Ruby快多少。当然不同的测试在不同情况下会产生各种结论,.net/mono/PHP/Ruby也都在进步,因此仅供参考。(.NET Framework 4.6提供了新的64位JIT编辑器,据说效能又得到显著提升)


更重要的是,在实践中,对于一个复杂的项目,并非每个模块都需要追求最高的运行效率——根据需要选择工具,仅此而已。用C#在开发上意味着更灵活、更方便、更多选择,而不是单纯的效率最优。C#(包括Java)不是为了取代C/C++而设计。一旦接受了,Roslyn的大门敞开了,WPF的大门敞开了,W什么F的大门都敞开了……好消息是,它们和C++都不矛盾。

对于游戏来说,最大的瓶颈在于画面渲染,但那是GPU的工作,不管是Unity还是其它什么实用的游戏引擎,都不是直接用C#或C++去绘图,而是DX/OpenGL,Unity底层也是C++调用图形API,所以它在运行效率上的劣势更多集中在游戏逻辑和游戏资源管理的方面。对于仙剑6这种简单的游戏,你随便找个正常的团队用Unity去开发,都不会做得这么烂。总之,我的意思是,千万不要因为这个极品的存在,仅凭感觉,就得到错误结论,至少仙6的问题绝对不是C#/Unity比C++/虚幻慢这么简单。

最后关于pre-jit,你可以搜索Ngen,但我不认为这是一种“优化的手段”,它只是一种运行方式。C++可以靠前期配置来做相对固定的优化的编译,C#则没有这种控制,更应该从自己写的代码入手。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

13

主题

2309

帖子

2132

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
27
金元
20242
积分
2132
精华
0
注册时间
2008-11-12
86#
发表于 2015-7-13 09:15 | 只看该作者
说真的,仙剑6那么烂,和引擎、诚意什么的没啥关系
就是研发人员水平差
我去做也不会这么卡
回复 支持 反对

使用道具 举报

5

主题

1887

帖子

2742

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
91
金元
23776
积分
2742
精华
0
注册时间
2009-8-15
87#
发表于 2015-7-13 10:57 | 只看该作者
他们确实没那个水平
回复 支持 反对

使用道具 举报

14

主题

2664

帖子

2130

积分

游戏达人

为毛我的双眼总饱含着泪水!!?

Rank: 7Rank: 7Rank: 7

贡献度
11
金元
20863
积分
2130
精华
0
注册时间
2011-8-7
QQ
88#
发表于 2015-7-13 11:14 | 只看该作者
OwenLJN 发表于 2015-7-11 13:17
其实嘛 还可以从另外一个角度得出楼主的结论 先不论虚幻3 就说现在的U3D 市面上有很多U3D做出来的游戏画面 ...

不是不认真,是认真也不会,玩不转
回复 支持 反对

使用道具 举报

190

主题

1307

帖子

1333

积分

游戏狂人

Rank: 6Rank: 6

贡献度
86
金元
9893
积分
1333
精华
0
注册时间
2009-8-19
89#
发表于 2015-7-13 11:22 | 只看该作者
独立制作人的游戏都比这个好玩多了 还光工资就发了200w 谁买这个不是买游戏 是给人家发施舍
回复 支持 反对

使用道具 举报

14

主题

1124

帖子

1183

积分

游戏狂人

Rank: 6Rank: 6

贡献度
15
金元
11230
积分
1183
精华
0
注册时间
2008-11-8
QQ
90#
发表于 2015-7-13 11:35 | 只看该作者
情怀制作组的水平,仅限于买个蒸馒头的机器,只会基本的开关,把面(各类素材,美工的输出品,音频之类的)放进去,开--》熟了,然后就拿到世面上卖了..怎么用这个机器做出来好吃的馒头,他根本不关心,他所谓的“努力”只是:面粉买的好一点..实际上,大家都知道,这面粉也是烂大街的货色,东拼西凑而已~ 这话不错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|咖绿茵|求知网|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2024-6-9 18:22 , Processed in 0.162143 second(s), 45 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表