見出し画像

【0チャレンジ】AIを駆使してポケモン風RPGは作れるのか with Claude3.5



1.はじめに

はじめまして、AKです。
いつも見てくださってる方はありがとうございます。
私は普段、日々の日記やAIを用いたポケモン開発などに焦点を当ててブログを書いています。とにかく自分が楽しそうなチャレンジをしています。
最近は3か月チャレンジと題し、「ポケモン風ゲームを3か月で作成する」に挑戦しています。ゲームエンジンはGodotです。
Godotは使用経験0からのスタートになります。
相当厳しい(というかほぼ不可能の)ため、ここで生成AIを全力投入!!します。
Godotは独自言語のGDScriptを用いており、ノードといわれる概念があります。これをチュートリアルやAIを駆使して勉強しながらポケモンを作っていこう、という趣旨です。
よくある「AIだけでゲーム作ってみた!」とは少し違い、コードの切り貼りだけでのゲーム作りではありません。
それは上記だとすぐに満足して終わってしまうこと、そしてなにより「私自身が何か自分に残したい」と思ったためです。
ゲーム開発の学習を含め、AIでどこまでいけるのかを見たかったのでこのような形で進めています。
前置きは長かったですが、今日も進めていきましょう!

2.簡単な経歴

ところで!簡単な本当に簡単な経歴だけ記載しておきます。
こんな感じの人が作ってるんだなというイメージを持っていただけると幸いです(笑)

学歴
・地方国立大 大学院卒 研究分野はAI関連
職業
・エンジニア2年目(元々は製造業→IT企業)
使用する生成AI
・ChatGPT、Claudeがメイン
コメント
・ChatGPTの3.5が出てから今に至るまでひたすらにAIを用いたゲーム開発に挑戦し続けては失敗、諦めていました。これが最後の挑戦という覚悟で頑張っていきますので応援や、一緒に頑張ってくれる人が一人でもいらっしゃったら嬉しいです。

3.今回のプラン

今日の目標はズバリ、「モンスターの登場シーンを出せるようにする!」です。
ポケモンバトルといえばモンスターが鳴き声を出しながら登場するというのが定番。今回はこれを作っていきます。
※現在の進捗については以下の動画よりもう少し進んでいるあたりです。
ポケモン模倣ゲーム制作 #Godot#勉強#devlog (youtube.com)


4.製造開始

今回は手っ取り早くアセットが欲しかったので猫ミームで実験します。
まずは猫ミームの素材を取得します。
【2024年】猫ミームとは?すぐ利用できる猫ミーム素材を集めました! | ささラボ (sasalabo.net)

次にこの動画をGodotで再生する必要があります。
利用できる拡張子はAIに質問です。

再生できる動画

よって、.ogvに変換したものを用意します。
でもどうやって再生したらいいか分からないので質問します。

動画再生方法

VideoStreamPlayerを使うようです。
追加してみましょう。

VideoStreamPlayer

するとどう見ても動画をセットする箇所を発見したのでそこにぶち込みます。さらにコードが必要らしいので、P3ノードに動画再生のコードを追記します。
以下は何度かClaude3.5に聞きなおして作成したコードです。10分ぐらいの低レベルな僕の質問に対して作成してくれました。すごすぎる、、、。

extends StaticBody2D

@onready var video_stream_player = $VideoStreamPlayer

func _ready():
	spawn()
	$Aim/Attack.hide()
	video_stream_player.connect("finished", Callable(self, "_on_video_finished"))

func spawn():
	$AnimationPlayer.play("Spawn")
	play_intro_video()

func play_intro_video():
	# スクリプトでスケールを設定
	video_stream_player.scale = Vector2(0.05, 0.05)  # 50%に縮小
	video_stream_player.show()  # 動画プレイヤーを表示
	video_stream_player.play()
	
	# 3秒後に動画を停止するタイマーを設定
	get_tree().create_timer(2.0).connect("timeout", Callable(self, "_on_video_timeout"))

func _on_video_timeout():
	# 3秒経過したら動画を停止
	video_stream_player.set_paused(true)
	_on_video_finished()

func _on_video_finished():
	# 動画再生終了時の処理
	post_video_actions()

func post_video_actions():
	# 動画再生後に行いたいアクション(例:バトル開始など)をここに記述
	print("動画再生終了。バトル開始!")
	# 例: $Aim/Attack.show()  # 攻撃UIの表示など
	
	# 注意: ここでは video_stream_player.hide() を呼び出していません
	# 最後のフレームを表示したままにするため

ざっくりvideo_stream_player.show() で表示し、 video_stream_player.play()で再生というかんじらしいです。後の細かいコードは動画の再生時間を調整している個所になります。

※おまけ解説
get_tree().create_timer(2.0).connect("timeout", Callable(self, "_on_video_timeout"))で2秒後にfunc _on_video_timeout():を呼んでくれます。これはとても便利。

ただ、もう一つ問題が。
それは猫ミームは動画なのでグリーンバックが表示されることです。
ドキドキしながら、godotでグリーンバックが消せるのかを聞いてみます。

Shader(シェーダー)とは陰影処理をするプログラムのことだそう。

どこにあるんだよ!っと聞くとInspectorのMaterialにあると教えてくれたので検索する。Matぐらいで出てきた。

これは全て設定後のMaterial

他にも色々教えてくれて、
・ShaderMaterialを追加すること
・shaderを追加すること
・shaderのコードを追加すること
そして以下のコードを追加します。
ここで消す色とかをきめることができるそうな。
本当にすげえ、、正直AIなしでは絶対分からない自信がある。

shader_type canvas_itemというのを記載する

そしてできたのが、これ!!

shaderを使った後の猫ミーム

なんか僅かに緑が、、でもかなり近い!!
さらに質問します。が、いまいちよくわからない回答が。
でも、Thresholdという文言が。
これを大きくしてみます。すると。。。

Threshold


Thresholdを5倍にした

できた!!あとは大きさとかを調整していきつつ
他の猫ミームにも同様の処理を行います。
そして完成したのがこれ。

なんかぽくなってきた?!(笑)
引き続き頑張っていきます。

ではでは本日はここまで!
Claude3.5はがちでやばいです。

この記事が参加している募集

#AIとやってみた

28,811件

この記事が気に入ったらサポートをしてみませんか?