王者荣耀使用什么编程语言开发的?

锐锐CC


王者荣耀的客户端是用C#开发、核心后端服务是用C++开发的。

曾经传出了腾讯为王者荣耀团队发出了最低100个月最高120个月的年终奖,不得不说这款游戏是腾讯的超级现金牛,赚得是盆满钵满。

大公司技术栈二三事

微软的核心技术栈是C/C++/C#,微软的Windows系统主要是C语言写底层,应用层软件用了不少C#,大名鼎鼎的office早期是C语言写的,后来微软用C++完成了对Office的重写。微软还有自己的Unix系统,并且可以肯定的是,微软肯定到现在都还有服务器跑Unix系统。

Google的核心技术栈是C/C++/Python/Go等编成语言,尤其是C/C++在Google技术体系中占据着非常重要的地位。在Google的程序员中,大部分都用macOS、以及Google定制版的Ubuntu系统。

Facebook的核心技术栈是C++/PHP,并且用了很大比例的Erlang,Facebook收购的WhatsApp基本上全是用Erlang完成的,WhatsApp的服务器还是用的FreeBSD,当然这主要是因为创始人的Yahoo时的良好FreeBSD背景。

到了国内,百度的核心技术栈是C/C++/PHP,腾讯是C++,Java则是阿里巴巴的核心技术栈。

王者荣耀用什么开发的?

王者荣耀的前台客户端是用C#开发的,当然准确地说是Unity3D开发的,目前Unity3D是最著名的游戏引擎之一,相比于虚幻引擎来说在移动端应用广泛,而C#就是Unity3D的主要脚本语言。

下载王者荣耀的apk文件解压,从那些dll文件就可以看出,王者荣耀客户端背后肯定是Unity3D是主要技术栈。不是说iOS和Android,就一定是swift和Java开发,在游戏领域因为特殊性,有专门的解决方案。

至于王者荣耀的后端服务,基本上就是C++,C++到现在都是腾讯公司的核心技术栈,并且游戏领域,Java/PHP这些编程语言难度是很大的。


因此王者荣耀的客户端应该是C#(Unity3D)开发的,核心后端服务是C++开发,C++也是腾讯最重要的编程语言。


本文为字节跳动签约作者EmacserVimer悟空问答原创文章,未经允许转载、抄袭必究!

EmacserVimer


对于常见的3D游戏绝大部分用的unity3D游戏引擎开发而成,主要开发语言是C#.net技术,这是微软开发一套编程语言,当初推出来和java对抗的编程语言,现在C#使用范围其实非常广泛,java参与的地方几乎都有C#的影子,现在主要在桌面应用程序,游戏开发以及服务端等等都有涉猎,最近正好有个服务端的项目就准备用.net来实现,其实编程语言只是工具而已,最主要的能够活用。

有很多细心的小伙伴可能会觉得既然是微软的那套东西怎么会在安卓上运行,这涉及到软件中一个跨平台概念,所谓的跨平台就是代码在一个平台上实现了,移植到别的平台可以继续使用,java刚开始流行的时候很大一个特点就是跨平台,写的java代码既可以在windows平台上运行,也可以在linux平台上运行,在mac平台上也可以,具体平台对接工作在环境中已经配置好了,所以在王者荣耀的app解压之后能看到dll文件,这就是在windows平台下生成的动态库文件,然后通过Xamarin转化成jar包供java直接来调用,由于中间层做了转化,所以在配置不高的手机上游戏还是比较卡顿,对硬件的要求比较高。

所以王者容易的编写主要还是windows平台上完成代码,用c#完成,但在涉及到性能地方还是c/c++来完成,毕竟对于游戏来讲性能也是非常大的一个技术指标,当然要开发程序需要遵守Unity3D引擎的规则,其实在日常过程中大家可能更加关注游戏客户端本身,后台的服务器的负载和并发能力容易被忽略,游戏讲究是一种极致的体验,如果服务器端配合不顺畅照样玩起来不爽,这款游戏的后台服务器数量达到了几千台,并且数据之间还要流畅的通讯,同时还需要场景备份,由于游戏服务端需求量相对低一些。

如何学习Unity3D开发游戏?

1.首先了解Unity3D一些菜单以及基本功能,先了解个大概,有个整体的印象

2.了解常见的游戏设计概念,坐标,向量,移动,伸缩等等概念

3.尝试自己创建一个游戏场景,熟悉常见脚本,以及代码如何和平台融合在一起。

4.开始尝试做动态化的场景融入更多的,熟悉深度的Unity api的调用

5.引擎的学习重在熟练,但要搞出深层次的东西,还需要对C#编程语言有了深入的了解才能写出有层次的东西,才能真正加入到游戏开发中去。

学习Unity3D掌握引擎api使用,以及常见功能的使用,需要一直坚持做的是对c#编程语言不停的学习,深入的学习。

希望能帮到你。


大学生编程指南


这个在王者荣耀团队的相关文章中有明确提到,客户端,也就是手机上的的APP是用的Unity3D游戏引擎。具体的开发语言以C#为主。

Unity3D是个游戏引擎,是由微软开发的收费软件。这个引擎毫无疑问是用的C/C++。但是作为游戏开发者,比如腾讯或天美,他们要做的就是利用这个开发工具而不需要再使用C/C++。具体说来,游戏中的人物,场景,特效等是用的诸如Photoshop,3dsmax等软件建立2D/3D模型。而具体的游戏逻辑是使用C#来编写脚本。

有些人会说,安卓不是都用JAVA写的吗?C#写的游戏怎么可能运行在安卓上面?

Unity3D游戏引擎,就像是个播放器(player),可以运行在Windows,安卓,iOS,浏览器。我们用C#写游戏脚本,就好像使用视频制作软件做个视频,只要有播放器,它就能播,而不用管是什么操作系统。

说到这里,或许早些年玩过flash的人会豁然开朗。flash可以做动画,可以不需要编程,如果是flash游戏(比如QQ农场偷菜),用的语言叫actionscript,也是个脚本。flash同样是跨平台的。只不过后来乔布斯宣布苹果不再支持flash后,就没有人用了。

Unity就好比是flash,而C#脚本就好比是ActionScript脚本。

上面谈的主要都是手机端的APP,说了是以C#为主,可能在核心地方会用到极少量C语言(native代码)。而在服务器端,则会复杂一些,五花八门,什么都有。核心游戏逻辑(比如登录,玩家匹配,游戏同步)肯定是用的C++,其他部分或许有JAVA(活动介绍,英雄介绍)。王者荣耀后台大约有4600台服务器,其中的调度,负载均衡,同步还是比较麻烦的。


犍为真人


百度百科说是使用Unity3D引擎开发的

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、WebGL(需要HTML5)、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Mac widgets所支持。

如何学习王者荣耀开发引擎Unity3D?

第一步首先了解unity3d的菜单,视图界面。这些是最基本的基础,可以像学word操作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用的就可以了。当然还要了解人物基本的比例和结构。

第二步理解场景里面的坐标系统,输入系统,简单的向量概念。Unity3D的坐标系统及向量概念如果不理解清楚,不理解世界坐标,局部坐标的关系,即使一个简单的移动,缩放,旋转的几行代码,也会困惑你半天。

第三步学习创建基本的场景的一些基本概念:游戏对象,组件,脚本。在界面上分别体现在层次视图,项目视图及属性视图,要理清楚彼此之间的关系

第四步学习资源导入方面的一些基本元素:网格,材质,贴图,动画等。

第五步学习脚本的生命周期,Start,UpDate,ONGUI这些基本的方法。了解,预制,时间,数学等常用的类及相关方法。理解游戏对象,组件,脚本彼此之间的关系。

第六步进一步学习摄像机,灯光,地形,渲染,粒子系统,物理系统等等,这些每一个深入进去都是一个很复杂的主题。

第七步一些更高级的概念:向量的加减法点乘叉乘,光照法线贴图,内存管理,图形优化等等。Unity3D入门容易,真的要精通,那是相当难的。


旅行叮当


使用unity引擎,客户端脚本c#!



糖果的二师兄


只要是游戏,那基本都是C/C++开发的,只不过有一些现成的游戏引擎比如unity3D让你方便开发,那些引擎本身也是C++开发的,相当于语言的框架,unity3D支持C#与JS做脚本,游戏大部分都是主C++,然后其他脚本语言为辅,反正一句话,游戏基本都是C++


青铜的倔强


Unity3d制作的,他只是一个游戏引擎,编程语言支持c#,python等等所以说,一款游戏我们不能说用什么语言制作的,因为有可能一款游戏用到好多语言,我们只能说游戏是用Unity3d制作的,具体什么语言还得看游戏的需求!如果你想制作游戏,可以选择一款适合你的游戏引擎然后再选择游戏引擎支持的语言,你学习即可!


javascriptnode


从unity3d的百度百科上看游戏列表有王者荣耀提名,相信客户端应该用了u3d。u3d主要开发语言是C#和JS。虽然用了C#,但是基于mono平台的。
服务器端相信用到的会更多,如PHP,Java,C++等。任何一款大型的游戏,系统都不可能只有一种语言去开发,每种语言都有其擅长的领域,合适的就是好的。


锌资讯


王者荣耀客户端的话使用的是unity引擎,引擎本身是c++开发,支持c#和js脚本。但是由于js工程性不强,现在基本都使用c#开发了。客户端由于要支持热更新,估计使用了lua,至于unity的lua解决方案是选用腾讯自己的xlua还是ulua或者slua都不得而知了。所以,综合起来客户端涉及了c++,c#,lua三种语言。

服务端的话估计是c++加lua


影枫17


这个在王者荣耀团队的相关文章中有明确提到,客户端,也就是手机上的的APP是用的Unity3D游戏引擎。具体的开发语言以C#为主。


Unity3D是个游戏引擎,是由微软开发的收费软件。这个引擎毫无疑问是用的C/C++。但是作为游戏开发者,比如腾讯或天美,他们要做的就是利用这个开发工具而不需要再使用C/C++。具体说来,游戏中的人物,场景,特效等是用的诸如Photoshop,3dsmax等软件建立2D/3D模型。而具体的游戏逻辑是使用C#来编写脚本。


有些人会说,安卓不是都用JAVA写的吗?C#写的游戏怎么可能运行在安卓上面?


Unity3D游戏引擎,就像是个播放器(player),可以运行在Windows,安卓,iOS,浏览器。我们用C#写游戏脚本,就好像使用视频制作软件做个视频,只要有播放器,它就能播,而不用管是什么操作系统。


说到这里,或许早些年玩过flash的人会豁然开朗。flash可以做动画,可以不需要编程,如果是flash游戏(比如QQ农场偷菜),用的语言叫actionscript,也是个脚本。flash同样是跨平台的。只不过后来乔布斯宣布苹果不再支持flash后,就没有人用了。


Unity就好比是flash,而C#脚本就好比是ActionScript脚本。


上面谈的主要都是手机端的APP,说了是以C#为主,可能在核心地方会用到极少量C语言(native代码)。而在服务器端,则会复杂一些,五花八门,什么都有。核心游戏逻辑(比如登录,玩家匹配,游戏同步)肯定是用的C++,其他部分或许有JAVA(活动介绍,英雄介绍)。王者荣耀后台大约有4600台服务器,其中的调度,负载均衡,同步还是比较麻烦的。


分享到:


相關文章: