さとー/surfaces.txt記法改善計画
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
-----
*これは何? [#ce92f6c1]
-「この記法で幸せになっている人が誰も居ない」とまで言われ...
-最小限の変更で最大限の効果を
-小さく生んで大きく育てる。大きすぎる変更で立ち消えさせな...
*改善案その1 [#aa953e6f]
**課題 [#tbb95ab8]
-各サーフィス用で共通の記述をすることが多いが、コピー&ペ...
--共通箇所に変更があると、コピペしなおしになる
--コピペしなおしは、やり忘れミスを起こしやすい
--エディタの一括置換だと、誤爆置換の可能性がある(偶然同...
**打ち手 [#x72bcf19]
-サーフィス定義に「基底-継承」の関係を導入してみよう。
--プログラマ向け説明:サーフィス定義をクラスと見なし、継...
--Webデザインの出来る人向け説明:スタイルシートを.cssファ...
***定義 [#h4f2a336]
-別のサーフィス定義を継承するサーフィスは、次のように書く...
例:
surfaceYYY : inherit surfaceXXX
{
[通常のサーフィス定義と同じ書き方]
……
}
-定義するサーフィス名の後にコロン(:)とキーワード「inherit...
***解説 [#zaf44e0b]
-継承を指定すると、surfaceYYYの定義は、継承元として指定し...
-surfaceYYYの定義に、animation、element、collision等で継...
***例 [#w06e9cdf]
-この例の前提条件
--\0はサーフィス0からサーフィス9を使用する。
--キャラクタの姿勢はサーフィス0から9までほとんど変化せず...
--表情サーフィスは、surface0000.pngにelement合成すること...
--表情サーフィスファイルは、face0.png~face9.pngである。
--当たり判定領域は、位置・名前共に全サーフィスで共通であ...
--サーフィス9にのみ当たり判定領域「Hand」がある
surface0
{
element0,overlay,surface0000.png,0,0
element1,overlay,face0.png,90,90
collision0,73,42,170,77,Head
collision1,96,97,150,146,Face
collision2,86,179,163,216,Bust
}
surface1 : inherit surface0
{
element1,overlay,face1.png
}
surface2 : inherit surface0
{
element1,overlay,face2.png
}
surface3 : inherit surface0
{
element1,overlay,face3.png
}
surface4 : inherit surface0
{
element1,overlay,face4.png
}
surface5 : inherit surface0
{
element1,overlay,face5.png
}
surface6 : inherit surface0
{
element1,overlay,face6.png
}
surface7 : inherit surface0
{
element1,overlay,face7.png
}
surface8 : inherit surface0
{
element1,overlay,face8.png
}
surface9 : inherit surface0
{
element1,overlay,face9.png
collision3,170,220,214,240,Hand
}
**備考 [#x59dc34e]
-ゴーストで運用する際は使用しないが、共通記述のためだけに...
-「このサーフィスだけ、継承元のサーフィスから当たり判定領...
--当分は「削るような定義は継承元サーフィスに書かず、各サ...
--今後、記述量削減の上ではキーワード「undef」を定め、定義...
例:
surface11 : inherit surface10
{
undef,collision3
// surface10に存在する当たり判定領域3を、surface11中では...
}
''以下の項は、主にプログラマが読むことを想定している。''
-継承サーフィスの継承、多重継承やMix-inは必要か?
surface200 : inherit surface100,surface50
{
// surface100とsurface50の両方の定義を継承。多重継承 o...
}
surface30 : inherit surface0
{
// surface0を継承
}
surface40 : inherit surface30
{
// surface0を継承したsurface30を更に継承する例。
}
-private/publicは必要か?undefの必要性ともリンクする。
surface1000
{
element0,overlay,base.png,0,0
private:
element1,overlay,element1000-1.png,100,100
element2,overlay,element1000-2.png,100,200
// element1~2はprivate属性で、継承先からは見えない
public:
collision0,170,220,214,240,Head
// collision0はpublic属性で、継承先から見える
}
surface1010 : inherit surface1000
{
// surface1000を継承しているが、element1~2は合成され...
undef,element1
undef,element2
// private/publicが無い場合、element1~2を外すのにunde...
}
**コメント [#neab13ed]
- 難点としてはsurfaces.txtのIDのミス(おなじID重複)が常...
#comment
*改善案その2 [#s06c0a15]
**課題 [#tf1aa42a]
-アニメーションや着替えを多用するサーフィス定義では、surf...
-大きな定義ファイルは、メンテナンス時にどこに何が書いてあ...
**打ち手 [#d4cab05f]
-ファイルのインクルード機能を付けよう
--プログラマ向け説明:C言語の「#include」、各種言語の「im...
--一般向け説明:surfaces.txtの指定行に、別のファイルの内...
***定義と解説 [#i6983c14]
-「%incude(FILENAME)」という行があると、その行にFILENAME...
***例 [#y7b9e030]
-common.txtの内容
collision0,73,42,170,77,Head
collision1,96,97,150,146,Face
collision2,86,179,163,216,Bust
-surfaces.txtの内容(部分)
surface100
{
element0,overlay,surface000.png,0,0
element1,overlay,element100.png,90,90
%include(common.txt)
}
surface102
{
element0,overlay,surface000.png,0,0
element1,overlay,element101.png,80,80
%include(common.txt)
}
**備考 [#ge1c6c80]
-「%」を、プリプロセッサ機能に関わる機能の共通頭文字とし...
-プリプロセッサ機能は、本体によるsurfaces.txt構文解析の前...
**コメント [#u8f5bcd1]
- プログラマとしては「継承」が自然で実装も簡単ですが、プ...
- その例として、CSSとかで用いられている「カスケード」とい...
- 他には、マスク、レイヤーといった出版写真的概念をPhotosh...
- あ、訂正。Photoshopというより、FireworksやImageReadyで...
#comment
終了行:
#contents
-----
*これは何? [#ce92f6c1]
-「この記法で幸せになっている人が誰も居ない」とまで言われ...
-最小限の変更で最大限の効果を
-小さく生んで大きく育てる。大きすぎる変更で立ち消えさせな...
*改善案その1 [#aa953e6f]
**課題 [#tbb95ab8]
-各サーフィス用で共通の記述をすることが多いが、コピー&ペ...
--共通箇所に変更があると、コピペしなおしになる
--コピペしなおしは、やり忘れミスを起こしやすい
--エディタの一括置換だと、誤爆置換の可能性がある(偶然同...
**打ち手 [#x72bcf19]
-サーフィス定義に「基底-継承」の関係を導入してみよう。
--プログラマ向け説明:サーフィス定義をクラスと見なし、継...
--Webデザインの出来る人向け説明:スタイルシートを.cssファ...
***定義 [#h4f2a336]
-別のサーフィス定義を継承するサーフィスは、次のように書く...
例:
surfaceYYY : inherit surfaceXXX
{
[通常のサーフィス定義と同じ書き方]
……
}
-定義するサーフィス名の後にコロン(:)とキーワード「inherit...
***解説 [#zaf44e0b]
-継承を指定すると、surfaceYYYの定義は、継承元として指定し...
-surfaceYYYの定義に、animation、element、collision等で継...
***例 [#w06e9cdf]
-この例の前提条件
--\0はサーフィス0からサーフィス9を使用する。
--キャラクタの姿勢はサーフィス0から9までほとんど変化せず...
--表情サーフィスは、surface0000.pngにelement合成すること...
--表情サーフィスファイルは、face0.png~face9.pngである。
--当たり判定領域は、位置・名前共に全サーフィスで共通であ...
--サーフィス9にのみ当たり判定領域「Hand」がある
surface0
{
element0,overlay,surface0000.png,0,0
element1,overlay,face0.png,90,90
collision0,73,42,170,77,Head
collision1,96,97,150,146,Face
collision2,86,179,163,216,Bust
}
surface1 : inherit surface0
{
element1,overlay,face1.png
}
surface2 : inherit surface0
{
element1,overlay,face2.png
}
surface3 : inherit surface0
{
element1,overlay,face3.png
}
surface4 : inherit surface0
{
element1,overlay,face4.png
}
surface5 : inherit surface0
{
element1,overlay,face5.png
}
surface6 : inherit surface0
{
element1,overlay,face6.png
}
surface7 : inherit surface0
{
element1,overlay,face7.png
}
surface8 : inherit surface0
{
element1,overlay,face8.png
}
surface9 : inherit surface0
{
element1,overlay,face9.png
collision3,170,220,214,240,Hand
}
**備考 [#x59dc34e]
-ゴーストで運用する際は使用しないが、共通記述のためだけに...
-「このサーフィスだけ、継承元のサーフィスから当たり判定領...
--当分は「削るような定義は継承元サーフィスに書かず、各サ...
--今後、記述量削減の上ではキーワード「undef」を定め、定義...
例:
surface11 : inherit surface10
{
undef,collision3
// surface10に存在する当たり判定領域3を、surface11中では...
}
''以下の項は、主にプログラマが読むことを想定している。''
-継承サーフィスの継承、多重継承やMix-inは必要か?
surface200 : inherit surface100,surface50
{
// surface100とsurface50の両方の定義を継承。多重継承 o...
}
surface30 : inherit surface0
{
// surface0を継承
}
surface40 : inherit surface30
{
// surface0を継承したsurface30を更に継承する例。
}
-private/publicは必要か?undefの必要性ともリンクする。
surface1000
{
element0,overlay,base.png,0,0
private:
element1,overlay,element1000-1.png,100,100
element2,overlay,element1000-2.png,100,200
// element1~2はprivate属性で、継承先からは見えない
public:
collision0,170,220,214,240,Head
// collision0はpublic属性で、継承先から見える
}
surface1010 : inherit surface1000
{
// surface1000を継承しているが、element1~2は合成され...
undef,element1
undef,element2
// private/publicが無い場合、element1~2を外すのにunde...
}
**コメント [#neab13ed]
- 難点としてはsurfaces.txtのIDのミス(おなじID重複)が常...
#comment
*改善案その2 [#s06c0a15]
**課題 [#tf1aa42a]
-アニメーションや着替えを多用するサーフィス定義では、surf...
-大きな定義ファイルは、メンテナンス時にどこに何が書いてあ...
**打ち手 [#d4cab05f]
-ファイルのインクルード機能を付けよう
--プログラマ向け説明:C言語の「#include」、各種言語の「im...
--一般向け説明:surfaces.txtの指定行に、別のファイルの内...
***定義と解説 [#i6983c14]
-「%incude(FILENAME)」という行があると、その行にFILENAME...
***例 [#y7b9e030]
-common.txtの内容
collision0,73,42,170,77,Head
collision1,96,97,150,146,Face
collision2,86,179,163,216,Bust
-surfaces.txtの内容(部分)
surface100
{
element0,overlay,surface000.png,0,0
element1,overlay,element100.png,90,90
%include(common.txt)
}
surface102
{
element0,overlay,surface000.png,0,0
element1,overlay,element101.png,80,80
%include(common.txt)
}
**備考 [#ge1c6c80]
-「%」を、プリプロセッサ機能に関わる機能の共通頭文字とし...
-プリプロセッサ機能は、本体によるsurfaces.txt構文解析の前...
**コメント [#u8f5bcd1]
- プログラマとしては「継承」が自然で実装も簡単ですが、プ...
- その例として、CSSとかで用いられている「カスケード」とい...
- 他には、マスク、レイヤーといった出版写真的概念をPhotosh...
- あ、訂正。Photoshopというより、FireworksやImageReadyで...
#comment
ページ名: