全本小说网 > 灵异恐怖 > 夜半鬼入梦 > 第十九章 克苏鲁神话

第十九章 克苏鲁神话(2 / 2)

所以可以下结论了。

玩游戏是不是浪费时间

这取决于你。

如果你玩游戏的时候:

认为游戏内的目标是最重要的,并且始终被其牵着鼻子走,那么你在浪费时间。

如果你觉得游戏对你没有意义,那么你在浪费时间。

5

所以,

我们应该怎样对待游戏并且保持一个良好的游戏态度呢

首先,认识到游戏就是无用的。

游戏的价值只在其过程,所以只需要尽情地享受游戏的过程就好。

不要因为多巴胺或者是某些廉价的反馈而沉迷,

也不要因为游戏目标很诱人而被目标所牵引,走向工作式的劳动过程。

其次,认识到自己玩游戏是自我的选择。

玩游戏并不是对于现实的逃避,

并不是对自己反馈系统的妥协,

玩游戏就是自我自由自愿的选择

只要你觉得游戏之于自己,现在比其他东西有意义,那么现在就去玩就好了。

6

在这个社会中,密密麻麻的人挤着嚷着,寻找着自己的价值和意义,

常有人自大地宣扬自己的价值并且用其衡量他人,

形成各种社会的“主流价值”,

让那些本来有自己价值的人们都开始质疑自己,

甚至不得不为此伪装或者强行改变。

但是人都是要死的,

对于不走向佛教的我们,

用自己能找到意义的方式

活过,笑过,哭过就好,

就让你的悲喜自然地绽放和舒展。

参考书目:

1尤瓦尔赫拉利:人类简史北京:中信出版社,2014年。

2伯尔纳德舒兹:蚱蜢:遊戲、生命與烏托邦臺北:心靈工坊文化,2016年。

es,gaiard,foio

4题图来自西西里的美丽传说,自己截的。

5本来之前的文末有一首诗,想想删了。

ooke杨宪益译这个答案末尾可见

参考文章:然而都是我写的:

劝君莫再谈“游戏”

如何挽救沉迷守望屁股的玩家

写在卸载阴阳师之前

游戏与人文

个人主页:叶默哲

想法创意都有了,就差一个程序员了有没有想过:也许你配不上一个程序员。

成为一个独立游戏开发者,我认为他自己首先应该成为半名程序员。

这里是知乎专栏自学游戏开发,在上一篇文章一个游戏是如何被设计和开发出来的中,我们已经概览了一个大型游戏的开发过程。但是由于程序方面的内容不便可视化展示,所以那篇文章主要是展示了设计和美术制作流程。现在我们需要来讲一讲的程序方面的事情。首先,我们需要认识到:

1、掌握编程技能的重要性

如果你想成为一个独立游戏开发者,不会编程几乎是不可能的事情。就像一个厨师不会用刀案锅铲。“电子游戏”是一个什么我们这里不谈玩法设计,它的物理本质就可以说是一个计算机应用程序程序是一串cu指令、指令是一串代表01的电磁信息集合;请勿再溯源。开发游戏其实就是开发一个程序软件。而开发程序的过程,我们把它叫作编程。只有学会了编程、掌握了一款游戏引擎,我们才会真正明白:游戏,作为一款软件来说它的本质是怎样的,它是如何运作的。你不知道汽车是如何工作的,你就制造不出一辆车。了解程序,就是了解游戏在电脑上工作的原理。掌握这些知识,不单单是程序员的立身之本,也应该是每一位游戏设计者的基本素养。再者,如果你从未接触过游戏开发,现在开始学习任何其他游戏开发知识,你是不可能在两个月之内自己动手制作出一款可玩的游戏的。但是,你学习编程与游戏引擎的使用,你便能做到。群友真实经历,小小故事汇在我的引导下从职业厨师开始学做游戏,经历两个月的学习之后已经能够独立做出“飞机大战”那样可玩的小游戏了。你若学习美术、或是“设计”,这都不可能实现。这是编程的强大之处。

作为一个专职的“游戏设计师”游戏策划,并不是只会拍脑袋出主意就行了。我认为一个合格的“游戏设计师”至少应当能够编写逻辑脚本,把自己设想的主意用代码实现出来,不要把任何细小的事情都塞到专业程序员的待办事项里。职业的程序员会为设计师提供底层的服务,让设计师不用操心计算机底层的事务,只要把精力放在游戏逻辑本身上。事实上,现在各大游戏引擎的设计思路都是如此,比如unreaenge4强大的bert系统和cryenge推出的atyc系统,都是为设计师们服务的,让他们不用敲任何代码就能编写出基本的游戏逻辑基于可视化编程。为了让设计师们能够自己动手丰衣足食,程序员们已经做出了许多努力,想成为设计师的你,有什么理由不学习一下基础编程呢千万不要想:程序的事情就交给专业的人来做吧。“我”就不需要学了。这种人,就是那种常常说“就差一个程序员了”的人;这种人,也常常是那种只会空想,给团队制造试错成本的那种人。因为他们不懂程序,但要让别人来为他的想法买单。他们不知道他们临时冒出的一个“好主意”可能要让一整个团队忙活好几个月。所以,我建议,每一个想要成为游戏设计师的朋友,都接触学习一下编程。

你只是想静静地画图,做一个安静的美术人员如果你只是想平静地度过这一辈子,顺便在游戏制作领域出一些力,贡献一些艺术力量,那么你只需要专注于升华自己的艺术上限就好了。如果你想对这个领域搞点事情,比如说优化一下美术资源的制作流程,提升游戏画面的行业标准,那么你就不能只是会用hotosho画画图、用3dsax建建模,你需要知道hotosho这款软件是怎么被开发出来的,它的每种图层混合模式采用了什么算法,这些算法用代码如何实现,如果我要扩展它的调色盘功能应该从哪里开始编写。一个能回答这些问题的艺术家,和一个只会用s画画的艺术家,对于工具的理解是完全不同的假设他们的艺术修养一样高。而前者,更有可能推动整个数字绘画领域向前步进。为什么那些艺术创作软件都出自于国外的开发者呢开发一款艺术创作软件,不仅需要专业的程序员,更需要具备编程素养的艺术家们来领导。而我国的艺术从业者们,有几个具备扎实的编程能力而往往一说到这些,那些“大师”们就会开始贬低工具的重要性,转而强调艺术本身。从“从艺动机”层面,许多选择艺考的人其实就是因为文化成绩太差;从思想层面,几乎少有艺术家会想去改进他们所用的工具。如果你不是这样的人,如果你想要成为一个推动数字艺术领域进步的人,有机会的话,你就应当认真了解一下计算机的世界。另外,回到游戏美术本身,一个游戏最终如何展现你画的图、你做的模型,这完全是由渲染管线和shader脚本来控制的,这些都是代码写出来的。所以你认为游戏美术只是画画那只是其中的一个小环节。当然了,说这些只是希望你能对游戏美术具备更多的认识。至于初学,我还是不会给你徒增痛苦让你去学编程的。别紧张,从窗户上下来吧朋友。

包括做音乐也是,现在编曲软件之强大,无不是具备音乐素养的程序员们的功劳。奥巴马说每一个现代人都应该学一下编程,不是随便说说的。写到这里,我希望每一位读者都已经在心里提升了掌握编程能力的重要性。

在后文中,我们开始来认识一下计算机与编程的世界,再之后是编程与游戏制作的关系,最后是编程学习路径。我会力图让每一个高中生看到下面的文字时也能够理解我在说什么,你不用具备什么前置知识,嗑着瓜子顺序看下去便好。

2、计算机与编程的世界

是先学c还是c还是java还是ython还是unity还是oeng首先你都知道这些是什么吗每一个想学游戏编程的人都经历过这样的问题:入门编程语言该学什么我在知乎问答想要自己做一款游戏,需要学习哪些知识中明确说明了先学c再学unity。但是仍然有无数人私信问我到底该先学c还是c。这不是因为他们没有认真看我的回答,而是他们不知道为什么要这样安排,以及很多其他前辈建议他们要先学这样或那样。道听途说,只言片语的回答是解决不了大家心中的困惑的,因此在本篇文章中我想为大家介绍一下计算机和编程语言的世界,这可能会花费一些功夫,因为从来没有人能够在一篇文章的篇幅内完整地介绍整个计算机的世界。我也只能尽力尝试,让大家了解那些语言各是什么,之间是什么关系。在此章节完成之后,我再会解释我们学习安排是如何设置的。

请注意,我现在要开始装逼了:这件事情如果要溯源的话最早可以追溯到亚里士多德开创出“逻辑学”;19世纪的乔治布尔在此基础上发展出“数理逻辑”如果你已经开始学编程的话一定会知道关键字:ax里也有“布尔”运算。就是以此人之名。;20世纪克劳德艾尔伍德香农在“数理逻辑”基础上发展出“逻辑电路”。“逻辑电路”就包括了我们高中所学的:继电器、与门、或门、非门、异或门等等。利用这些工具,我们就能够制造出会计算加法、减法的逻辑电路。还有非常重要的“触发器”、“振荡器”等等。后来的一系列发明,比如说:电子管、晶体管、集成电路可以统统看成是对前面技术的升级和替换。我们得到了会计算的逻辑电路,又经历了一系列的升级和优化,那么现在我们的计算机是如何运作的呢首先可以分为两个层,一层是cua存储器的电路实现,一层是0与1的世界。如果我在这里讲电路设计的问题,我想很多只是单纯想做游戏的人可能会疯掉其实是我讲不来。有一本很好玩的书,叫穿越计算机的迷雾,作者以闲谈扯淡的方式,从电与磁的发现一直讲到了cu的实现,作为计算机硬件入门是一本不错的兴趣书。关于硬件,我们业余选手可以不用知道那么多,只要知道:cu会执行我们的一些命令,我们的命令是存在“存储器”里的0101010110101001010这样的数字来代表。

作为常识我们知道,计算机只认识0和1至少你现在知道了,那么我们就来看一下它是如何运用0和1来工作的。

汇编:

请注意为了方便讲解我就自己创造例子了,可能和实际情况有出入,但是更容易帮助理解。先看一下这一行代码:

000000010000110000001010

看不懂普通人类当然看不懂,但是机器看得懂,而且机器就只能看懂这种形式的信息。这个叫做机器语言,也是二进制码。二进制码是构成如今计算机世界的基础,我们电脑里的任何文件、应用程序归根结底的都是以二进制码的形式存在的。比如:我们常常能够在电脑的文件夹里看到这样一个文件夹:

这其中“b”就是单词“bary”的缩写,意思是二进制文件。打开b文件夹,xe和d文件。对于我们来说,exe就是一个应用程序嘛,比如说:xe、xe。

大家难道没有好奇过:为什么应用程序的的后缀是“exe”呢原因:“exe”是英文词组“executabefie”的缩写,意思就是可执行文件。“可执行文件”的意思是:可以被cu执行的文件。我们前面说过,cu只能执行0101001这样的指令。所以“可执行文件”其实就是这种指令的集合,也就是是一堆二进制码“0000111101010011001001100000111101010011”。所以它才会常常被放在ry文件夹里。有没有发现,那些曾经我们看不懂的文件夹结构、文件名后缀,其实设计得都是有道理的

我们玩的每一个游戏,它们的本质都是这样的二进制文件。所以编写一个游戏,其实最终最本质就是编写出这样的文件:0101010101110010101010101001010101可是

我知道这也太特么为难人了鬼看得懂这些01是什么意思啊鬼:我也看不懂啊但没有办法,现代的计算机只能识别这种简单的机器语言。即便是量子计算机也是玩01这样的量子比特为了让这些机器语言更容易被我们人类所理解,先驱们发明了汇编语言。bynguage”但其实汇编语言很简单,有了汇编,我就能跟你解释前面的0011是怎么回事了。再来看之前的那行代码:

000000010000110000001010

请注意这不是一串随便瞎写的0和1,它是有规律的你们看,以八个0或1为一组,每组中间有个空格。e,每一个0或者1,我们叫做一个“比特”bit。第一个字节:00000001,假设我们规定,它代表一个命令:加法add。我们再规定,如果cu遇到“加法”命令,它就把后面两个字节相加,把结果存到前一个字节所在的地方。于是我们的cu就能够计算加法了。规则是给它这三个数:

第一个是表示加法命令的“00000001”,第二个a和第三个b是两个加数,每次都不同,所以我用x表示那些比特位。同样的道理我们能够制定出减法命令、乘法命令、复制命令等等。比如复制命令:我们规定“00001111”代表复制命令,如果cu遇到“00001111”,它就把后面第二个字节的数据,复制到后面第一个字节的数据所表示的位置上注意这些字节里的二进制数不仅可以当数字用,也可以当命令用,也可以用来表示储存位置。于是我们就有了复制数据的功能了。

这些功能,都是cu中的逻辑电路为我们提供的,我们只需要发送规定好的指令便能使用这些功能。注意,指令的本质是一串0和1代表的信息,但是我们很难去记忆和区分1101这样的数字,所以我们就用“add”代表00000001加法指令,用“y”代表00001111复制指令。在英文里本来就是加和复制的意思,这就很好记。而“add”、“y”等这些指令集合起来就形成了汇编语言。它实际上就是把机器语言一串0和1直译成了英文单词。一般cu认识的指令不多,就那么十几个加上变种一般也就几十个。所以汇编语言中的指令一一对应也不多,大致分为三种:

数据传输类:复制、加载、存储算数逻辑类:布尔运算、加法运算、自加运算控制类:转移、停止

就这么几个指令能干啥你别说,我还真有办法能让你亲自见证一下,就这么几个指令,可以让cu干些什么事。ache这个小游戏。然后开始玩吧。我已经让群友们验证过了,不管有没有学过编程都可以玩几下。而游戏的主体内容,其实就是以一种有趣的方式在写汇编代码。在过关这个游戏之后,你会发现你自己用这几个最简单的指令,让计算机实现了一些简单的功能,诸如:比较两个数字的大小、判断一个数字的正负、让计算机数数、用加法实现了乘法运算、从一组数中找到最小的数如果你在游戏里过五关斩六将实现了这些功能,那么你就相当于解决了上个世纪计算机科学早期那些先驱们所面对的问题。给自己一个奖励吧,点击文章末尾的“赏”就会看到编程学习大礼包额,你说你没有通关没关系,最后几关是比较难,而且这个游戏只是为了让你体验一下汇编编程的感觉。

现在你会发现,汇编语言其实没有多复杂,而且比起那些0011的代码,真是太好识别了。但是那还不够,比如我要计算一个:

z2

这个自然的表达式人人都能看懂吧但是用汇编语言写出来就不那么好看了:

ovx,y

uy,z

divq,105

addy,q

sub,2

addy,

一眼看上去不知道是在干嘛。而且汇编语言也不够“自然”,比如我要做一个赋值操作:

上面这种写法很自然,我们在学数学的时候就是这么写的,但是在汇编语言中它是这么写的:

ovx,y

直译就是:把y移动到x的存储位置这是计算机硬件能够实现的操作。再比如:

ifx

这几行命令,我们用自然语言就能读懂它在干嘛:比较两个数的大小,然后把大的数赋值给小的数。用汇编语言写就是这样:

x,y

jeesscase

jskicase

esscase:

ovx,y

skicase:

ovy,x

用自然语言写很简单的三行命令,用汇编写就需要这么多行才能实现。

还记得当初我们为什么需要汇编吗因为机器只能识别0和1构成的指令,但是那种数字指令对我们人类来说很难识别和记忆,所以我们用英文单词来一一对应那些数字指令,那些英文单词构成的指令集合就成为了汇编语言。新的知识点:当我们写出汇编代码后,在真正交给cu运行之前,我们得把汇编代码翻译成机器码,因为cu只认识0和1构成的机器语言。因为机器指令和汇编指令是一一对应的,所以翻译过程很简单,就像把简体字翻译成繁体字。

先驱们尝试把汇编语言简化的过程中,想到:既然要翻译,那么我们能不能创造一种更简洁的语言,然后把它翻译成相对复杂的汇编呢就像把文言文翻译成语素成分更复杂的现代文。

“私见张良,具告以事“翻译为gt“私下会见张良,把事情详细地告诉了他“

从这个想法出发,c语言诞生了。实际上c语言是在b语言的基础发展出来,b语言是在bc的基础上发展出来的,的基础上发展出来的。在c之前还有个十几种其他编程语言。不要管辣么多,静静听我吹就好。

c语言

你们看,汇编语言多复杂,因为它和机器硬件实现的指令一一对应,所以光改造它而不改造机器指令的话毫无意义。所以我们不如创造一种新的语言,然后把它翻译成汇编吧语言有许多强大的优点。但是在此,顶着老师和同行们的压力我想让新手知道的是:函数。

函数是什么当我们在写代码的时候,可以想象为我们写的每一行都是一个指令。我们写十几行指令来实现一个乘法运算,用二十几行写一个排序操作。程序猿是世界上最懒的物种,他们不想每次要做乘法时都写十几行代码。能不能用一行指令代表十几行指令就像:

