找回密码
 立即注册
查看: 518|回复: 10

用c语言写一个英雄联盟有多难?

[复制链接]
发表于 2022-1-13 10:33 | 显示全部楼层 |阅读模式
推荐一篇类似的文章
发表于 2022-1-13 10:41 | 显示全部楼层
推荐一篇类似的文章
C++是如何从代码到游戏的?
发表于 2022-1-13 10:47 | 显示全部楼层
英雄联盟开发技术涉及:Chromium&Webkit,JS、HTML5,c++,java。全用C语言写,不太现实!
游戏开发都要学些啥,请看下面:
平台与编程语言选择

首先,游戏开发的平台就有很多类型:

  • 个人主机平台:Windows、Linux、Mac OC;
  • 移动平台:iOS、Android、Windows Phone、BlackBerryOS、Symbian;
  • 专业主机平台:Xbox、PlayStation、Will等。

如果你想从事移动平台的游戏开发,Android主流JAVA语言,iOS主流Object-C语言,那么你就要去学习这个平台主流的语言,而在个人主机上主流的游戏开发语言现在包括以后很长时间也还是C++。
但是并不是所不同平台的游戏开发,就毫无共通之处,学了这个到了另一个平台就无用了。不是这样的,编程的世界里你走得越远你会发现很多东西的本质都是相似的,例如你如果扎实地理解了C++的基本语法(而不是死记硬背),日后再转Java语言也不是很难的事情,因为它们本质的面向对象特性还有各种编程语言特性都是相通的。
所以,如果你想走得远,在学习的时候不能简单流于表面,对于一样知识越深入到底层,你就越能看到其它知识与其的异曲同工之处,因此你将比别人更轻松。但是,当然一开始最好尽可能是贴合自己的专属领域和编程语言,这样能尽快地在这个领域持有一席之地。
一:只使用游戏引擎

对于第一条路线,游戏引擎的使用并不困难,因此适合想快速上手游戏开发工作的人。我们工作大多数时候也不会自己开发游戏引擎,所以这样对于一般的日常工作也没什么大碍。对于只使用游戏引擎的人来说,入门阶段要做的就是看该引擎的教程(书籍、视频、网上博客、网上教程、官方帮助文档等),并且熟练该教程所使用的编程语言。
所以你要做的第一件事,就是去了解现在流行的游戏引擎。因为不同平台下的性能不同,支持的编程语言也不尽相同,所以针对不同平台下的流行的游戏引擎也是不同的(方括号里面是特别推荐的,基于开源性、易用性、性能与效果等方面的综合水平推荐):

  • windows或游戏主机:【Unreal】、寒霜、CE3
  • 苹果ios:【unity3D】、【cocos2d-ObjC】、【Unreal】、sparrow、sprite kit。
  • 安卓:【unity3d】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。
  • 网页:【Egret】、【cocos2d-html5】、Fancy3D、unity3d。
在选择游戏引擎的时候,尽可能选用流行的游戏引擎,因为这个游戏引擎流行意味着官方的功能比较完善和易用,问答社区也比较多人解疑。各个游戏引擎也各有千秋,Unity3d胜在简单易用,对性能要求不高,但是效果不够华丽,因而一般用在移动平台而不会用在电脑或游戏主机。Unreal胜在开源免费,而且效果也很出色,但是对设备要求比较高,因而常常用来开发效果绚丽的大型游戏。cocos2d-x也是开源免费的,在2D领域深有造诣,但是缺点是不可视化开发。另外,如果你想了解游戏引擎原理,那么首要考虑的就是开源的游戏引擎。
不同游戏引擎使用的编程语言或者脚本语言可能是不一样的,所以当你想要学习某个游戏引擎的时候,也应该留意该游戏引擎所使用的语言。大部分情况是,Windows用的的是C++,同时结合lua或python脚本语言。而ios平台下使用Objective-C或swift,安卓平台下使用Java。但这不是必然的,例如Unity在各个平台下都可以用C#或者javascript脚本语言。
下面是商业上流行的游戏引擎详细比较:
1) Unreal4(虚幻4)


  • 适用平台:Microsoft Windows、Mac OS X、iOS、Android、虚拟现实设备(包括但不限于SteamVR/HTC Vive、Morpheus、Oculus Rift及Gear VR)、Linux、SteamOS及 HTML5平台。
  • 编程语言:C++或无需编写代码。
  • 优点:开源免费,画面效果出色,已有多款商业大作经验。同时,它还能跨平台,商店资源丰富,提供了无需编写代码即可制作游戏的强大功能(可视化开发)。
  • 缺点:开发机器配置要求较高。
