烦请督促我的游戏功课喔!

游戏夜读 | 怎么让游戏跑起来?

文/良宵听雨。授权“游戏夜读”发表。

让游戏跑起来,最直观的就是,画面不卡顿,不卡帧数,运行流畅。

但细究起来,游戏元素怎么动起来的?规则是怎么实现的?游戏机制怎么运作的?画皮之下,游戏的骨骼是怎么样的?脉络是什么分布?

一万个为什么,一万个怎么样……最后,呈现出来的,是电子游戏程序的运行框架。大部分的基本框架,本质上是一个循环,是一个套娃的策略。一个游戏研发团队,除去项目经理之外,常设的策划、美术、音效、程序、测试等五大职能,所付出的心血,都会被注入这个“运行框架”。

电子游戏的本质是计算机程序。

一个完整的游戏运行框架
可以理解为就是一个循环绘制图像的程序。虽然是最基本的运行框架,也有一个基础结构。整体上是一个“死循环”,在循环里面是需要重复做的事情,分为三大类:更新游戏内容、准备画面、屏幕展示效果。

// 一个完整的游戏运行框架(示意)
gameLoop(){
    while(True){
        gameUpdate(){ // 更新游戏逻辑
            pass
        }
        gameRender(){ // 离屏绘制
            pass
        }
        gamePaint(){  // 前屏绘制
            pass
        }
    }
}

上面示意的这个“框架”取材并改编自《游戏程序设计教程》,该教材由对Greenfoot颇有钻研的何青编著,近年又有了新书2.0,对新手更加友好了。说回这个简洁的“框架”,而且明显可以再简洁,比如只放一个“图像绘制”的函数。可是,为什么不呢?

双缓冲机制
这是一种绘制手法,叫缓冲机制,常见是双缓冲机制。跟计算机图形学、影像成形等领域有关。之所以要采用缓冲机制,是因为只放一个图像绘制的函数,那势必就是直接在屏幕上绘制。但游戏元素多了以后,绘画的速度跟不上肉眼的识别。

一个很简单的例子:翻书画。翻的慢了,画面就卡顿了。因为种种原因,直接在屏幕上作画的步骤,跟在画板上作画差不多,擦除、一笔一笔画上,速度慢了,效果就不好了。缓冲机制的做法就是“蒸好馒头再卖”,先在蒸馒头的笼屉里蒸好馒头,然后再转移到卖馒头的笼屉里。对应的,就是离屏、前屏。离屏一般就是在内存里。

程序设计思路
软件程序有设计方法,电子游戏也不例外。有了运行框架的先入为主,可能会让大部分人都陷入“从上而下”的设计思路。其实,并非如此。更常见的是,原型设计法。先让游戏的一小部分跑起来,然后再去开发游戏的其他部分。

但话说回来,不管是哪种设计法,都离不开运行框架。

游戏夜读 | 刀塔选手比较老吗?

文/良宵听雨。授权“游戏夜读”发表。

前几天回答了一个问题,题目是“为什么感觉刀塔2的选手比LOL的职业选手要成熟”?当时,不假思索,就答了一通……

关于成熟的理解
所谓成熟,可能是心理上的。因为题主也是用的“感觉”这个词,所以很可能探讨的不是生理年龄的问题。于是从年龄角度的回答就有点片面。

成熟也可能是认知上的。比方说,职业选手的说法,也会有电竞选手的说法,其实指称的同一批人,但由于熟悉度、知识领域、语言习惯,会产生偏差。

但生理年龄确实是一个比较容易获取的统计指标,所以抛开题主的问题。准备收集一下职业选手的年龄数据,稍微对比分析一下,就有了年龄层面的认知。

职业选手的年龄,哪里有?
谁会没事公布自己的年龄?还是贴的网络上一搜就能搜到的那种程度呢?还真的能查到不少电竞选手的出生日期信息啊!电子竞技真在崛起。当然,这些状况可能是由于当年玩游戏的孩子们都步入中青年的自然现象。

只是,按图索骥般搜索信息,效率太低。既然电子竞技有点小热,肯定是要有平台或者团队进行电子竞技选手信息的专业管理的。比如战队、姓名、游戏ID、赛事相关、直播间、梗、个人社交主页等等,甚至于恋爱、癖好。

如果能找到上述的这种平台,大概率会有职业选手的出生日期,就能对电竞选手的年龄进行基础的数据分析了。果然,姜还是老的辣,游久网。

五款热门游戏的职业选手数据
经过一番折腾,拿到了《DOTA2》,《英雄联盟》,《绝地求生》,《王者荣耀》,《穿越火线》这五款游戏关注度较高的职业选手信息,其中个人信息部分就有包括“出生日期”这个关键数据。激动。

文/良宵听雨。授权“游戏夜读”发表。

因为这里只关注选手的出生日期,对其他信息不关注,所以需要简单说明一下拿到的有效样本。也就是那些有比较明确的出生时间信息的选手。

《DOTA2》拿到了39位选手的信息,其中23份有效。
《英雄联盟》拿到了51份,其中44份有效。
《绝地求生》拿到了41份,其中17份有效。
《王者荣耀》拿到了47份,其中38份有效。
《穿越火线》拿到了37份,其中22份有效。
合计,一共拿到了215位选手的信息,其中144份是有效样本。

5款游戏的职业选手有效数据量对比(来自:游戏夜读)
应该是一帮有偏样本,但偏在哪里不明确。无效样本提供的大多数是:未知、暂无。是什么原因拿不到这些数据呢?可能是低调,不喜欢曝光。而年纪的大小会不会影响曝光心理,这个可能是另外一个研究课题,不可以轻应作结论的。

另外需要注意的是:数据的错误在所难免。错报、纂改、记录错误、获取失败等等,都会影响数据的准确度,这里只能保证从网络上获取后没有纰漏。

职业选手的年龄数据分析
虽然数据有很多的不确定性,但分析样本总是会有乐趣的。

最大和最小的比较
通过一系列看似简单,实则繁琐的数据处理,终于可以对144位职业选手的出生日期有所认识了!先说其中最早的年份,1989年,一共有2位,均玩着《DOTA2》。其说最晚的2002年,同样也是一共有2位,均玩着《王者荣耀》。其余的140位选手主要分布在90年代,尤其是1995年到2000年这5年间。

