演示场景概论(一):什么是Demoscene

作者:蓬岸 Dr.Quest
知乎文章编号:517655392
创建于:2022-05-20 10:59:30
修改于:2022-08-28 2:03:59


演示场景概论是2022年春季,我在中国美术学院网络社会研究所开设的新课程,这是国内第一次以人文社会科学的角度介绍“演示场景”这一计数字文化现象的课程,这个系列的文章由课堂录音整理而来,全系列共12讲:

2022春季课程|演示场景概论

What is the scene?

欢迎大家来到演示场景概论,在这节课上我希望来给大家介绍一下,目前持续的历史最久,同时在全世界有相当的影响力的数字文化现象:Demoscene,就是演示场景。

首先我们来讲一下它为什么叫Demoscene,然后看一下它是个什么东西,那么一般我们看它的名字,其实是一个合成词,就是demo的scene,那么什么是一个scene?我查了一下字典,剑桥字典上对“scene”的解释是这样的:scene

a particular area of activity and all the people or things connected with it.
一个特定的活动领域以及与之相关的所有人员或事物。

然后又看了一下柯林斯字典:collinsdictionary.com/u

You can refer to an area of activity as a particular type of scene.
你可以把一个活动领域称为一个特定类型的场景。

“场景”其实是一个比较简单粗暴的直译,这个词在现代汉语里原本并没有对应的用法。但这种说法并非第一次出现,许多亚文化领域都已经在使用这个直译,如“地下音乐场景”或“朋克场景”“摇滚场景”等等,可能随着时间的变化,主流汉语也会逐渐接受“场景”的这一含义。

就目前而言,用更地道的中文来说的话,“场景”大概就是一个圈子或者爱好者社群,比如说“地下音乐场景”会比较晦涩,而“地下音乐圈”就非常容易理解了。也因此“演示场景”更本土化的叫法可能就是“demo圈”或“演示圈”。不过因为制作demo这种文化现象一直没有在包括港澳台在内的中文社群中广泛地出现过,所以一直没有一个固定的翻译,很多时候他不翻译就直接叫Demoscene。“演示场景”是我自己的常用的叫法,有些地方翻译成“演景”我觉得有点过于简化而不达意了,

那么什么是demo? 根据维基百科上的定义,demo是:

self-contained, sometimes extremely small, computer programs that produce audiovisual presentations.
独立运行的,有些时候是非常小的,产生视听效果的电脑程序。
en.wikipedia.org/wiki/D

那么因此 Demoscene这个事情,其实就是制作上面描述的这种电脑程序的爱好者社群。

B - Incubation by Ctrl-Alt-Test 64k_哔哩哔哩_bilibiliStargazer by Orb Andromeda (Final)_哔哩哔哩_bilibiliApproximate - Gaia Machina_哔哩哔哩_bilibili

那么我们先来看一些Demos。我们会发现这些demo作品他们大概都符合这样几个特点,

  1. Self-contained,它们是独立运行的,并不需要外部的播放器。
  2. Executable,它是一个可执行的程序。
  3. Real-time,它们是利用计算机实时生成影像的,而不是预渲染的CG动画。因此它们会明显受到运行平台的影响和限制,比如说在旧电脑上运行近些年开发的demo,就可能很慢或者无法运行。而CG动画可以花费播放时间数百倍的时间进行预渲染,而较少受制于硬件的性能。
  4. Audio-Visual,它们主要的表现形式是视觉效果与听觉效果的组合。
  5. Non-interactive,即非交互的,Demo的整个观看过程中它通常不需要操作,或者仅用单个按键切换效果,这是它跟游戏之间最明显的不同,相比之下游戏重视交互,开发者会在玩法上进行精心设计,但demo却不考虑这一点,虽然demo跟游戏共享很多的技术,但与游戏是不同的作品形式。

Demo与平台

游戏和运行他们的软硬件平台之间的联系相当紧密,在不同型号的游戏机、手机或和电脑上,游戏的展现出相当高的差异性。与游戏类似,demo与硬件之间也有着类似的紧密联系。Demo几乎也出现在所有的个人电脑平台上,无论是Commodore 64,MS-DOS,Amiga还是ZX Spectrum,只要能够想到的个人电脑平台都会有demo作品出现。

在互联网档案馆上我们可以找到很多demo作品,并利用它提供的在线模拟器运行。我们会发现在DOS下运行的Demo的视听效果就和为现代电脑开发的Demo有着明显的区别。然后我们再看一下Commodore 64上的Demo。

一个互联网档案馆上可以运行的DOS demo,Unreal:archive.org/details/unr

一个互联网档案馆上的Commodore 64 demo,Soiled Legacy:archive.org/details/Soi

旋转的立方体是demo作品中非常普遍的元素

我们会发现Commodore 64上的Demo和DOS demo有一些类似的地方,比如旋转的立方体,横穿屏幕的光条横幅等等。但我们也能看到一些Commodore 64与PC不同的特有风格,因为它是一款8-bit的机型,所以能看到典型的八位平台上像素化的画面和低色彩的调色盘。其音乐风格也与老式游戏机相仿。而DOS运行在16位的X86平台上,就会有更丰富的色彩和录音采样构成的音乐等展现16位电脑功能的元素。而面向当代电脑的demo则会展现绚丽的真彩色图形和3D效果。这些都体现出计算机的硬件的性能与演示程序的表现风格之间的紧密联系。

Size-coding:面向容量的编程

如果我们去调查一些demo作品,会发现有一些demo的容量非常小,许多demo都只有60多KB,不超过64KB,在一些中文的社群里面,也会有人提到“64k动画”这个概念。“64K动画”是对Demoscene里的一种独特的实践比较断章取义的描述,demo并不是一种“动画”,而是可执行的程序。这种实践的准确描述应该叫做“size-coding”,即面向容量的编程,其容量限制有许多种,常见的有256byte、1KB、4KB、64KB等。那么这些程序是如何用这么小的容量来生成这么多的内容的呢?。Demoscene里的size-coding基本上会向这么几个方向去努力,来缩小这个程序的容量。

Stargazer by Orb Andromeda里的分型图像

第一个事情的话就会用程序做生成,比如说我们刚才看到的demo里出现大量立方体砖块,其中大砖块里面套着小砖块,这是一个典型的分型图案,只需要用一个公式或者用几个公式就可以生成层层嵌套的图形,分型图像及其变体是程序生成最典型的场景。

Gaia Machina by Approximate中许多植物纹理是重用的

另外一个事情就是对素材的复用,这和老式游戏机上的开发技巧是相似的,比如用单一的三维建模加不同的贴图来“扮演”不同的物体,或者用单一的纹理染上不同的颜色模拟不同的表面,比如红色的“果皮”染上绿色就变成了“树叶”,通过对素材的反复利用,那么就可以把程序体积压得更小。

最后一种情况就是说它会做对程序代码做压缩,许多程序加载的时间很长,它首先要做的就是对程序进行解包。然后再“预热”,生成各种素材放在内存里以保证运行的速度。许多时候在硬盘上只占64KB的demo所需的内存可能要几百兆。

Size-coding往往会涉及到很多汇编代码的内容,需要计算机科学的基础和对硬件的了解。因为这节课是偏向人文学科的课程,我们不会太深入的考察其实现。但size-coding的实践在Demoscene中的影响却是非常普遍的。如果说大家对size-coding的一些技术细节感兴趣的话,sizecoding.org网站提供的wiki上可以找到各种不同平台进行小容量编程的技巧:SizeCoding

去哪里找到Scene?

接下来我来讲一下我们去哪里找到Demoscene相关的内容,目前在国内已经没有活跃的演示场景了,而想在国内了解Demoscene的现状和动态最好的办法就是通过网站。在 http://demoscene.info 网站中收集了一系列演示场景相关的网站,其导航栏里将这些网站分为几类:the portal on the demoscene

Forum就是论坛,比如pouet.net就是目前演示场景中最繁荣的一个论坛,基本上大大小小的关于 demo的新闻都会出现在里面,无论是作品发布、活动预告等活动都会出现在论坛中

Demoparties这个类别主要收集各类“演示聚会”的网站,就像各种地下音乐场景会有音乐会或者演唱会一样,演示场景的参与者也会通过聚会来展示和交流。网站中列举的聚会中Assembly的举办地是在芬兰的赫尔辛基;BreakPoint是在德国的莱茵河畔宾根;Evoke也是德国的演示聚会,举办地是科隆。

demoscene.info的信息有些旧了,有一些Party已经停办,比如最后一届Breakpoint举办于2010年

Demogroups这个类别收集的是演示团队的网站,就像乐队一样,演示爱好者也会组队创作。

Music这个类别则是整理了一系列专注于演示场景中音乐创作的网站,从demoscene.info网站所收集的这些网站,我们也大概可以看出演示场景的概貌。

另外一个探索演示场景社群的入口就是http://scene.org,那么它有一个非常重要的功能就是 Scene ID,是许多演示场景网站共享的统一登陆系统,只需登录一次就可以通行许多演示场景中的网站:SCENE.ORG

能够使用Scene ID通行的网站中,除了刚才提到的http://Pouet.net还有一个比较重要的网站就是http://demoparty.net,它是专门收集世界各地演示聚会信息的网站。如果想有机会近距离接触演示场景社群的话,最好的办法就是去到演示聚会的现场,而demoparty.net就是帮助人们找到他们想要参加的聚会的网站。

demoparty.net所列出的2022年5月下旬及之后的聚会

我们在demoparty.net可以找到一系列未来将要开始的聚会,我们除了可以看到聚会的时间、地点等一般性的信息之外,也会看到演示场景组织者和参与者制作的欢迎demo,比如今年4月举办的Revision 2022聚会就有不少这样的作品:demoparty.net/revision/

demoparty.net上爱好者们为Revision 2022聚会制作的演示

爱好者们制作了好几种不同平台的欢迎Demo,有Commodore 64、Gameboy、Amiga、PC,还有TIC-80,是一款虚构游戏机平台(Fantasy Console)。这是演示场景中的一个独特的习惯,毕竟没有什么东西比演示程序本身更适合作为邀请其他社群成员的“电子请柬”了。

DMO party invitation - Cocoon _ Bomb_哔哩哔哩_bilibili

Revision Party作为德国最有影响力的演示聚会,在聚会开始之前的欢迎环节就已经有很多人已经拿出他们的作品来欢迎其他参加者,从中也能看到社群的热情和实力。

演示聚会

而且我们看一下演示聚会里面会有什么样的活动,大概来说一般来讲会有工作坊、讲座、音乐会、Party coding也就是在会场里编程,以及最热闹和精彩的环节:compo,也就是比赛。

那么我们就拿 Revision 2022作为一个例子,看一下演示聚会是怎么组织的:Revision 2022, April 15th to 18th

在Revision Party的主页里可以看到它的一些基本信息,比如参加方式是既可以线上参加、也可以现场参加的,同时这次Party是免费的,以及聚会欢迎参加者提交他们的作品。

然后我们看一下它的活动以及日程是什么样子的:Timetable

第一个重要的时间节点作品提交期限(deadline),星期五和星期六的晚上六点,都会是一些不同类型作品的最后提交期限。此外一些时间节点是Event,就是现场活动,比如开幕晚会,比赛介绍等等。还有一类时间节点是Seminar,就是讲座,第一个讲座通常是向首次参加演示聚会的观众介绍Demoscene的概况,就像这节课上的内容一样。当然Concert,即音乐会也是演示聚会中颇受欢迎的节目,通常演奏的是demo制作者自行编写的音乐,许多时候都是芯片音乐。

而演示聚会中最精彩激烈的环节就是一系列的Compo,即比赛,比如Tracker Music,是一种限定制作技术,使用音轨序列器制作的音乐比赛;ASCII Art比赛,是使用字符创作图形的比赛;Oldschool music compo,是使用老式电脑创作音乐的比赛,以及PC 64k compo,就是前面所说的以64K为上限的size-coding演示的比赛等等。

2022年德国Revision演示聚会Amiga比赛_哔哩哔哩_bilibili

demoparty.net里的另一类重要的信息,就是往届聚会中的参赛作品和获奖名次。比如说像我们打开去年Revision 2021 Online线上聚会的页面,就会看到详细的比赛名词和得票数量:Results for Revision 2021 Online

比如说是PC demo组别,第一名1810票,第二名是1702票,第三名是1701票等等。每一个参赛组别中,作品的名字、作者和得票数量都会被记录下来,而这样的记录超过10年,甚至有些长达二三十年。Revision Party的第一届是2011年,已经有11年的历史。而另一些聚会,比如芬兰的Assembly Party的第一届是1992年,已经有30年的历史了,而这其中每一届的结果也都可以在网站上查到。

Unreal 1.0 by Future Crew_哔哩哔哩_bilibili

Demoscene社群的对作品的存档同样非常完整,因此我们不仅能看到1992年比赛的成绩,同样也能看到当时的作品,比如1992年Assembly Party PC demo比赛的胜出作品Unreal,不仅能下载到可执行的程序、Youtube上也可以看到录屏,在互联网档案馆也有模拟器可以执行。而开发这个程序的团队Future Crew,在后来就成为了PC基准测试3D Mark、PC Mark的开发商Futuremark,芬兰游戏开发商绿美迪Remedy的核心成员也来自这一团队。在北欧其他国家类似的例子也有不少,北欧演示场景和游戏行业的人员的联系和交流是相当密切的。

参与者的分工