2) Unity3D


  • 适用平台:iOS、Android、Windows phone 8、Tizen、Microsoft Windows、Windows Store应用程序、Mac、Linux/Steam OS、网络播放器、WebGL、PlayStation3、 PlayStation4、PlayStation Vita版、Xbox One、Xbox 360、Wii U、Android TV、Samsung SMART TV、Oculus Rift、Gear VR、Microsoft Hololens、Playstation VR。
  • 编程语言:C#、javascript、Boo。
  • 优点:方便易用,中文资料丰富,跨平台,商店资源丰富,可视化开发。
  • 缺点:画面效果一般,不是免费开源,引擎效率比较低。
3) Cocos2d系列(包Cocos2d-x、Cocos2d-ObjC、Cocos2d-html5、Cocos2d-xna等)


  • 适用平台:Microsoft Windows、OS X、 Linux、iOS、 Android、 Tizen、 Linux、Mac OS X、HTML5浏览器、Windows Phone 7 & 8、Xbox 360。
  • 编程语言:Python、Objective-C、C++、 Lua、 JavaScript、 Swift、JavaScript、 C#。
  • 优点:开源免费,跨平台,中文资料丰富,2D技术丰富且成熟。
  • 缺点:不可视化开发,3D方面技术不成熟。
4) CryEngine3


  • 适用平台:Microsoft Windows、OS X、Linux、PlayStation 3、PlayStation 4、Wii U、Xbox 360、Xbox One、iOS、Android。
  • 编程语言:C++、Lua。
  • 优点:画面效果世界一流,可视化开发,跨平台。
  • 缺点:开发机器配置要求较高,不是免费开源。
5) Frostbite3(寒霜3)


  • 适用平台:Microsoft Windows、PlayStation 3、PlayStation 4、Xbox 360、Xbox One。
  • 编程语言:C++。
  • 优点:画面效果出色,可视化开发,跨平台。
  • 缺点:开发机器配置要求较高,不是免费开源。
6) Egret(白鹭)


  • 适用平台:HTML5、iOS、Android、Windows Phone。
  • 编程语言:TypeScript、JavaScript。
  • 优点:免费开源,配套工具多,全中文文档,可视化开发,跨平台。
  • 缺点:支持平台较少,大多数时候用于开发对性能和效率要求不高的小游戏。

但是使用游戏引擎毕竟是停留在表面看不到本质,当游戏开发的时候出现了某些问题或者特殊需求,你往往很难处理。而且游戏引擎技术日新月异,你所学的几乎都是别人留下来的方法,而不是其本质思想。如果将来别的游戏引擎兴起,你又要重新学习另外的游戏引擎怎么使用。在很多大公司里面,甚至都有自己公司内部专用的引擎(如网易公司的风魂引擎、金山公司的剑网3引擎、蜗牛公司的Flexi引擎等等)。所以单纯地走这条路线,可能不会让你走得很远并且可能会日渐乏味。
二:使用游戏引擎并深入了解游戏引擎原理

