看到这个标题不要害怕,实在是最近看那本龙书看傻了....
说在前面的:
看到老弟最近心血来潮,打算五年后能组队代表中国参加国际Demo Scene比赛,呵呵,我心里也有了些冲动。
是啊,当我第一次看Demo Scene时也有过这样的念头。我看得第一个作品是Heaven Seven。在那时看来如此和画面、音效产生的意境+64kb不到的体积,这样的程序不是当今顶级的hacker(注意,我不希望把hacker翻译成“黑客”)那还有谁能做出来?当然这只是当时我幼稚的想法。
后来又陆续看了些别的作品,大多都是http://www.monostep.org/上推荐的。虽然现在能让我记住的不多,但那些唯美的画面和恰到好处的sound track都不断的吸引着我。
随着自己阅历的积累,才知道64kb的体积其实并不是想象中那么神奇。一个优秀的coder+优秀的优化编译器+UPX加壳就足够能把任意的实时图形演算程序控制在64kb内了。至于声音,可以采用FM技术动态合成。
Demo Scene在国内还基本上是0起步的东西,不过也有人打算组团参加比赛了,这里不得不介绍http://www.sycini.com/(中国Scene盟会),虽然我对其中的作品并不苟同,但那也为我们提供了不可多得的资料。
在此我希望通过介绍目前自己已经了解的信息,能让各位知道SceneDemo其实更多的是灵感和艺术,对于其中的技术层次并没有那么的奥秘。也希望能将此文作为号召贴,各位如果希望能够成为一名Scener的话,可以在此文后面留言,我们一起努力!
1.你需要知道的(更多信息可以参看http://www.sycini.com/)
Demo Scene简介:
首先要明白Demo并不是所说的“Demo版本”,这里的Demo是通过计算机实时图形运算配合原创音乐展现给人们的一段艺术视觉效果。
Demo其实是一个很早就有的东西,一些游戏一开始的演示动画就有demo的感觉。事实上,正是早期的计算机游戏的条件,使得开场画面需要实时的演算,才造就了今天的Demo Scene。比如以前的C64,nes系统。
如今,为数不少的Demo Scene组织中的coder都正供职于各类游戏公司。对于他们,实时的图形演算已是家常便饭。这也给Demo Scene的创作打上了坚实的基础。
同时,Demo Scene发展也和目前的cracker行业有着密切的联系。各位是否注意到很多crack程序都是配有背景音乐甚至是动画的。这里不得不提著名的razor 1911(http://www.razor1911.com/)(有没有在你的diablo2目录下发现一个1911字样的动画呢?)他们的不但在crack界内享有盛名,在Sence demo圈内也是小有名气。
由于对汇编的敏锐嗅觉,Demo Scene程序基本上都以精巧著称。
不过Demo Scene并不能只有coder,更重要的是有优秀的CG和sound track。唯美的画风和动听的音乐才是Demo Scene吸引观众的所在。
Demo Scene团队:
正像上面说的一个Demo Scene团队主要由以下几类人组成:
coder,他们是Demo Scene的核心人物,优秀的coder可以写出强大而又精巧的demo引擎,这正是一切的基本。一般coder在1-3名
美术设计人员,1-2名,主要负责demo的构思和图片素材的建立
音效师:1-2名,这个就不用多说了
其中,无论在团队中的角色如何,编程功底应该是每个人都具备的。
对于美工人员,他在设计画面的同时,也要考虑色彩的位深、贴图的尺寸、画面的特效以便于更好的能够提升cpu和显卡的处理效率。
对于音效师,对于64kb intro的demo。他们的职责就不是简单的产生mp3文件那么简单,由于64kb无法存储一个波形文件,此时的sound track都是通过程序实时波形演算合成而来。基本上一个成熟的团队都会写一个自己的FM发音引擎,这和8位红白机的音乐一样,好的音效师,可以利用波形合成在简单的FC游戏中产生与mp3一样的音效,而完全不懂FM合成的音效师则可能只能让团队的FM引擎发出“嘀嘀”的正弦波形了
2.Demo Scene的一些原理
我没有亲自涉足这个领域,因此很多问题上只是泛泛而谈。
1.如何控制文件尺寸。
这当然对coder有很大的要求,但并不至于完全要用汇编写程序的地步。由于demo中的图形基本是实时演算的,加上采用FM音频,所以不加任何修饰,一个合格的coder就可以把程序控制在300kb以内,然后利用编译器的优化特性,这个尺寸还有望减少50-100kb不等。最后利用著名的UPX或者ASpack压缩加壳,64kb的目标是很容易达到的
2.FM引擎
当然,FM音乐合成器最终还是希望自己写一个引擎出来,但也可以利用第3方函数库,比如十分著名的fmod,你的wow中就有个fmod.dll。利用它,播放一些mod(模块音乐)还是不在话下的。当然这里尤其要推荐的是fmodmini,他仅仅提供了xm音乐的支持,并且播放函数库可以植入程序体中,成为很多crack程序的首选,找个flashget破解程序来看看?
对于xm这类mod模块音乐,因为以成为格式标准广泛采用,音效师应该不难直接将自己的midi序列导出到这些格式。
3.图形演算
图形处理是demo的核心,基本思路和编写3d游戏几乎没有区别。不过对于demo有一个问题需要考虑:
事实上对于图形的演算,无非是运动+特效的问题,前者用矩阵变换,后者则可以用常用的特效代码。所以如果为了长久之计,优秀的团队应该写出属于自己的demo引擎。
优秀的引擎可以达到这样令人惊奇的效果:今后的demo制作基本上不需要写代码,甚至可以像flash创作那样,设置好图、设置好关键帧补间、配上音效。便可以直接产生理想的exe程序了。关于这个问题我最后会特别介绍。
3.demo scene的起步
一开始就写出自己的demo引擎、FM合成器实在是不可思议的事,而且这样很快就会丢失激情。所以一开始的demo可以仅采用mp3、oog音乐,对于图形,可以直接针对画面写程序也可以使用其它团队已经开发出来的优秀引擎:
德国著名的farbrausch团队的 demo制作工具,只要你有基本的3d建模能力和动画制作程序,就能产生体积很小的demo程序。
不过界面实在是简陋
对于他的使用可以参考http://www.sycini.com/tutlist.asp?tutid=14,该引擎可以在sycini.com 得到,或者可以email向我索取。
著名的the product.就是用它渲染得,不过这是他的第一版本,已经过时很久了(所以他们才会公布)
对于conspiracy,我已经佩服的没话说了,看了他们的制作引擎~天哪,他拥有华丽的界面+简单的操作。其中可以直接编辑3d模型和处理纹理,基本上是一个简易的3ds max!
不过他们之所以能公开引擎,自然也有道理:你不能生成Exe。不过conspiracy曾在自己的团队网站承诺,可以将你的工程文件交给他们帮你生成Exe...
这个引擎系统目前很难找到了,教程和下载可以参考上面的连接,如果没法下到程序,可以单独与我联系
界面很像个简易的flash编辑器,moppi对我来说就是那个Assembly 04的invitiation demo。我曾经修改了这个demo作为协会和以前松江二中毕业留念中的demo。
他更适合2d demo的制作,虽然我还没弄清怎么用,并且貌似很难找到使用资料。并且这个程序目前几乎已很难再找到了,所以需要的话直接email联系我把
4.说在后面
上面就是我目前对Demo Scene已经了解的情况,当然很多细节这里就不说了。最后说到的那些制作引擎固然好用。而且sycini.com 的很多作品都是用他们做的,但这不是我们的目标。所以大家如果对demo这行有兴趣,不妨先用这些引擎练手,有实力的coder可以尝试写我们自己的引擎了。
那些引擎实现也不难,关键就看我们有没有这个胆量和执著的追求了。
在flash site release 2完成以后,我将花力气研究AI和图形算法。各位有没有兴趣一起组建一个scene团队呢?