0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Godot 4.0】スマホ3Dゲームを作るための勉強 その16 ゲームシステムを作る その1 シーンとファイル構成を整理する

Last updated at Posted at 2023-03-07

 ゲームエンジンGodot4.0で3Dスマホゲームを作りたいと思いますが、その前にお勉強しています。
 2023/3/1にstable版がリリースされました。
Godot_v4.0-stable_win64.exe.zipを使用しています。

目的

 ゲームシステムをつくりたいとおもいます。
 その前にシーン構成とファイル構成を整理します。

ベースプロジェクト

 下記で作成したプロジェクトをベースに機能追加をします。
 【Godot 4.0】スマホ3Dゲームを作るための勉強 その15 Playerをデザインする。アニメーションも。
 https://qiita.com/FootInGlow/items/4ed492ba96645ddfca1c
 
 github(Godotのプロジェクトマネージャーからインポートして利用できます)
 https://github.com/footinglow/Godot4/tree/main/02_study/S15_CharacterDesign_Player

ブランチをまとめてシーンにする

global.tscnを整理します。

Playerシーンを作成する

 Playerブランチをシーンにします。

 res://global.tscnを開きます。
 Playerノードを右クリックして、「ブランチをシーンとして保存」を実行します。
 スクリーンショット (94).png
 ファイル名とディレクトリを確認して、保存します。
スクリーンショット (95).png
保存されました。
スクリーンショット (96).png

StaticBody3DをGroundシーンとして保存する

 StaticBody3DをGroundに名称変更しましょう。
 Groundをシーンとして保存します。
スクリーンショット (97).png
ファイル名と保存先を確認して、保存します。
スクリーンショット (99).png
保存されました。
スクリーンショット (98).png

 global.tscnがすっきりしましたね。
スクリーンショット (100).png

global.tscnについての考察とstage001.tscnへの名称変更

 今回のゲームは敵の砦(Enemyシーン)をすべて破壊するとステージクリアです。逆に敵ソルジャー(EnemyBullet)がPlayerの陣地までくるとゲームオーバーです。
 ステージをクリアすると次のステージに切り替わります。敵の砦の数、位置や障害物の配置など変化します。
 そうするとglobal.tscnのうち変化しそうなのは、Enemy、Enemy2だけのようです。

 ただステージを設計するときにPlayerやGroundもそろっていると、ステージデザインをGodotのエディターで編集しやすいメリットがあります。そうするとCamera3DとDirectionalLight3Dもあるとうれしいですね。

 編集しやすいメリットを優先して、global.tscnはそのままひとつのステージの構成要素にします。
 stage001.tscnに名称を変更します。
スクリーンショット (101).png
 「stage001.tscn」に変更します。
スクリーンショット (102).png
 変更されました。
スクリーンショット (103).png
「stage001.tscn」を開いて、ルートノードの「global」を「Stage」に変更します。
スクリーンショット (105).png

 保存します。

GameSystemノードの作成とファイル整理

 GameSystemシーンを作成します。
 GameSystemシーンはゲームの開始終了やステージの入れ替えなど管理するので、res://stage001.tscn(先ほどglobal.tscnから名称変更したばかり)に代わり、メインシーンとしてプロジェクトに設定します。

GameSystemシーンを作成する

 シーンメニューの新規シーンを実行します。3Dシーンボタンを押下するとNode3Dがルートノードとして追加されます。
 「GameSystem」に名称を変更します。
 子ノードとしてNode3Dを追加してください。
 名称を「CurrentStage」に変更します。
 スクリーンショット (106).png
 res://stage001.tscnをシーン内の「CurrentStage」にドラッグアンドドロップします。
スクリーンショット (109).png
 Stageという名前で子ノードとして追加されました。
スクリーンショット (111).png
 保存します。game_system.tscnという名称になります。

 game_system.tscnをメインシーンにします。
 プロジェクトメニューからプロジェクト設定を実行します。
 「アプリケーション/実行」にある「メインシーン」をgame_system.tscnに変更します。
スクリーンショット (112).png

 保存して実行しましょう。今までと同じように動作すると思います。

ファイルシステムやシーン構成変更の作業時はまめに保存しましょう。
ファイルを保存せずに移動するとエラーがでてよくわからない状態になります。

ファイルシステムを整理する。

 ファイルシステムを整理しましょう。

ディレクトリの作成

ディレクトリ名 役割
Characters プレイヤー、敵の砦、戦士たちなど
Design デザインシーン
StageItems Stageを構成する地面や障害物などのアイテム
Stages ステージデータ。名称はStage+数字

 Characters、StageItems、Stagesの3つのフォルダを作成します。
 (Designフォルダはすでにあるはず)
スクリーンショット (113).png
フォルダ名を入力します。
スクリーンショット (114).png

 3つフォルダを追加するとファイルシステムは下記のようになります。
filesystem.png

 新規に追加したフォルダに合わせて、「Design」フォルダを「Designs」に変更したところアプリケーションが起動しなくなりました。ファイルに移動は対応していそうですが、フォルダ名変更には対応していないのかもしれません。

ファイルの移動

 ファイルを移動しましょう。

 シーンファイルをドラッグアンドドロップすると以下のようなAlertが表示されます。
 そのあと動作確認すると正常に動作しているようですが、心配なので作業前後で環境を保存しておきましょう。
スクリーンショット (118).png

 Charactersに移動するファイルをCtrlキーを押しながらクリックして選択して、Charactersディレクトリにドラッグアンドドロップします。

 ・bullet.gd
 ・bullet.tscn
 ・Enemy.gd
 ・enemy.tscn
 ・Enemybullet.gd
 ・Enemybullet.tscn
 ・Player.gd
 ・player.tscn
drag.png

 res://ground.tscnは「res://StageItems/」にドラッグアンドドロップします。
 res://stage001.tscnはres://Stages/にドラッグアンドドロップしましょう。

 Designフォルダ以外を開いて表示しました。
 このような形になったでしょうか?
スクリーンショット (120).png

 以上です。

 

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?