指令集a和指令集b所描述的就是完全同样的事情。但是a用了7个指令,b用了5个指令。如果你要在这件事件上偷懒,你是愿意以a的形式还是b的形式来写这个指令集呢。我不知道你的选择是什么,但是作为世界上最懒的物种来说,程序猿在编程的时候,能少写一行就不会多写,能少敲一个字母就绝对不会敲两个。所以在碰到上面这个问题时,采用b的写法无疑。那么如何实现呢假设指令集a中的每条指令都是计算机能够识别的指令,指令集b中的第3条“把大象装进冰箱”是计算机不能识别的,是我们自己虚构的。但是我们要使用这条指令,因为它对于我们来说很省事。现在很简单,只要规定:我们每次写“把大象装进冰箱”这条虚构指令,就自动把它翻译成“打开冰箱、把大象塞进去、关上冰箱”这三条原生指令。翻译过程不用担心,前人们已经写好了各种翻译器能够现实这种效果。

那么,上面我们虚构出来的那条指令:把大象装进冰箱。其实就是我们所谓的函数下面展示的是在c语言中创建一个函数的形式。

把大象装进冰箱大象x

{

打开冰箱;

把大象x塞进去;

关上冰箱;

}

下次想干这件事件的时候,就只要写一句:把大象装进冰箱大象巴拉。括号里写哪头大象,就装哪头。那么把大象装进冰箱就是一个函数。

有了函数这个东西,世界上任何复杂的任务都可以被拆分成最简单的单个任务。当我们学c语言的时候,一定要把函数的用法学好。我认为这也是新手学习c语言的主要任务。

更高级的编程语言

按照学院派的编程学习路线,计算机专业基本都是先学c语言,然后学c,,然后学onjs,然后回去再学汇编呀、电路呀什么的。想必大家都熟悉这套方案。

其实学习一个东西,从根源开始了解接触,从底层学到顶层是一个自然的遵循逻辑的学习方式。在计算机世界中,如果说从真正的根源开始学的话,估计真得从逻辑电路开始了,然后学到汇编语言,再学到c语言,再学c。但是为什么学院们都选择从c语言开始呢一是因为相比起汇编语言,c语言更能够学以致用,使用起来更方便;二是因为,现在许多流行的编程语言,比如c、java、c、ython都是类c语言的,首先是语法上都是仿照c语言的风格来设计的,其次它们的一些技术原理是建立在c语言的基础之上的。它们之间的关系就好比“汉语”与“北京话”、“四川话”、“重庆话”、“广东话”之间的关系,其中c语言就是汉语。所以c语言作为广大语言的根基,把它当做入门编程语言来学习是没有问题的。再以它为中心,向高层语言和底层原理来扩展学习,往往计算机专业的同学到大三就能把整个计算机体系打通。

编程语言发展史

刚刚我们才讲到了c语言。并且说了游戏领域中比较重要的几种语言与c语言的关系。从这张图中我们应该能够更清晰看到这几种语言的发展脉络。每一种新的语言诞生,都摒弃了一些前者的弊病,加入了自己优秀的特性。但无论怎样,每一次编程语言的发展和进步都是在前人的基础之上进行改良和创造,很少有几个语言是凌空出世的。正因为这样,所以编程语言之间的差别,并不是天差地别。并不是我选择了学习java,就意味着放弃了c;也并不是我如果不先学c语言,我就学不懂c。编程语言之间都是触类旁通的,只要先掌握了其中一种,那么其他的语言就能很快掌握。

再看一眼上面的图,接下来我来讲讲c、c和、ython的关系。

c

首先经过我们上面一顿瞎bb,已经知道了c语言是怎么来的,而且知道了c语言的语法比较接近我们的自然语言,语言写的代码,在被cu运行之前,需要翻译成汇编代码,再翻译成机器码。我们对这个设计很满意,使用了好多年。后来在使用中,特别是开发一些大型项目,比如用c语言开发一个计算机操作系统时,发现有问题处理起来很麻烦,先辈就对c语言进行了改进。有一次改进后新增了一个叫“类”的功能,这个功能很牛逼,导致那个版本的c语言直接脱胎换骨。这种与众不同的牛逼需要在名字上体现出来,所以他们学习ihone的起名策略,在名字后面加了个“s”。“cs”“c”。一个不够,那就两个“css”“c”。顺便剧透一下c的起名策略:“c”“cssss”“c”。所以c是c的升级版,多了一个核心功能:类。语法没有变,本质的东西没有变,还需要被翻译成汇编,然后翻译成机器码,再交给cu执行。所以学校里安排先学c语言,再学c,其实这种说法是有点狗屎的,就好像是说:我们先学习“浮水”,再学习“游泳”。本来我们学习游泳的过程中就会学习浮水,但是就要把学习“浮水”先说一遍,让人误解为这是两个差别很大的东西。所以懂了吗我再说明白一点:学习c就是学习一个高级版本的c语言,学c的过程中,就会先把c语言的那些东西学到。所以不存在:如果不学c语言打基础,就学不好c。如果再有人问这个问题,就把这一章节贴到他脸上去。

另外补充:c从c发展出来后,c语言也没有闲着,自己还是在不断发展,比如后来发展出了objectivec。严格意义上来说,“学习c语言”和“学习c”确实是不一样的,因为要去研究它们不同的语言特性。但是对于没有学过任何编程的初学者来说,最开始就是学习个语法认识几个关键字而已,根本到不了研究语言特性的程度,所以两者说法对他们来说几乎没啥差别。

c和其他高级语言

我们知道现在两方对峙,操作系统是os和android三足鼎立我们不知道ux。可是你们知道上世纪八九时年代,计算机市场是繁花绽放,各种各样的硬件、操作系统充斥在硅谷整条小吃街。那个年代的码农,随手写一个程序,并不是写完就能到处用的啊。就算现在也不是啊。原因很多,可能cu不一样,操作系统不一样那怎么办先辈们想到了一个胆大包天的方法:我写一个软件,这个软件去模拟cu硬件,然后再写其他的程序,把这些程序编译成这个虚拟cu能够执行的机器码,然后让虚拟cu去执行程序。请再读三遍