144位职业选手的出生年份概况 (来自:游戏夜读)
其中,五分之一的选手,即有29位职业选手都出生于1998年。在今2019年正值法定结婚年龄附近的21岁。其次是1999年21位,1997年19位,1996年18位。

年龄最大的跟最小的,相差13岁。整体分布上,属相、星座都包圆了。

具体是谁我没有看。

平均年龄的比较
144位职业选手的出生年份-箱线图对比 (来自:游戏夜读)
下面计算一些统计量,看一下具体游戏的年龄分布情况。四舍五入。

《DOTA2》跨度11年(1989~1999),涉及10个年份,平均年份值1994.7。
《英雄联盟》跨度9年(1993~2001),涉及9个年份,平均年份值1997.0。
《绝地求生》跨度11年(1990~2000),涉及个8年份,平均年份值1997.1。
《王者荣耀》跨度13年(1990~2002),涉及个10年份,平均年份值1998.4。
《穿越火线》跨度10年(1990~1999),涉及个9年份,平均年份值1994.6。
合计,144位选手跨度14年(1989~2002),平均年份值1996.4。

144位职业选手的出生年份-密度图对比 (来自:游戏夜读)
从拿到的这份数据看,《DOTA2》和《穿越火线》的职业选手们年纪相对大一些。

经典问题:生日在同一天的概率
因为手握144个样本,又是在做出生日期相关的数据分析,那就自然很可能会发现有职业选手是在同一天生日这个现象。

依据经典概率,144份样本中至少有两个人生日在同一天的概率是高达14个9。

那些生日在同一天的职业选手
是时候发现同年同月同日生的职业选手了。一度怀疑是不是数据被记录的时候弄错了。这样有趣的日子一共有3个,每个日子都恰好有2个选手出生。

首先是1996年4月24日,两位同在《穿越火线》的小伙伴都在这一天出生:宠儿(张签)和k(许宏宇)。前者在AG战队,后者在情久战队。

然后是1998年10月24日,两位小伙伴在这一天出生:Lwx(林炜翔)和凉晨(张奇)。前者在《英雄联盟》FPX战队,后者在《王者荣耀》RNG.M战队。

最后是1999年6月7日,两位同在《王者荣耀》Hero战队的小伙伴在这一天出生:久诚(曹志顺)和最初(龙志彪)。

不知道说啥,恭喜,祝大家幸福吧!

游戏夜读 | 世界两大游戏评论!

文/良宵听雨。授权“游戏夜读”发表。

OpenCritic和Metacritic是两个在世界范围内影响较深远的娱乐作品类评论网站,尤其是电子游戏。

其影响力主要在两个方面。一方面向全球地区的玩家和评测人员。另一方面则是面向全球的游戏发布、评测发布等游戏平台。尤其是后者。例如:游民星空作为中国单机游戏门户网站,于2018年1月发表一篇题为《游民星空的游戏评测已被OpenCritic正式收录》的新闻。再比如:《每日星报(Daily Star)》是英国的一份著名报纸,也有其同名网站和游戏版面,于2019年4月发表一篇题为《每日星报的游戏评测已被OpenCritic和Metacritic正是收录(Daily Star Gaming joins OpenCritic and Metacritic)》的新闻。足可见这两大世界游戏评论阵地的影响力之大了。

image
OpenCritic的公益和开放
OpenCritic有四位创始人,分别是马修·恩托温,查理斯·格林,亚伦·拉特利奇,理查德·特里格斯(Matthew Enthoven, Charles Green, Aaron Rutledge, and Richard Triggs)。他们一直保持着网站非营利的状态,日常的服务器开销、运营成本主要靠众筹、捐赠来维持,所以官网最底下有个专门致谢的传送门。网站地址是www.opencritic.com,整体风格简洁、高效,分类检索最早能查到2013年。

关于网站的初衷,四位创始人表示想建立一个真正庆祝游戏的阵地,以此推动游戏行业积极的变化。他们认为自己富有“幼稚”的乐观主义精神,希望通过这个网站,汇聚开发者、评论家、游戏玩家。在OpenCritic的众筹页面还有其他的介绍,包括他们自身的背景、网站的规划、收入的用途等。

OpenCritic的创始人是游戏玩家和开发者。顺便还提到了《魔兽世界》最经典的BOSS战之一“巫妖王之冰封王座(The Lich King)”,“召唤师峡谷(Summoner’s Rift)”,《命运》的主线结尾任务Raid之一“玻璃宝藏(Vault of Glass)”,《辐射4》的那块“波士顿荒地(Boston wasteland)”,上古卷轴,《星际争霸2:虚空之遗》中的艾尔母星(fields of Aiur),还把《沙漠2(Dust2)》称为“海市蜃楼”。他们还一起建设WoW公会的网站、自动招募,用作娱乐的大菠萝3机器人(Diablo 3 bots),还有英雄联盟(League of Legends)相关的。

Metacritic的红黄绿和被收购
Metacritic有三位创始人,此前都是律师职业。主要涉及电影、电子游戏。网站网址是www.metacritic.com,整体风格明快、丰富。分类检索最早能查到1995年。不过,该年只查到一个作品。

关于网站的初衷,三位创始人的想法形成于1999年,他们希望能给众多的娱乐产品进行一个综合打分,这样用户就能更合理的消费,并更好地提前安排自己的娱乐时间,网站于2001年1月正式推出,快速发展几年后,2005年被CNET收购。

Metacritic的特色是它特有的加权平均打分系统得出的综合评分:metascore。好的评价显示为绿色,中等的是黄色,差劲显示的是红色。综合评分主要来自两个方面的考量,一方面是用户的反馈,另一方面是经过挑选的评论员和评测网站。

游戏夜读 | 预测问题的硬核是?

知识储备少的一个可能的好处是“不落窠臼”,大白话就是:套路少。

为什么能套路少?主要是因为懂得套路少。换句话说:大部分的知识都基于范式。学的多了,会发现教书先生的观点各有不同,然而教材里的内容是相似的。那还要继续学习吗?不耽误。想学就继续,套路虽然俗气,但认识的过程里也会有些乐趣。不想学也不错,守着有限的认识,过日子或者哲思。都很美好。

