📖 2D RPG 制作ツールを作ろうぜ(^~^)? <その2>
📖 Git Hub / きふわらべRPG、他
📺 Discord サーバー 招待 / きふわらべRPG
「 何かは知らないが、結論は分かるぜ。お父んが思ってるようなやつじゃないぜ」
📖 GODOT
「 C# サポート版と、そうでない版があるぜ。
C# はエミュレータで動かしてるだけで、実行速度は遅いらしいぜ」
「 GDScript でなければ、 Godot の良さは 50% も感じられないという事前情報もあるぜ」
「 だいたい 2種類選べます、というようなミドルウェアは 片方は おまけで付いているようなもので、
どっちかは 滅ぶのよ」
「 Godot なんかに本気出しても仕方ない 三日坊主で終わるだろうから
ベンダーロックインしたろ GDScript でいいだろ。飽きたら 死にスキル でいい」
「 Godot_v4.1.1-stable_win64.exe
をダウンロードしたんだが、インストーラーかと思ったら
Godot のプロジェクト・マネージャーが出てきた。これはアプリケーションの本体じゃないのか?」
「 フォルダ―の名前に .exe
を付けるの止めてほしい。気持ち悪い」
「 アセット・ライブラリを開くかどうか尋ねられるが なんのこっちゃ?」
📖 Godot Engine 4.1 documentation in English
「 このドキュメントはまだバージョン4.1に更新されてないという注意書きがあるぜ」
「 👇 この画像を Godot の新規プロジェクトのフォルダーの中に置き」
「 そう言えば PC用のゲームパッドを捨ててしまったので この家には ゲームパッドが無いぜ」
「 ビヘイビア・スクリプトを ゲーム・オブジェクトにアタッチするみたいなことが
どっか触れば できるのかな?」
「 👆 左下をガチャガチャやってたら GDScript を作れたかもしらん」
「 キーボードの右キーを押したら、アットマークが右に 32px 移動するようにしなさいよ」
「 GDScript は 書くだけじゃダメで、ゲーム中のオブジェクトにアタッチしないといけないんじゃないの?」
func _input(event):
if event is InputEventKey and event.pressed:
if event.keycode == KEY_A:
print("A was pressed")
「 A
キーを受け付けたのは分かったんで、アットマークを右へ 32px 移動しろだぜ」
「 アットマークの x 位置って どうやって取得/設定するんだぜ?」
📖 【Godot】2Dシューティングゲームを作るときのポイントまとめ
「 position
なんか定義されていなかったぜ。クソ記事だな」
extends Node
「 👆 お父んのファイルの冒頭、 Node を継承してるのは おかしくないか?」
extends Sprite2D
「 おっ、ほんとだぜ。 position.x
が定義されているぜ」
📺 動画
「 ソースを Git Hub で管理できるようにしましょう」
「 Git Hub でのソース管理は 簡単に できそうだ…… 最初から Git でソース管理できるように調整しているのだろう……」
「 昔、フォント・ファイルを作らなかったかだぜ? あれ残ってる?」
「 Godot で、画像の矩形コピーって できるの? PC98 の頃からあるスプライト描画の基本操作よ?」
📖 How to Crop a image using gdscript in Godot?
「 遠いものは 有りそうだが、欲しいものが 見つからないぜ」
「 外部記憶装置に保存するとか データ転送速度の遅さを何も分かってそうだよな」
「 👇 Godot では スプライト・シートと呼ぶんじゃない?」
📖 【Godot】2Dスプライトアニメーションの基本的な使い方
「 スプライト・ノードを追加して、その Texture に フォントの PNGファイルをアタッチしろだぜ」
「 垂直のコマ数を VFrames
に、水平のコマ数を HFrames
に入れろだぜ」
「 👆 なんとなくだが @ が表示されているような気がするぜ」
「 日記の中では流れていってしまう。別記事にまとめてくれだぜ」
📖 まとめ記事 Godot のデモ・プロジェクトを見ていこうぜ(^~^)?
📖 Godot Engine 4.2の日本語のドキュメント / スクリプト言語
「 日記の中では流れていってしまう。別記事にまとめてくれだぜ」
「 システム・ダイアログ・ボックスじゃなくて、ゲームの中に出てくるやつな」
「 日記の中では流れていってしまう。別記事にまとめてくれだぜ」
「 メッセージ・ウィンドウは作った。
まだ作るのかだぜ?
もう気力が 持たないけど」
「 わたしが Godot で RPG を作って、そのソースを公開すれば
そのタスクは クリアーにならないかだぜ?」
「 このエディター自体も Godot で作られてるそうだしな。
だったら フォントを変える機能ぐらい あってもおかしくないな」
「 👇 プロジェクト設定
ではなくて、 エディター設定
にあるそうだぜ」
📖 How to change code editor font?
Author: Synapse84
Editor Settings -> Interface -> Editor -> Code Font
「 👆 標準フォントと、太字フォントの2つ設定する欄があるのか。
👇 2つ取ってくるか」
「 メインのフォントじゃなくて、コードのフォントを変えたいんじゃないの?」
「 👆 3点リーダーが 半角なのは 納得がいかないが、 それ以外は 今のところ 素晴らしいぜ」
📻 【V-METAL】FCくにおくんサッカー マタギ学園戦BGM【アレンジ】
「 マタギ学園! 選曲が めっちゃ 面白いところを 引っ張ってくるな。
1人1票で 人気ランキングを付けたら くにおくんシリーズの上位には来ないが
何票でも入れれるなら 下にはならないような 層の真ん中らへんの分厚いとこにいるような
シリーズの基調イメージを 引っ張り上げている感じのやつ」
「 簡単に作るなら 選択肢は2つか 3つの決め打ちかしらねえ?」
!choice 12
1 あいうえお
2 かきくけこ
さしすせそ
!choice 13
1 あいうえお
かきくけこ
3 さしすせそ
!choice 23
あいうえお
2 かきくけこ
3 さしすせそ
!choice 123
1 あいうえお
2 かきくけこ
3 さしすせそ
「 下に どんどん スクロールして 次の選択肢が出てくるケースは 考えないのかだぜ?」
「 これを作れるんなら RPGのコマンド・メニューも作れそうなもんよね」
「 じゃあ 10行ぐらいの コマンド・メニューで使うこともあるか」
!choice 1,2
1 あいうえお
2 かきくけこ
さしすせそ
!choice 1,3
1 あいうえお
かきくけこ
3 さしすせそ
!choice 2,3
あいうえお
2 かきくけこ
3 さしすせそ
!choice 1,2,3
1 あいうえお
2 かきくけこ
3 さしすせそ
「 ダメだった……。ラベルのような ヘッド・アップ・ディスプレイは
GDScript から位置指定ができなかった……」
「 あっ、 self.offset_top
で上下位置を変えれる!」
「 _unhandled_input
と _input
は何が違う?」
📖 Can anyone explain to me unhandled input and handled input?
Author: Zylann
_input
- とにかく呼び出されます_input_event
- コントロールで呼び出されます(ボタンのクリックやボックスにテキストを入力するなど)_unhandled_input
- 上記のいずれもイベントをキャプチャしない場合に呼び出され、通常はゲーム ワールド自体で使用されます。たとえば、テキストボックスで[スペース]を押しても、その機能を使用している場合、キャラクターはジャンプしません
「 👆 offset_top
に指定したピクセル数通りには動いてくれないぜ?」
「 ゲームは ピクセル単位だが、
ヘッド・アップ・ディスプレイは ピクセルのスケールが違うのでは?」
「 あんたの自作したグリッド、 8 px 単位じゃなくて 16 px 単位なのよ。
だから あんたの足し算が間違ってるのよ」
「 👇 メモリの効率のためのコレクションで、文字列の配列をメンバーとして持っているオブジェクトだな」
📺 動画
「 デモ・プロジェクトの role_playing_game のバグを見てみようぜ?」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
📖 Godot の role_playing_game デモ・プロジェクトのバグを見てみようぜ?
「 バグは直せなかった。 Godot はクソということしか分からなかった」
...
「 選択肢を選んだあと、次のシナリオに飛ぶような仕組みを作りなさい」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
「 シナリオっていうか 会話の分岐を作った 日付が変わった 疲れた 終わり」
「 ファミコン時代のアドベンチャーゲームなら、画面の中央に
イラストが表示されるウィンドウが欲しいんじゃない?」
「 👆 512 x 384 ぐらいのウィンドウを置くかだぜ?」
「 1280 x 720 の解像度のゲームの中に 512 x 384 の解像度のウィンドウを置くのかだぜ?」
「 16:9 のアスペクト比のゲームの中に 4:3 のアスペクト比のウィンドウだぜ?」
「 横幅が 512 のとき、 16:9 のアスペクト比にしたら 縦幅は 288 …」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
「 パラグラフが終わると メッセージ・ウィンドウが閉じるんだけど?」
「 センター・ウィンドウを出したり消したりする命令を作ってくれだぜ」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
「 選択肢のカーソルもブリンク(Blink;点滅)させなさいよ?」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
📖 Godot で選択肢のカーソルをブリンクさせようぜ(^~^)?
var document = {
"タイトル画面":[
"""\
!
bgm: タイトル
""",
"""\
!
scene: タイトル
""",
"""\
!
bg: 崎川駅前
""",
"""\
!
choice: 1,2
・スタート
・終了
""",
],
# ...
「 👆 ここらへんの、1命令に複数行文字列1つ使ってるの 手際が悪くない?
複数行文字列1つに 命令を複数書けるようにできないの?」
「 ワンライナーと 複数行命令が混ざってるのが 手際を悪くしてるんだぜ」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
📖 Godot の GDScript を使ってさらにその上にゲームスクリプトを作ろうぜ(^~^)?
「 👆 これが 現在 発揮できる 最大のパフォーマンスだぜ」
「 👇 魔王魂で エンディングっぽい曲を探してきて 当てはめたった」
📺 動画
「 ファミコン時代の ロール・プレイングゲームって ウィンドウが いっぱい出てくるじゃない」
「 確かに。メッセージ・ウィンドウを 一般化 した方がいいかな?」
「 ウィンドウ (Window;窓)という用語は いろんなものに被りまくるから、
なんか 名前を付けた方が よくないかだぜ?」
「 昔から ウィンドウ って呼んでたけどな。
10分 考えるか。
なんとかウィンドウ にするのか、別の名前を新しく定義するのか」
「 弁当箱みたいだから ランチボックス (Lunch Box;弁当箱) ってどう?」
「 弁当箱は スーパーファミコンの蔑称だろう。
しかし 他の代案も出せないし lunchbox
の線で考えるか。
しかし 文字数が長いなあ」
「 👆 現在の実装だと シナリオを書けば それは メッセージ・ウィンドウ に表示されるけど、
ウィンドウの名前を指定して 書き分けるようにした方がいいのかだぜ?」
「 シナリオ・ファイルは 上から下に読めないと やってられないわよ」
「 ウィンドウの画面遷移は たいてい ツリー構造をしていないか?」
「 Godot がそもそも ツリー構造の性質を備えているから それに乗るか」
「 シナリオは Window
の一部分なのか、
それとも Window
の一部分が シナリオなのか、
どっちなの?」
「 Window
が上に立つんだが、
シナリオを 第2の位置に下げるのは 違和感があるな」
「 👆 こんな風に Windows
の下に 全ての窓を置きたいけど」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
「 いろいろ やらなければならいことが 分かったので サブ・ウィンドウの開発は中断だぜ」
「 ループ地点を設定できるのかと思ったら そういう設定がない……」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
📖 Godot で BGM をループするようにしてくれだぜ(^~^)?
「 配布の練習をするために 実行ファイルを作りましょうよ?」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
「 Windows Desktop 用の実行ファイルも作れた。充分だろ」
「 ゲーム中の特定の動作をいつでも一時停止する機能を作りなさい。
この機能がないと サブ・ウィンドウなどの様々な機能の実装が 先に進まないわよ」
「 簡単そうで 自力実装しろと言われると あれっ? と思う機能だよな」
「 長くなりそうだ。日記の中では流れていってしまう。別記事にまとめてくれだぜ」
「 ウィンドウを 消す という行為に一貫性を見出していないので、また明日再挑戦だぜ」
「 てこづっているようだな。状態機械をガチガチに作ろうぜ?」
「 なんで こんなに難しいのか。他の人 どうしてるか分からん」
「 Godot でもブレークポイント使えるの昨日気づいて 調べまくったら
シナリオを キューにして ポップしまくっていたから 空になって 1回だすともうメッセージ出てこないウィンドウの理由が分かった」
📺 動画
「 フリー音楽のサイトから 雑魚戦闘曲を探すか。
かっこよくても合わないんだよな」
「 👆 上下に 黒いのを付けるだけで 昔のゲームっぽく見えるな」
「 昔というのが 具体的に いつなのか 分かんないけど。 似非歴史なんじゃないの?」
「 RPGの自作戦闘を作らなければいけないのかだぜ? なんでそんな激務を?」
「 RPGと名の付くものは だいたい 戦闘シーンがあるしなあ」
Zzz
「 👆 これで フィックスしようとしたんだが、動画にして見てみると 見にくくてな」
「 👆 昨日は 戦闘画面のレイアウトをいじって 手作り的なエンカウント トランジションも付けたのだった」
(^~^)
「 開発期間も 新しいことを始める時間も もうそろそろ無いし、
戦闘画面を 少しでもマシにしてくれだぜ」
「 👆 ゲームパッドを7個買った。届いたら Godot で使えるか確認するぜ」
「 Nintendo Switch 風のゲームパッドも買っておいたぜ」
「 ロクヨン、ゲームキューブ、ウィーユーのリモコンは無いの?」
「 👆 任天堂、セガ、ソニー、マイクロソフトの4つのゲームパッドを抑えておけば
誰かの心に引っかかるだろうと思っていたが、 NEC が無かったので追加で購入」
Zzz...
「 毎日 毎日 日付を跨いでまでプログラミング、疲れた。
ゲームに関わりたくない」
📖 Godot でゲームのコントローラーを使おうぜ(^~^)?
「 キーコンフィグができなければ、好きなゲームパッドで ゲームができないんじゃないか?」
📺 動画
「 ゲームパッドのボタンを キー・コンフィグ できるようにする改造をしたことによって、
選択肢カーソルの位置や、移動できる範囲が おかしくなったぜ」
「 👇 大変なバグを踏んでいるのかも知らん、別記事で解説してくれだぜ」
「 👇 ぐぬぬ。 Godot で、外部リソースのジョインもマージもできないぜ」
📖 リソース
「 👆 プロジェクトに入れるものは 3大要素 に分かれるぜ」
「 👆 この3つを さっと 見分けられないと やってられない」
「 🪑 は、素材の著作権者を 見分けやすくする印だぜ。
🍉は、モジュール名だぜ」
「 AssistantDirector
が持っているメソッドが多すぎる。
ScenarioWriter
に分担できるところは 分担していくぜ」
「 メッセージ・ウィンドウのソースコードが長すぎる。
コードを掃除していくぜ」
「 RPGの開発が伸び伸びになってしまう。
いったん、ビジュアルノベルの部分だけ切り出すぜ」
「 リソースのIdの紐づけが切れたら ファイルが開かなくなった。
どこが破損したかも 教えてくれないので 自力で復元中」
📖 Godot で、破損した .tscn ファイルを自力で復元しようぜ(^~^)?
📖 Godot の LabelSettings 外部ファイルの名前の付け方を考えようぜ(^~^)?
「 👆 フォルダーを自由に作って そこにノードを移動できるようにしたいぜ。
そのとき パスも リンク切れしないようにしたいぜ」
「 Godot エディター上で 移動すれば リンクは切れないんじゃないの?」
「 ノードパスの仕様が難しい。もっと適当に ノードを移動したい」
📖 Godot でノードパスを気にせずにシーン・ビューでノードを移動したいぜ(^~^)
「 他の グローブ 🌏 の下も そうできるようにしなさいよ」
「 👆 📂
を見つけると、引き続きその中も探索される、という特別な意味を持たせた。
📂🗻戦闘開始トランジション
を省いても 🗻1コマ
は見つけてくれるぜ」
...
「 👆 キーコンフィグの こういうスクリプトを 全部 自前のシナリオのト書きで書けないかだぜ?」
「 GD Script の表現力を シナリオが上回ってないなら 苦労が増えるだけじゃない?」
📖 Godot の GDスクリプトを、自前のスクリプトで置き換えようぜ(^~^)?.md
「 👆 役職ごとに プロジェクトを分け、
あとで 各プロジェクトをマージするための構成は ひとまず このようにするぜ」
「 何日間も 微妙に 仕様変更を繰り返していたやつが 終わったのか?」
.
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント