0

时长3分钟的激情大片,体积只有4kb?

 6 months ago
source link: https://www.36kr.com/p/2684554724573318
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

时长3分钟的激情大片,体积只有4kb?

差评·2024-03-11 02:37
编程极限的魅力

如果你打开这篇文章并迅速滑到最后,那么恭喜,就在刚刚,你被消耗了 43 mb 的流量。

这个流量,可以让你刷 5 个短视频。

循环 12 遍 MP3 格式的《 只因你太美 》。

保存 3400 张“ 差评 ”二字的 GIF。

或者下载 5500 次,时长 2 分半,名为《 羊与花 》的动画视频。

差评君可没写错

因为这个视频大小只有——

8kb。

interlace,1

这个视频 ” 是差评君冲浪时无意发现的,不过,它的准确说法并不是 “ 视频 ” ,而是 “ demo ” 演示( 不是游戏 demo )。

看到这,可能有差友要拍大腿了:如果 D 盘用 demo 来存资料,岂不是。。。

别急嘛,差评君保证你不会用它来学习的。

因为它不能快进: (

demo 的格式并不是各位熟悉的 mp4 、 avi ,而是 exe 可执行程序。

interlace,1

双击打开后,你的电脑就开始实时生成画面和音频。

interlace,1

看到这里,你肯定好奇这玩意怎么做到的。

有一个可能比较反认知的事情是:想让电脑播放一段图形和音频,可以完全依靠代码。

我们平时看到的视频,就是一张张图片组成的。那每一张图片怎么组成的呢,就是告诉屏幕在什么位置生成什么颜色。

interlace,1

Demo 也是类似,只是它不和屏幕沟通,而是和 CPU 和 GPU 。两兄弟接收到代码后,要先猛算一下,再把答案告诉屏幕,哪个位置放什么颜色。

interlace,1

运行 demo 时, CPU/GPU 会被拉满

举个简单例子。

我在着色器上输入一行公式: fragColor = vec4 ( 1.0 , 1.0 , 1.0 , 1.0 )

此时计算机会先算出结果,然后告诉屏幕:显示白色。

如果更换括号里的任何数字,我就可以让屏幕显示成千上万种颜色。

interlace,1

那么我想画个彩虹,只需要把稍微复杂一点的公式告诉电脑,电脑算出答案后,再告诉屏幕在哪些位置画哪个颜色就行。

除此之外,纹理、 3D 效果、运动轨迹也能用更复杂的公式让电脑运算出来。

比如在着色器里输入这么几行公式:

vec3 lightAbsorption = pow(mediumColor, vec3(mediumDensity * lightDistance));

vec3 lightIntensity = distanceAttenuation * lightColor * lightAbsorption;

vec3 surfaceAbsorption = pow(mediumColor, vec3(mediumDensity * surfaceDistance));

vec3 surfaceColor = LightEquation(E, N, material) * lightIntensity * surfaceAbsorption;

就大概能生成光源进水后光线变淡,远处更暗的效果。

interlace,1

搞清楚了 demo 的画面是怎么生成,现在再来说它的背景音乐怎么做。毕竟一首 MP3 怎么也得好几 M 吧。

Demo 音乐制作方式有很多种,最主流的是基于 Tracker 。

首先制作者要先采集音频样本,把外界的模拟音频信号转为数字音频信号。而 Tracker 说简单点,就是一个样本排序工具。

世界上第一款 Tracker 工具,采用了一种类似表格的页面。第一个纵列表示时间,另外四个纵列代表旋律、伴奏、低音、打击乐器,下面一个个表格里放的就是样本信息。

我们只要在 Tracker 里调整样本顺序,再调点音量音频,就可以编排出一首歌曲的 “ 乐谱 ” 。

你把这段乐谱交给电脑,它就能播放音乐了。

interlace,1

是不是有点不可思议。

但一开始,差评君并不看好 demo 。

因为视频要做出这种效果并不难,咱觉得牛逼,在于它建立在 4kb 、 8kb 基础上。

除了能证明开发者能敲得一手好代码,demo 似乎没啥商业价值。

所以这顶多就是一两个代码仙人,纯粹为耍酷才会做的事情。

不过在查了一圈后,我发现我错了。

耍酷的人哪里是一两个,分明就是一大波人,甚至多到已经形成一种数字亚文化了。

这种亚文化叫 demoscene ,已经持续 40 多年了。

interlace,1

你不要一听到专业术语就慌,想想小区理发店的托尼老师,想想颗粒度对齐,就一代号而已。

“demoscene ” 直译过来,就是 “ 演示场景 ” 。

其实类似 rap 代表街头说唱文化, demoscene 则代表在聚会玩 demo 的文化。

就像这样:

interlace,1

还有这样:

interlace,1

对,就是一群技艺高超的程序员做着酷炫的 demo ,线下 PK 。

随着差评君继续探索下去,我发现 demoscene 影响力远比我们想象中要大得多。

demoscene 的内核,是不断探索机器性能的极限,尽可能做出高质量的程序。

奉承着 “ 用最少代码,做最酷场景 ” ,在 demoscene 的文化里,那种体积小到可怜,却能让电脑生成顶级画面和效果的 demo 比比皆是。

这个 64kb demo 做出了光追效果。

interlace,1

虽然你明白了 demo 生成图形的原理,但看到这里,你肯定会纳闷它到底为啥只有 64kb ,甚至 4kb ,这里面可都是 3D 模型啊。

我只能说,奇技淫巧只有你想不到的,没有 demoscene 玩家做不到的。

像下面国际象棋和杯子的模型,其实只需要几行复杂的公式就能实现。

interlace,1

我们在左边填写几个横纵坐标,来标记一些散落的点。

接着,敲一段公式让电脑把连成线,这样,就形成了一个

interlace,1

然后我们再用一段公式,让电脑把这些绕着中心轴旋转,那么此时就得到一个立体的棋子 3D 模型了。

这样一个模型有多大呢?一串坐标数字和几行公式。

另外,这些公式可以复用,一套东西你可以用来生成 N 套模型。

如果你仔细观察下图,会发现只有两种形状,立方体和圆柱体。盒子、桌子、墙壁都是变形后的立方体组成的。台灯、铅笔、锤子都是用圆柱体组成。

别看个个都挺有特色的,大家都一个妈生的,顶多就生的姿势不一样。

interlace,1

现在你明白,为什么这些 3D 模型只有这么一点大小了吧。

但这对 demoscene 玩家来说:还不够!得抠!

怎么抠?禁掉 C++ exception 异常!

这个功能是代码出现错误时,可以先抛出一个异常提示而不是直接崩溃,但它会让你多出很多行代码。

别急,还能抠!

敲完代码,再压缩一下代码。

就好比把堆成山的代码打包进一个小箱子,接着在箱子外放一串解压缩代码( 作为钥匙 )。这样计算机要先拿钥匙开启箱子,然后再把代码解读给屏幕。

嗯, CPU 是烧了,但起码代码小了。

嘶嘶。。。

interlace,1

可以说, demoscene 就是一个追求极限的编程修罗场。

在这里,一代代程序员编程技术得以精湛。在 N-Gage 和 OVI 功能手机时代,诺基亚还通过赞助现金鼓励 demoscene 活动举办,给大家磨练技能。

说出来你可能不信, demoscene “ 培养 ” 出的大佬案例多到数不过来。

拿游戏行业举例。

1993 年 Assembly demoparty 上 PC demo 组的冠军作品《 Second Reality 》,来自芬兰团队 Future Crew 。后来 Future Crew 创建了游戏公司 Remedy 。

不熟 ? 他们后来做出了第三人称射击游戏《 马克思佩恩 》

interlace,1

《 战地 》系列闻名的 DICE 游戏工作室,前身就是瑞典 demoscene 团队 The Silents 。

《 愤怒的小鸟 》首席设计师 Jaakko Iisalo ,在 90 年代也是 demoscene 圈内知名人物。

成立于 1998 年 9 月,推出《 杀手 》系列的丹麦游戏公司 IO Interactive ,也是由 demoscene 团队 Reto-Moto 和老牌工作室 Nordisk Film 合并而成。

interlace,1

用一句话概括, demoscene 就是一个欧洲游戏行业的黄埔军校,华尔街青训营。甚至前些年,一些老牌游戏公司的老板还经常参加 demoscene 活动,去挖掘一些编程小天才。

因为 demoscene 的文化影响深远,前两年它甚至被芬兰、德国、波兰、荷兰列入联合国教科文组织国家非物质文化遗产名录,成为第一个被列入非遗的数字亚文化。

interlace,1

Demoscene 玩家庆祝

说实话,光是看到这些 demoscene 光荣事迹,就已经让差评君惊掉下巴了,但在研究完它的起源后,我只能说:焯,下巴掉早了。

被四国申遗的文化,居然是始于盗版游戏的交流会?

时间拉到上个世纪 80 年代。随着家庭电脑的普及,游戏行业也在迅速发展。

那会破解游戏的, 大多是一些买不起游戏的小年轻。 毕竟买电脑送编程指南,启动游戏都要输入 BASIC 命令的年代,玩着学着就是个野生程序员了。

这些小年轻破解完游戏,会互相分享。那时互联网没普及,交换盗版游戏最快的办法,就是带着软盘去好基友家里复炸粘贴。

当好基友们越来越多,一种被称为 CopyParty 的同城线下聚会出现了。

在这里,大家分享和炫耀最新的破解游戏。

interlace,1

在盗版游戏加载之前,人们往往都会看到一段来自破解团队的动画。

这段动画叫 “ crack-intro ” 破解介绍。

因为破解游戏开发者设下的层层加密手段,对小年轻们来说,是一件非常值得炫耀的事。

这代表着他们在与开发者的技术竞赛中获胜了。

interlace,1

1987 年,盗版 Fairlight 出现的页面

一开始的 crack-intro 呢,就只是写一下游戏是谁谁破解的,提升一下声望,嘚瑟两下就行。

interlace,1

但渐渐地,大家开始在 intro 上卷起来了。

小年轻嘛,年轻气盛,互相之间总想炫技。而除了破解游戏,能展现技术水平的最直观最迅速的办法,只有 intro 环节。

一开始,大家就是单纯比谁能在 intro 里玩到极限,比如每一帧内谁能放满更多的图形元素。到后来开始比谁的文本滚动特效更炫酷,谁的画面和音乐更屌。

interlace,1

甚至到最后, intro 都已经做得和游戏本身没关系了,用的技术都比游戏超前了。

有一天大家就发现,不对啊,这 intro 都成为炫技的重心了,那 intro 也不是非得放在盗版游戏前面不可。

再加上软件游戏行业和司法体系对盗版软件打击越来越严,很快噢,线下 CopyParty 就拆分出一个全新分趴,大家就专注于这种画面、音频的艺术创作。

interlace,1

这种脱离盗版游戏,独立存在的 intro ,后来被统称为 demo 。

Demoscene 文化就这样形成了。

interlace,1

在这个文化成熟的过程中, demo 效果随着硬件发展也逐步提升,团队分工也更加明显,出现了程序员、制图师、音乐制作人,而社区也演变出了几种比赛项目类别。

比如有不限制体积大小,让你随意发挥的 “ DEMO ” 类别,也有限制体积的 4KB-INTRO 、 64KB-INTRO ,还有更小的 1 KB 、甚至是 256 B 、 64 B 类别。

interlace,1

有体积限制,也是因为早期的电脑性能不够,比如销量之王 C64 的 RAM ( 内存 )仅 64 KB。

不过几十年过去了,电脑性能翻了成千上万倍,这些限制级项目并没有被抛弃。

与其说是保持传统,更不如说 demoscene 的存在,就是为了打破束缚和边界,完成不可能完成的任务。

这,就是一种极客精神。

interlace,1

差评君在写这篇文章时,发现和商业公司合作过的 demo 团队屈指可数,而且绝大多数 demoscene 大会要么设立很小的奖品,要么干脆不设。

interlace,1

这种没有商业价值的文化能延续下去,根本原因就在于它非常纯粹。

大家其实不需要什么物质奖励,这里最流通的货币,是声望,是认同。

他们千里迢迢从各个城市奔赴过来,他们最想要的奖品,是大屏幕上播放自己作品时,底下观众能够报以掌声和欢呼。

interlace,1

尽管这一群极客的作品到达了世界级水准,编程水平接近人类极限,但作为一种小众亚文化, demoscene 的公众关注度一直都不高,大部分人的作品都得不到应有的曝光。

但 demoscene 玩家们并不在乎这些。

毕竟爱好从来不是为了取悦别人,能照亮自己的一方小世界就已足够。

就像他们当初喜欢上 demo 的原因:

自由,不用迎合市场和大众的眼光

图片、资料来源

蓬岸 Dr.Quest .演示场景概论.知乎

Chip music as hacker culture

Sander Jacobsson Skjegstad.The Aesthetics of Demoscene Tracker Music Markku Reunanen.Computer Demos — What Makes Them Tick?

Moleman.Demoscene - The Art of the Algorithms.Youtube

Ctrl-Alt-Test.How we made an animated movie in 8kB

Ctrl-Alt-Test.Procedural 3D mesh generation in a 64kB intro

Ctrl-Alt-Test.How can demoscene productions be so small?

George Osborn.A history of Finland ’ s mobile games industry.PocketGamer.biz

K.S.Kazimir.What is the Demoscene.On the Arts

Markku Reunanen.How Those Crackers Became Us Demosceners.widerscreen

chipflip.Famous People Who Came From the Demoscene

Wikipedia@demoscene 、 @diskmag 、 @crackinro

本文来自微信公众号“差评”(ID:chaping321),作者:刺猬,编辑:莽山烙铁头 面线,36氪经授权发布。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK