« 2014年10月 | トップページ | 2014年12月 »

2014.11.29

好きなマップに移動できるツールを作ってみた

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

今日はマップ間のつながりを制御する処理を
VC++側からLuaに移行する作業をしていていた。

マップ切り替えテストもそうだが、
この後のマップ毎の初期化処理のテストなどのことも考えると、
デバッグ用に好きなマップにすぐ移動できる
マップジャンプ機能が欲しいなぁ、と思った。

現状でもステージ名一覧とマップ名一覧のファイルがあるから、
マップクリエーターと同じコンボボックスで
「ステージ番号」と、「マップ名」は指定できる。

問題は「マップへの進入番号」だけである。
初音ミク冒険記における「マップへの進入番号」の説明をしよう。

Mapinno01

上図は、ボカロタウンのお買い物エリア。

丸付き数字が「マップへの進入番号」である。
①:ボカロタウン入口からお買い物エリアに来た
②:居住エリアからお買い物エリアに来た
③:ルネッタ・キーアからお買い物エリアに出た
④:食わねーわよからお買い物エリアに出た

といった感じで要するに別のマップに移動した時の
ミクの初期位置を決めるのに必要な番号ってこと。

今は、マップごとに何個の進入番号があるかは
実はVC++側のソースにしか存在しないので
指定したマップに進入番号として有効なのは何番までかは
ツールを開発するC#では分からない・・・

この辺りは、将来的に線マップエディタで設定できるようにしたいところだ。
が、現状、存在しないものは仕方が無いので
ツール側でマップを選択しても進入番号のチェックはしないことにする。

とは言っても、番号なので数値チェックはしたいので
数値入力できるスピンボタン付きのテキストエリアを準備する。

これは上限値と下限値を指定できるので
下限値には1を、上限値には暫定で8をセットすることにした。

なんで8にしたかというと
居住エリアには6個の入口があり、
お買い物エリアとセントラル地区へ続く道があるためだ。
(今のところ、セントラル地区へ移動できるようにするかは不明だが・・・)

ということで、C#で作ったのがこんな画面。
Debughelper01

下の方にキャンプメニューやシステムメニューとか
明らかに作りかけのボタンがあるけど、
実は、全部まともに動かない(笑)
将来的には、キャンプメニューやシステムメニューのボタンから
直接メニューに移動できるようにしたいとは思っているんだけどね。

今回使うのは上のグループボックスだけ。

初音ミク冒険記本体を起動した状態で
移動先ステージ、移動先マップ、マップへの進入番号を入力して
「マップ移動」ボタンを押すと
初音ミク冒険記本体が、指定したマップに即時に切り替わり
すぐに初音ミク冒険記を操作できる状態になる。

自分で作っておいて何だが、これは便利だ。

内部的には、「マップ移動」ボタンが押された段階で
1.VC++で作った初音ミク冒険記本体にステージ番号とマップ番号を送信
2.初音ミク冒険記本体は、C#のツールにマップへの進入番号送信依頼を送信
3.ツールから初音ミク冒険記本体へマップへの進入番号送信
4.初音ミク冒険記本体が進入番号を受信したらマップ初期化モードに移行
という流れになっている。
後でシーケンス図を作っておかなきゃな。

例によって情報送信はWindowsメッセージを使っているので
処理して欲しいことを示すメッセージIDと
2つの数値パラメータしか送れないため
3つパラメータを送信する場合、2回に分けて送信するのだが
本体から次を送れ通知がこないとツールと本体で同期が取れないのだ。

さて、そろそろWindowsメッセージで使うメッセージIDとかを整理しないと
バリエーションが増えてきたので辛くなってきた。
近いうちにtracのwikiにでもまとめておこう。


 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

2014.11.27

Luaからマップ間の接続をしよう

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

前回記事の週までは閃の軌跡Ⅱで制作が止まっていたのですが
その後の体調不良で休んだことにより仕事が忙しくなり
週末はぐったりしているというのを繰り返していたかげさんです。

昨日、久々に初音ミク冒険記の制作の続きをしようと思ったら
何をしてたか、すっかり忘れてて
もっとLuaからゲーム本体の動作を変更できるようにする仕組み」の記事を読んだり
tracに登録してたチケットを確認したり、
修正中だったソースと前回ソースをSVNにコミットした時との差分比較をして
何とかどこまで作業していたのか思い出せました。

やっぱり記録って大事だと思う。

結果、昨日だけでtracに登録されてた5チケットをコミットしました。

でも、閃の軌跡ⅡやAstlibraをプレイしていて気づいたこととかも
チケット登録したので、実は残チケット数はさほど変わっていなかったりします。

中々残チケット数が80台を切らないなぁ・・・

C側からLuaを呼び出す流れは、作業中断した段階でもある程度できていました。

そこからVC++のマップソースの中身をLuaに持っていくところで
結構、ガッツリとハマっていて、それを解消する仕組みを組み込んだところまでは
作ってたみたい。

VC++側のマップ間の接続の処理をLuaに持っていくべく
お試しで1マップ作業中だったみたいで
一応、単純なマップ切り替えはできていた。

まぁ、マップ切り替えが単純でない所ってのは
・プロローグの2マップのつなぎ
・章が変わる(プロローグ完、第1章完の)タイミング
・ボスマップへの切り替え
・試練の洞窟から出る時
・ボカロタウンとウータウの森との行き来
くらいじゃないかと思う。

たぶん、試練の洞窟の上記以外のつなぎとボカロタウン内のつなぎは
すぐに実装できるんじゃないかな。

これでミクの位置によるマップ切り替えの調整や
マップ切り替えエフェクトの変更がLuaからできるようになるので
マップ同士を接続するためだけにVC++のコンパイルが不要となる。

ということで、やる気になれば線マップツールにマップ接続処理を作って
そこで設定した内容をLuaスクリプトに自動反映させる
みたいなこともできるようになるはずだ。

夢がひろがリング

 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

« 2014年10月 | トップページ | 2014年12月 »