这些跟预测有什么关系呢?预测是有方法的,熟练掌握某种或某些方法后,就容易丧降低“空想”的意愿,养成一些依着套路走的习惯。这样对预测并不利。

太阳底下没有新鲜事。目之所及,预测问题都是常见场景。非典型的预测,则被称为冒险。尤其是量化预测领域。统计学家也费尽苦心,建立假设和约束条件,又寻求条件的放宽、转换,甚至废弃一组方法,重装出另一套方法,生生不息。

正统的方法自然有一大堆理论证明,还是聊一场朴素自然地随心畅想。

测一测玩哪个游戏

之前搜集过一份电竞职业选手的年龄样本,具体涉及到144位电竞职业选手的出生日期。基于这份数据,是不是能解决一些个相关的预测问题呢?比如:根据某人的出生日期,预测该人玩的哪个游戏。这个预测问题一抛出来,即使是一个对预测方法完全不懂的人,可以想的方面和方向就不少。这的确是一个很有意思的问题。

出生日期跟玩哪个游戏,有关系吗?怎么看有没有关系?如果有,是不是就承认了属相、星座哪一套说法?如果没有,是不是就是尊重客观事实?这样一想,两者应该是没有关系的。但还是可以主观上假设有,然后继续讨论。

如果有关系,那是前者影响了后者,还是后者影响了前者?是有因果关系,还是其他什么复杂的关系?因为本来就是假设的,所以不好具体讨论下去,于是就再假设一番。比方说,两者可能是一种同时出现或者不出现的关系,不一定是线性的,应该是一种概率问题,接着故事从啤酒和尿布开始了。再比分说,两者可能是一种类规则的关系,就是能设计一个机器猫,能准确预测出答案来的那种。

同一天生日的那些家伙,在预测问题里可能是个麻烦了。同年同月同日生,但玩着不一样的游戏,这种情况该怎么处理?简单粗暴的剔除即可。于心不忍的话,那就放到测试集里。实际上,有些同一天出生的职业选手玩的是一款游戏,有些个是玩着不同的游戏,所以等预测方法想出来了,拿那几天测试一下,应该会很好玩。

异常值不仅仅是表面上的异常,可能是数据处理过程带来的。比方说,144个样本中,其中有一份显示是1994年1月1日出生的职业选手,但是实际上,当初只是拿到了1994年这个年份数据,在处理过程中自动补全成了1月1日。不知道影响大不大?如果有影响的话,对最后的预测结果到底有多大的影响?

就算预测结果出来了,还是放心不下。是只有一个结果,还是有多个呢?每个结果可靠吗?可不可靠怎么比较呢?可不能像人民公园里面相亲的那样走马观花了。

预测NBA球员的第一次伤情

还有一种预测问题也很有意思,就是成功预言第一次出现。这类问题跟冒险的区别在于,冒险问题是没有类似的历史信息可以参考,包括自身时间序列、普世的横截面等,但NBA球员的伤情不是一个陌生的话题。

虽然,NBA球员的伤情很常见,但是,针对某个具体的球员,尤其是他/她还从来没有被报道过伤停,那怎么预测该名球员第一次受伤事件在什么时候发生呢?

文/良宵听雨。授权“游戏夜读”发表。

完整的看了下楼主的文章,感觉挺乱的,什么题材都有,我觉得最好能系统一点,游戏就说游戏或者更细化 策划(关卡,世界,数值,系统),程序(前端/后端/算法等),美术之类的 如果是游戏史就说游戏史相关的一系列,这样比较有条理,看起来也会有意思一点 推荐你看下B站UP主 芒果冰的中国网游史

游戏夜读 | 关卡设计为什么难?

设计需要灵感,持久的设计产出则需要持续的灵感。灵感的源源不断,得益于精神家园的郁郁葱葱。思想的贫瘠,促使灵感的枯竭。

与此同时,关卡设计需要高质量的产出。高质量主要体现在有限的游戏规则下创作,以及需要对玩家的体验负责。带着镣铐的跳舞,又必须跳得满堂喝彩。

这样的一个岗位能不难吗?

要保持产出,就要保持灵感。灵感可以分享,进而出现了许多的借鉴,甚至抄袭行为。分析起来,这一切是灵感与产出的供求不平衡,在设计界引起的经济学现象。

追根溯源,灵感,或者说原创性的灵感来自哪里呢?这可是个很大很深的话题。长话短说,艺术来源于生活嘛。

想明白了灵感,便要好好理解游戏规则,熟记于心,才能设计得心应手,不至于闹出笑话,或不可运行的缺陷来。

最难莫过于取悦人心。

奈何现在的游戏都是设计给人玩的,能不难吗?所以,不光是要当客服,为一个个玩家提供全方位的服务,还要急人所急、想人未想、说人未说……可行的办法是边看心理学边实践出真知。

文/良宵听雨。授权“游戏夜读”发表。

恩恩 非常感谢你的反馈!确实是‘杂文’了 ,,,已经立刻关注了你推荐的这位up主

游戏夜读 | 游戏设计需要天赋?

有句话叫,“以大多数人的努力,还远没有到拼天赋的程度”。这句话经常被用来回答诸如“要不要天赋”这类问题。这里也无意去讨论天赋与努力的关系。

设计所需要的天赋其实很简单,态度、积累。

先说积累。

同样的年龄,却有不同的才华。同样的才华,也会有不同的光芒。有人积累的多,有人积累的少。没积累的往往会质疑挡在崎岖前途上黑压压的一片:他们是不是空降的?

积累的速度有快慢之分,当然是越快越好。可速度是个综合成绩,包括了残废的程度、可用的时间和空间、心情等。不过,谁家都有一本难念的经,谁不是如此?

积累的目标有高低远近,当然是如此甚好:远的越清晰,近的越容易。可容易的可能是陷阱,清晰的可能是大饼,有接触的免不了利益关系。不过,世界上还是好人多,你是信还是不信?

这一切干天赋何事?除非,是有人硬要与门第世家的孩子比家庭教育罢了。那是没法比的。那不是“天赋”,那是在比出身。种一棵树,最好的时机是十年前,另外就是现在。那么同理,成为设计师最好的时机是二十年前,另外就是现在。

再说态度。尤为关键。

态度可能比积累更为致命,或在很大程度上影响积累。态度可以指对游戏这件事的看法。一个对游戏行为持反对观点的家伙,能成为游戏设计师吗?能。是那种真的游戏设计师吗?是。Why?为什么呢?因为这个家伙肯定是对游戏又爱又恨,是个矛盾综合体。

态度也可以指对默默无闻搞创作的看法。想成为一个游戏设计师,只需要在自我介绍的时候做个头衔的强调。想成为一个真正的游戏设计师,只需要不辞辛苦地坚持创作。但想要名和利,就没了答案。

没有人证明过积累一定会量变引起质变,也没有人在前途上呐喊:已经看见了最美的风景。

设计师往往是追求完美的,对大多数人来说,这样的态度会加速放弃。而所谓信仰,是全场唯一可能可以纳入天赋范畴的一种东西了。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 设计师的数据模型

设计师需要自信、画布、画笔、环境、团队、高配的工具集,还需要什么?好看的,吃的,喝的,玩的,听的,好折磨的……还有数据模型。

这是个全民数据分析的时代,而最有数据使用权的正是各位设计师傅。话说回来,数据模型驱动的设计与个性化的风格创作并不协调,所以不使用数据模型并不会有很大的损失。

数据模型可以从三个层次理解:跨行业标准,领域理论基础,实用方法论的举例。

当业内的标准并不成熟的时候,往往就需要看相似、相关的行业标准。幸运的是,数据作为信息的载体,还有一伙人专门为这个领域制定标准,这样形成的标准,是纯天然跨行业考量的。主要有知识发现领域的数据挖掘的标准,项目管理领域的需求分析标准等。

接下来就是特定领域的理论基础。比如:用户行为理论,动机成就理论,需求理论等。

如果没有时间了解以上两个层次,又足够幸运获得了具体的方法论,那就是妥妥“有人带,进步快”的写照了!具体来说有:增长黑客领域的AARRR以及根据不同优先级调整字母顺序后的种种变形,谷歌的用户行为量化框架HEART及类似的认知、兴趣、行动模型,比较纯粹的用户体验指数CX-Index及各种评分卡模型等。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 如何优化缓冲加载?

游戏画面元素丰富,则容易屏幕闪烁。这种现象的原因是负责在屏幕上画画的函数动作太慢。而这种现象之所以被发现,主要是三个方面的因素。第一,是因为人类肉眼有“视觉残留”,残留的时间约是零点一秒,换句话说,一秒钟至少播放十张图片,这样人类看起来是“动画片”,这样屏幕就不会闪烁。实际上,现在每秒钟在屏幕上的动画次数都大于十次。第二,是因为除了有内容的图像之外,一般还有纯黑的画面,进行交替播放,以此来模拟实现物体的位移,而纯黑的画面比较容易,有内容的图像处理起来麻烦一些,如果计算机反应慢,就会慢一拍,最后效果变成一种闪烁。第三,是因为画面张数越多,表现得效果就越细腻,尤其是微观物体放大的画面、快速运动的近景等,而这又加重了计算负担。

为了保证播放效果的流畅度,程序家发明了缓冲、缓冲加载、渲染等分步骤的屏幕图像显示方法。其中的“缓冲加载”涉及比较关键的前后屏算法技术。当然,这些起初只针对大型、复杂、丰富的场面,尤其是对品质要求高的场景。

缓冲加载的方针主要是“尽量减少前屏绘制的工作量”,思路的重点是“选区”,更具体的说是“块移图面”,英文称为“blit surface”,这里简称为“位移”。位移(blit)大体上分有三类。

第一类是“全屏加载”。全屏的做法虽然简单粗暴,但不一定效果最差,尤其是屏幕的大部分位置都需要更新的情况下,采用全屏绘制,与理论最优的区域差距并不会很大,却能省去不少脑细胞。

第二类是“脏脏块的合并与切割”。脏脏块这个词,是仿照脏脏包而来的,一般的英文是:dirty rectangle,与脏数据的“脏”用意差不多,意思不相同。脏数据是要被清洗掉的数据,脏脏块则是游戏世界里的变动,是那些需要在前屏重新绘制的区域,对于前屏来说,脏脏块是要被重新粉刷的区域。之所以把区域用块状去选择,这只是目前大多数游戏引擎或代码中的手段,可能是长方形比较好定义:长、宽。所以这一类方法的核心不在于矩形区域,而在于基于矩形的一些合并、切割,试图在全屏的全集中找到一个或数个子集,然后对这些子集进行重绘,重绘的面积就相对小很多,特别适用于那些每次只更新特定一些部分的游戏画面。

第三类是“泥瓦工和脏脏标签”。泥瓦工的意思就是,先把全屏人为分成几个瓦片,然后每次就检测这几个部分中的哪些需要被重绘,可以说是用户界面设计师(UI)的好朋友。脏脏标签也是同样的思路,只是这次的瓦片不是事先固定的,可以是动态变化的物体本身,这种方法直观上就比较适合游戏世界的物体比较有规则,尤其是平面2D的。

总的来说,缓冲加载到处都是优化问题。不过,有句话说的是:优化游戏代码可能会引来麻烦。虽然离屏缓冲、缓冲加载这两个部分跟核心的游戏逻辑已经相去甚远,但不可否认的他们也是一套游戏代码的一部分,还是要慎重。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | vim一份极简手册

前辈们编辑文本,只能逐行编辑,称为行编辑时代。到了后来,出现了一个预览窗口能看到全文的编辑器创想,于是全屏编辑时代来临,vim就是这个时代的一个优秀代表。搜索,下载,安装,接着双击打开vim,来到一个欢迎页面。

首先,学会避免以自我为中心:不要按键盘上的字母"i"。

映入眼帘的欢迎页面有几行介绍,包括几个输入提示,比如:查看版本、帮助、退出。这个时候,键盘、鼠标等输入设备什么都不做的话,vim编辑器是处于"只读"的"预览"模式,也叫normal,稀松平常的一个模式。一旦敲入英文字符 “:”,就会发现编辑器下方出现了一个等待继续输入的空间,此刻的vim编辑器正处于命令模式,敲完记得按下Enter键。而一旦输入了英文字母 “i”,就会发现编辑器下方出现了一个插入的提示,可以输入和编辑了,此刻的vim编辑器正处于编辑模式。有进入就有退出。通过按键盘上的"Esc"即可退出编辑模式,没事可以多按ESC,以防没有处在正确的模式下,而无法启动命令。后者的话可以使用":q",但可能会提示强制退出要加一个感叹号":q!",感叹号就是退出的意愿和情绪非常强烈,无人可挡。对于想保存的,则要重新输入":wq",字母w的意思就是写入。遇到还不会的就关闭窗口,再重新尝试。

