投稿記事

戦々嬌々の記事 (22)

ddemilich 2024/04/07 20:03

ゲームエンジンの選定と簡単な設計書

ゲームエンジンを何にするか問題

結論からいいますと、今回も人臥狼咆と同じくティラノスクリプトを使おうとしています。
理由としては以下です。

  • カードゲーム風の戦闘のみであれば表現できそう
  • アニメーションエフェクトが豊富
  • 「人臥狼咆」で使い方に慣れている
  • javascriptでコードが書ける

元々ティラノスクリプトはノベルゲーム用に開発されたプラットフォームですが
今回作るゲームは戦闘エロということで、戦闘シーンをうまく実装できるかどうかがカギとなります。
前作の「人臥狼咆」で使い方は大分理解しましたし、javascriptは公私ともに経験があるのでなんとかなるかな、と思います。

例えばRPGツクールやUnityなども候補なのですが、ツクールでカードゲームを作ろうとすると、既存の戦闘シーケンスの構造を把握するところから始めなければなりません。
いうなれば、ツクールのあらかじめ用意された実装は、カードゲームにとって過剰であり、過剰な部分を問題が起こらないように削った上で独自の実装を積み上げていくのは大変だと思います。
UnityやUE5はプラットフォームとしてできることが多すぎて、一から勉強するのも時間がかかりそう、と思ってます。

簡単な設計図

markdown+mermaidのクラス図を使って「戦々嬌々」のオブジェクトを並べてゲーム全体の構造を書いてみました。

用語がアルファベットなのは、そのままプログラムのクラス名等に使うためです。
黒い四角付きの矢印がコンポジション(構成部品)で、白い△はインヘリタンス(継承)になります。
とりあえずそれぞれのオブジェクトが何対何で構成されるのかが分かるのが大事です。

Game

今回作る「戦々嬌々」ゲーム本体です。1つ以上のStageから構成されます。

Stage

いわゆる「面」に相当します。各ステージにボスがいて、倒しても倒さなくても次のステージへ進行していきます。ステージは1つ以上のSectionから構成されます。

Section

「パート」のようなオブジェクトをイメージしています。
GuideSectionはデッキを確認したり、カードの効果を見たり、パートの合間の休憩所的なものになる予定です。
NovelSectionはノベルパートです。複数のSceneから構成されます。
BattleSectionは戦闘パートです。今回作るゲームのメインコンテンツになります。

Scene

ティラノスクリプトのシーン相当です。立ち絵と文章を組み合わせてストーリーの進行を表現します。シーンでの選択肢による分岐も入れるかもしれません。

BattleSection

Preparationは準備用の処理です。初期ハンドを作って、敵のシーケンスを決めます。
Roundはカードゲームにおけるターンを表現しています。複数のPhaseから構成されます。
Resultは戦闘終了後の処理などを入れようとしています。

Phase

Magic the Gatheringを参考に4つのフェイズに分かれます。
DrawPhaseはカードを5枚引く処理になります。
MainPhaseはカードをプレイして攻撃力と防御力を決めます。
CombatPhaseは敵と味方が攻撃対象を決定し、戦闘処理を行います。
CleanupPhaseは戦闘結果を処理するフェイズです。プレイしたカードが捨札に置かれるのもこのタイミングとなります。

デッキの構造

ゲームの流れとは別にカードたちをどう扱うかもなんとなく決めました。

attributeとmethodもとりあえず使いそうなものは書いてしまっています。
実装しながら微調整します。
こういったことを決めないと、用語の解釈違いが作っている間に発生したりするので、決めておくことが大事だと思います。

Deck

デッキです。山札の意味でつかわれることもありますが、このゲームにおいてはプレイヤーが保有するカード一式を指します。
デッキはPile(山札), Hand(手札), Trush(捨札), Armor(ライフ)を部品とし、デッキ全体を評価するeval()をmethodとして実装します(快感値の計算等に使用します)。

Pile

山札です。1枚以上のカードから構成されます。
デッキの上からカードを見るためのshow()とデッキの上や下にカードを置くput()をmethodとして実装します。

Hand

手札です。5枚のカードから構成されます。
カードを選んでプレイするplay(), カードを選んで捨てるdiscard(), カードをゲームから除外するremove(), それからカードを他の領域に移すmove()を書いています。

Trush

捨札です。0枚以上のカードから構成されます。
捨て札をシャッフルして山札を再構築するreset()を実装します。

Armor

アーマーです。これが0になった状態で攻撃を喰らうとバトルに敗北します。ダメージを喰らうとget()が実行されアーマーのカードがハンドに加わります。逆に回復効果を受けるとここにカードが追加されます。位置はトップに固定されます。

Card

ここのカードのクラスになります。idは通し番号、nameはカード名、rankはレアリティを表します。またカードをプレイした際の効果をeffect()に実装します。

おわりに

ここまで読んで頂いてありがとうございます。
設計と呼ぶにはかなりアラが目立つ感じですが、作りながら見直していこうと思います。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

ddemilich 2024/04/04 20:02

次回作タイトル決定しました

次回作タイトル

戦々嬌々(センセンキョウキョウ)に決定しました。
タイトルロゴとパッケージ絵のデザインもしてみました。
※キャラクタは下塗り状態です

戦闘エロということで、戦という漢字をまず決め、ヒロイン二人なので重ねました。
あとは、人臥狼咆が漢字四文字だったので同じような四字熟語を探し
戦々恐々をもじってエッチなゲームっぽい漢字を採用してみました。

デバフましまし、と書いてしまうと相当ハードルが上がってしまうのですが、自分を縛る意味で今はこうしています。ましましという言葉に恥じないように作りましょう、ということです。

このアスペクト比はDLsiteの製品ページの画像に則っています。
絵が仕上がってきたら、タイトルの下にある空間にはサンプルエロ絵をうっすら載せる予定です。

ということで戦々嬌々をどうぞよろしくお願いします。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

1 2 3 4 5 »

月別アーカイブ

限定特典から探す

記事を検索