{eval=Array;=+count(Array);}
开发游戏的编程语言有很多,不同的平台会使用不同的语言。这里我把平台类型主要分为四大类,即PC端,游戏主机,WEB端,移动终端。下面就分别来介绍一下这四类平台上的一些游戏开发语言。
PC.PC端的游戏绝大多数都运行在微软的Windows系统下,游戏可以被视为一类交互性比较强的软件。既然是软件,那么理论上能够开发软件的编程语言也都能用来开发游戏,事实也确实如此。但在实际开发中,为了兼顾游戏的执行效率,PC上的大型游戏往往使用C++或者C#这类高性能语言进行开发。此外,还有一个原因是C++/C#可以无缝兼容大多数游戏引擎。
游戏主机.目前主流的游戏主机有微软的XBOX和索尼的PlayStation。XBOX可以视为一个另类的PC机,它的游戏开发与现在Windows端的开发大同小异(同样可以使用Visualstudio),所以XBOX的主要编程语言也就同样是C++和C#。索尼的PlayStation使用的是一个类UNIX的操作系统,也就无法使用微软的C#语言了(要使用也可以,但很麻烦),所以就只能大量使用C++了。
WEB.WEB游戏是指运行在浏览器中以网页形式展现出来的一类游戏。本质上也就是一个网页,所以WEB游戏的编程语言也就主要是WEB开发语言,比如PHP,JS,HTML5等等。
移动终端。移动平台主要有安卓和iOS,安卓系统APP的主要编程语言是Java和kotlin,IOS是OC和swift。这些是APP的开发语言,而游戏也可以视为一种高性能的app。安卓下游戏主要框架由Java实现,部分需要进行大量计算的模块会使用C/C++的动态库来实现。iOS下由于其语言本身就很高效,所以基本上IOS下的游戏都是使用oc和swift两种编程语言来实现的。
没有规定什么编程语言是用来写游戏的,只是不同的编程语言的侧重点不同,比如PHP在网站方面具有优势,Python用来写一些脚本,c语言偏底层等等,编程语言的功能只是告诉计算机要怎么做
如果是写一些小游戏,java、Python等都比较方便
如果要写大型游戏的话,c++比较好,Java、Python等我不太清楚
主机与pc客户端底层语言基本是c++,脚本语言是lua、js、c#等,iOS底层是object c,android是Java,flash是as,服务器端比较杂,python,erlang,nodejs,c++,go,甚至PHP都有可能
游戏本身会运行在不同的平台,而平台也影响了使用的语言。平台主要有2大类,PC(也就是常用的电脑)和手机。它们上面都可以使用网页来运行游戏,所以额外我们把网页浏览器上面跑的叫WEB端。针对上面的3种平台类型。我们来聊一聊这些平台上常见的游戏是用什么开发的。
PC端。大部分的游戏是C/C++开发的。这主要是因为我们使用的操作系统如window,mac的底层都是c。使用C/C++可以极大的发挥性能上面的优势。比如下面这个NBA2K18就是用C/C++为主开发的。
手机端。手机端的游戏我们称为手游。手机上面的操作系统主要是ios与android,也就是苹果和安卓系统。在之前,android上面的游戏以java开发居多。这是因为android系统本身就是以java开发为主。ios上面的游戏以object c开发居多,这也是因为系统本身的缘故。最近ios又出来swift语言。但是随着技术的发展,程序员们发现一款游戏要部署到各个平台的成本太高了。所以现在主流的技术是使用跨平台的游戏引擎开发,然后发布到不同的平台。所以,语言的选择从对平台的依赖变成了对游戏引擎的依赖。那我们就要看看主流的游戏引擎有哪些?主流的游戏引擎有:unity,cocos,unreal等。unity采用的是C#语言为主。cocos下面以C++、lua、js等开发语言。unreal主要是以C++为主。从上面这些中你会发现语言有很多,使用的也很多。在商业项目以及目前主流技术中,大部分高水准的游戏是以C++结合lua来开发的。C++负责处理高性能的部分,lua处理逻辑部分来加快开发速度。即使是使用unity引擎,大部分产商也会选择C#结合lua的方式来开发。C#负责核心部分,lua处理逻辑部分。
再聊一下WEB端。WEB端以前是以flash为主,常见的就是4399的很多小游戏,都是flash为主。WEB端主要是一个html与js的解释器。目前WEB开发国内主要是3大引擎:白鹭、laya以及cocos-js。它们的主要开发语言为typescript,这主要是因为typescript可以提供非常快的开发速度(就像lua一样),同时它还具备提前暴露问题的能力。
实际上上面的部分主要聊的是游戏客户端。在游戏领域,实际上分为服务端和客户端。客户端指对外玩家可以见到的画面表现等。服务端是运行在产商自己的服务器上的,支持玩家之间互相可见,同步,聊天等各种逻辑。对于服务端的语言,目前有C++结合lua以及C#、java、php等。这几种都很常用,主流的大的游戏依然是C++为主。中小型的游戏各种都会用到。php常用于对网络需求很低的游戏的做简单的数据处理。
上面的主要是一些理论,下面我们来实战几个问题,一会我们再来总结。
1. 王者荣耀是用什么开发的?王者荣耀使用的是unity引擎,而这种全民级别的游戏是非常注重性能的。所以它采用的是C++结合C#。核心用C++,逻辑用C#。为什么不是我们前面说的C#结合lua呢?因为ucloud有这个技术实力,所以他们整体使用了更有性能优势的语言开发。
2. 微信里面的小游戏是用什么开发的?小游戏本质上是个WEB的执行环境。所以它上面的很多游戏都是typescript或者js开发的。之所以typescript还没有普及,是因为它的社区不够活跃。
3.怎么猜测一款游戏是什么语言开发的?先上网搜索它的开发引擎,如果搜索到了就看看它对性能是否要求高,来推导它的使用语言。如果搜索不到,那很可能是自研引擎。自研引擎大部分都是C++实现的。
最后总结下。目前大部分国内的游戏以C++/C#结合lua实现为主,随着小游戏的开始,催生出一些js/typescript开发的游戏。为什么是以C++结合lua会是实现为主呢,是因为现在网游最赚钱。一款游戏月流水过千万甚至过亿催生了这个产业。这个产业注重2点:性能稳定,所以是C++。可以各种修改,各种支出活动,所以是lua。C++性能非常高,ucloud内部大部分代码其实都是C++的。lua是门脚本语言,招人门槛很低,也容易学习。所以,很多语言实际上是因为大环境的影响而被选中的。另外一方面,服务器也可以采用C++结合lua开发,这样的话就形成了双端(服务端和客户端)都使用相同语言的高速开发模式。
我猜想题主是想选择一种语言学习。首先题主要看下自己未来的方向。是想做大项目还是做小项目。如果是希望做大项目,目前无疑推荐的是C++和lua。如果是小游戏之类的,推荐的是typescript。未来的一个趋势我大胆预测可能是C++结合typescript。我了解到的一些技术大牛已经开始这样实践了。推荐的lua语言开发书籍如下:
推荐的C++书籍如下:
typescript暂时没有合适的书籍供阅读,主要以typescript的官方文档为主。
小游戏类的开发书籍推荐如下:
大的游戏实际上需要大量的学习和知识积累。远远不是几本书能完全吃透的。这边还是推荐一本unity3的引擎的书来提高下入门的兴趣:
特别提醒下:基于目前互联网的发展速度,读书已经不是最快的获取知识的途径了。所以推荐的是优先以互联网的内容来学习,找个引擎玩一玩。像玩玩具一样的学习编程是最快乐的。之后再努力进入一线的研发团队历练,这样成长最快。纸质的书籍落后于实际的技术3-5年以上。
作者背景:前迅雷员工/前游戏公司双端主程
客户端看游戏引擎,像现在最火的unity3D 就是C#+lua做手游开发,虚幻的话就是C++,h5方向有两个引擎分别是egret和laya box 用的是typescript。
服务端的话主要有3个流派,分别是cpython,clua 和erlang 。java 不入流,做什么都行,反过来就是做什么都不行。
总结就是服务端多语言混编交互的很多,各语言都有各自的发挥,客户端跟引擎走。
游戏有各种各样的,有手游,手游又有安卓和IOS的区分,又有页游和端游之分。
我在这里大致的给大家列举一下吧。
2D页游:AS3 JS
3D页游:AS3 C#(Unity)
IOS游戏:Obj-C js/lua(Cocos-2d-x) js/C#(Unity) AS3
安卓游戏:java js/lua(Cocos-2d-x) js/C#(Unity) AS3
在线小游戏:AS3 JS
大型单机游戏/客户端MMORPG::C++ C#
其中AS3 JS C#(Unity)都是跨平台的。AS3(flash)目前被唱衰,JS目前又比较翔,Unity还不错。
而现在比较火的就是Unity3D和C# ,来做游戏,如果你想学习的话可以先去了解一下。比如最近很火的王者荣耀,就是用Unity写的。
如果你是对技术感兴趣,建议你学习c++,这会让对游戏的底层实现有更多的了解和掌握.但这一定是一个非常非常漫长的过程.如果你是对设计更感兴趣,那就学习Unity3d, 学习C#, 因为它可以让你更快的做出你想要的,
建议你先不要纠结学什么语言,先想清楚想要做什么,是程序员,还是想做产品,还是想做策划呢?
有什么问题欢迎讨论,随手关注,祝你幸福。
以上。
如果追求简单而且没基础,而且只是用来自己玩玩,那你可以试试Scratch,这种语言是少儿式的搭积木的种编程方式。难登大雅之堂。
如果有点基础,可以试试做网页游戏,可以用JavaScript或AdobeFlash,这些一般是用来写网页小游戏。
如果你不满足这些语言,或者你有比较好的基础,可以上手Visual Basic或Visual C++,前者容易后者难,但是性能还是后者较好,Visual Basic有自带编译器,可编译成exe且不用配置环境
还有一些较难的Java,Python
如果要编程3D游戏,可以试试Unity3D。
上述所有语言除Scratch外全部都是大众语言。
学习游戏开发,需要掌握游戏编程和游戏引擎核心技术,比如现在很多公司都在用的Unity,对C#编程和Unity核心技术都需要有规划和系统地进行学习。如果只是在网上找一些视频和项目跟着学,不能真正的去理解和消化变成自己的东西,最终的结果也只能是事倍功半。再说现在网上的视频和项目包括很多的培训机构教的都是一些换皮不换骨的内容,好多还是基于Unity5.x的案例,也很难学到现在游戏公司真正需要的技术。建议到Paws3D学习中心来看看,每周六下午游戏开发私教营也可以预约到现场来试听,线下课程除了能够快速的帮助您提升游戏开发能力,还有机会参与独立游戏项目的实战开发,欢迎到现场来参观、体验与学习。
当各式智能终端设备的普及为游戏公司带来人口红利的同时,以 Unity为代表的游戏引擎开发商也在极大地降低游戏研发的成本。另外,除了游戏引擎本身的性能提升外,Unity还同步提供了免费教程、在线培训、产品文档以及数千个插件资源生产工具。
开发游戏需要什么?需要掌握哪些知识?
01想成为游戏开发人员,就得先成为一个很好的程序开发人员,所以游戏开发要先从编程语言学习。
02除了编程语言之外,还有一些游戏方面的知识,比如说游戏开发流程及职业划分、玩家需求分析、游戏主线故事设计等等也要学习。
03然后还有一些绘图软件,比如说Photoshop,也要掌握一些,包括其中的游戏美术风格技法、色彩基础、游戏色彩练习、肖像绘制等方面的知识。
04除了一些理论知识,编程工具也需要掌握至少一种,常用的有VC,Unity等,VC挺不错的,可以试试这个。
05一些生活的常识,角色的动作,物体碰撞之后的变化等等,这些也是需要学习的。想做好一个游戏开发要学习的东西还是非常多的。
参加游戏开发培训的话
1.会获得Python语言开发的工具链,并讲解使用方法,通过各种工具脚本,提高开发效率,将企业中高手采用的工作方式带入学生未来的工作当中。
2.会获得JavaEE服务端和Unity Socket通信视频和自学资料,为日后从事大型网游开发奠定基础。保证学员未来有足够的发展空间。
3.学员入学就有高质量,可信服的就业服务保证。
4.随着企业的用人标准的提升,课程中添加了大量的图像学案例,让学生真正熟悉图形学,熟悉各类特效的实现流程,熟悉光照算法的设计思路。
5. 网络底层的深层剖析,从通信协议、拆包粘包、连接池各细节角度,教授学员大型网络游戏开发的核心内容。帮助学生实践自己思路拼接的网络传输框架,并在游戏项目中得以实践。
比较常用的有 Unity。C#,Lua ,UE4。蓝图,C++,H5游戏
另外独立游戏圈流行的MonoDevelop、Love2D等等;
还有大厂采用自研引擎的,但是近几年大量转向UE4和Unity。
优就业有游戏开发的系统课程,有兴趣可以咨询了解一下。
10
回答1
回答0
回答8
回答8
回答10
回答0
回答10
回答10
回答4
回答