【Strayひろま】さん制作の【Defence Saviors】非暗号化版が勉強になる

第8回WOLF RPGエディターコンテスト終了後、
【Strayひろま】さん制作の【Defence Saviors】非暗号化版が公開されました。

ゲームのHP
http://straystar.web.fc2.com/defence_saviors/index.html

非暗号化版ダウンロード
http://ux.getuploader.com/StrayHiroma/download/42/DefenceSaviorsVer1.07%E9%9D%9E%E6%9A%97%E5%8F%B7.zip
(著作権については、ダウンロード後、同梱ファイルの「【必読】非暗号化版の注意事項」をご確認ください。)

中身を見て、これは役立ちそうだと思った点をまとめました。
なお、ゲームそのものは難しくてクリアできませんでした。

1.ピクチャの重なり判定がうまい
一番気になっていたのがこれ。
マップチップの座標を基準にピクチャ番号を計算しているようで、
単純かつ効率的だと思いました。こちらのやり方のほうが一般的なのでしょうね。
立ち鏡コモンではキャラ同士の重なりをいちいち判定していましたが、
条件分岐多用の力ずくで下手すぎるやり方でした。可読性も悪いですし。

2.コモンセルフ変数の使い方がうまい
20161007-1.png
コモンイベント3:【TD】メインループで設定されているコモンセルフ変数

コモンセルフ4は返り値
コモンセルフ10~19は一時変数とループ変数
コモンセルフ20~39はピクチャ表示
コモンセルフ40~99はそのコモン内で使用する変数

で設定されているようです。
使用頻度の高い一時変数やピクチャ表示関係を定位置にまとめているのが賢いですね。
これならコモンセルフ変数を使う時、どの用途に使う変数をどの番号に割り振るか
悩まなくて済みそうです。

特に、セルフ変数4を返り値に設定する発想はありませんでした。
入力の数(引数)に使うコモンセルフ0~3と、
文字列変数を格納するコモンセルフ5~9の間に挟まれているのも納得です。

20161007-2.png
一時変数やループ変数は、条件分岐で使い捨てしたり、
ループの回数を数えたりするのに便利そうです。
コモン製作中に仮設定する時にも使えそうですね。
ただ、使い捨てだからといって、何でもかんでもとりあえずこれ使っとけばいいや、と、
使い回していると可読性が悪くなるので、なるべく使い分けた方がいいでしょうね。
ずぼらはいけない。

3.処理の流れがわかりやすい
「コモン3:【TD】メインループ」だけで処理全体を大体把握できるのでわかりやすいです。

準備
1.初期化
2.マップ生成
3.ゲーム画面表示
4.初期キャラ配置

処理
1.マナ・ライフ・倍率情報更新
2.ステージクリア判定
3.敵キャラ移動
4.味方攻撃
5.ゲームオーバー判定
6.マウス操作処理

「コモン3:【TD】メインループ」の処理はこんな感じですかね。
複雑な処理を行っているのかと思いきや、そうでもなく、単純ですね。
いや、コモン呼び出しを追いかけてより詳しく見るとやはり複雑なのですが、
自分が今見ている処理は何だったっけ?と迷子になることは少ないと思います。

4.テストプレイ用機能の活用
20161007-3.png
・システム変数112:[読]テストプレイ中?(1=YES)と条件分岐を使ってデバッグコモン呼び出し
・負荷(コマンド処理数)の計測

20161007-4.png
・デバッグ文をコメント化して必要に応じて切り替え

まぁ、みんなやってるのでしょうが、そうやって使えばいいんですね。
私はそれすら気づきませんでした。
それはそうと、「【そでば】起動用コモン」のコモン呼び出しコマンド削除し忘れてますよ?(小声)
ちなみにこのデバッグコモン、超高性能なのでおすすめです。

5.その他
コモン4【TD】マップ生成や、コモン17:【TD】敵経路表示の処理が興味深かったです。
・文字列操作を駆使すれば一度に複数の情報を扱えるのですね。なるほどなぁ。
・マップチップをピクチャ表示するので、やはり使用枚数が多くなっていますねぇ。タイルセットの大きさにも驚きです。
・敵経路は探索アルゴリズムを使うのではなく、事前に移動先座標をDB登録して、それを呼び出すやり方でした。
あと、オンラインアップデートや3D座標から2D座標への変換処理も参考になりそうですね。

コメントの投稿

管理者にだけ表示を許可する

プロフィール

ソフトニシン

Author:ソフトニシン

カテゴリ
最新記事
アーカイブ
最新コメント
検索フォーム
アクセスカウンター
メールフォーム

名前:
メール:
件名:
本文:

リンク
RSSリンクの表示