デジロケメモ


作成:H15/1/17

これは私が自分の為に作ったメモです。
スクリプトテクニックはあまり書いてありませんが、
もし参考になれば幸いです。
Ver3.0を使用していますが、バージョンが変更された場合
以下の内容は変更される可能性があります。ご了承下さい。


(英語版のデジロケメモが予定されている訳ではありません。)



・変数、定数の宣言では、配列インデックス指定の時に式は入れないでおきましょう。
const
     x:array [3*5] of integer=(
     04,23,08,09,20,
     10,12,17,24,03,
     15,29,34,50,60);
var
     y:integer=x[2*5+1];


こういう指定ではマズイです。yは29にはならず9になってしまいます。
おそらく[2*5+1]が2+1になってしまっています。


・配列インデックス指定は0から始まります。
例えば宣言時の配列数が8の場合、インデックス指定する時、0〜7になります。
先頭は0であり、1ではないです。間違えないようにしましょう。


・配列を用意する時は予定よりも余分目に配列数を取っておくように心がけましょう。
あとで配列数を増やそうとすると他のプログラムにも影響がでてバグ取りが大変になります。


・トラックプロパティ命令は実行速度が遅めの処理との噂です。右辺では使わないようにしましょう。
できるだけ、変数を使うようにましょう。
トラックプロパティ命令は使用頻度が高いため、このことは重要です。

×  TrackProperty[root:1].Variable.Pos.X=TrackProperty[root:1].Variable.Pos.X+1;

○  Inc(MyPosX);
    TrackProperty[root:1].Variable.Pos.X=MyPosX;


・2Dキャストウインドウでスケール可変、透明度あり、にするとパペットの際、
サイズ指定もしないとオカシク表示されるので気をつけましょう。


・2Dキャストの中心位置は中央ではなく左上なので座標に注意しましょう。


・2Dキャストはその必要がなくともスケール可変、透明度あり、にした方が処理が速いとの噂です。


・スクリプトの文字は小さめにしておきましょう。
変数やIF文などはどうしても長くなる傾向があります。
できるかぎり命令文は一行で済ませて見やすくしておきたいものです。
MSゴシックのサイズ10がオススメです。タブは2が良いでしょう。


・スクリプトの文字は全角スペースは使わないようにしましょう。
エラーが出ます。またそのエラーも半角スペースと見分けがつきにくいため発見しにくく
大変厄介です。気をつけましょう。


・テキストキャストのフォントは「MS 明朝」または「MS ゴシック」にしておくと良いでしょう。
文字の大きさによる字詰めががなくなりズレないので、最大表示桁行を管理しやすくなります。
画面レイアウトに関わる事でもあります。


・2Dのマルチスコアはスコアトラックを不可視にしてもスコア内の子が
可視であれば表示されます。覚えておきましょう。
3Dではスコアトラックを可視にしておかないと表示されません。


・マルチスコア内でスコアアニメーションさせない場合でも、ループマーカーを設けておきましょう。
ループマーカーで再生ヘッドを停めておかないと、ヘッドが移動しすぎてデバッグ時に見映えが良くないです。


・トークンは長くなりがちなスクリプトを省略できる為、非常に便利です。
トラッププロパティ系、キャスト系、ジョイスティック、キーステート、トランジション、
変数の型指定、メッセージボックスなど、どんどん省略化しましょう。
トークンは保存しておいて、他のプログラムでも流用しましょう。
ちなみに私はこんなトークンを使っています。

//トークン
//3D
{$Define VV ='Variable.Visible'}
{$Define VPx ='Variable.Pos.x'}
{$Define VPy ='Variable.Pos.y'}
{$Define VPz ='Variable.Pos.z'}

{$Define VRx ='Variable.Rol.x'}
{$Define VRy ='Variable.Rol.y'}
{$Define VRz ='Variable.Rol.z'}

{$Define VSx ='Variable.Scl.x'}
{$Define VSy ='Variable.Scl.y'}
{$Define VSz ='Variable.Scl.z'}

//2D
{$Define VIx ='Variable.IntX'}
{$Define VIy ='Variable.IntY'}
{$Define VIw ='Variable.SizX'}
{$Define VIh ='Variable.SizY'}
{$Define Vr2 ='Variable.Rol2D'}
{$Define VA ='Variable.Alpha'}
{$Define VAA ='Variable.AlphaAdd'}
{$Define VF = 'Variable.Filter'}

//3D・2D共通
{$Define TP = 'TrackProperty'}
{$Define PU = 'Puppet'}
{$Define VC = 'Variable.CastNumber'}

//スコア指定
{$Define SN = 'ScoreNum'}

//トラックラベル
{$Define TLP='TrackLabelPos'}

//キャスト指定
{$Define MC ='ModelCast'}
{$Define BC ='BitmapCast'}
{$Define TC ='TextCast'}
{$Define CC ='CameraCast'}
{$Define LC ='LightCast'}
{$Define CN ='CastNumber'}

//デバッグコンソール
{$Define DBW  ='DbgWrite'}
{$Define DBWL ='DbgWriteLn'}
{$Define DBC ='DbgClear;'}

//メッセージウインドウ
{$Define MB  ='MessageBox'}

//キー定数
{$Define GKS = 'GetKeyState'}

//ジョイスティック定数
{$Define JOY1 ='Joystick[JOYSTICKID1]'}
{$Define JOY2 ='Joystick[JOYSTICKID2]'}
{$Define DX ='DigitalX'}
{$Define DY ='DigitalY'}
{$Define B1 ='ButtonStat[JOY_BUTTON1]'}
{$Define B2 ='ButtonStat[JOY_BUTTON2]'}
{$Define B3 ='ButtonStat[JOY_BUTTON3]'}
{$Define B4 ='ButtonStat[JOY_BUTTON4]'}
{$Define B5 ='ButtonStat[JOY_BUTTON5]'}
{$Define B6 ='ButtonStat[JOY_BUTTON6]'}
{$Define B7 ='ButtonStat[JOY_BUTTON7]'}
{$Define B8 ='ButtonStat[JOY_BUTTON8]'}

//トランス
{$Define ST ='SetTransition'}

//変数定数
{$Define INT ='Integer'}
{$Define FLO ='float'}
{$Define STR ='String'}
{$Define BOO ='Boolean'}

{$Define EXINT ='External Integer'}
{$Define EXFLO ='External float'}
{$Define EXSTR ='External String'}
{$Define EXBOO ='External Boolean'}
{$Define EXArray ='External Array'}


・汎用処理はファイルにして、他のプログラムでも流用しましょう。
パペット設定、パペット初期化、ジョイスティックとキー入力、FPS表示など、
良く使うものはどんどん共有化しましょう。


・定数は外的変数(Extrenal)にできません。
プロジェクト毎に宣言する必要があります。


・配列を外的変数(External)にする時の宣言は、

var
     x:External array [5] of integer=[0,0,0,0,0];
となります。


・Int型はFloat型よりも演算速度が速いという噂です。
できるだけInt型を使いたいです。
ただ、Int型はFloat型よりも式の柔軟性はとても低くなります。
後に変更したい時などは不便になりますので、無理には使わないようにしましょう。
またInt型の式を扱う際、和や差の式を扱う場合はIncやDecを使いましょう。
x=x+1;よりも、
Inc(x);の方が若干ながら処理は速いです。


・ラベルは面倒がらずにキッチリと付けましょう。
バランス調整の為に数値変更をする際、困ることになりますよ。
ラベルおよび定数付けするべきものはゲーム中に扱う数値以外でもあります。
先頭キャスト、マルチスコア、トラックラベルなど。
製作途中ではトラックやキャストの追加削除やマルチスコアのトラックナンバー変更を
する事が多々あります。


・コメントは要所要所、キッチリと入れておきましょう。
ブランクがあいた時にわけがわからなくなります。
特に識別子のあるもの(定数、変数、手続き、関数)はその役割を書いておきましょう。
プログラムを最適化する際や流れを把握するのにも役立つでしょう。


・変数の初期値は宣言時には入れないようにしましょう。
JumpProjectした時に困ります。
変数の初期値は、初期化用手続きを作って実行した方が良いです。
また、Externalは受け側プロジェクトの宣言時の数値を無視すると言われています。


・作業中、ウインドウの位置が雑多になった時はウインドウの初期化をしましょう。
少しは作業がやりやすくなります。


・ジャンプ先のプロジェクト…完成時においてはファイルの拡張子は
デジロケのそれとわかるようなものは避けたいものです。
拡張子もバレバレですが、アイコンもデジロケのものになり、
なぜかカッコわるいように思えます。
拡張子を.lcrなどに変えられて再生されても中身が見えないよう、
外的変数を使ってチェックしHALTするか、別の画面を用意して
ズルができないようにしてしまいましょう。


