見出し画像

2020/11/08

今日はなんか、鏡外の演出面を少しいじってました。というのも、根幹のスコアシステムや演出グラフィックの表示システム(僕が使いやすいような独自のユーザー定義関数を用意しています)は既に書かれてから1年程度経過しており、かなり使い勝手が悪い上に演出が非常に地味なんですよね。

動画が横向きな事には突っ込まないでほしい

ちなみにここら辺のシステムには特に名前がありません。今更になってから、システム名を用意しておけば定義関数の名前に困らなかったなぁと後悔しております。

今回のステージタイトル表示は従来のもの(1年ほど前に実装)を改良して出来ており、その為に旧演出との互換性があります。具体的には、旧演出には背景の白帯が無く、またタイトル画像自体も現行のものより読みづらく、更には鶴のデザインが入っていません。

画像1

このうっすらとしたヤツです

処理的には、新デザインの画像を旧演出の関数で読み込み、その背景に新しい関数を呼び出して白帯を表示しています。ですので、現時点でもスクリプトで旧演出をそのまま呼び出す事が可能となっています。

そんな旧演出の定義関数が「StageName」で、追加した新しい演出の定義関数が「StageTitle」です。有り得なくない?

StageTitleでは、StageName(旧演出、タイトル文字を表示します)ともう一つ、新しい関数の「StageTitleBackLayer」を呼び出します。これが白帯の演出になっています。両方とも、一度呼び出すと90フレームかけて展開し、90フレームの表示期間があり、30フレームで閉じられる、210フレーム(3.5秒)の工程が丸々実行されるようになっています。

ここで思うんですけど、NameだのTitleだのネーミングセンスが無いなって話です。ここまでの経緯を知らない人は、どちらの関数が何を担当しているのかがサッパリでしょう。

ここでシステム名という概念を取り入れて、それぞれに例えば「REFtitle」「REFtitle_MainGraphic」「REFtitle_BackLayer」とかそういう名付け方をしておけば、スコアのシステムなんかとある程度のネーミングの共通化が図れる訳です。つまりは、「REFtitle」ならステージタイトルを、「REFscore」ならスコアを一括で管理する大元の関数なんだな、アンダーバーが付いている関数はそこから呼び出される子なんだなと分かる訳です。

REFというのは今なんとなく思い付いただけのシステム名「reflect」から取りました。こういった一定の単語を名前の最初に付けておけば、スクリプト内にある変数や、既に弾幕風に存在している関数とかち合ったり、それを回避する為にややこしい関数名にしたりしないで済むのです。最初からそうしとけ。

という事なので、次またシステムを作り直す事があれば今度はそうなるでしょうね。今から作り直す気はさらさらありませんが。

それはそれとして適当に決まった現行システム「reflect」ですが、コイツは難易度の管理をプレイヤーの選択する機体に依存する仕組みとなっています。つまり、スクリプト内で難易度を選択することはありません。スクリプト開始時、プレイヤーに選択された自機が、そのスクリプト内で共通変数「difficulty」に難易度を代入し、以降のスクリプトは全てそれを参照します。

これにより、難易度によって特定の機体を使えなくしたりするのが手軽です。あるいは、リプレイを保存した時にも難易度別に分けてくれます(本来弾幕風にはそういった機能はなく、1機体のリプレイは1箇所に集まります)。

と、偉そうに語ってはいますが、別にこんなことしなくても色々なやりようがあるでしょうね。当時の僕はこんな手段しか思い付けなかったのでこうなっていますが。

画像2

StageTitle.png

なおステージタイトル画像はこんな感じ。

明日以降は、現時点では2・3面の一部にしか導入出来ていない「現在地表示」をブラッシュアップしていきたいと思います。

以上。2020年11月8日、24時49分。

この記事が気に入ったらサポートをしてみませんか?