那么开发Demo的团队都会有什么样的参与者呢?我们在demozoo网站里面能找到Demo的作者名单,以及Demogroup的团队成员名单。从这些名单中我们可以看到Demo制作者的几种身份:一种是code,就是程序员;然后是graphic,图形设计师;再就是music,音乐制作人。虽然偶尔也有单人完成的Demo,但大多数Demo是综合了不同特长的参与者共同完成的。

目前大部分的Demo团队都是活跃于欧洲。如果我们看一下demoparty.net里面各个演示聚会的举办国家的话,就会发现基本上欧洲的各个国家都有,然后北美的美国、加拿大、南美的阿根廷和巴西,以及澳大利亚也有,但是亚洲基本上来说只有日本,和紧邻欧洲的土耳其,也由于大部分的参与者都来自欧洲,有些时候Demoscene也被称作euro-demo即“欧洲演示”。

2000年代演示场景曾经在国内短暂出现过,当时国内的社群中sycini.com网站的规模最大、也最活跃。但在2008年这个网站就关站了,只能在互联网档案馆中一窥当年的痕迹。我个人短暂地拥有过这个域名,但是后来没有续费。

国产Demoscene - sY03.Production_哔哩哔哩_bilibili

与海外的演示场景类似,这个网站的也是由爱好者创建的。它的两位创始人summ0和yxh当时都是中国人民大学艺术学院的学生,也因为创始人来自艺术专业的缘故,Sycini团队还曾经和北京的三拓旗剧社合作过,但是两位创始人毕业之后其实就没有精力运营社群,国内的演示场景也就沉寂了。我在2017年之后曾经试图联系当时Sycini的参与者,并且成功地与dword,Wacker等成员取得过联系,但两位创始人始终没有联系到。我也曾经尝试收集目前散落在网上的作品,并修复了其中一些作品在pouet.net上的下载链接,但其中一些作品还是未能找到。

Demoscene为何如此重要?

接下来我们来看一下为什么在今天这个时间点以一个课程专题来讲Demoscene这件事情。在我们刚才提到的Demoscene的几个重要特点中,其中之一是其所有作品都是数字原生的,是在电脑上可以执行的程序,它为其他类型的数字艺术作品提供了重要的参照系。第二个事情是它在大众文化里存在的时间很长,穿越了社会环境和技术条件的若干重大变革,我们刚才在对Assembly Party的搜索中就已经看到来自1992的作品,而更早的作品还可以追溯到1970年代末。

第三点,也是对于开展研究来说非常有帮助的,是Demoscene有着现在为止内容最完整、整理也最有序的一个数字原生作品库。scene.orgdemozoo.org网站的存档里,我们不仅能找到时间跨度40余年、数以千计的作品资料,还可以找到作品拷贝的下载,用模拟器甚至真实的硬件去运行它们,许多作品会在下载的可执行文件压缩包里附带.nfo文件,也就是信息文件,我们可以看到相应作品的创作者、创作年份、开发工具、运行平台,有时也包括参赛和获奖情况。仅凭这些作品的资料,我们几乎可以复原出个人电脑从出现到发展再到普及的整个过程。

Demozoo上的作品最早可以追溯到70年代末(第一个作品的时间整理错了)

Demoscene创作的几乎所有的作品都是非营利性的,无论是传播或是重用里面的内容,基本都不会遇到需要付费的情况。由于内容跨度大,整理详尽,而且又是开放访问的,Demoscene它就像一个这种电脑艺术的百科全书一样记录了人们用电脑创作各种视听表达的实践。同样是由于这种持续性和丰富性,它在芬兰、德国和波兰三个欧洲国家成为国家级的非物质文化遗产。而其他的一些国家,比如挪威、法国等,当地的爱好者也在积极地推进非物质文化遗产的申报。

更多关于Demoscene申遗的内容,可以在Art of Code网站上找到:demoscene-the-art-of-coding.net

2021年12月,波兰成为第三个接受演示场景为其非物质文化遗产的国家

总结

那么这节课基本上内容就接近尾声了,那么我们总结一下:

什么是演示场景?演示场景就是一个制作被称为演示的、独立运行的、有些时候是非常小(size-coding)的产生视听效果的电脑程序的爱好者社群。

演示程序与游戏、CG的区别?它跟游戏虽然在技术上是相似相通的,但运行演示的体验和游戏有着明显不同,主要是因为演示是非交互的。演示与CG动画最明显的不同是CG的渲染不是实时的,观众观看的是预渲染的视频节目,但演示程序的视听效果都是实时生成的。

演示程序和平台的关系是什么?演示程序的效果通常跟电脑软硬件平台的功能特点是紧密联系的,演示程序发表和比赛时通常会区分是为老式电脑(oldskool)还是新式电脑(newskool)开发的,为新式电脑开发的演示往往都会试图尽可能地利用当代电脑最先进的功能,但针对老式电脑的演示则更侧重表现硬件不同特性而带来的不同视听风格。随着游戏开发的工业化,近年来以小团队开发占主导的演示场景开始逐渐放弃追求与游戏开发商比拼在最新的硬件下面产生最酷炫的效果,而更重视人的可能性,这也是老式电脑演示的创作能够持续存在的原因。在老式平台下,创作者挑战或者说是游戏于老的平台的各种功能限制,通过与老式平台软硬件特点的斗争和妥协,来产生不同风格和表现力的作品。演示场景的历史基本上说覆盖了个人电脑的所有的阶段,其开发的作品基本覆盖了各种各样的个人电脑平台和家用游戏机平台。

演示程序的发布渠道是什么?演示场景中爱好者发布作品最重要的渠道是聚会,在聚会中作品可以同时面对更多的观众、得到即时的反馈,并获得更广的影响力。但是也会有一些作者,特别是所在国没有聚会的作者会直接将作品上传到以pouet.net为代表的作品数据库里去。

演示程序是什么样的团队开发的?演示程序一般常由非盈利的爱好者组成称做demogroup的小团队制作,其成员主要有图像设计者、音乐制作者和程序设计者组成。

现场问答

Q:演示场景是否有实用性的起源

A:演示场景的两个来源:破解片头(cracktro)和商店演示(in-store demo)。破解片头即爱好者们破解了某个软件的复制保护之后,出于炫耀而添加的启动画面,而商店演示则是硬件厂商为了展示产品的特性,而开发的在商店中运行用于吸引顾客的广告demo,最著名的商店演示是雅达利为其Atari 8-bit系列家用电脑开发的,作为第一款内置游戏和音乐芯片组的“游戏PC”,这些demo展示了Atari 8-bit的视听功能。

Atari商店展示程序 - 1980_哔哩哔哩_bilibili

Q:如何理解数字原生

A:这个问题反过来就比较容易理解,什么叫“数字不原生”?把非数字介质上创作的内容数字化,比如扫描仪扫描的纸上绘画和胶片,就是数字不原生的。而数字原生,是使用数字设备进行创作的作品,它本身的表现力,受到数字平台的软硬件功能的支持和限制。比如数字绘图软件里都有的“油漆桶”(Flood Fill)功能就是仅存于数字绘图软件的功能,在纸上或画布绘图中并没有这个概念:图像处理之漫水填充算法(flood fill algorithm)

Q:我感觉有一点点矛盾的地方是demo作品出现在多个平台上,但有一些情况是开发者不愿意或者是觉得自己没有必要把 demo的东西跨平台协作,因为他们主要是对某一个特别是复古领域,中的某一个机器然后做开发和改进,尝试突破一些可能性,这个是和游戏的一个区别,我想知道它的对平台的要求,除了是对硬件上面的或者是技术上面的一些突破,还有没有别的原因让他在平台上有特殊的要求?

A:Demo作者和平台之间其实是多层次的,游戏厂商将游戏移植到不同平台通常是出于扩大客户群的目的,因为有些玩家可能只有PlayStation,另外一些只有Xbox,游戏跨越两个平台就可以覆盖这两种游戏机的用户。与之相比,Demo是非盈利的,所以并开发者没有主动移植的动力。

制作Demo往往需要具备针对特定平台的特定知识,比如突破Commodore 64的屏幕画面边框限制,就需要一些特殊的技巧,而这种技巧在其他平台上是无用的。开发者通常不愿在那些无法展示其特长的平台上开发作品。

确实有一些Demo作品在多个平台上出现,它们通常是由擅长不同平台的开发者各自独立开发的,由于Demo社群和软件破解社群的紧密联系,他们对其内容通常持开放分享的态度。对于效果相同,但实现技术不同的作品不仅不会指责为抄袭仿冒,反而报以欣赏和支持的态度。尤其是那些将高性能平台上的作品移植到低性能平台的案例,往往会在社群里获得很高的评价。

Second Reality PC对比C64_哔哩哔哩_bilibili

比如Second Reality最初的开发团队是Future Crew,运行平台是DOS;而移植作品Second Reality C64的开发团队是Smash Designs,运行在较前者性能更低的Commodore 64平台上。这两个作品内容几乎一样,但由不同的团队为不同的电脑平台开发。两个作品都展现了其在相应平台上高超的开发技巧,所以在演示场景社群里都有着很高的美誉度。