・アイコンを作りましょう。
再生終了時にバレるとはいえ、見映えはデジロケのそれとわからないようにしておきたいものです。


・ジョイスティックを挿していない状態でJoystick.CaptureするとMidiがプツプツ
おかしなノイズが入ります。(私のだけか?)

if JoyStick[JOYSTICKID1].Enabled then
     joystick.capture;
end;
をしましょう。


・パペット化したものを不可視にするには
パペット解除・パペット不可視・座標をスクリーン外へ飛ばす、などがありますが、
パペット解除にしても、パペット不可視にしても実行速度に変化はありません。
また、パペット解除してもそのパペットの情報(座標や可視情報など)がなくなるわけではないようです。
ですがパペット不可視にした方が恐らく無難でしょう。
また、ここが重要なのですが、トラック数が増えると処理落ちします。
パペット化されてるかどうか、不可視かどうかに関わらずです。
できれば余計なトラックは作らず、スクリプトでトラックに割り当てられたキャストを交換した方が良いと思われます。
単純なヒエラルキー構造ならば複数トラックでもスクリプトで扱った方が良いでしょう。
また、シーンが別になる場合は別プロジェクトに分けるなどして1プロジェクト内のトラック数を減らすように心がけましょう。
キャストの量は処理速度に影響を与えないようです。またキャストに空白欄があっても
処理速度に影響を与えないようです。
特に3Dの背景などは複数トラックを用いるよりも一つのトラックで済むよう、
グループ分けをした方が処理は速くなるという噂があります。


・キャプションだけでなくタスクバーにもタイトルを入れましょう。
Untitledでは少々カッコ悪いです。
タスクバーへのタイトル等の出力は忘れがちになります。
忘れず入れておきましょう。


・マウスを使わない作品はカーソルを非表示にしましょう。
フルスクリーン再生の際、カーソルが邪魔になります。消しておきましょう。
また、カーソルは矢印以外でも沢山使う事ができます。ヘルプを見ておきましょう。
気に入ったものがない時は自分で絵を描いて作りましょう。
カーソルを非表示にして、カーソル位置に自分の絵を表示させればできます。



その他



・要望はメモしておきましょう。
何かと欲しい機能というのは使っているうちに気が付くものです。
忘れない内に書いておきましょう。もちろんスクリプトもです。
個人的には変数、定数、手続き、関数の管理をしたいので、
シンボルブラウザのプリントアウトができたらと思っています。
要望が溜まったらネットディメンジョン社に送ってあげましょう。
フィードバックされれば全てのユーザーの財産となります。


・発見した事はメモしておきましょう。
今まで使い方やその働き、書式が分からなかったプログラムは、
時間を追う毎に理解できるようになったり、新しい発見や面白い使い方を考えついたりします。
わかったものや閃いた事はその場で使わなくとも、メモしておきましょう。
実際に3D音声、トランジション、WEBを意識して作られている作品は意外と少ないものです。
通常あまり使わない機能の事も時折思い出してみましょう。
面白い作品が生まれるかもしれません。


・思いついた事はメモしておきましょう。
デジロケで作業している時やそれ以外でも、ふとした事でアイデアが浮かぶ事があります。
後で思い出せるようにメモしておきましょう。
眠りに就く時もアイデアが出る事があります。枕元には紙とボールペンを置いておきましょう。


・ヘルプ全体に軽く目を通しておきましょう。
デジタルロケでどんな事ができるのか、知っておくと後々の作業で役に立ってきます。
バージョンが新しくなった際には追加されたスクリプトに目を通しておく事をお勧めします。
テクスチャアニメ、レンダードテクスチャ、ビットマップ出力、マルチビュー、表示ビューの変更など
演出面やそれ意外でも効果的に使えそうな機能があります。


・紙の上での作業もやりましょう。
パソコンを使っての作業は具体的ではありますが、全体像を把握するのは少々困難な時があります。
そんな時は一旦パソコンから離れてみましょう。


・実際に作業を始めてみましょう。
インスピレーションは待っているよりも、作業を始めてしまった方が浮かびやすい事があります。
とりあえず作ってみよう…という気持ちで作業を始めてみましょう。
良いアイデアが浮かぶかもしれません。