「この記法で幸せになっている人が誰も居ない」とまで言われている、surfaces.txtの記法、いわゆるSERIKO文法。これを少しでもマシにしてみよう。最小限の変更で最大限の効果を小さく生んで大きく育てる。大きすぎる変更で立ち消えさせない。各サーフィス用で共通の記述をすることが多いが、コピー&ペーストする以外に共通化する方法がない。†サーフィス定義に「基底-継承」の関係を導入してみよう。プログラマ向け説明:サーフィス定義をクラスと見なし、継承で共通部分を一括表記しよう。Webデザインの出来る人向け説明:スタイルシートを.cssファイルで全ファイル共通部分を書き、各htmlファイルで上書き変更したり追加したりするように、共通定義用サーフィス定義とこれを踏まえて上書き・追記できるようにしよう。別のサーフィス定義を継承するサーフィスは、次のように書く。ここで、XXXとYYYはサーフィス番号とする。XXXが基底となるサーフィス番号、YYYが継承するサーフィス番号とする。......}定義するサーフィス名の後にコロン(:)とキーワード「inherit」を書き、さらにスペースorタブをはさんで継承するサーフィス名を書く。継承を指定すると、surfaceYYYの定義は、継承元として指定したsurfaceXXXの定義がコピーされた状態になる。surfaceYYYの定義に、animation、element、collision等で継承元のサーフィスと異なる部分や追加したい部分を書くと、surfaceXXXの定義に上書き定義or追記した状態になる。†この例の前提条件\0はサーフィス0からサーフィス9を使用する。キャラクタの姿勢はサーフィス0から9までほとんど変化せず、表情のみ違う。表情サーフィスは、surface0000.pngにelement合成することで実現している。表情サーフィスファイルは、face0.png~face9.pngである。当たり判定領域は、位置・名前共に全サーフィスで共通である。†ゴーストで運用する際は使用しないが、共通記述のためだけに存在するサーフィス番号といったものがあってもよい。「このサーフィスだけ、継承元のサーフィスから当たり判定領域を削りたい」といった要求が考えられる。上ではキーワード「undef」を定め、定義の無効化が出来ることが望ましいだろう。surface10に存在する当たり判定領域3を、surface11中では無効にした}以下の項は、主にプログラマが読むことを想定している。surface100とsurface50の両方の定義を継承。surface0を継承したsurface30を更に継承する例。}private/publicは必要か?undefの必要性ともリンクする。難点としてはsurfaces.txtのIDのミス(おなじID重複)が常態化しているところですね。...間違うなと言っても無茶なのでいっそのこと関係なしにしたいです。†アニメーションや着替えを多用するサーフィス定義では、surfaces.txtのファイルサイズが非常に大きくなる。大きな定義ファイルは、メンテナンス時にどこに何が書いてあるのかが分かりにくい。†ファイルのインクルード機能を付けようプログラマ向け説明:C言語の「#include」、各種言語の「import」機能を導入する。一般向け説明:surfaces.txtの指定行に、別のファイルの内容が差し込まれているものと見なす機能を導入する。「%incude(FILENAME)」という行があると、その行にFILENAMEという名前のファイルの内容が差し込まれたのと同じ動作をする。「%」を、プリプロセッサ機能に関わる機能の共通頭文字として確保する。プリプロセッサ機能は、本体によるsurfaces.txt構文解析の前に全て処理するものとする。†プログラマとしては「継承」が自然で実装も簡単ですが、プログラマでない人が書くことを考えなければいけませんね。12:30:59その例として、CSSとかで用いられている「カスケード」という概念が判りやすいと思います。16:30:54他には、マスク、レイヤーといった出版写真的概念をPhotoshopみたいに拡張させるのもアリですね。16:32:42あ、訂正。Photoshopというより、FireworksやImageReady?でのマスクやレイヤーを用いたアニメーション作成の方が近いです。