然后,学会使用自动补全:Tab。

好动的人经常需要返回上一步的操作,vim自然有对应的命令,只需要输入":u"。其中的字母u,是undo的简写,这一点可以通关输入一个u之后,按下Tab键进行补全所有u开头的常用命令时展示的所有命令分析得到。同样的,还可以看到"undolist"这样的命令,尝试敲入之后,果然,非常直观。此外,还可以一次性重复操作某个命令,比如输入":6u",含义是做6次返回的操作,这一点可能有误。重要的是亲自尝试体验一下,比如:不输入英文冒号,按下字母u也有效果。

接着,学会给编辑器整容:脱掉、再穿上。

如果打开的是一份特定语法的文件,可能默认已经高亮显示部分内容了,想要返璞归真?只需要输入":sy off"即可,或者":sy clear",两者都是在表达“去掉语法高亮”。暗淡无光之后又想有色彩,输入":sy on"就可以还原了。

可以仔细看看这个编辑器的模样了。刚打开的vim编辑器,中间是预览窗口,上方有菜单栏、工具栏,右侧有滚动条。现在就尝试把上方和右侧的都变消失。这肯定是一种设置的命令,没错,输入命令":set go=“即可。字母组合go的全程是guioption,即交互界面设置,等号后面缺省为空直接按下回车键的意思是啥也不设置。于是一个光秃秃的vim编辑器就诞生了,这算是致敬经典的一种例行公事。接下来就是还原的工作。比如:还原菜单栏需要输入”:set go=m",字母m肯定是菜单的简写。还原工具栏需要输入":set go=T",大写字母T肯定是工具的简写。还原右侧的滚动条需要输入":set go=r",字母r是右侧的简写,由此猜测,左侧的滚动条是输入":set go=l",下方的滚动条是输入":set go=b"。那怎么一次性把想要的还原设置都实现呢?这是一个加法的集合,所以输入":set go=m+T+r"即可,或者直接简写成":set go=mTr"就完事了。

最后,偷懒的办法和必要的分享。

距离真正把vim融入自己的工作,只剩下一步之遥。先迈出0.5步:重复使用命令。这个非常简单,跟其他的命令行工具一样,通过按下键盘上的up向上翻即可,但似乎不提供Python的“_"功能。再迈出0.5步:想好自己的需求,然后去组装处解决方案或者搜索得到现成的答案。使用这个编辑器最重要的一点就是分享并快乐。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 游戏代码之道

文/良宵听雨。授权“游戏夜读”发表。

游戏代码的材料是一些中英文字符,真正运行的是那些英文字符。任何一种编程语言都可以写游戏,所以懂了游戏代码之道,选择什么语言的问题也会少一大半的迷茫。

电子游戏的本质是动画片,所以游戏代码的首要目标就是让画面动起来。学会让画面动起来,就已经搞定了游戏开发一大半的难题。好在现在分享精神盛行,想找到一段让画面动起来,甚至是一个完整的游戏程序,都不是难事。但拿到这些游戏代码之后呢?抄是有前途的,但有灵魂的抄更有意思。所以,看得懂,找得出共性,是个值得一试的活儿。

游戏编程是有标准的。一方面,游戏的运行框架有范式。另一方面,游戏代码的制作分工也有范式。游戏代码可以组织的很有个性,这是游戏编程的特点、乐趣之一,也给大家留下了游戏代码标准不一的印象,其实不然。

以Python这个语言为例,它有一个集成库是专注游戏开发的,叫Pygame。这个库是基于SDL的一个极具个性和便利性的封装。其中,SDL是一套开放源代码的跨平台多媒体开发库,使用C语言写成,是“Simple DirectMedia Layer”的简称,也可以翻译成“简单直流多媒体层”。Pygame的设计就是基于一个标准化的游戏运行框架。

while True:
    events() # 人的行为
    loop()   # 游戏世界的变化
    render() # 在屏幕上播放动画

这个游戏运行框架非常简单:首先是一个无限的循环,也叫死循环,主要的目的就是在屏幕上播放动画。其次是动画的内容,即游戏世界的变化。但这里有一个“人机交互”的概念,这也是游戏区别于其他艺术或媒体形式的一点:人的行为。人的行为一般是作为“动画”的触发和输入。这就是一个标准化的游戏运行框架,简洁的游戏代码之道。

直到现在,大部分的灵魂代码都是人为敲入的。因此,游戏代码内部的这种标准化拆分,可以看作是一个个模块,也可以看作是一种分工。尤其是到了2000年前后,游戏代码除了运行框架的标准化之外,又有了游戏代码标准化制作的分工趋势。具体表现为“游戏引擎”的盛行:游戏引擎负责速度,高级语言写的脚本代码负责个性化的游戏机制、图像处理。

也是这一时期,游戏开发和游戏设计开始被有意的区别对待,前者专注代码逻辑的自洽,后者专注游戏机制的创新。

游戏夜读 | vim,vim,vim

已经忘记第一次安装vim是哪一年了,可能是几年前;插件类的不算,去官网下载再安装,这应该是第二次。岁月痕迹斑驳,心态还是没有本质的变化,觉得这一类东西就是:酷。只是酷的东西,更需要时间和精力去营造合适的心情。而学习曲线这一类东西则只能是参考,基于兴趣、刚需,再困难也能上。下决心的确是重点,但这里不讨论。下载安装,已经非常智能化。比如:在操作系统中右键便可以轻松选择vim打开文件了。

vim是个老牌编辑器,当下最新的是v8.1,主要的作者只有一位:布拉姆·米勒 (Bram Moolenaar)。“Bram在1961年出生于荷兰的利瑟(Lisse, Netherlands)。1985年,他从荷兰代尔夫特理工大学(Delft University of Technology)毕业,进入荷兰的数字印刷公司Océ做了一名研发工程师。”

要想学会vim,只需要记忆一些命令即可。非常适合高中毕业生学习。vim在几乎所有的操作系统、工作平台都能使用,传承出一种复古的极简主义,比如:编辑模式、命令行。同时,vim也拥抱了傻瓜式的便捷,比如:鼠标、智能识别出其他软件中的常用快捷键。官网清新简约,新闻板块并不热闹,但插件类的更新却仍然有天级别的频繁。

哪一篇有关vim的文章,会不提Emacs?这已经是一种传统,虽然早期可能很认真、略加调侃:称为圣战。vim和Emacs的区别当然是越来越明显,以至于加这一段有点“与有荣焉”,蹭Emacs的热度之嫌:这也就是调侃而已。最著名的就是“煮咖啡”的梗:Emacs是集大成者,同时追求效率,主要的表现是海量插件、解放手指,比如:连接咖啡机、运行煮咖啡程序。其实vim也差不多。紧接着的是:Emacs使用ctrl、alt太频繁,以致于产生“计算机备一个脚踏板”的需求。vim是需要双手敲打的,也仅限于此。至于某些键的频繁使用,这个经验应该是使用软件工具的设计师最有发言权了!最后,是vim的谦逊:世界第二。肯定不是所有的vim用户都愿意喊出这句话,但确实有人这样声称。这样一来,会不会越来越多的人就开始忘记vim的存在?毕竟Emacs的好用是真实存在的,更何况更多的人一生都不会选择这两个中的任何一款!那么,vim会消失吗?作者如今已经58岁了,应该会考虑这个问题。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 改写图形API的意义

游戏编程,一般指的是视频游戏的制作,也就免不了当一把“画家”:在屏幕上弄点线面,形状色彩,喷洒溅射之类的。图形、色彩,似乎是人类的一个本能爱好,有视力的人,就不会对出色的视觉效果视而不见。但有一句话说的好,“几乎没有开发游戏的人去重写一套图形API,一般就是使用DX或OpenGL等现成的”。这一次聊一聊几乎以外的事情。

首先,API是什么?另一个相关的概念SDK又是什么?API,应用程序编程接口,全称Application Programming Interface;SDK,软件开发工具包,全称Software Development Kit。API是通道性质,SDK是一条龙服务性质。打个比方:池塘边有一个小朋友,想摸鱼。那怎么才能摸到鱼呢?想到了用“小网兜”。小网兜就是API,通过小网兜能获得鱼。然后池塘边不远处有一家小店,里面有卖或者送摸鱼的整套装备,包括:防水衣裤、遮阳帽子、大网兜、电动马达、探照灯、备用小网兜……相对齐全的别人备好的装备就是SDK,小朋友可以去买或者拿这套装备,既省事又高效。

其次,DX是什么?OpenGL又是什么?为什么是现成的?DX,是DirectX的简称,全名Direct eXtension,是微软公司创建的多媒体编程接口。OpenGL,开放式图形库,全名Open Graphics Library,实际上并不是API,是由科纳斯组织(Khronos Group)建立并维护的一套标准,也经常被看做是一个图形编程接口。

很多开发相关的论坛上,早些年都有讨论选DX还是OpenGL,特别早的都已经古老到消失或无法回复了。图形API不是只有这两个。比如类似于微软的DX,适用于 Mac 系统(OS X 和 iOS)的Metal,还有许多引擎类。再比如:Vulkan。最早是由科纳斯组织(Khronos Group)发表在2015年游戏开发者大会(GDC)上,Vulkan的定义和用途跟OpenGL差不多,还被称为下一代的OpenGL,只是因为都是Khronos家维护的。实际上两者并不兼容,Vulkan在硬件适配上性能更优越些,因为开发者可以实现显存的管理了。

改写太难,还是从使用开始。没有改写图形API的捷径,但有封装的好手。

图形API已经不停壮大,以至于自身的发展也成为了一个十分复杂的领域,但接口还是接口,实际应用的时候应该只会越来越高效、便捷、丰富,只是事情往往没有那么简单。视频游戏是图片API使用的“重灾区”,影视作品中的动画、特效也跑不掉,图形API作为泊来品,土生土长的中国人就难免吃不消。这时候先富带动后富的模式就突显了,无法从语言或者工具的本身下手,只好滋润在前辈的经验分享里。比如:毕业后即前往日本索尼敲代码的陈文礼在正式步入游戏行业后,陆续推出了围绕“从零开始手敲次世代游戏引擎”的文章,从图形渲染说开去。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 记忆里的老游戏

如果没有明天,会不会更想记住昨天?记忆是生命的痕迹,这样的题材似乎永不过时。对于游戏玩家来说,玩得游戏数量不管多还是少,除了例行评测和收集爱好,免不了有几款是偏心对待的。说起来还有点不信,但类似的偏见似乎是无处不在。可能在小酒馆的吹牛里,也可能在虫鸣缭绕的屏幕前。

由着老和新是相对的,所以会出现此老游戏非彼的情况,然而实际上这种情况很少,因为愿意翻故纸堆的人并不多,老游戏被传说着就没了。像是那些在MetaCritic、OpenCritic查不到的游戏,可能是影响力不够,可能是没有公开发行,可能不属于常见的电子视频游戏,可能是年代已久,可能是无人愿意补录。

老游戏的数量难以统计,近乎无法考证。总是见到新游戏的数量爆发,那老游戏的数量一定是少的吗?人口统计的角度来看,应当是如此。但游戏是闲暇的珍馐,在网络普及之前,在快节奏的生活四面开花之前,劳作之余的大人们和天真烂漫的孩童们,他们是不是也会产出数量不少游戏?从这个角度,老游戏未必就拜在下风。

游戏也是民俗。想找老游戏,需得去博物馆、旧书店逛逛,再去教授们、老人们、爱好者的堂下坐坐听听。一位昵称为“我是故纸温暖”的民俗爱好者,有从2010年起在《中老年时报》上连载一个专栏:漫话老游戏。虽然是一家之言,但作者连续耕耘了上百篇,应该也是下了很多的功夫,可以观摩一番。里面有粉笔画地的天下太平,也有需要物件的水压套圈游戏机,应该有几十年的时间跨度,主流的应该都覆盖到了。

另一些老游戏就幸运很多,被网络记着。一些“老游戏”还在玩家的记忆里、念叨里,游戏之外还夹杂各自人生的经历。比方说:《安琪拉之歌(Aquaria)》的不朽旋律,《宝石迷阵3》的应接不暇,《刀塔传奇》的抄袭和罚款,《横扫千军》的花花花,《神仙道》的代练和组队,《土地抢夺者》的英明神武,《月之传说(The Legend of Moon)》的细思恐极,《超级玛丽》噔噔噔噔蹬……还有被温情推荐的《奥日与黑暗森林(Ori)》,被整天聒噪的《侠盗猎车手(GTA)》,被晃晕脑袋的《鳄鱼小顽皮爱洗澡》,被心跳加速的《涂鸦跳跃》……老游戏承载着一些人的喜怒哀乐,成了记忆的组成部分。

把时间花在游戏上,可能面临的一个困难是等到“曲终人散”,想回味一番“竟无语凝咽”,然后还不知“从何说起”。具体包括:想不起来它的名字,或者记不清当时的情形,搜索到大量的无关信息,提的问题鲜有人回答,知道谜底的相继离世。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 简单认识一下爬虫

上次提到“爬虫”这个词,已经从单纯的动物指代,变成了“采集网络数据”的新时尚词汇。也提到了网络协议三要素:语法、语义、时序。开始把一个个爬虫程序理解为一个个网络机器人,那么接下来就再简单说一说机器人可能会遇到哪些困难。

首先,键盘、鼠标、眼球捕捉仪等计算机的外接设备,对于爬虫来说都不是问题。同样的,信息的实际载体也不会是大问题。比方说,很多内容是通过浏览器看到的,还有不少好玩的是需要在移动设备上安装App,即应用程序。都不是问题。

其中,凡是通过有线、无线连接的设备,自然就能有工具去解析出数字信息。此外,浏览器、应用程序、软件,一般是以为就运行在某台物理机器上,像是电视、手机、平板电脑之类的。实际上,他们是依附于操作系统的,像是微软、塞班、安卓、苹果、鸿蒙等等。只要是在操作系统内,就有非常多的工具可以使用去进行行为模拟了,比如自动化测试工具。

轻松登陆了信息的实际载体这个阵地后,爬虫的下一步计划就是“挖矿”啦!读取信息,或者有选择的读取所需的信息。

网络信息的表达方式通常都很直接,是“公布天下”式的。不信?大可以在浏览网页时,通过鼠标右键查看源代码,经常会发现网页的文本、加载处理的脚本、字体来源、针对特殊群体的无障碍功能设计等等。爬虫可以随意访问到这些信息。

对于可以随意访问的网站,爬虫可能就真的是排山倒海般随意访问起来了,这对网站的建设工程师们来说可不是什么好事情,所以,在随意访问的基础上,往往又会加以限制,比如:时不时跳出弹窗提醒休息一下啦,验证码,限制访问次数。

也不是所有的信息都是开诚布公的,有些是“申请制”的。最常见的就是需要注册、登录后,才予以访问、下载。

信息发布方式的差别,对爬虫的影响微乎其微。真正能让爬虫抓耳挠腮的,是信息的传递、排版、加密方式。虽然上述的发布方式也可以视为传递的一部分,但这只是人为感受到一部分,计算机网络通信中还可以有更多、更复杂的传递内容,爬虫如果没有把自己伪装彻底,就很可能暴露自己的机器人身份:今天某网站来了一位将被重点关照的可疑的不速之客。

信息的排版也会让爬虫很是头疼。同样的几段文本,可能会在送达上网人的肉眼之前再加一道工序:呈现出一篇文章,而爬虫得到的就是几段文本。这个时候的爬虫就该思考一下人生:到底是为了获取什么样的信息而来,又该带走什么。

最后说一下加密,一般就是编码,而且都是常用的几个,毕竟网络信息是被看、被用、被分享的,不全是网络安全大赛的争夺,所以,大体上并没有什么神奇的地方。如果爬虫倒在了这一步,那大可掉头放弃,不可在犯罪边缘疯狂试探哦!

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 神话故事和世界观

一个新生儿,想必是陌生于这个世界的。文明的起初,应该也是如此。此外,文明有兴衰,更迭,也有消亡,更有萌芽。

地球上的文明,大都以地理为先,其次是语言。生养在一方水土的人类,在劳作之余,会创作、讲述故事,夹杂天灾人祸的故事。长此以往,便有了经久流传的民间故事。这些民间故事,受到的最深远的影响便是地理,其次是语言。

民间故事,是文明的一种体现,也可能是一类神话的铺垫。但是,并非所有的文明都能孕育出较为完整的神话体系。

这些奇趣可爱的民间故事,体现的是对这个世界的观察、分析、对待方式。旷日持久的研究之后,对世界会有更深远的认识,原先的很多不解,便有了一种种解释。比如:对电闪雷鸣的不解,有了雷公电母的解释。就像《十万个为什么》。

对于自然界,人类曾经有非常多的不解之谜。而散步在地球各地的文明,不论发展程度如何,都有过不少的解释。

像是丝绸之路上的很多国家,都有极具特色的民间故事。比如:阿拉伯,地处要塞,各类文明再次汇总、冲突、融合。但如果是问及当地的神话体系,答案就没有那么明确和丰富了。究其原因,神话需从众多民间故事、传说的基础上提炼。

神话的种类其实不少,但体系完备的且声名远播的,却很少,大多数情况下的原因是:孕育神话的文明本身很动荡。因此,能有幸形成神话,进而被讲述、传播、分享,实在是幸运。世界上比较出名的神话有北欧神话、希腊神话。

那通过想象出来的神话故事,算神话吗?严格意义上来说,传统的神话是文明的沉淀,更是一种传承,并非一时的流量。

面对庞然的世界产生的诸多不解,神话作为解释,宗教、礼仪等规范作为应对天灾人祸的方法。早期文明就开始浮现了。

但这也仅仅是最初的模样,随着更多的谜题被物理学家、数学家、历史学家们解开,大多数人类就有了新的活法:不再依靠宗教的解释,转投入科学的怀抱。但是,这个世界有未知。比如:世界为什么存在?世界是从无到有的吗?世界会走向灭亡吗?缩放到个人身上,就成了生老病死相关的话题:我从哪里来?我到哪里去?我是谁?

讲了这么多,最后说说游戏世界观。把一款新游戏看成一块新大陆,而游戏世界观的含义,就一下子明白了。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 数据分析的及时性

