微信为什么替代了qq使用C++替代UnrealScript

Unreal Engine 4 基于什么考虑把 UnrealScript 替换掉而改用 C++ 开发游戏逻辑? - 知乎156被浏览18320分享邀请回答222 条评论分享收藏感谢收起6添加评论分享收藏感谢收起查看更多回答下次自动登录
现在的位置:
& 综合 & 正文
UE4学习笔记(三): 为什么使用C++替代UnrealScript?
原文链接: /showthread.php?2574-Why-C-for-Unreal-4&p=16252&viewfull=1#post16252
之前的三代Unreal引擎中都包含了一种叫UnrealScript的脚本语言, 用它来写游戏玩法简直太方便了, 根本不用去接触复杂的C++引擎.虽然脚本十分受新手的欢迎, 但它却成为了创新和发布的障碍. 在Unreal引擎成长的过程中, 我们不断地踩到这样的坑. 所以在2011年, 我们转移到了一个纯C++的架构上. 这么做有大把的理由:
随着引擎和社区的成长, 迫于压力不得不给脚本暴露越来越多的C++特性. 本来是个很好玩的沙盒, 最后却变成了个大沙漠.
随着脚本接口的扩充, 用于函数调用和类型转换的通信中间层变得越来越复杂和低效. 像容器这样的高级数据类型的互操作变得让人抓狂, 因为脚本语言很难表示C++的模板语义.
开发者寻求高级C++特性的结果就是把他们的代码分成脚本和C++两块, 然后花费了大量时间在中间扯淡.
开发者如果想了解某个程序的行为时, 很快就会发现C++和脚本的调试工具是水火不相容的. 明明知道脚本中的一个值错了, 但却不知道是哪里的C++代码引起的, 反过来也一样.
就是这些原因, 最终把Epic逼成了纯C++. 带来的好处有很多: UE4变成了一个高度统一和易于调试的代码库, 没有了坑爹的互操作, 并且完全开放给程序员学习, 修改和扩展. 顺带不但游戏玩法代码的性能提升了, 而且C++中间件的集成也变容易了. 把UE4建设成一个统一的C++代码库, 让游戏引擎和玩法程序员写代码时避免了中介两头忽悠, 及大地提升了便利性. 这并不能代表C++就是理想的编写游戏玩法的语言了. 因为比起UnrealScript, C#和JavaScript, 它不但更复杂, 而且更危险. 不过这也从另一个角度也证明了它更强大, 正所谓”权利越大, 责任越大”. 为了在C++的复杂性和代码编写中保持平衡, 我们根本没有做什么限制. 不管你是调试整个代码库, 或是跟底层引擎系统聊天, 揍它们一顿, 还是跟操作系统或其它高级的第三方中间件谈恋爱...
&&&&推荐文章:
【上篇】【下篇】2904人阅读
游戏开发(19)
  这两个月经常在捣腾UnrealScript,因为客户端的很多游戏逻辑都是用它实现的。作为脚本语言,UnrealScript写起来自然是比C++方便很多,可调试起来却颇为麻烦。一开始几位同事给我推荐了nFringe,可不知为什么nFringe在我的开发环境中就是没法使用,而且据说免费版的nFringe只支持调试文件名为UDK.exe的可执行文件,真是让人甚为不爽。于是只好采用最古老的办法——用`log(类似C语言的printf),每次调试时在可疑的代码附近加上以自己名字为前缀的打印语句,调试好后再将这些打印语句删掉。
  后来无意间发现了,调试工作顿时方便了很多。今天还发现了UnrealScript IDE可能比nFringe要方便的一点——前者与Visual Studio配合使用,可以在同一个进程中同时调试C++和UnrealScript代码。要做到这一点并不需要安装插件。方法是利用UnrealScript
IDE的命令行启动调试功能:
用udk.exe make -debug -full命令以Debug模式编译好uc文件。在UnrealScript IDE中打开源代码项目。在Visual Studio项目的项目属性中添加调试参数-autodebug。在Visual Studio中按F5启动程序,进行调试。
  不过这种方法仍有一个缺陷,就是无法从UnrealScript直接Step Into到C++代码中,反之恐怕也不能从C++代码直接Step Into到UnrealScript中。如果有一条UnrealScript语句调用了C++函数,那么必须先在UnrealScript IDE中在调用语句处设一个断点,然后自己在Visual Studio中找到这个C++函数,并且在Visual Studio中再设一个断点,这样才能模拟出Step Into的效果。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:224196次
积分:3117
积分:3117
排名:第11021名
原创:90篇
评论:162条
(2)(2)(1)(3)(2)(1)(1)(2)(1)(1)(2)(1)(4)(5)(2)(2)(1)(3)(2)(1)(1)(1)(4)(3)(3)(2)(1)(1)(3)(4)(3)(1)(10)(3)(4)(2)(4)(7)拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(38fcb1bd-ua98).
重新安装浏览器,或使用别的浏览器2906人阅读
游戏开发(19)
  这两个月经常在捣腾UnrealScript,因为客户端的很多游戏逻辑都是用它实现的。作为脚本语言,UnrealScript写起来自然是比C++方便很多,可调试起来却颇为麻烦。一开始几位同事给我推荐了nFringe,可不知为什么nFringe在我的开发环境中就是没法使用,而且据说免费版的nFringe只支持调试文件名为UDK.exe的可执行文件,真是让人甚为不爽。于是只好采用最古老的办法——用`log(类似C语言的printf),每次调试时在可疑的代码附近加上以自己名字为前缀的打印语句,调试好后再将这些打印语句删掉。
  后来无意间发现了,调试工作顿时方便了很多。今天还发现了UnrealScript IDE可能比nFringe要方便的一点——前者与Visual Studio配合使用,可以在同一个进程中同时调试C++和UnrealScript代码。要做到这一点并不需要安装插件。方法是利用UnrealScript
IDE的命令行启动调试功能:
用udk.exe make -debug -full命令以Debug模式编译好uc文件。在UnrealScript IDE中打开源代码项目。在Visual Studio项目的项目属性中添加调试参数-autodebug。在Visual Studio中按F5启动程序,进行调试。
  不过这种方法仍有一个缺陷,就是无法从UnrealScript直接Step Into到C++代码中,反之恐怕也不能从C++代码直接Step Into到UnrealScript中。如果有一条UnrealScript语句调用了C++函数,那么必须先在UnrealScript IDE中在调用语句处设一个断点,然后自己在Visual Studio中找到这个C++函数,并且在Visual Studio中再设一个断点,这样才能模拟出Step Into的效果。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:224198次
积分:3117
积分:3117
排名:第11021名
原创:90篇
评论:162条
(2)(2)(1)(3)(2)(1)(1)(2)(1)(1)(2)(1)(4)(5)(2)(2)(1)(3)(2)(1)(1)(1)(4)(3)(3)(2)(1)(1)(3)(4)(3)(1)(10)(3)(4)(2)(4)(7)

我要回帖

更多关于 微信为什么替代了qq 的文章

 

随机推荐