忍者ブログ
windowsやブラウザ のゲーム作ったりとか。
前回までのあらすじ。

アツマールのバカゲーコンテストに、ニコ生ゲーム賞なるものが登場したので
ニコ生ゲームについて、調べてみた。
なお、ニコニコ自作ゲームフェス2021にもニコ生ゲーム賞があるそうだ。
Akashic Engineというものを使って作るそうだ。

というわけで、サンプルデモを見てみます。
Akashic Engineのサイトメニュー、右端から今回は「Hello World」を選択
おっとこれは・・・実際にスクリプトをいじって反映させることができるっぽい。
このままスクリプトのお勉強ができそうですね。

コメントも丁寧に書いてくれているので、なんとなく流れがわかった気がする。
(タイルから下は、コメントも少なくいきなり難度がアップするけど)
Hello World」は、ゲームの新規作成をしたときに生成されるらしい。

キャラクターが表示され、画面のどこかをクリックすると
弾が発射されるだけのゲームとは言えないものですが
10秒間にクリックされた回数を図るゲームになら
簡単に改造できそうです。

せっかくなので、スコアボード機能付きで新規作成して
みんなでスコアを競えるようにしてみます。

というわけで、ランキング機能対応のゲームプロジェクトを作成。
なんと、タイマーとスコア表示もセットでついてきました、お得!
さっそくアツマールに投稿だ!

結果


あっれれ~?
akashic-sandboxコマンドでテストプレイした時には
背景が真っ白で、タイマーもスコアも表示されてたのに
真っ黒で見えないぞ~?

どうやら背景を指定した方が良いみたいだね。
とりあえず、背景を短径で塗りつぶす方法を
逆引きリファレンスで調べてみよう!

・・・・・・みあたらなかったw
けど、ゲームアツマールでの背景色を指定するというのがありました。
読んでみたけどHTMLでした。はい、まあそうですね。
これで指定してもいいんだけど、背景を透過しておきたくないので
どっかにサンプルがないかあさります。

ビットマップフォントサンプルにありました。
10~19行目の「// 背景の黒」の命令文を丸っとコピーして
「// プレイヤーを生成します」の上にペースト。

// 背景の黒
var bg = new g.FilledRect({
scene: scene,
cssColor: "#CCFFFF",
x: 0,
y: 0,
width: g.game.width,
height: g.game.height
});
scene.append(bg);

cssColorの指定色を好きな色に変更して終わりー。



いえーい。
スコアとタイマーが見えたー。

さて、ここからオリジナルな変更追加をしていくよ。
とりえず、プレイヤーグラフィックを、女の子の顔にして静止。
「image」フォルダの「player.png」を差し替えればよいよね。

・・・・・・ダメでしたw


猛烈に無意味なトライ&エラーののち
問題がアセットの設定にあるんではないかと思い立ち(思い立つのが遅い)
アセットの設定をどこでやってるのか、探した結果game.jsonでした。
画像の大きさもここで指定してたんですねぇ。

そういえば言えば、akashic-sandboxコマンドを走らせたまま
コマンドプロンプのウインドウを消さないで
ブラウザをリロードすると、編集結果が反映されるんですね。
これ、編集するたびに実行するのかと思ってテストプレイがしんどかったけど
そうじゃないってわかって、少し楽になったよ。

今日はここまで~。

拍手[0回]

PR
アツマールのバカゲーコンテストに、ニコ生ゲーム賞なるものが登場したので
ニコ生ゲームについて、調べてみた。
なお、ニコニコ自作ゲームフェス2021にもニコ生ゲーム賞があるそうだ。

とりあえず、コンテストの説明ページから、ニコ生ゲームの説明に飛ぶ。
Akashic Engineというものを使うそうだ。

基本的にJavaScript(あるいはTypeScript)で動いているみたいです。
コマンドプロンプトとかも使ってるみたいなので
その地点でもうすでに私の脳みそが拒絶反応を起こしているが
とりあえず、インストールについては、大変丁寧に説明されているので
インストールまでは、おそらく誰でもできるかなと思います。

ニコ生ゲームの説明ページ通り進むと、次はサンプルの改造をしてみよう
なわけですが・・・画像を入れ替えるだけの超初心者向けでした。

そこを過ぎると急に内容が難しくなって
リファレンスや入門ガイドを読みながら
いくつかあるサンプルゲームを解析して覚えていく感じでしょうか。

一応、入門編を読むと、ゲームの新規作成方法はわかりました。
コマンドプロンプトで作成するようです。

んで「script」フォルダにある「main.js」を編集してゲームを作るようです。
このファイルは、テキストエディタで編集できます。
文字コードに注意。

今日の所は、以上です。
スクリプトで作成するので、私に何か作れるかはまだ未知数です。
わかりやすい講座があると助かるんだけど。
ご存じの方いらっしゃったら、どうか教えてね!

とりあえず「よく使うコマンドプロンプトの備忘録」