这样,只要所有的电脑都提前装好我这个虚拟cu软件,那么其他那些杂七杂八的软件统统都在我上面可以运行了完美解决跨平台问题。

有了这个想法之后,先辈们就开始动手去写这个牛逼哄哄的虚拟ache

看到这里,聪明的你已经看破了真相,原来on编写的程序都不是直接交给真正的cu运行的,而是交给了一个模拟cu的软件运行的把我们的程序交给了另一个程序来运行把我们的程序交给了另一个程序运行明白吗,为什么那些程序猿都说c没有c快。因为c写的程序交给了c写的一个程序来运行java写的程序也交给了c写的程序来运行ython写的程序也交给了c写的程序来运行再重复一遍就疯了

到现在为止,我们解开了一个新手十大困惑之一:为什么c比其他语言更快。现在我们还在章节“计算机与编程的世界”中,接下来,我们要聊一聊那几种高级语言的不同点,以帮助我们搞清楚新手十大困惑之首:我应该选哪个语言开始学编程

不同高级语言使用感受

这么说吧,当年我才大二的时候,只学过c。从没有专门学过一天其他语言。y写小游戏,我还用oidstudio里写过一个贪吃蛇。我可是一天的c和java都没学过。为什么我能做到呢因为主流编程语言的语法基本都一毛一样,根本就不用怎么学啊。那种差别就像东北话和天津话的差别一样,大家都是从汉语出来的,谁听不懂啊。为了证明几种语言语法上真的很像,我写了一段伪代码,并翻译成不同语言版本,请找不同:

看,这三份代码是在干同样一件事情,是用三种语言所写的。除了第6行比较特殊,其他部分你们能看出什么区别吗是不是真的很像如果掌握了其中一中语法,另外两种有什么难的呢无非就是注意一些细节不同点。总有些人问第一个编程语言学什么,我通常回答“都行都行”,看看上面这张图,我不是瞎说的啊,对于学习些基本语法,了解基本概念,先学哪个真的都行反正都一样。如果把我们学做游戏比喻成学做饭,语言呐、环境呐这些东西,就可以看做是厨具厨房。学做饭的时候,重要的是学习菜肴怎么做,烹饪方法心得,厨具工具的用法是基本的也是次要的。我们随便选个厨房开始学做饭,一旦学会了,那么在另一个陌生的厨房里难道就做不出饭菜了吗不会的。就算是另一个厨房,就算那个厨房里的锅、碗、灶、铲奇形怪状从未见过,习惯习惯也不影响我们做饭呀,因为工具毕竟还是那些,变其形式而不变其本质。

那么在这种情况下,我们应该选那个语言开始学习呢总要有一个选择。这个选择就是c。y是用c写代码不考虑js。y是我最推荐新手学习的游戏引擎。y咯。如果有人问:“我想用nge,我能不能从c开始学呢”当然可以呀。y来开发,也能很快上手。但是我不推荐这样,因为c细节非常多,更繁琐一点。学起来没有c轻松。而nge呢,用起来也更麻烦一点,也不建议新手拿这两个引擎来考验自己的自信心。

下次继续

作者并非职业程序猿,也不是计算机科班出生,若文中有任何错误,望先辈们在留言中指出,以帮助我修正文章、传播正确有用的知识。

扩展阅读:

1穿越计算机的迷雾

那么,下一节再见。

这里是知乎专栏自学游戏开发第三篇文章:自学游戏开发程序篇一了解计算机的世界。我是窦月汐。如果你是第一次看到本专栏,建议你跳转到自学游戏开发关于本专栏进行了解。如果这篇文章和本专栏对你所帮助,希望你在看到其他游戏人需要帮助时也能把本专栏推荐给他,向每一个游戏人致敬。

我公开了我的一个兴趣交流群,群号为:474891082。为避免无聊人士,设置了5元群费

明确两点:

1游戏开发只是借助了电脑和图形学,没有这两个,一样可以开发游戏。

2图形学是为了在电脑里模拟物体而形成的一门研究领域。

目前,游戏公司偏重于成熟稳定的框架,这样更有利于快速开发游戏,毕竟根本是为了赚钱。只有很少一部分大公司需要自己去搞游戏引擎,只有当开发或者定制游戏引擎的时候,才会用到一点图形学的知识,不过总的来说,游戏只用到了很少一部分图形学知识。更多的图形学知识,会用于建模电影之类的。如果你感兴趣于游戏,那么图形学会让你走的更远,不过短期来看并没有什么卵用,不如踏踏实实把一款游戏引擎用好,这样游戏公司大部分的工作才适合你。

上面全是废话,下面才是我想说的:

首先,无论外部环境如何艰难,作为一个有志于游戏开发的程序员,你都不该自暴自弃,学习更高深的东西,有百利而无一害。同时,作为社会人,你需要提供高质量的服务,这是你应该承担的责任。下面主要是针对对游戏开发和图形学有兴趣,却不知如何下手的同学的一些小小的建议。

游戏工程

在中国,游戏在很大程度上是服务业,不是制造业。一款游戏更多的是内容驱动美工,策划,程序员反而成了辅助,为游戏的实现而提供技术方案。

其次,1游戏顾名思义是为了娱乐而制定的一套规则,它的可玩性高于一切。可玩性是游戏施加给玩家的挑战组合,一个游戏如果能让玩家觉得有无限的可能性,那么就说明这个游戏可玩性比较高。一个规则可能很简单,但是当多个规则组合起来,就会产生不可预测的结果,这就是游戏的魅力。。可以试试用编程来玩玩生命游戏。还有一个梗,如果计算机在一个游戏中无法战胜玩家,那么就说明这个游戏有很高的可玩性。2游戏是一场赌博,比如游戏中的生物,如果它们的属性都千篇一律,是不是很无聊,而如果仅仅是加入了一点随机,会让玩家感觉这个游戏更真实,更有想玩的冲动。计算机的出现,让游戏开发变得更加学科化,因为计算机可以代替人脑来执行规则。这意味着,作为程序员,你就是秩序的象征,你就是上帝。建议:

0如果只想写游戏逻辑,只用熟悉框架,熟悉语言。客户端框架推荐s2d,这些框架都有完整的工具链脚本,资源管理,编辑器,可以让你快速上手,同时社区也比较火热,不用担心遇到问题没地方问。服务端不太了解,每个公司都有自己的服务端引擎吧,我比较看好一款叫kbenge的开源引擎和云风大哥的sky不过是c写的,里面有很多trick,我没敢去看,。,希望朋友们可以推荐一下还有哪些开源的游戏网络引擎对初学者比较友好。

1如果觉得引擎不符合你的要求,你想自己定制,做一个引擎geek。那么ogre是个很好的选择虽然有人说它过分设计,但是你如果很厉害,还是可以改的嘛。另外,龚大大叛逆者的kyge很优秀,我喜欢龚大大这样的人00。

2如果想本科毕业后从事更为核心的设计。学好线代信号系统数学分析概率统计重要程度由高到低很重要,然后去找一些图形学初期的论文看看,主要是理解别人的意思。线代不用说了,游戏中的各种变换都依赖于线代提供的数学工具。信号系统提供的思路,如何从不同的基来表达信号,很大程度会改变你的世界观,对,世界观,然后游戏中的roer懂得吧。数学分析,会培养你的数学演绎能力,这点在数学建模,特别是游戏这样一个理想国里,是非常有用的。概率统计,ai不能多说。

3大学期间,如果想开发游戏证明自己,绝对不要要求太高。如果你能找到一个美工同学,那么跟他她一起成长再好不过。千万别因为想自己做一款游戏而走偏了方向。ube上下载了将近der教程,到最后,可以做一些基本的物体,调一些动作,做一些纹理,而且全是用一个鼠标完成,至今不会用数字板。这些工作你可以投入一些时间,但是这些时间你可以用来做更有意义的事情,比如成为一个编程高手。

4可以考虑实现一个软渲染器,很多人推荐,虽然我没去做过,不过应该收益蛮大。它可以让你对渲染的本质有所理解,同时增加你的代码掌控力。推荐3d游戏编程大师,理解核心即可。

5电子游戏开发,需要各方面学科的能力,cdirectx问我为什么不写oeng,软件架构,编译原理,网络,数据库。都要尝试动手去做比如学操作系统,你就可以试着给一些简单的cu写个系统,不要是x86架构,因为你还只是个学生;数据库的话,你可以先尝试写keyvae型的数据库;网络的话,可以自己试试写个网络库;编译原理,一个简单的脚本语言;这些你都可以去尝试,比你考高分有用的多。这句话我想说三遍。

kover,希望你常去看看。

7记得把你作品保留下来,然后不断对它迭代,如何把它保留下来是门学问,我就因为太关注于本身能力的修炼而忽略了这个。大四之前写过的代码和硬盘因为一杯咖啡全送进了回收站forever。如果你是一个有心的人,那么找一份游戏相关的工作完全不是问题。

8紧接着上面的一点。hub,自己写个博客。很重要,不要嫌麻烦。血泪教训。

9说到图形学与游戏的关系。不得不谈到一个人,也是我最崇拜的一个人。ack。关于他的逸闻趣事有许多。最出名的是那个开根号的3759df,让游戏中最常用的函数快了4倍也是那本do启示录让我对图形学和游戏开发更加神往。

10上面说了点工程方面的,更多是围绕游戏领域。然而在图形学这个领域中,有许多细小的分支更值得关注。具体的一些见硕鼠酱的答案。我的答案会更偏向于保守经典的领域。

图形学

图形学还是交给大牛们介绍比较好,不过作为入门,我挑了几个经典有趣核心的方面说说。

rabebody。这是我比较喜欢的一个子领域。它主要是研究物体的物理性质,如何模拟物体的受压形变及其恢复过程。比如一个植物,你将它折弯,松开,它会摆动,如何在计算机中表示这些摆动呢有两个可选方案,1asssrgsyste是将物体受压运动看成由很多小弹簧共同震动产生的。ioyi大神在麻辣马爱丽丝梦游魔镜中关于头发的建模如果我记得没错,就是y大神写的吧关于y大神同时感谢他翻译的游戏引擎架构,质量非常高,那篇文章算是dbody的一个入门吧。2有限元方法。

刚加入知乎,如果稍微有点帮助,希望读者给个赞。

接下来不断的迭代这个答案,希望把一个问题回答得完美一点。

不断的迭代是个很有意思的事情,我都不想去干正事了,特别是有许多朋友给的赞,让我很开心

本文作者:oki不吐槽会死星人,喜欢一个人玩游戏,半个avg死忠。

我认为,人的思维缺乏将已知事物联系起来的能力,这是世上最仁慈的事了。

人类居住在幽暗的海洋中一个名为无知的小岛上。

这海洋浩淼无垠、蕴藏无穷秘密。但我们并不应该航行过远,探究太深。

洛夫克拉夫特

这是迷失岛制作组redfishga官网上关于这款游戏的介绍。

也许光凭这段引自克苏鲁神话之父的言论,以及redfishga这个新兴的小团队,很难看出迷失岛有何出彩的地方。

但是要是加上制作团队ttonga以及南瓜先生大冒险,熟悉国内独立游戏圈的人应该就会明白。

这款风格神似南瓜先生大冒险的新作,是ttonga正在打造的第二款作品。

从极度类似的风格来看,也许我们可以把它当作南瓜先生大冒险的续作,虽然两款游戏并没有内容上的交集。

目前迷失岛正在做最后的收尾测试,计划在6月份正式发布,上周他们还将它带到了摩点网、egogo等众筹平台。

有趣君参与了众筹,秘密打入了众筹粉丝群,并跟这款游戏的制作人聊了聊。