对于第二条路线,深入学习游戏引擎原理短时间不会让你的工作有什么卓越的成效,但是可以弥补只使用游戏引擎导致的问题,而且学习游戏引擎原理,更多时候不是一定就为了自己日后要造个游戏引擎,而是更深入理解自己的游戏引擎,更好地使用它。当然,千里之行始于足下,经常学习游戏引擎底层原理的人到了一定的积累的时候,自己造个游戏引擎也是可以的。
对于像学习游戏引擎原理的人来说,需要制定自己明确的长期目标:
1) 首先,一开始可能对游戏引擎没什么概念,建议先使用一两个游戏引擎(我推荐C++程序员学习虚幻4游戏引擎,现在是免费开源的,非常值得学习。那些不开源的游戏引擎尽量不要去学习,因为其对于学习原理来说没有多大贡献)。
2) 因为游戏开发就是一门实时渲染的艺术,所以离不开图形库的学习。现在主流的图形库是Windows平台专用的DirectX 11和通用平台的Opengl。这两个图形库,至少需要入门其中一个。
3) 然后,你就可以开始看计算机图形学的书籍了。如果你发现你的理论底子不足,这个时候就需要补一下线性代数、基本的微积分、还有3D数学的知识。
4) 游戏引擎中包含了各个部分,上面的渲染只是游戏引擎的一部分。还有其它诸如着色器编写、地形编写、物理引擎编写、模型和动画、人工智能体设计、网络编程等等,完成渲染部分的基本学习后,你可以选择自己感兴趣的部分进行专攻,毕竟我们实际工作大多数时候是团队开发,而不是单打独斗,每个人都应该精通自己所擅长的那部分。
三:选后端语言
1、C++
C ++是一种面向对象的语言,被认为是最难学习的语言之一,但它是游戏开发人员的重要语言。 它允许对硬件和图形过程进行更直接的控制,这对行业很重要,对于某些很受欢迎的游戏引擎来说,它是很受欢迎的语言。 它还提供了对参数和内存管理的大量控制,从而增加了游戏的性能和用户体验。
2、Java
Java使用与C ++相同的面向对象原理,但是提供了范围更广的系统。 Java代码通常在Java虚拟机(JVM)上运行,并转换为可在任何系统上执行的通用字节码。 因此,Java是使开发人员能够为任何给定系统开发游戏的少数游戏编程语言之一。 它是游戏的优秀编程语言之一。
3、Python
Python是另一种提供OOP方法的语言,是游戏开发人员使用的最容易使用的通用编程语言之一。 它具有Pygame框架,可让程序员快速开发游戏原型。
4、Rust
Rust被吹捧为C的继任者之一。它主要是由Mozilla Foundation作为系统编程语言。 它具有面向对象到面向数据的方法,有助于游戏开发。
5、Lua
Lua具有简单的语言结构和语法,正在成为游戏行业很受欢迎的语言之一。 它是一种多平台脚本语言,许多现代游戏引擎都将Lua用作其主要的游戏设计编程语言。
我这里整理学习近百本计算机经典书籍,包括各种编程语言,算法,网络编程,数据库,分布式等等各种技术。对于学习计算机的同学帮助非常大,且十分系统!面试找工作的资料汇总都打包放在这了,这套资源可不是一般那种网上找的资源,非常宝贵,不要错过!


书单:
计算机经典书籍(内含下载方式)
觉得不错的话,记得帮我 @盼盼编程 点个赞和关注哦,祝大家都能学有所获!
也可以关注下我哟,致力于分享硬核学习路线,技术。希望能帮助更多CS学习者,让他们少走弯路!

本帖子中包含更多资源

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

