我经常被问及:一个具有很少甚至没有编程经验的人要如何开始游戏制作。直到目前为止,我总是尽我所能一个一个解答。然而,问题的数量已经增长到了一个难以处理的水平,于是,我便决定把所有的建议汇总在一篇文章里作为参考提供给人们。
这篇文章主要面向那些想开发自己的游戏,但仅有一点点或没有半点编程经验的人们。实际上,我也假定读者根本没有任何的编程知识。我将把重点放在游戏开发的编程和设计方面,而不是艺术方面。我也不准备对游戏行业进行论述(因为这个话题的资料太多了),但是,我会带你浏览一下在制作游戏之前需要做的一些事情。该说明的一点是,不要将我这里所介绍的方法当作唯一的或最好的学习游戏制作的路径,但对于我和其他人来说,它是有效的。
1、选择一门语言
第一件要做的事就是选择一门语言。你有一大堆的选择,包括 Basic、Pascal、C、C++、Java等等,同样也有一大堆关于哪门语言最适合初学者的争论。欲了解各种语言的优缺点,请参阅 John Hattan的绝妙文章《我该使用什么语言》。
我这里建议使用 C和 C++。有些人认为这些语言对于初学者来说太难了,但从我个人角度来说我是反对这个观点的,因为我自己就是从 C++起步的。另外,C/C++是目前最广泛应用的语言,因此,你能找到大量的资料和帮助。至于先学 C还是先学 C++的问题不大,因为一旦你学习了其中一种,再学习另外一种就没太大问题了。不过,如果你一开始就选择 C++,请确信在学习面向对象编程之前,你已经了解并掌握了面向过程编程。(比如说,如果你在不使用类的前提下仍无法编好程序,先不要急于学习类)
如果你发现学习 C/C++是一件很困难的事,不要紧,回过头选一门比较简单的语言来学,比如 Basic或 Pascal。不过我认为,如果你坚持下去,并找一些好的资料,学习 C/C++的问题不大。
你的下一个问题是:我如何学习 C/C++?我很高兴你问这个问题。最好的方法是去听课。有没有老师帮助解答问题,对于你的发展影响巨大,而且编程作业将确保你确实掌握了所学的东西。
如果听课不在你的考虑范围内,下一个最好的办法就是找一些好书。不要把注意力放在那些“大全”书上,因为你终究会买几本。我建议你去一个本地书店,花点时间浏览一下介绍 C和 C++的书,直到找到你能理解并能从中学到东西的一本。同时,你可能还想买几本进阶书或是一本参考书,但一旦你具有了这门语言的部分知识,你会对你需要什么有更好主意。可以在网站BOOKS频道中找到一些建议。
在此,我简要的说明一下我见过的很多入门程序员,尤其是年轻人关心的事情:没有钱买书或其他东西。首先,有许多资源是免费的,包括图书馆和 Macmillan Computer Publishing(他们的网站www.mcp.com上有数百本编程的书)。其次,如果你想成为一名优秀的程序员,你不得不考虑在这上面的投资。利用各种手段(合法的;<)去弄点钞票来。
网络上有大量的 C和 C++的学习教程,但是我认为这些教程作为你学习书本的参考要比作为单独的材料好得多。
2、选择合适的编译器
你写的程序,或源码是以文本文件存储的,你甚至可以用记事本来写 C/C++程序。但是,必须有样东西能把这些源码转化成一个可执行文件。对于 C和 C++来说,这样东西就是一个编译器。
现在有大量的编译器存在,其中有许多是免费的。选择一个合适的编译器是非常重要的,而免费编译器有个好处就是你能一个一个的试,看哪个你最喜欢。但是,免费编译器经常是比商业编译器功能少或缺少良好的技术支持。幸运的是,大多数商业编译器都有与完整版功能相同,但价格便宜许多的介绍版或学习版,唯一的限制是,你不能发布使用该编译器开发的程序(这点你肯定维持不久)。
基本上,你选择什么样的编译器取决于你能花多少钱、你将在什么操作系统和平台上开发程序。如果你准备为 Windows作贡献,我强烈建议使用微软的 Visual C++。它具有一个功能强大的开发环境,能让你倍感轻松,再也没有其他编译器能比它更适合开发 Windows软件了。如果你是名学生,你可以以极低的价格获得一份拷贝。如果你准备在 DOS下开发程序,你最好使用免费的 DJGPP。
3、选择一个目标平台
虽然你可能最终会为各种平台开发程序,你还是应该选择其中之一进行学习。当你学习语言的时候,在没进入图象编程之前,你大概想使用一个非 GUI的操作系统,比如 DOS或 UNIX。这有助于你将注意力集中在语言学习上,从而避开一些高层的问题,如 Windows编程。
不过,一旦你准备开始制作游戏,你就该考虑转换你的
目标平台了。一下是几个常用的平台:
Windows:如果你想在游戏行业里专职工作,或者你想让一大群人玩你的游戏,那么 Windows是你的首选。你的目标客户大多数使用 Windows,且这个情况不会很快改变。目前大量的 Windows游戏使用一种你大概听说过的名为 DirectX的技术。DirectX是一个允许你直接操作硬件的程序库,你可以依靠它写出高性能的游戏来。
DOS:DOS曾经是游戏的主要平台,但这已是昨日黄花。虽然有些爱好者仍然在为 DOS开发游戏,但是已经没有商业游戏是为 DOS开发的了,而且, DOS正由于微软停止对它的支持而走向衰败。如果你刚开始做游戏,别选择 DOS,如果你已经这样做了,不要再停留了。注意:因为有很多游戏编程的书是为 DOS写的,学习这些书时可能会认为在 DOS里开发游戏有理有据。但是,随着 Windows游戏编程书籍数量的增长,这种争论变得越来越少,也越来越没有意义。
Linux:Linux是 UNIX的一个变种,由于它具有稳定、便宜、反微软情节等多个因素,它正变得越来越受欢迎。虽然目前的 Linux用户还比较少,但是随着它的热爱者和市场的潜在增长,它也成为了作为目标平台的可行选择。
Macintosh:苹果机拥有一群数量不多但非常忠诚的追随者,几乎每个我见过的苹果机爱好者都有一个强烈渴望更多苹果机游戏的愿望。我没有看过多少在苹果机上开发游戏的资料,但我确信确实有,因此,这也是个合理的选择。
家庭游戏机:游戏机(如 Playstation、N64、Dreamcast等等)游戏市场非常巨大,前景可观。然而,由于种种原因,开发非商业性的游戏机游戏在目前来说是不太可能的。你为游戏机开发的游戏大多都会被商业游戏公司买走。
4、充足电
是讨论真正做游戏的时候了。虽然我所说的大部分内容适用于其他语言,为简单起见,我将假定你选择了 C/C++来进行 Windows编程。
首先,在你考虑如何开始做游戏之前,你应该能很好的掌握 C和 C++。你应该了解并精通指针、阵列、结构、函数,以及类等。做到了这一点,你就可以开始制作游戏了。
本文无法教授你关于制作游戏所该了解的一切。幸运的是,这也不是必要的。有很多关于这方面的书,网上也有数以百计的教程。GameDev.net应该会有目前你所需要的一切。下面是我对你起步的一些建议:
学习一本或几本书。对于 Windows游戏的初学程序员,《Tricks of the Windows Game Programming Gurus》是一本极好的Windows编程入门教程。在这个站点里拥有许多本站 Books section里所列出的好书。阅读这些书籍,运行所有的例程,反复研读你不理解的章节。
使用网上教程补充书本的不足。网上教程除了阐明一些你阅读的东西外,通常也会包含一些书本上没有涉及的主题。
找专家进行咨询。如果你无法从书上或教程中找到答案,到本站的留言版或聊天室来,这里有许多乐于提供帮助的人。
不要把上面几点当成是个有序的过程,而应当看作是一个循环往复的并行过程。
仅仅是学习、思考是远远不够的,你应当把你所学的东西付诸实践。从一个简单的游戏开始,逐步发展。你可以阅读一下 Geoff Howland的文章《How do I Make Games? A Path to Game Development》。
首先,为自己的工作制定一个计划。不要急于加入一个团队,因为那只会减缓你的学习进程。当你囊中拥有数个游戏时,你将为一个团队作出更大贡献。
关于书本,有件事我要提醒一下:你需要阅读除了游戏编程外的其他书籍。为了制作出你在商店货价里看到的各种游戏,你将不得不钻研那些比大多数游戏编程书籍所授内容更高深的话题。有些可能你能从教程中找到,但是,你还是有必要买几本关于图形、人工智能、网络、物理等等方面的书。这是获得计算机科学学位的必经之路,因为你将被要求学习一些你认为与游戏编程无关的课程,而实际上它们是相关的。
5、总结
这里有一些能产生巨大差别的技巧:
要只知道聚集知识,应用是关键。除非你使用了,否则你无法确实知道和理解这些东西。做一些小的测试程序来应用你所学的东西,并切实完成书上每个章节后的习题。
玩大量的游戏。你会因此找到灵感,从而帮助你制作更优秀的游戏。当然,这也是一种受欢迎的解除编程压力的调剂方式。
帮助别人。在你帮助别人的过程中,你会学到更多东西。
完成你的作品。不要陷入这样一种思想的圈套中:“我知道我可以完成这个游戏,但是我有个更好的主意,我要换做这个好的项目。”如果你能坚持有始有终,你会学到更多的东西,并且你有作品证明你不仅仅是空谈。在你具有丰富的经验之前,做得简单一点,不要尝试制作一个又大又复杂的游戏。
出发吧!你该动手制作 Quake 4了。当然,可能不那么容易,但至少你可以从这个方向出发,并且知道去哪里查找更多的信息。经过多年的努力工作,你会成功的!
会c++还不够。还要会vc,游戏ai,图像图像编程这些。
C/S服务器与客户端通迅,WINDOWS32窗体,windows消息截获与处理,还有就是渲染UI和游戏事件逻辑编写,如打怪,升级,吃药,买道具,退出游戏等都是用C++写。
3D方面的是用DX或者OGRE,目前就这两样,还有就是数据库的构建,是SQL还是HLSL来着编写一些脚本,用MFC编开发工具,如地图编辑器。
计算机基础相关知识点:计算机组成原理+操作系统+网络
一、编程必备基础:计算机组成原理、操作系统、计算机网络 1节
计算机基础知识,到底重不重要?智者见智。如果你只想当个普通程序?或许不太重要。但如果你想提升、进阶,那么你必须离不开计算机领域的基础知识。本将带你入门三大基础学科:计算机组成原理、操作系统与计算机网络,快速构建知识体系。...
1-1编程必备基础知识:计算机组成原理、操作系统、计算机网络
二、计算机组成原理之概述篇11节
从简入繁,俯瞰计算机组成全貌,先了解计算机发展史、分类,再理解计算机体系结构、层次语言,快速形成对计算机的第一印象,蓄力前行。
2-1本章知识概要与学习计划
2-2计算机的发展历史
2-3计算机的分类
2-4计算机的体系与结构(09:57)
作业:2-5【讨论题】谈谈计算机发展对个人成长的影响
2-6计算机的层次与编程语言(14:46)
2-7计算机的速度单位(11:23)
2-8计算机的字符与编码集(11:45)
图文:2-9计算机组成原理概述篇专项练习题 17道
图文:2-10专项练习题答案揭晓与解析
2-11【加餐】计算机组成与人工智能(14:59)
三、计算机组成原理之组成篇16节
冯诺依曼机把计算机划分为重要的五大组成部分:输入设备、输出设备、存储器、运算器和控制器,本章将来探讨五大组成部分的细节,以及各自的工作原理。
3-1本章知识概要与学习计划(03:39)
3-2计算机的总线(16:13)
3-3计算机的输入输出设备(13:58)
3-4计算机存储器概览(11:59)
3-5计算机的主存储器与辅助存储器(13:42)
3-6计算机的高速缓存(20:13)
3-7计算机的指令系统(12:15)
3-8计算机的控制器(04:43)
3-9计算机的运算器(03:52)
3-10计算机指令执行的过程(11:38)
图文:3-11计算机组成原理组成篇专项练习题 27道
图文:3-12专项练习题答案揭晓与解析
作业:3-13【讨论题】你是否具备自行组装一台计算机的能力?
3-14【加餐】指令寻址与数据寻址(17:26)
3-15【加餐】CPU访问存储器的详细过程(12:06)
3-16【加餐】总线架构与总线控制流程(15:09)
四、计算机组成原理之计算篇14节
本章将带你深入运算器,探讨CPU工作的细节。二进制和十进制是怎么转换的?计算机是怎么表示数字的?数字之间又是怎么样运算的?本章内容将为你一一解答。
4-1本章节知识概要与学习计划(02:21)
4-2进制运算的基础(17:03)
4-3有符号数与无符号数(06:10)
4-4二进制的补码表示法(06:59)
4-5二进制的反码表示法(11:02)
4-6小数的二进制补码表示法(02:53)
4-7定点数与浮点数(19:59)
4-8定点数的加减法运算(19:45)
4-9浮点数的加减法运算(17:17)
4-10浮点数的乘除法运算(03:24)
图文:4-11计算机组成原理计算篇专项练习 15道
图文:4-12专项练习题答案揭晓与解析
作业:4-13【讨论题】在实际开发中有哪些避免溢出的小技巧?
4-14【加餐】IEEE754标准详解(18:21)
五、计算机组成原理实践7节
知行合一,计算机组成原理似乎离软件编程很远?其实不然,项目开发中有相当内容参考了其中的设计原理,本章将手把手带你实践笔/面试考察频繁的【缓存置换算法】。
5-1本章知识概要与学习计划(04:16)
5-2双向链表的原理与实践1(14:32)
5-3双向链表的原理与实践2(14:06)
作业:5-4【讨论题】双向链表还有哪些应用?
5-5实现FIFO缓存置换算法(09:34)
5-6实现LRU缓存置换算法(13:37)
5-7实现LFU缓存置换算法(24:59)
六、操作系统之基础篇19节
操作系统与工作生活密切相关,那么什么是操作系统?操作系统是怎么演进的?操作系统提供了基本的功能?本章将结合Linux操作系统,带你深入浅出操作系统的基本内容。
6-1本章知识概要与学习计划(06:02)
6-2操作系统概览(26:17)
6-3进程管理之进程实体(14:48)
6-4进程管理之五状态模型(08:41)
6-5进程管理之进程同步(20:48)
6-6 Linux的进程管理(23:20)
6-7作业管理之进程调度(11:40)
6-8作业管理之死锁(16:43)
6-9存储管理之内存分配与回收(12:42)
6-10存储管理之段页式存储管理(13:31)
6-11存储管理之虚拟内存(06:10)
6-12 Linux的存储管理(16:13)
6-13操作系统的文件管理(19:04)
6-14 Linux文件的基本操作(12:22)
6-15 Linux的文件系统(17:33)
6-16操作系统的设备管理(11:03)
图文:6-17操作系统基础篇专项练习题 39道
图文:6-18专项练习题答案揭晓与解析
作业:6-19请回答操作系统是如何启动的?
七、操作系统之提升篇12节
专项提升,操作系统的重要性无需置疑。那么这其中又有哪些知识是在学习工作当中经常使用的呢?本章将理论结合实践,专项提升其中的重要知识点。
7-1本章节知识点概要与学习计划(05:46)
7-2线程同步之互斥量(10:45)
7-3线程同步之自旋锁(10:10)
7-4线程同步之读写锁(14:04)
7-5线程同步之条件变量(15:48)
7-6线程同步方法总结(04:38)
7-7使用fork系统调用创建进程(10:56)
7-8进程同步之共享内存(17:15)
7-9进程同步之Unix域套接字(13:11)
作业:7-10请拓展调研进程间通信还有那些方法
7-11【加餐】进程同步之信号(16:40)
7-12【加餐】协程的基本原理梳理(16:34)
八、操作系统实践9节
学习操作系统,更多时候是参考其中的优秀设计与实现,应用在项目当中,本章将通过实践完成【线程池/异步任务执行】的项目,回顾操作系统中的重要概念。
8-1本章节知识概要与学习计划(06:02)
8-2 Python同步原语(03:44)
8-3实现线程安全的队列Queue(20:08)
8-4实现基本任务对象Task(06:27)
8-5线程池简介(04:08)
8-6实现任务处理线程ProcessThread(09:28)
8-7实现任务处理线程池Pool(12:42)
8-8编写测试用例(09:05)
8-9实现异步任务处理AsyncTask(18:37)
九、计算机网络之概述篇15节
要学好计算机网络的内容,首先是得对计算机网络有个全貌的概况了解,七层模型,四层协议,都是需要先理解的概念,本章带你入门计算机网络。
9-1本章节知识概要与学习计划(05:28)
9-2计算机网络的发展简史(10:41)
9-3层次结构设计的基本原则(14:12)
9-4现代互联网的网络拓扑(11:50)
9-5计算机网络的性能指标(10:24)
9-6物理层概述(12:56)
9-7数据链路层概述(11:58)
作业:9-8【讨论题】在数据链路层和物理层中工作的设备都有哪些?
9-9数据链路层的差错监测(19:03)
9-10最大传输单元MTU(04:34)
9-11以太网协议详解(13:40)
图文:9-12计算机网络概述篇专项练习题 19道&面试常考题分享
图文:9-13专项练习题答案揭晓与解析
9-14【加餐】1G网络到5G网络的演变(16:29)
9-15【加餐】点对点PPP协议详解(13:11)
十、计算机网络之网络层篇16节
网络层协议,即包含我们常提及的IP协议,初此以外,还有我们使用ping程序时用到的ICMP协议,本章将带你深入理解这些协议背后的工作原理,掌握网络层协议。
10-1本章节知识概要与学习计划(06:24)
10-2 IP协议详解(19:01)
10-3 IP协议的转发流程(10:54)
10-4 ARP协议与RARP协议(11:25)
10-5 IP地址的子网划分(28:06)
10-6网络地址转换NAT技术(11:27)
作业:10-7【讨论题】可以说说你对 IP协议的头部结构的理解吗?
10-8 ICMP协议详解(08:29)
10-9 ICMP协议的应用(13:36)
10-10网络层的路由概述(14:15)
10-11内部网关路由协议之RIP协议(26:36)
10-12 Dijkstra(迪杰斯特拉)算法(14:43)
10-13内部网关路由协议之OSPF协议(14:10)
10-14外部网关路由协议之BGP协议(08:49)
图文:10-15计算机网络之网络层篇专项练习题 25道
图文:10-16专项练习题答案揭晓与解析
十一、计算机网络之传输层14节
传输层实现了两个最为重要的协议,可靠的TCP协议以及不可靠的UDP协议,这两个协议是网络报文可以进行传输的基石,本章将深入探讨TCP与UDP,理解其中的可靠性与不可靠性,以及协议背后工作的细节。
11-1本章节知识概要与学习计划(09:09)
11-2 UDP协议详解(10:16)
11-3 TCP协议详解(17:15)
11-4可靠传输的基本原理(12:39)
11-5 TCP协议的可靠传输(11:25)
作业:11-6【讨论题】为什么TCP能够提供可靠的网络连接,UDP可以提供
11-7 TCP协议的流量控制(09:18)
11-8 TCP协议的拥塞控制(08:55)
11-9 TCP连接的三次握手(11:49)
11-10 TCP连接的四次挥手(09:47)
11-11套接字与套接字编程(12:27)
图文:11-12 TCP协议的四个定时器
图文:11-13计算机网络传输层专项练习题 22道
图文:11-14专项练习题答案揭晓与解析
十二、计算机网络之应用层篇12节
应用层包含的协议则是我们所熟知的诸如HTTP等协议,HTTP协议是浏览网页或者开发网站必备的协议,本章将重点深入探讨HTTP协议的细节,掌握HTTP协议。
12-1本章节知识概要与学习计划(06:25)
12-2 DNS详解(13:44)
作业:12-3简单描述 DNS解析域名的完整过程是什么?
12-4 DHCP协议详解(06:59)
12-5 HTTP协议详解(16:41)
12-6 HTTP工作的结构(10:31)
12-7 HTTPS协议详解(14:40)
图文:12-8计算机网络应用层专项练习题 18道
图文:12-9专项练习题答案揭晓与解析
12-10【加餐】P2P网络详解(14:24)
12-11【加餐】音视频协议初探(11:39)
12-12【加餐】无线网络与WIFI(15:29)
十三、计算机网络实践6节
知行合一,在本章,我们将实现一个【网络嗅探工具】,拦截计算机网卡中的IP报文、ICMP报文、TCP、UDP报文,并解析出报文头部的详细信息,作为一个相对综合的项目,在回顾协议细节的同时,更能提升项目能力。
13-1本章知识点概要与学习计划(04:05)
13-2搭建服务基本框架(12:09)
13-3 Python操作字节序列(13:10)
13-4实现IP报文解析器(19:04)
13-5实现UDP报文解析器(09:45)
13-6实现TCP报文解析器(21:09)
十四、精髓终结5节
温故而知新,使用思维导图系统地回顾本门内容,掌握骨干结构,更加系统掌握,不放过任何知识点。
14-1总结-计算机组成原理(08:38)
14-2总结-操作系统(07:07)
14-3总结-计算机网络(06:53)
14-4总结-编程实践(02:07)
14-5展望(02:50)
十五、全新版升级加餐-新章节导学
本次内容更新以“工作实践必备的基础知识”为主要设计思路,更新四大章节两个部分的内容,并针对前面内容同学们的集中反馈做连贯性内容补充。本次更新后,本门将更系统、更立体、更全面地帮助同学们掌握必备基础知识,夯实基础、助力成长。...
15-1编程必备基础知识【2022年重磅升级】(09:33)
十六、Linux常用基础知识8节
Linux作为工作、开发的必备环境,是每个同学都必须接触和学习的,是“开发必备的基础知识”;本章节在之前“操作系统”部分内容的基础上引申出“常用的Linux基础知识”,帮助大家快速入门Linux,夯实开发基础。...
图文:16-1学前必读-本章知识点梳理&章节导学
16-2 Linux多用户使用权限管理(19:01)
16-3 Linux文件系统使用与管理(22:32)
16-4例行性工作排程(crontab)原理与使用(18:59)
16-5掌握Shell与Shell Scripts入门指导(17:21)
16-6 Linux系统后台服务与daemon进程(18:35)
16-7自研服务部署与Linux托管全流程详解(24:04)
16-8 Linux软件安装与环境管理(18:37)
十七、Linux服务治理基础8节
主流软件系统服务90%以上都架设在Linux之上;服务治理作为服务稳定的基石,相关知识尤为重要,本章,我们将会从零到一入门Linux服务治理的相关知识,并实战完成一个Linux服务监控的项目。
图文:17-1本章知识点梳理&章节导学
17-2 Linux服务的性能监控(25:54)
17-3 Linux Apache服务器架设(18:55)
17-4 Linux Nginx服务器架设(23:50)
17-5负载均衡器与反向代理服务器(15:20)
17-6 Prometheus+Grafana监控服务部署(一)(14:51)
17-7 Prometheus+Grafana监控服务部署(二)(19:00)
17-8 Prometheus+Grafana监控服务部署(三)(21:32)
十八、系统设计理论之基础篇7节
“每一个程序员都应该有顶层思维”,我们除了要学会写代码,更要培养自己项目的“顶层思维”,从知道“怎么实现”到理解“为什么这样实现”的转变,在这些设计当中,思维和理论都是通用又基础的;本章,我们将从架构思维的角度,学习优秀的系统设计理论。...
图文:18-1学前必读-本章知识点梳理&章节导学
18-2后台服务容量提升之扩展性原理(14:19)
18-3分布式系统设计之CAP理论基础(13:44)
18-4高并发系统设计之一致性原理基础(10:51)
18-5高可用服务设计之可用性原理基础(09:17)
18-6高容错服务设计之状态持久化(14:26)
18-7分布式系统必备之一致性协议(22:58)
十九、百万级系统设计实践篇8节
“百万级系统应该长什么样子”?或许从大学出来甚至参加工作的很多同学,都可能有这个疑惑;在本章,我们将在系统设计理论基础的指导之上,结合老师的一些经验,从零到一了解一个“百万级系统”的“成长历程”。...
图文:19-1学前必读-本章知识点梳理&章节导学
19-2系统设计实战之缓存-存储设计(17:22)
19-3系统设计实战之异步机制与消息队列(12:46)
19-4系统设计实战之性能提升利器——池子化设计(10:26)
19-5系统设计实战之消息系统的两种模式(13:49)
19-6一个百万级系统的设计过程(一)(12:32)
19-7一个百万级系统的设计过程(二)(20:10)
19-8一个百万级系统的设计过程(三)(21:21)
二十、计算机基础总结1节
20-1总结
上一篇:程序设计游戏入门基础知识
下一篇:程序设计游戏入门知识点