文章插图
文章插图
游戏本身会运行在不同的平台,而平台也影响了使用的语言 。平台主要有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呢?因为腾讯有这个技术实力,所以他们整体使用了更有性能优势的语言开发 。
2. 微信里面的小游戏是用什么开发的?小游戏本质上是个WEB的执行环境 。所以它上面的很多游戏都是typescript或者js开发的 。之所以typescript还没有普及,是因为它的社区不够活跃 。
3.怎么猜测一款游戏是什么语言开发的?先上网搜索它的开发引擎,如果搜索到了就看看它对性能是否要求高,来推导它的使用语言 。如果搜索不到,那很可能是自研引擎 。自研引擎大部分都是C++实现的 。
最后总结下 。目前大部分国内的游戏以C++/C#结合lua实现为主,随着小游戏的开始,催生出一些js/typescript开发的游戏 。为什么是以C++结合lua会是实现为主呢,是因为现在网游最赚钱 。一款游戏月流水过千万甚至过亿催生了这个产业 。这个产业注重2点:性能稳定,所以是C++ 。可以各种修改,各种支出活动,所以是lua 。C++性能非常高,腾讯内部大部分代码其实都是C++的 。lua是门脚本语言,招人门槛很低,也容易学习 。所以,很多语言实际上是因为大环境的影响而被选中的 。另外一方面,服务器也可以采用C++结合lua开发,这样的话就形成了双端(服务端和客户端)都使用相同语言的高速开发模式 。
我猜想题主是想选择一种语言学习 。首先题主要看下自己未来的方向 。是想做大项目还是做小项目 。如果是希望做大项目,目前无疑推荐的是C++和lua 。如果是小游戏之类的,推荐的是typescript 。未来的一个趋势我大胆预测可能是C++结合typescript 。我了解到的一些技术大牛已经开始这样实践了 。推荐的lua语言开发书籍如下:
推荐的C++书籍如下:
typescript暂时没有合适的书籍供阅读,主要以typescript的官方文档为主 。
小游戏类的开发书籍推荐如下:
大的游戏实际上需要大量的学习和知识积累 。远远不是几本书能完全吃透的 。这边还是推荐一本unity3的引擎的书来提高下入门的兴趣:
【跨平台软件开发语言 跨平台的编程语言有哪些】特别提醒下:基于目前互联网的发展速度,读书已经不是最快的获取知识的途径了 。所以推荐的是优先以互联网的内容来学习,找个引擎玩一玩 。像玩玩具一样的学习编程是最快乐的 。之后再努力进入一线的研发团队历练,这样成长最快 。纸质的书籍落后于实际的技术3-5年以上 。
- go编译器有哪些 go语言编译器是什么语言开发的
- 输入法语言栏不见了 怎么调出来 输入法语言栏不显示了怎么办
- c语言内存释放的问题 c语言内存释放技巧
- C语言多组输入 c++如何实现多组输入
- c游戏编程从入门到精通 c语言游戏编程入门
- 文件加密软件开发与实现 文件加密程序设计
- 网络攻防学什么语言 web攻防入门
- c 语言游戏代码大全,C语言经典游戏代码 c语言游戏代码大全手机版
- c语言排序的几种方法 c语言排序的三种方法
- 冠词,语言 冠词有哪些