・作業フォルダへの移動 cd フォルダのアドレス
ゲームの新規作成 akashic init [--type javascript-minimal]
 ランキング機能付新規作成 akashic init [--type javascript-shin-ichiba-ranking]
・テストプレイ akashic-sandbox
 (実行後、http://localhost:3000/gameをブラウザで開く)
投稿用zipファイル生成 akashic export html --output ./game.zip --atsumaru


拍手[0回]

アクションゲームツクールMV」©2018 KADOKAWA CORPORATION.
その名の通り、アクションゲームを作るツールで
ノンフィールドADVを作ってみるわけです、はい。

今回は、BGMや効果音の音量変更ボイスのONOFFの二本立てということで。
ようするに、オプションメニューですね。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

まずは、音量変更の仕様を考えます。
オプションメニューを呼び出し
カーソルが当たってる時に左右に入力すると音量を変更する。

おお、なんということだ、呼び出し用のボタンが足りない。
セーブ用に割り当てた、Xボタン(Dキー)を間借りしようと思います。

ということで、オプションメニューの内容としては
・セーブメニューを呼び出す選択肢
・ロードメニューを呼び出す選択肢
・BGM音量変更選択肢
・効果音音量変更選択肢
・ボイス音量変更の選択肢(あれば)

って感じかな。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

メニューの作り方は、もうさんざんやったので説明不要ですね。

一応、おさらいというかまとめというか、大事なことは
メニューシーンは、元となる最初のメニュー以外に配置したオブジェクトは
配置されたメニューが呼び出されるまで動かない。
てことですね。

それを念頭におきつつ
ロードのメニューをタイトル用のをコピーして手直し。
最初からメニューからもロードするつもりで作っておけば
楽だったのにとちょっと思いました。

で、オプションメニューがこんな感じにできました。

テキストに埋め込んだ変数は、値の変化に応じて表示が変わったりしないので
数値の部分だけ、数値用のテキスト表示にしていますよ。

というわけで、今回のサンプルはこちら

梱包されている楽曲は、私が昔作った「魔法使いさんお静かに」
という曲です。
同名の漫画(作:竹本泉氏)のイメージソングだったりします。
脳内ではもうちょっといい曲なんだけど
上手に譜面に起こせなかったんですよね・・・
なかよしで募集されていたから作った歌だけど
結局応募したのかどうかは記憶にない。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

ところで、クリア状態を覚える方法を使って
若干セーブスロットのテキスト表記に差異をつけることができそうです。
オブジェクトの名前にも制御文字が使えるので
例えば、現在の場所を表記したり、今何章かとか、プレイ時間とか。

プレイ時間の表示について考えてみます。

プレイ時間をカウントしてくれてるっぽい変数が見当たらないので
カウントするオブジェクトを作る必要がありそう。

時2桁、分2桁で、合計4桁。
スロットの数はとりあえず3つとして
0はノーカンで、分の十の位は5まででよいので
(9×3+5)×3=96個のスイッチが必要ですね。
秒まで表示するなら、138個。

まあ、章数表示くらいが妥当な作業量感ですね。(短気)

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

これで、私の思いつくノベルゲーの機能がおおむね入ったと思います。
次回は、まとめというかあとがきになります。

改造して使ってよい、土台のプロジェクトファイルとか
サンプルゲームを配布するよー。

拍手[1回]

アクションゲームツクールMV」©2018 KADOKAWA CORPORATION.
その名の通り、アクションゲームを作るツールで
ノンフィールドADVを作ってみるわけです、はい。

今回は、メッセージ一時消去スキップの二本立てということで。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

まずは、メッセージ一時消去から、仕様を考えます。
Rボタンを押したら、メッセージおよび各種ボタンを消して
絵だけを表示する。

絵、以外のレイヤーを非表示にすればよい感じですね。
とりあえず、テキストの表示命令に「最前面」を指定していると
消えてくれないので、チェックを外してしまいます。

もしこれで、メッセージがキャラの後ろに表示されたりする場合は
メッセージ表示命令のあるオブジェクトを、キャラクターのあるレイヤーより
上のレイヤーに変更します。

後、レイヤーの動作もOFFにしておきます。
うっかり決定キー押すと見えないまま、話が先へ進んでしまうので。

消去中は、セーブやログ表示を起動できないようにしておきます。
その他メニューシーンに配置しているものも非表示にしますが
初期設定のメニューシーンは消去も停止もできないので
オブジェクトのアクションで制御します。

終わり。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

じゃあ次、メッセージスキップね。

仕様を考えます。
Xボタン(Sキー)を押すと、選択肢までスキップする。
もう一回押すと、スキップを止める。

特定のスイッチがONの場合は、すぐに次へ進むリンクを追加すればよさそうです。
選択肢のアクションまで来たらスイッチを切る命令を入れれば大丈夫かな。

例によって、スキップ中はセーブや他のシステムを起動できないようにしておく。

一応、メッセージ表示中以外はスキップが有効にならないようにしました。

キャラクターの移動やアニメにウェイトがかかっている場合
そっちにもスキップの場合のリンクを貼る必要がありそうですね。

終わり。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

説明も実装も、簡単ではありますが
スキップの実装は、ひたすら面倒くさい処理ですね。(遠い目)
まあでも、コピペしまくるだけなので単純作業ではあります。
やってできないことはないとわかりました。

仕様はきちんと控えを取って、ゲームの最初から終わりに至るまで
システムの筋が通るようにしなければなりません。
ならないというよりは、そうしておかないと忘れた時困るという。

というわけで、今回のサンプルはこちら

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

次回は、最後の機能・・・
BGMや効果音の音量変更やボイスのONOFFです!

拍手[1回]

アクションゲームツクールMV」©2018 KADOKAWA CORPORATION.
その名の通り、アクションゲームを作るツールで
ノンフィールドADVを作ってみるわけです、はい。

今回はメッセージログ機能を作ってみようかと。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

仕様を考えます。
・Lボタンで、ログ画面を表示しようと思います。
・とりあえず、1画面にテキスト5個分表示できるようにしたい。
・とりあえず、1ページ表示出来たらヨシとする。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

アクツクは、テキストを素材として管理しているので
以下の方法で、実装してみようと思います。

まず、テキストのタイトルにナンバーを振り分けておきます。
1番を表示する命令を出した時に、ついでに番号を控えておいて
つららららっと表示する感じかな。

今回は画面いっぱいに表示したとしても
4つくらいしか一画面に表示できませんね。
そこで、メッセージログだけフォントサイズを少し小さく
してみようと思います。

表示にフォントサイズの設定を変更する方法では
通常時のフォントサイズまで変わってしまうので

\S[-\V[30,フォントサイズ]]

この制御文字を使います。
フォントサイズという名前の変数を作り、通常は値を0にしておきます。
ログを表示する時だけ、2~4の値に変更して、小さく表示させるわけです。
ログを表示するとき以外は初期値でいいので、オブジェクトの変数を使います。
なお、30という数値は、オブジェクトIDです。
オブジェクト30番にフォントサイズという変数を作成して使用しているわけです。

これで、1画面に表示できる量が増えます。
今回は5個ぐらいにしておきます。
何ページ分ログを保存するか、という問題もありますが
まあ今回は1ページ分ということで。

ちなみに、プラスもマイナスもつけず
\S[\V[30,フォントサイズ]]
のように記述すると、指定したフォントサイズで表示されるので
小さくするだけでなく、大きくしたテキストも
別のイベントで流用したい時には良いかもしれません。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

テキスト番号を覚えておく変数を5個。
(複数ページを設ける場合は、ページ数を掛けた数必要)
ログを覚えるアクションを起動するための変数1個。
ログを表示するメニュー画面を1つ作成。

作ったメニュー画面にテキストの表示位置として
5つオブジェクトを配置するわけだけど・・・

それぞれのオブジェクトに変数を新規作成、リンクは自身のオブジェクトの変数で指定。
テキスト表示イベントを組み込んで5つコピれば、修正が少なくて済む。
何が大変って、テキスト表示とリンクする命令を貼りまくることだよね。
セリフが多いほど地獄を見る。
そんな気がします。(サンプルは2つしかないから楽勝)

表示命令を出すオブジェクトを作成。
5つのオブジェクトの変数をそれぞれ代入する係。

ゲーム上でテキストを呼び出したときに、ログを覚えるアクションを起動する変数に
テキストに割り振った番号を入力。

番号を受け取ると、それをログ番号に順番に放り込んでいくわけだけど
常に最新の状態にするには、番号を繰っていく必要がある。
だから、最新の番号を入れる前に、1個ずつ変数を繰っていきます。
4番の値を5番へ、3番の値を4番へ・・・
最後に1番に最新の番号を代入して終わり。

ログの数を多く設定したら
連打やスキップでテキストが高速で表示された場合
果たしてログの取得が間に合うのか?
ドキドキしちゃうね。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

ログ表示用のメニューに、テキストを呼び出すオブジェクトを
等間隔に5つ並べます。

ログ表示用メニューに置いたオブジェクトの変数は
同じ表示用メニューに配置されたオブジェクトからしかできないので注意。

後は、ログ表示中にセーブを呼べ出せないように
セーブを呼び出すオブジェクトにも細工を施す。

今回は1ページなので、決定でもログを閉じます。

完成。

まあ、こんな感じです。

システム自体は、難しくないのですが
テキスト呼び出しイベントの入力は大変そうですね・・・
場合によっては、複数のオブジェクトに分ける等が必要かも。

このシステムでメッセージログを導入するのは
テキストの入力が全部終わってからがよさそうです。

というわけで、今回のサンプルはこちら

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

さて次回は、メッセージ一時非表示メッセージスキップの2本立てでいってみましょうか。

拍手[1回]

広告枠
アクセス解析

ATOM  
ATOM 
RSS  
RSS 


ソフトウェア制作講座





Copyright ©   YUWAKA'S SOFT   All Rights Reserved
Design by MMIT / TemplateB3  Powered by NINJA TOOLS
忍者ブログ [PR]