×
发表于 2022-1-13 10:50 | 显示全部楼层
学校数据库大作业,写一个简单的数据库管理系统。
要求实现读入文件,可以实现选择投影连接,也就是查询操作,还有什么云云。简单点说就是读入几个表格,然后实现增删改查。都没要求用语句去建表,而是读入完整的表,然后做修改后写回去就行。
就这么看起来很简单的东西,我几分钟就想好了思路。
首先读入表,因为格式得对其,我就规定每一个表中的元素占相同长度,这样输出也方便。
然后就是查询,无非就是几个表做个连接然后在里面筛选。
剩下的增删改实现应该也没什么难度,基础操作。
等到我动手用c写代码时,真是尼玛写的我想死。
简简单单的字符串查询,删除,连接,增加空格占位置这些操作,写的我想骂人。
作为我们为数不多的纯自己动手写实验的我,去查实验结果被老师问了40分钟。整个东西写的乱七八糟毫无章法,处理字符串的for循环到处都是。
我菜,我承认,我吸取了这次的教训,准备多写一些函数,改用c++。
我突然感觉自己打开了新世界的大门,好比在溺水的绝望中看到了一只伸过来的手带我上岸。
c++相比我的同学们喜欢用的Java还要复杂一些,但对于我来讲还是如久旱甘霖。
我还得到了一个重要的经验,一个函数代码绝不能超过100行。多写函数,我发现很多东西都可以复用。
再加上c++的字符串处理,突然有种想重写的冲动。
我们下一个实验的要求是在上一个实现的简单数据库上增加一些功能,然而我直接重写,之前的代码实在是太糟心了。
然而这次我心如止水,波澜不惊,不像上次,写到最后室友反映我一边写一遍笑,像小丑似的笑,好似一个精神分裂人。
最后写完那个管理系统,仅有600多行,就差不多实现了所有功能,代码清晰整洁,bool值在函数中一步步返回异常也让语法语义判断得心应手。
话说回来,如果写英雄联盟呢?别说一个英雄联盟,就英雄联盟这个界面写出来都费劲,能写基本也是理论层面的。总之对于我等菜鸟是不敢想象的。
发表于 2022-1-13 10:55 | 显示全部楼层
理论可行,实际上就是工程灾难。别说英雄联盟了,稍微复杂一点的游戏你都想死。游戏里面运用最广泛的就是面向对象编程技术,c语言难以表达面向对象的思想,你要实现继承和多态,可以,但是码的那些代码,估计你自己都不想看了。
发表于 2022-1-13 11:00 | 显示全部楼层
相当于一个人用手造出火箭
发表于 2022-1-13 11:09 | 显示全部楼层
目前大四,学编程第五年,毕设
主体其实是自己撸的网络轮子
但是毕设光拿个轮子讲好像没啥排面
就干脆抄个LOL的界面(一开始想抄枪神纪来着)
如图,就这么几个界面,前前后后抄了半个月,qt是边学边用有点拖
就这,只有个样子,大部分功能没有实现
服务器那边干脆就照微服务的样子来了,目前只写了登录,注册,大厅,正在写好友列表部分
有多难咱也不知道从哪开始写,想当年拿起第一本编程书之前,雄心壮志,我要做个LOL,c++primer plus   effective35 55 c++标准库 对象模型 计算机网络 计组 操作系统 数据结构 c++primer apue unp12这些一路学过来,还有其他一些乱七八糟的书,就算没有认真看我也过了一遍,中间专升本花了点时间,后来还浪费了半年时间考研,11月放弃了,到现在12月13日,就做了这么点东西,界面抄了个七七八八但肯定比不上原版,连图标都是直接从原版上抠下来的,一个阉割版的功能,考虑数据库表怎么建,弄点数据测试测试,再和客户端服务器联动下,可能两三天就没了,界面想要稍微向原版那样靠近一点,就得花很多时间去搞,想起当年的雄心壮志,再看看现在画个界面就折磨的要死,图形方面更是完全一点都不懂,再想想原画 建模 地图 技能这些,就算全用现成的,再学个三五年,也许我能勉强能搞出一个能跑,效率拉胯,优化极烂,还时不时掉线的东西
毕设也摆烂了,随便挑几个功能抄抄就那样吧,吃饭要紧






本帖子中包含更多资源

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

×
发表于 2022-1-13 11:10 | 显示全部楼层
先别英雄联盟了,你不调库手写一个俄罗斯方块都比较nb了。
发表于 2022-1-13 11:13 | 显示全部楼层
很简单,
printf("英雄联盟");
发表于 2022-1-13 11:22 | 显示全部楼层
从技术上讲,c语言是一定可以实现英雄联盟的。
从工程量上讲,我们有各种矿石和树,能不能盖出房子来?
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-14 12:42 , Processed in 0.144527 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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