Hatena::ブログ(Diary)

Jack日記 Twitter

2012-05-05 Farbrauschソースコード解読会

Farbrauschソースコード解読会

Farbrauschソースコード解読会(通称:歯ブラシ勉強会)に行ってきました。場所は渋谷ヒカリエDeNAさんの会議室です。新しくてとても綺麗、設備はよく、渋谷が見渡せました。GWということも会って商業施設は入場制限までしていました。

IMG_1154

IMG_1148 IMG_1146

IMG_1152 IMG_1150


今回はDemosceneならではの話題が聞ける貴重な機会でした。内容もDemosceneとは何か、というところから始まって、歴史やイベントの紹介、デモが流行るきっかけとなった昔のマシンについて、極小サイズのプログラムの作り方、デモのエンジン紹介、音声合成、デモ作成ツールのGUIのソース解読、スクリプトエンジン、圧縮と色々な話題が。デモの動画もいくつも流されました。

debris

D

Gaia Machina(ハブラシ製ではないけど)

D


デモはカッコ良さが一番、という言葉が出ました。どの発表もカッコ良かったです。

Demoscene熱いですね。入門してTokyo Demo Festとかに作品出したりとかしてみたいです。


スライドは後日公開されるそうですが、以下取ったメモを張っておきます。自分用メモなので役に立たないかもしれませんが参考までに。

Farbrausch勉強会
2012/5/5(Sat) 渋谷ヒカリエ

※印は自分の感想。

//--------------------------------------------------------
kioku_systemkさん
デモシーンの概要紹介

Demoscene
  Technical Programming
  Arts(Graphics/Music)
  Competition
  Party

History
  1980s
    cracktro
    Amiga
  1990s
    DOS
    3D時代(CPU)
  2000s
    DX/OpenGL(Gpu)
    More ritch
  今
    リアルタイムレイトレーシング
    リアルタイムFluid/Physics
    Tokyo Demo Fest

Demoの種類
  PC Demo …一番数あり
  PC Intro(PC 64K, PC 4K)
  Game(96K) …あんまメジャーじゃない
  Wild(AVR, etc…) …その他的な。AVRマイコンの小さいメモリの何からしい
  Amiga
  Others(256B, 4K Graphics)

Farbrausch
  http://pouet.netメガデモいっぱい上がってるサイト
  scene.org …AWARD出してる組織

Revision 2012
  世界最大。ゲームなし。他、Assemblyなど。
  Easterに行われる(休みが変化するGW)、4頭くらい。
  ドイツ/Saarbrucken
  2011〜
  以前はBreakPoint
  1000人くらい

DemoPartyに対する認識
  ×プログラミング技術のコンテスト(ではない!)
  ○ビール飲みながらDemo見て盛り上がる会
  ○Scener達の交流会
  ○セミナー(一応あるが皆それほど聞いてない)

  Gaia Machia(Revision2012 一位) ハンパない。

参加
  トータル15-20万。飛行機だけで10万円。

Tokyo Demo Party
  2013/1
  (100人規模を目指す)
  スポンサーも募集中。

//--------------------------------------------------------
T_SDesignWorksさん

Old School

Commodore
  会社。Commodore64, Amiga等が販売された。
  Win, Macに押されて倒産。

Commodore64 1982/8, 1993年販売終了までに1700万台。
  C64Forever (Emu)

Amiga 1985 Amiga 1000
  1990位からWin, Macにハード性能を抜かれた。
  Amiga forever(Emu)

チップチューン
  ピコピコ音のこと。
  Tracker …チップチューンを作るソフト(の一形態?)
  MilkeyTrackerが紹介される

※ピコピコ音、非常に心地いい。ノスタルジック。

//--------------------------------------------------------
tomohiroさん

OpenGL 4k/64k, Graphicsが得意。
glew4k というのを作った。
4k intro用の拡張関数初期化ライブラリ。
GLEW拡張関数。

4k introの作り方
・コードを駆使してデータはあまり使わない
・ランタイムライブラリをリンクしない
・Win32API, DX, OpenGLを直接使用
・Boost Preprocessor, MPLは使える
・Crinklerでファイルを圧縮
・Shader_minifierでシェーダを圧縮
・小さいコード/データより圧縮されやすいコード/データ

glew4k
・wglGetProcAddressで取る。
・あらかじめGlobal変数に取っておくか、使うとき取るか
・glew4kは、呼び出した拡張関数を記録してくれて、それだけ
  includeするヘッダを作ってくれる。それでサイズ小さくなる。
・deprecatedな関数を使って拡張関数の使用を抑えるという方針もある。

//--------------------------------------------------------
mwsssさん
werkkzeug3フル版

発音:ヴェァクツォイク
デモエディタ、シーンエディタみたいなもの。

.kkriegerというFPSが作られている
candytronはgenthreeという別のソフトで作られている。

werkkzeug3(wz3)で作られたkkrieger(FPS) http://www.youtube.com/watch?v=KgNfqYf_C_Q

werkkzeug4のバイナリも公開されている。

//--------------------------------------------------------
ぺりむ(@hi2p_perim)さん
werkkzeug3のGUI実装

Qt? Gtk? MFC?、否、独自実装

構造:
sGuiManager
sGuiWindow
※Manager、Window+Eventhandlerの木構造(コンポジション), Control、などモダンな構成に見える。
borderは特別扱い

インタラクション:
command
1.windowがcommand発行
2.sGuiManagerのバッファに保存
3.SendでOnCommand呼び出し、成功するまで親に伝搬。

処理の流れ
Gui->AppInstance
Init,
OnFrame, OnPaint
OnFrame()
  CalcSizeR()
  LayoutR()

子のサイズを使って親のサイズ計算するから子を先に処理する。

対称ならミラーでいい。

//--------------------------------------------------------
Holeさん
@h013
@__k_suzuki__

Farbrauschスクリプトシステム

werkkzeug4で作られたデモ。バイナリ公開されてサンプルにデモ入ってる。
※デモもエンジンで作る時代。

作品群:
fr-08 …64k
Candytron …64k
.kkrieger …64k
debris …Full
Masagin …Full
Rove …Full

でもシーンは徐々に減ってきている
64kなど、Introはさらに減ってきている

スクリプトシステムは最近は特定用途しか使われなくなっていた。
最初は制御を全部Scriptでやろうという構想で作っていた。
でもサイズ大きくなるので使わない方向に。

WZ4のスクリプト
メガデモ用組み込み命令
Gui{}ブロックで囲むとScript変数GUIに出る。
レジスタ使うとどのレジスタ使うかで管理大変なのでスタックベース。
デモで一番重要なのはかっこよさ、script言語イチから実装とかかっこいい。

//--------------------------------------------------------
301zさん
Candytronの声みたいなサウンドの話

Speech Synthesizer
Ronal Vocaloidみたいなの、というより
Effector (Vocalizer)
元の音が必要。ノイズが本物の声みたいになる。

謎の文字列(発音記号みたいなの)のインタプリタ。
音素に分けてフィルタかけまくって声みたいにする。

Phoneme = 音素
Syllable = 音節

ソースコンパクト(500-600行)だし使うのは簡単。
※JSをフロントエンドにして何かやるのは手軽で便利そう。JSとかHTML5でデモ用フレームワーク作ればいいんじゃないか。

※ロボットボイスとかそれっぽくてそれなりに単語も聞き取れてすごい。

//--------------------------------------------------------
qさん
@quatnonoi

A・S・D というデモグループがあるらしい
Andromeda Software Development

ExecutablePacker
自己展開を行う実行ファイルを生成。
4kb Crinkler
64b kkrunchy
1.5MB -> 59kb !

kkrunchyの特徴

kkrunchy(無印)
  結構単純だが結構いい圧縮率
  kkrunchy v7
  PAQ7
圧縮前のFilter
  x86用

DisFilter
  x86コードを圧縮が効くように事前に変換
  できるだけ小さな値に変換 1, 2, 3 … -> 1, 1+1, 1+2 ...
  同じような値は近くに配置
  絶対アドレス変換
  オペコードごとに分類して圧縮率を上げる

PAQ
  メモリ消費と圧縮速度を代償に最強の圧縮率。

Huffman Coding
  出現率の多いデータを少ないビットにコード化する。

Arithmetic Coder
  流行ってない
  小数点数使うので有効桁数に不安
  パテント怖い

※出現確率を階層的に区間で区切っていって数値に落とす?
※デコードは数値が階層のどこにあるか探せばいい。

Range Coder
  Arithmetic Coderを整数にして適応的にした。

Context Mixing
  次のbitは今までのbitからするとこれがくるだろう、というコンテキストを
  沢山用意して、それを巧く使って圧縮。
  ※もやっと理解
//--------------------------------------------------------

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/shuichi_h/20120505/1336235970
リンク元