在摩点网上,迷失岛的众筹发起者是小棉花,在国内独立游戏圈还算知名,他是ttonga的创始者,也是南瓜先生大冒险的制作人。

南瓜先生大冒险获得的诸多荣誉让人们记住了他,然而棉花自己创作独立游戏的故事其实更像是一场大冒险。

棉花出生于1975年,国内独立游戏人提起他都说是一位友善有爱的大叔。

但他本人比较反感别人叫他大叔,我称呼他棉花大叔的时候,他反应比较大,说不要叫大叔。

我说我在听他dieace的分享演讲,他问是不是又老又丑。我又说我听的是音频版本,他连呼还好还好。

我还找到了十年前他参加插画设计大赛拿奖时候的照片,简直年轻帅小伙一枚,不过当时他却称自己“算是个老人家了”。

在qq资料上他填的是19岁,从心态和表现上看确实比我年轻好几岁。

1997年棉花毕业于吉林东北电力大学,专业是电力相关,毕业后获得了能源国企的“金饭碗”。

但醉心于绘画的他最终还是选择了艺术这条不归路,工作之余他依旧坚持绘画创作,自己画画卖画甚至办过画展。

搞艺术的都知道,说这是条不归路并不是调侃,一段时间之后四处碰壁的棉花开始寻找新出路。

新世纪开始,电脑及互联网开始在国内兴起,棉花凭借着绘画功底开始自学fsh动画和三维动画制作。

他跟朋友一起成立了“二极管工作室”,主打制作fsh游戏,这可以说是国内最早制作游戏的一批人了。

这里有个很好玩的插曲,在我加入迷失岛众筹粉丝群的时候,群里有玩家分享了棉花十多年前制作的fsh游戏。

没想到这些封装成可执行文件的fsh小游戏这么多年后还可以玩,我试玩了抓鱼和找不同两款游戏。

抓鱼更准确的说其实是“炸鱼”,一个小孩在岸边丢炸弹炸鱼,丢出去的距离根据你点击鼠标左键的长短控制,需要很好的手感才能在一分钟内炸死所有鱼。

找不同则是类似前几年很流行的“大家来找茬”,左右两幅画在限定时间内点出所有不同之处。

这些fsh游戏虽然已经初步具备游戏元素,而且十多年后来看也不算差。

但fsh游戏总归是小打小闹,只懂美术的他明显将游戏做成了插画集,他们也很难弄出其它更深入的类型。

随后他们给一家娱乐网站开发了数十款fsh游戏,谁知道几个月后该网站弹尽粮绝后关闭了,他和哥哥决定自己掏钱开发休闲网游。

游戏做了三年,但没有经验的他们难以最终成型,卖掉这款半成品之后他们转而承接美术外包为继。

直至2009年,这家小公司终于淹没在高涨的商业浪潮中,棉花又过起了之前卖画的生活。

卖插画、卖油画、卖国画,出版绘本、工具书籍,还做了许多明信片、公仔,甚至去丽江画旅游地图。

按他的说法就是“骗骗文艺青年,挣点零花钱”。

很多人可能无法想象这样的生活,但棉花还是坚持了好几年,而且对于游戏他并没有死心。

2011年他接触到了游戏制作工具gaaker,两个月后鼓捣出了卡卡大冒险,一款类似超级马里奥的游戏。

在dieace的分享演讲中,他多次调侃说制作游戏只是因为很想赚钱,想赚很多钱。

但真正有人想把卡卡大冒险买下来卖到国外去的时候,他又犹豫了,他不想卖。

他说这算不上好游戏,也得到了很多朋友善意的批评,他没想到这款游戏能够挣到钱。

然后他又开始制作一款名叫杀死卡扎菲的游戏,因为当时的国际时政就是卡扎菲被反对派打死,算是蹭个热点。

他拉上了网上认识的一位程序员,借鉴了一些其它游戏的玩法,制作了这款游戏。

本来这只是一款恶搞鬼畜作品,但后来棉花发现国内有不少厂商盗版了他的游戏,本来没发布的游戏却原封不动被别人发布了,甚至游戏一些关卡还打着他的英文名tton。

后来他才搞清楚,原来这游戏被那个一起合作的程序员卖掉了,卖了一万块而且没有告知他。

这件事闹大之后,棉花并没有追究这位程序伙伴的罪过,他说不想毁了这位年轻小伙的前程。

甚至之后,他还开启了杀死卡扎菲2的制作,不过最终这款游戏也不了了之,只在某些小游戏平台简单试了试。

经过这些磨练之后,棉花觉得总是这样不了了之不行,还是要认认真真打造一款作品。

然后他开始了一款叫逃离地下城的筹备,画了很多场景概念图,并将它推上了国内最早的众筹平台。

这时候的众筹在国外都是新兴模式,kickstarter游戏众筹最早的神话破碎时光也才开始,棉花不说国内第一人吧,但确实够早。

不过最后由于国内众筹的局限性,以及受众宣传等诸多因素,这次目标一万人民币的众筹只收到了54名玩家的4400元,并没有成功。

再后来他又将目标盯上了独立游戏大赛,igf独立游戏节deendentgasfestiva。

cha他制作了一款名为山神庙的中国古典风的作品,只做了一个关卡,但他觉得游戏不够好,最后没好意思投给igf评选组。

这一年评选组比较青睐中国风,另一款水墨风的作品fish获得了学生组最佳作品,只可惜棉花没有参赛。

不过这款中国古典风的游戏素材他并没有闲着,而是将其改造成了一款手机主题。

最后就是他的第四款作品南瓜先生大冒险了。

我问他前后共做了几年独立游戏,他回答说从2012年开始,很明显他觉得南瓜先生大冒险才算是他的真正。

他说南瓜先生大冒险起源于一个很逗比的事情,来自于一个新闻,福布斯漫画家排行榜。

画漫画原来也能这么赚钱,那他就画了一个南瓜先生,做起了走上人生巅峰的梦。

后来他又在独立游戏群里认识了蛋蛋,脸圆圆的也就是番茄先生。

蛋蛋最初来到团队的身份是编剧,给南瓜先生漫画编剧情,棉花当时画大饼说成功了一年分给蛋蛋500万,后来这成了他和小伙伴之间互相调侃的一个梗。

两个人一直折腾了小半年,然后又觉得不行,还是回头做游戏。

于是蛋蛋的身份就从编剧变成了程序,从头开始学unity。

过了两个月,他再次将南瓜先生与命运大冒险也推到了众筹平台,这次将目标定为5000元。

然而结果却比第一次还惨,只收到了15名玩家的1360元。

但他们并没有灰心,还是继续着游戏的制作。

棉花甚至发出了一则招聘启事:“招收美术、程序、策划。条件:必须一流。待遇:暂时无钱,只有鼓励。”

随后他们收到了一家天使投资机构20万的投资,棉花注册了“胖布丁”公司,名字取自英文“uk”。

cha,他们带着南瓜先生大冒险荣耀归来,一举夺得最佳美术奖。

其实这也并不是什么很好的,他们又埋头一年多,直到受到索尼的亲睐,南瓜先生大冒险成为了国行首发游戏之一。

但国行主机的境况大家也都看在眼里,此时距离棉花赚钱的调侃还很远。

半年后,他们将南瓜先生大冒险推到了移动端,由乐逗游戏代理,他们才算是松了一口气。

又过了半年,也就是现在,他们马不停蹄又将推出新作迷失岛。

迷失岛的开发其实早就在进行之中了,事实上ttonga手头一共有四款游戏在制作当中。

经过两年多的发展,原本只有棉花和蛋蛋的团队,现在成长到了6个人,但6个人同时搞4款游戏依旧让人震惊。

readfishga这个新团队则负责迷失岛的发行,他们也只有少少的5个人,加上tton人。

早在去年7月份就已经有不少玩家体验到了迷失岛的测试版本,这近一年几乎都是在给游戏添加细节,以及付费模式的探索。

很可惜由于时间以及设备的原因,有趣君这次并没有试玩到这款游戏,但是在跟棉花的聊天过程中还是了解到了不少信息。

不管是美术风格还是点触式解谜的玩法上,迷失岛都完美继承了南瓜先生大冒险的亮点,我觉得这就是棉花一直坚持的自己的特色。

从视觉看,各方面极似机械迷城,画风简单晦涩但又很顺眼,指点解谜玩法也是avg的一个复古形式。

在棉花的交流里,他表示这种画风叫“表现主义”,就像是爱德华蒙克那幅名画呐喊,跟死亡有关有点灰暗的基调。

之前那些fsh游戏中的角色形象,以及那本名为空心人的城市的3d制作教程的封面,都是这样一种特立独行的形象。

乍一看目光呆滞,就跟梵高那幅断耳自画像一样,满满都是奇异荒谬的气氛。

延续到南瓜先生大冒险这款游戏,我更喜欢将其称之为“荒诞卡通风格”,而这种美术风格也得到了独立游戏大赛以及玩家的肯定。

也许ttonga也有了自己的一套方法论,于是迷失岛也严格将这种风格延续了下来。

而在故事上,迷失岛的剧情则显得更加荒诞和神秘。

高耸的灯塔、奇怪的荒岛、杂糅的建筑风格、神秘的七眼章鱼、埃及风的守护狗神,以及从天而降的外星人。

就跟美剧迷失ost那个永远不能离开、充满超自然因素的小岛一样,而玩家则要解开这座小岛的所有谜题。

听起来又鬼畜又很有挑战不是吗

可惜的是,开头那段洛夫克拉夫特的话仅仅只是引用,棉花表示游戏中并没有太多克苏鲁相关的元素。

在谜题的设计上,迷失岛比南瓜先生大冒险进化了一个层次,找东西解锁的传统套路少了点,更多的是小游戏谜题,比如有些类似见证者的迷宫解谜。

南瓜先生大冒险中非线性的解谜进程,也在迷失岛中得到了加强,多条解谜元素之间的交织,更加考验大脑。

最后在音乐的选择上,棉花也有很多自己的看法。

在dieace的演讲上,他多次提到星际穿越这部电影,他说他看这电影前5分钟就哭了。

朋友问,这还没到情感高潮呢怎么就哭了他说被音乐感动哭,配上画面就更泪崩了。

迷失岛的众筹演示只给出了一首曲子,是南瓜先生大冒险同一位配乐者hurry制作的。

棉花说这是他的老伙伴了,几乎已经是专职为ttonga服务了。

之前他的想法是会慢慢地自己也将音乐这一块抓起来,毕竟某些时候要找到自己想要的感觉,不同的人表达和理解可能会有差异。

但是hurry的表现很好,南瓜先生大冒险的音乐很棒,甚至还推出了原声集。

而这次迷失岛也将会有更优美的音乐体验。

总的来说,迷失岛是一款非常值得期待的游戏,制作人棉花这十几年的“独立游戏大冒险”也堪称奇迹。

他的才气、坚持和勇气,在乌烟瘴气的国产游戏圈简直是鹤立鸡群。

他笔下的那些眼神诡异的神秘小人,或者主角南瓜先生,又或者每一款作品都出现过的戴着宇航头盔的奇男子,都是他存在的痕迹。

他不仅活在跟别人不一样的世界里,还活在自己的作品中。

最后引用一位粉丝对他的评价:

这个游戏的开发者,是个外星人,变态可怕

和我们不是一个世界的。

他的世界充满幻想,想画啥就画啥,好羡慕

你应该能想象这些波浪线代表的是怎么样激动和崇拜的心情吧,后来我才知道他也是ttonga的成员,也许之前那则不给钱的招聘启事真的有奇效。