投稿記事

satofumi 2021/04/14 20:00

Undead Arthur 開発(その5)

前回はイベントシーンの作成と、地面に潜るスキルの実装をやりました。
今回は炎を出すスキルと、地面から飛び出すスキルの実装をやります。

やったこと

あらゆる調整を後回しにして、とりあえず動作することを目指します。

Fire スキルを実装した

炎を出すスキルの実装です。2D プラットフォーム用エンジンの Corgi Engine の機能で実装しました。どう使うかを理解する必要はありますが、自分で実装しなくていいのは楽です。



とりあえずは動作したので、これで良いことにします。やったぜ!

Appear スキルを実装した

ゲームの仕様で「地面に潜るスキルの後に出現するときには、高くジャンプできる」っていうのがあって、それの実装です。



モーションはないですが、とりあえず動作してて良い感じです。いいぞ!

モーションを確認するためのシーンを作った

アニメーションを確認して「ここは、少し変更しましょうか」みたいな会話をしやすくるするために、各モーションを閲覧するためのシーンを作りました。


良いです。

ステージのプロット案を書き始めた


そろそろステージ作成をするのですが、改めて

・このステージでプレイヤーに体験してもらうこと。
・ステージのイベントの流れ
・ステージの大まかなタイル配置の検討

を始めました。
次次回以降で「こういうマップを作ってます」という内容で紹介できたらと思います。

今後の予定

高い完成度を求めるほど開発速度は遅くなるので、とりあえずは雑でいいのでステージ1を通してプレイできるようにしていきます。
あと、直近のチケットの総数と終わらせた数のチャートがこれです。


ちゃんと開発できてて良い感じだと思います。この調子でがんばります。

次回の更新: 金曜日の20時

satofumi 2021/04/12 20:00

Undead Arthur 開発(その4)

前回は NPC なんかを Lua スクリプトから制御するあたりに着手しました。
今回はその続きと、2D プラットフォームゲームとしての調整をしていきます。

やったこと

最初のシーン演出を追加した

具体的には
・NPC が移動するようにした。
・カメラの位置制御が行われるようにした。
・自キャラの出現をスクリプトで行うようにした。
です。

今回の NPC の移動は地形無視で移動すればいいので、Tween で実現しました。
それからカメラの位置制御や自キャラの出現は Corgi Engine の実装を見ながら調整しました。他人の実装を読み解くのはやはり時間がかかりました。

まだ演出が完成したとは言えませんが、やりたいことの3割くらいが実現できたので先に進みます。

入力の処理まわりを変更した

Corgi Engine ではいわゆる普通のキー操作を想定した作りなのですが、このゲームの主人公は「足元が地面のときに下を押したらスキル発動」という仕様があるので、そういうことができるように変更しました。「これで動作する、よなぁ?」という既存の実装の理解を深めながらの動作確認は時間がかかって悩ましいです。

地面に潜るスキルを実装した

入力まわりが変更できたので「地面に潜るスキル」を実装しました。地面に潜るモーション判定を開始して、それが終わったら「YOU」と表示されるキャラクターに変更しています。この YOU キャラクターになっているとき(地面に潜っているとき)は当たり判定が小さいので狭い通路を通れます。敵との接触判定も行わない予定です。

潜るためのアニメーションが最後まで再生されてないのは、私が Corgi Engine と Unity のことを詳しくないからなので、後でなんとかします。
なにはともあれ、とりあえず動作して良いです。やったぜ!

今後の予定

次は、炎を出すスキルの実装をしたいです。そして、その炎で篝火台に着火したりするあたりも順次実装していきます。

しかし、たくさん進捗があったつもりでも、この記事にまとめてみると「あれ? なんか進捗が少なくない?」って思えるので不思議です。


まぁ、こんな感じで今後もやっていきます。がんばります。

次回の更新: 水曜日の20時

satofumi 2021/04/09 20:00

Undead Arthur 開発(その3)

前回の記事で Moon Sharp を導入して Lua スクリプトを利用できるようにしました。今回はそれを利用してシーンの再生や NPC を制御するあたりを実装していきます。

やったこと

シーンを再生する仕組みを実装した

ここで「シーン」と呼んでいるのは、画像やメッセージを表示する場面のことで、今からこの下画像の右上の場面を作っていきます。

まずは、Unity に Panel や Image を並べて、これと同じような配置を作ります。

次に、画像やメッセージを変更する仕組みを調整します。
とりあえず、時間経過で画像とメッセージを切り替えればいいことにして、これを Lua スクリプトのコルーチンを使って実装します。簡単に説明すると「画像とメッセージを更新する Lua スクリプトの function を定義して、それをコルーチンで動作させる」です。コルーチンで動作させることで、指定時間の待機や入力待ちが行えます。

画像とメッセージを更新する Lua スクリプト(左)と、指定時間待つための Lua スクリプト(右)

で、この Lua のコルーチンを C# 側で Moon Sharp の Coroutine.Resume() を使って呼び出すと、以下のようなシーン再生が行えます。

良いです。
これに「1文字ずつ表示する」とか「ボタンが押されたときのメッセージ送り」とかの機能を追加する作業は、また後日にやります。まずは「ゲームとして遊べる状態」にすることを目指します。

NPC の制御まわりの開発に着手した

