学C++走游戏方向,是不是非常艰难自找苦吃?
C++这门语言从诞生到今天已经经历了将近30个年头。
不可否认,它的学习难度都比其它语言较高。而它的学习难度,主要来自于它的复杂性。
现在C++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替C++。
但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业;
比如游戏、高效的服务器。
现在学习java、C#等语言的人数远远高于C++,主要是因为C++的入门门槛太高。
所以在此我们不讨论具体的技术细节,只说我们在哪个阶段应该学习什么东西。有个系统的规划。
一、技术能力
- 语言
我们要成为一个程序员,学的东西会很多很杂,但是最开始一定要从语言开始学习。
学习语言的目的就是打好基础,特别是自学的,一定规划好自己的学习路线,一步一个脚印学习下去。学习语言最关键的莫过于多读书,但不能随便找一本C++书籍就去读了。
推荐几本适合初学者读的书(需要电子版的朋友可以到文末拿)
《C++程序设计语言(特别版)》
无论如何也应该读个四五遍!这是一切C++的书本的源泉。
《C++语言的设计和演化》
这本书是写C++语言发展的历史,可以看下了解一下这个语言的历史。
接下来就可以看别的书了,但要不停地回头看这本书。
看到你不断地学到的新技术是怎么样一点点地被接纳到这个语言中去的。
《C++ Primer plus (3RD)中文版》
适合有丰富C经验,缺乏C++经验的
《C++ Primer plus(4RD)中文版》
《Essential C++中文版》
《Accelerated C++中文版》
- GUI
C++方面的GUI库有很多种,比如MFC、WTL、wxWidgets、QT。
这些GUI库都各有自己的特点,其实我们只要先了解一种就可以了,只要深入了解了一种GUI库。
需要的时候再学习其他的就够了,本质上都差不多,很快就可以上手了。
MFC虽然设计上有很多问题,但是作为入门还是不错的,而且学习资料很多,碰到问题也好解决。
学习MFC的推荐下面这个链接,里面有别人学习MFC游戏开发的笔记,可以多学习学习。
学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习C/C++或者为了入行、转行学习C/C++的伙伴可以私信回复小编“学习”领取全套免费C/C++学习资料、视频
- 数据结构和算法
很多人都忽视了数据结构和算法方面的知识,尤其是一些编程语言的库做得非常好;
几乎不需要自己去实现一些数据结构和算法,导致现在很多程序员不重视甚至忽略这方面的知识。
但是,当我们想让我们的程序跑的更快、内存占用更少的时候,这些知识就非常非常重要了。
很多程序员都是刚开始的时候不重视这些,但是工作几年后又来补习这些知识。
最开始可能不需要学习的太深入,但是基本的数据结构和算法一定要知道。
- 数据库
学习数据库的基础知识,并且掌握一种数据库使用。
推荐使用Oracle,而且最好不要用一些封装好的接口。
而应该直接用Oracle提供的数据库API,可能对数据库了解的会更深入。
- 并行
CPU主频已经不能遵循摩尔定律了,现在CPU发展的趋势是多核心。
无论是多线程,还是多进程,都是为了更好的利用CPU的性能,提供更好的用户体验。
这就要求我们如果要写出高效的应用程序,必然要涉及到并行计算。
多花些精力在并行计算上吧,一定会有丰富的回报。
- 网络编程
这里所指的网络编程是指socket编程。
现在C++的应用很多都是在做服务器开发,
如何开发一个高并发、大吞吐量、高稳定性的服务器就是我们要考虑的了。
- 设计模式
设计模式不是具体的技术,更多的是如何让代码更容易阅读、更好扩展、更容易使用。
- 库的使用
C++标准库仅仅提供了一些很基本的功能,所以我们经常会引入一些第三方库。
最著名的恐怕就是被称为准标准库的boost库,它提供了我们编程中用到的各方面的技术,
文本处理、算法、网络、多线程、图像处理等等,几乎无所不包。
其它也有一些专著于某一方面的库,
比如ACE是网络通信方面的,TinyXML是解析xml的,OGRE是图形渲染方面的。
- 操作系统的知识
程序员需要了解的操作系统知识和普通用户是不一样的,
一个高手是需要深入了解操作系统的方方面面,而不是停留在使用层面。
至于应该了解哪些知识,Windows上的去看《Windows核心编程》,
Linux的去看《深入理解Linux内核》,应该可以知道自己应该学什么了。
以上都是学习C++游戏开发的前期准备,也就是打好基础。
上面都是基本功,看起来有点多,但是磨刀不误砍柴工。这对于你后面学习游戏开发有非常大的帮助。
举个我身边的例子,他就是先学习数据结构和算法,去参加ACM竞赛,后面转的C++游戏开发。
学的非常快。这就是基本功扎实的好处!!!!
二、图形图像处理:
如果你不想开发游戏引擎的话,简单了解OpenGL或者DirectX,反之深入了解。
DirectX是微软的多媒体编程接口,
在Windows的平台下,配合支持DX的高端显卡能把游戏场景的特效等等发挥得淋漓尽致,
而OpenGL是一个跨平台的编程接口,是硬件无关的编程接口。
前者主要Windows下开发游戏,后者主要是移动端。
如果是开发iOS游戏,需要了解Object C,
有些小游戏使用JAVA和Flash,
网页游戏还可能需要了解 HTML5, DIV, CSS等知识;
网络游戏还需要了解网络编程,加解密和数据库知识。
另外很多游戏开发公司都可能会使用不同游戏开发引擎,这些引擎会把上述的知识点封装;
使得你可以不需要了解底层的细节,调用它指定的API就可以实现一些功能。
不过你如果了解底层细节,显然对调试问题更有好处。
建议多看一下cocos2d-x官网的讨论和API范例。
再往上走的话,可能会需要了解不同的显卡的特点,扬长避短。
了解一些不常用的脚本编程技术可以减少你架构编译调试测试的时间。
三、项目经验
了解上面的这些知识后,不多加练练可没用。
特别是对游戏开发来说,项目经验更加重要。
一个好的项目可以让你把各种技术进行综合运用,并且能学到一些新的知识。
比如做播放器的要学习编解码器方面的知识。
做游戏也是一样,要学习图形方面的知识,
很多人会忽略项目的经验,而单纯的谈技术能力,这是错误的。
其实这就是理论和实践的关系,技术就是理论知识,做项目就是实践,理论对实践有指导作用。
实践能加深我们对理论的深入理解。
建议前期多去做几个小游戏试试手,然后慢慢加大游戏的难度。
(ps:网上有特别多的开发游戏教程,一开始照着教程,边学边做。)
最后尝试自己想个游戏做出来或者去找个游戏公司实习。
总而言之,道路还是很艰辛的,且行且珍惜!!!
学C++走游戏方向,是不是非常艰难自找苦吃?相关推荐
- 计算机图形学——游戏方向 第一章 计算机图形学概述
计算机图形学--游戏方向 第一章 计算机图形学概述 前言 第一章 计算机图形学概述 1.为什么设计专业要学习计算机图形学? 计算机图形学与计算机视觉等领域的关系 计算机图形学基础自学体系 2.计算机图 ...
- python哪个方向简单_现在学Python,哪个方向最简单?哪个方向最吃香 ?
" 我想学Python,但是学完Python后都能干啥 ?" " 现在学Python,哪个方向最简单?哪个方向最吃香?" " -- " 相信 ...
- Java学完后就业方向有哪些呢?
作为目前的主流编程语言之一,Java深受各大企业欢迎,现在几乎大部分互联网企业都会使用Java,因此最近几年市场对Java开发人员的需求一直在不断增加.那么学习Java前景怎么样?学完后就业方向有哪些 ...
- 3D建模怎么学,3D游戏建模怎么学
3D建模怎么学,3D游戏建模怎么学 第一 :学3d建模需要美术基础,但是不代表现在就需要美术基础. 很多朋友想学3d建模,但是遗憾的是,圈内人总是对他们说,学3d建模需要有美术基础,你们有吗?然后很多 ...
- 小学生要学python开发游戏吗
小学生要学python开发游戏吗 小学生要学python开发游戏吗?为什么 而学, 到底需要如何做到, 又该如何学习. 就我个人来说, 小学生要学python开发游戏吗很有意义, 不能不说非常重大. ...
- 师傅带徒弟学:Python游戏开发引擎cocos2d-python-关东升-专题视频课程
师傅带徒弟学:Python游戏开发引擎cocos2d-python-299人已学习 课程介绍 Python语言之所以受欢迎,很大的原因是有很多可以使用的库,Python社区也有很多游戏 ...
- 大学学java的就业方向_学Java的就业方向有哪些?
学Java的就业方向有哪些? Java互联网方向 Java在互联网方向的应用非常多,当然这也有更多的细分.目前采用Java开发互联网网站及应用的IT企业越来越多,这也增加了Java开发工程师的需求.最 ...
- 谷歌、华为、腾讯等纷纷布局,代表未来游戏方向的云游戏抢滩登陆
云游戏"抢滩登陆",由来已久,也备受期待.新旧技术更迭下,难以计数的厂商已经在"云游戏"布局多年,传统厂商和新入局者相互博弈,也在客观上探索着云游戏的商业模式. ...
- 人工智能是不是走错了方向?
作者丨Clyce.霍华德(已授权) 来源丨https://www.zhihu.com/question/445383290 编辑丨极市平台 原问题描述: 我不信大脑每天都在大量的傅里叶变换,来处理视觉 ...
最新文章
- HDU1002(高精度模拟加法)
- 牛客网数据开发题库_练习SQL利器,牛客网SQL实战题库
- 机器学习是深度学习之母
- 华为鸿蒙系统手机销量,两个品牌助力华为新生,但最终会是谁拯救谁
- 如何找到SAP ABAP odata服务实现的具体backend 系统
- 全国计算机等级考试题库二级C操作题100套(第56套)
- 全国计算机准考证打印2015年,甘肃2015下半年全国计算机等级考试准考证打印时间...
- Apache配置多个监听端口和访问网站的方法
- @import注解_Spring Boot 2 实战:@SpringBootApplication注解浅析
- mysql查询连续次数_Mysql如何查询连续的时间次数
- Deepin 安装CodeBlocks
- LINK : fatal error LNK1104: 无法打开文件“ucrtd.lib”
- js表单验证(提示版)
- brctl 设置ip_Linux 网桥配置命令:brctl | 学步园
- Free Pascal初次体验(有亮点哦)
- 期货开户后需要银期转账绑定
- 公开密匙(public key)和专用密匙(private key)
- pyautogui在网页内写入excel文件内容
- 汽车充电桩检测设备TK4860C交流充电桩检定装置
- element 表格全选,,翻页选中取消相关效果
热门文章
- Realm数据库拾遗
- Nvidia推出强大的新图形芯片Tesl V100加速进军AI和深度学习的步伐
- JDBC连接sql server数据库及其它
- iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)
- Java 并发编程中使用 ReentrantLock 替代 synchronized 关键字原语
- EXCEL公式、函数、图表应用技巧800问
- 职场经典小故事-II
- CodeChef TWOROADS(计算几何+拉格朗日乘数法)
- 【题解】 CF718C Sasha and Array
- LCUI.css 0.1.2 发布, 基于 LCUI 开发的 UI 组件库