智能手机的普及过程中,带来巨大的流量红利,所谓“大道至简”,获取更多的利润发生在每行每业,不光光是游戏产业。

游戏作为一种娱乐方式,在流量大潮中,让不少的弄潮儿赚得盆满钵满。自然而然,一片厮杀中,蓝海变红海,追求“降低成本,提高效率”的精益模式被推到了舞台中央。最为瞩目的,非数据分析与挖掘莫属了。各路英雄好汉,都听说了“数据驱动商业价值飞速增长”的传闻。关于通过数据分析发挥产品更多价值的思考可以有很多,以后再讲。不妨先说说及时性。

无线网络的普及,移动设备的大促销,信息传递更快了,给我们写作、阅读、工作、娱乐带来了便利,尤其是移动游戏。

这种便利性,无形中就要求了数据分析工作的及时性,本质上,这是用户使用需求的革新。试想,对于移动游戏来说,潜在的一批批玩家们,完全有可能在数百个不同的渠道下载、注册,并且他们使用的移动设备五花八门。稍有不慎,辛辛苦苦制作出来的游戏就根本没法打开,即使勉强登陆后,也可能会遇到各种原因导致的闪退。数据分析师的帮忙找出问题。

上面说的主要是移动设备的多样性,难道设备相对固定的主机游戏、电视游戏,它们的数据分析就不需要及时性了吗?

的确,游戏测评曾经集中在个别媒体、资深玩家、主播等的口中,影响了大批的路人。但随着新一代人类的成长,越来越讲究兴趣、个性的张扬,这种意见领袖式的影响力已经在变弱,或者说只局限于忠实的粉丝了。比方说,如果一个游戏有瑕疵、恶趣味、不足之处,分分钟就能通过活跃玩家群体散播开,新一代的潜在玩家会快速更新印象,口碑效应真可怕!

所以游戏数据分析师们不仅仅要抓紧找出新用户的体验障碍,还得寻思着玩家们为什么不高兴了?哪里没得到满足?

但似乎这些“急需及时性”,都有一个共同的前提,就是:激烈的市场竞争。倘使没有那么多的游戏可供人们选择,似乎也就不需要为了降低成本、抢夺用户而追求找出问题、解决问题的及时性了。是的,移动游戏产业的初期便是粗放式的。

不过,无论何时,产业的,并不一定是具体的,毕竟世存匠人。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 互动剧的黎明到了?

互动剧看起来是个新玩意儿,不过,对于经常电视的人来说,其实并不会陌生。

电视购物是大家已经非常熟悉的概念了。最常见的场景就是,一片聒噪声中,弥漫着抢购的紧张气氛,视频里面的推销人员正在卖力地通过各种花样,不停催促电视机前的观众拨打电话下单。他们有很多说话的讲究,专业的称为营销话术。

而互动剧的模式跟这个相差无几,只是参与感更加强烈了。主要是参与更方便了。不需要拿起电话、拨打号码、等待接听、导播转接后的漫长守候……得益于触摸屏、互动屏幕的出现,视频在播放的过程中可以参与互动。

这种与播放内容进行互动的形式也不仅限于视频,还可以发生在线下,诸如:现场演出、舞台剧、歌剧、话剧、小品、相声……影视听语言里除了构图,确实还有很多其他的要素,但极少会提到如此直接的互动。那互动语言该如何理解呢?

曾经有个说法,把游戏称为“第九艺术”。而互动,或者说交互,肯定是游戏语言的一个关键要素。

互动剧像极了影视听元素和游戏语言的融合。而单单从游戏产业的研究来看,互动剧跟“云玩家”剖有渊源。

云这个词,本来是个名词,后来成了形容词,现在又好像是一个动词。怎么回事呢?

一部分人把云游戏理解为“随时随地可以玩的网络游戏”,但对云玩家来说,云游戏其实就是“看别人玩游戏的直播或者录播”。主要的原因自然是普通人背负较大的生活压力,自主研究、摸索、获取、体验游戏的时间比较有限,但又不想抛弃玩游戏的娱乐爱好,所以转向云游戏的娱乐方式。于是,在电竞之外,又硬生生催生出了一批职业游戏主播。他们不仅游戏玩得“好”,还能说会逗。观众通过云游戏,不仅过了一把游戏瘾,更是对主播的一种欣赏,丰富了阅历,还放松了心情。

文/良宵听雨。授权“游戏夜读”发表。

游戏夜读 | 如何制作互动剧?

互动剧的制作方式,其实是个开放性的命题。

如果这一出互动剧是线下的,那么就看编剧、导演、场务们是怎么发挥想象力了。如果是通过互联网的方式进行传播,就不得不借鉴一下互联网产品的交互方式,添加一些互联网的体验要素了。如果是某个平台上,那就得看行业标准的进程。

如果有时间和精力,我想互动剧的制作方一定还想借鉴一下电子游戏,或叫视频游戏,网络游戏,移动游戏等。毕竟,游戏语言的一大特色就是“交互”。游戏不是眯着眼睛看即可的文章,也不是竖着耳朵听就行的广播,游戏需要肢体配合。

而游戏工作室做出一个互动剧,并非难事,只是商业化论证可能过不了——没有做游戏赚钱的话,为啥要做互动剧呢?

眼下最适合开展互动剧项目的,可以说,非互联网产品经理莫属了。一方面是互联网行业的波动,不少产品经理成长了起来,却无法继续在原先的互联网产品继续发光发热。另一方面是互动剧需要精炼、有序、丰富的逻辑设计能力和技巧,这一点对于用习惯了思维导图、流程图、控制图的产品经理们来说正是用武之地,更何况产品经理往往还兼职项目经理。

那编剧呢?擅长故事线、节奏感的编剧也是如鱼得水。

兴趣是最好的老师。影视剧、游戏等的各路爱好者,还有一波闻风而来的好奇人士,都可能创造出令人惊叹的作品。

有逻辑的互动剧就一定能赢得观众?或者说玩家们的心吗?

制作形式会在不断的实践中,可预见的,被摸索出来。但如何才能通过互动剧这样的表现形式,创作出或喜闻乐见的,或影响深远的,或伟大的作品呢?这个问题就不仅限于互动剧了。

文/良宵听雨。授权“游戏夜读”发表。