画像とメッセージを表示し終えたら、NPC が話して移動するシーン(最初の画像の右下の場面)になるので、NPC を表示するあたりを実装していきます。

マップエディタ Tiled で NPC 位置を配置できるようにして、そこに NPC を実際に配置できるようにしました。


で、NPC を配置してモーションを切り替えるようにする Lua スクリプトがこれです。
local function priest()
    local model = game.AssignNpc(1, 'Priest')
    while true do
        model.SetAnimation('Idle')
	system.wait_seconds(2.0)
        coroutine.yield()

        model.SetAnimation('Surprise')
	system.wait_seconds(2.0)
        coroutine.yield()

        model.SetAnimation('Escape')
	system.wait_seconds(2.0)
        coroutine.yield()
    end
end
game.AddAgent(priest)

良いです。アニメーションの変更まわりも動作しました。


なんというか、どういう仕組みにするかを考えて、それがちゃんと動くと楽しいです。

今後の予定

とりあえず、Lua スクリプトでイベントまわりを記述する仕組みが動作し始めました。良いです。
今後の予定としては
・Corgi Engine まわりを理解して調整をしていく
・主人公キャラの操作を実装していく(今は横移動とジャンプのみ)
です。

今回は、前回に比べると ちゃんと開発が進みました。良いです。


がんばります。

次回の更新: 月曜日の20時

satofumi 2021/04/07 20:00

Undead Arthur 開発(その2)

前回の記事では Corgi Engine にマップのタイルを表示しました。今回は、ステージ管理を Lua スクリプトで行えるようにするあたりを実装します。

やったこと

Moon Sharp アセットを適用した

ゲームの進行やイベント、スイッチなどのギミックの管理を Lua スクリプトで行うと思ったので、Moon Sharp を導入します。

Lua スクリプトを導入する狙いを簡単に書くと

・「このスイッチが押されたらこの門を開く」というギミックの処理を Lua スクリプトで関連付ける。
・敵の行動とパラメータの設定を Lua スクリプトで行う。
・ボス敵の独特の動きを Lua スクリプトで記述する。
・NPC の行動や制御を Lua スクリプトで記述する。

とかです。
まずは、C# で実装したステージ読み出しを Lua スクリプトから行えるようにしました。

Lua スクリプト側

「ステージ3から主人公キャラのスキルを開放する」なんかの処理は、C# でハードコーディングせずに、ここで呼び出す Lua スクリプトで定義していきます。

実際のイベント定義については、引き続き実装していきます。

マップとスクリプトのデータを再読み込みする仕組みの検討

ステージのタイル配置や Lua スクリプトによるイベント定義を変更したときに、アプリ動作中にこれらのファイルを再読み込みする機能を実装します。 Unity の実行し直しは時間がかかるので、Lua スクリプトやマップのタイル配置を変更して F5 を押して反映させる、といったサイクルで開発できるようにします。

とりあえずは「F5 キーを押すと、今のステージのデータを再読み込みする」という機能だけ実装しました。

実装はこれです。


ちゃんと動きました。良いです。

今後の予定

とりあえず、1ステージの最小構成を決めて、実装していきます。
具体的には
・NPC が1体いて会話できる。
・ゴールまで移動する
・ゴールに到達したらリザルト表示
でしょうか。
敵の配置やチェックポイントの追加も順次行っていきます。


そして、開発チケットの変動を見るとわかるのですが、開発にあまり時間がとれていないので、なんとかしたいです。がんばります。

次回の更新: 金曜日の20時

satofumi 2021/04/05 20:00

Undead Arthur 開発(その1)

Undead Arthur というゲーム開発のコーディングまわりをやることになりました。開発記事を定期的に書いていきます。私はコーディングに関するあたりだけ書きます。

どんなゲームなのか

ドット絵な雰囲気の2D プラットフォーム・ゲームです。
以下が、このゲームの企画の方のツイートです。こういう雰囲気です。(今回のゲームとは違う素材も混ざってます)
https://twitter.com/kumanoyataro/status/1371103105555734531

https://twitter.com/kumanoyataro/status/1372210759782989826

開発体制としては、

コーディングまわり: 私
コーディング以外: @kumanoyataro さん(ストーリー、キャラドット絵、マップタイル作成)

です。
ストーリーや、キャラクターや背景のドット絵なんかの素材は既に作成済みだったので、しばらくは私がコーディングするフェーズになります。

やったこと

・2D プラットフォーム・ゲーム用のエンジンの Corgi Engine を購入した。
・ゲーム中でどういう表現が必要になるか相談した。
・聞いた内容を整理するために仕様書を書いた。
・情報共有のために Trello の利用を開始した。
・Corgi Engine でキャラクターが操作できるようにした。
・Tiled でマップを作成できるようにして、Unity で描画されるようにした。2D プラットフォームとして動作して、キャラクターも操作できます。

今後の予定

ここまでで Corgi Engine の概要がわかって、ステージの基本機能は動作しました。Corgi Engine 便利でした。良いです。

そして、次は会話とかのイベントシーンを表現するために必要な機能を作っていきたいです。イベントシーンは Lua で記述する予定です。

それから、マップを描画する機能は実装できたので、これを私以外が使えるようにする機能も実装したいです。

こんな感じでときどき記事を書いていきます。がんばります。

次回の更新: 月曜日の20時

月別アーカイブ

限定特典から探す

記事を検索