【Roblox Studio】ゲーム完成!バッジ・クリア特典・公開方法まで完全ガイド【親子でゲーム作り④】

    ついに、親子で作るRoblox Studioゲーム制作シリーズも最終回です!

    前回は、BGMやゴール演出を追加して、ゲームらしいワクワク感を演出しました。
    そして今回は、いよいよ最後の仕上げ。

    • ゲームをクリアした証になる「バッジ」の作成
    • クリアした人だけが楽しめる「アフロ」のごほうび演出
    • 世界中の人に遊んでもらうための「ゲーム公開」

    まで、一緒に進めていきます。

    おけ

    今回わが家では、クリアバッジのイラストを子どもに描いてもらいました。
    その手描きイラストをChatGPTでほんの少しだけ整え、Robloxのバッジとして登録しています。

    「絵が苦手だから難しそう…」と思う方でも大丈夫。
    子どもの絵ならではの味を残しながら作る方法もご紹介します。

    この記事を読み終える頃には、あなただけのオリジナルゲームが完成し、世界中のプレイヤーに公開できるようになります。

    最後まで一緒に楽しみながら、ゲームクリエイターデビューを目指しましょう!

    「親子でゲーム作り」シリーズはこちら

    第1回:Roblox Studioの始め方とゲーム作りの準備

    第2回:アスレチックコースとチェックポイントを作ろう

    第3回:BGM・ゴール演出・クリア画面を追加しよう

    第4回(この記事):バッジ・クリア特典・公開方法

    目次

    ついに完成!ゲーム公開まであとひと息

    ここまで親子でゲームを作ってきた皆さん、お疲れさまでした!
    着いてきてくれてありがとうございます!

    コースを作り、チェックポイントを設置し、BGMやゴール演出を追加して、ゲームらしい形になってきましたね。

    今回はいよいよ最後の仕上げです。

    子どもが描いたイラストを世界に一つだけのバッジにしたり、クリアした人だけがアフロになる遊び心を加えたり、最後は世界中の人に遊んでもらえるよう公開していきます。

    少し作業は多いですが、一つひとつ進めれば大丈夫。
    完成した瞬間の達成感は格別ですよ✧*。٩(ˊᗜˋ*)و✧*。


    子どもの絵を世界に一つだけのバッジにしよう

    まずは紙に自由にバッジを描いてみよう

    ゲームをクリアした人だけがもらえる「バッジ」は、ゲームを遊ぶ楽しみの一つです。

    今回は、子どもに紙とペンを渡して「クリアしたくなるバッジを自由に描いてみよう!」とお願いしました。
    ちゃんとした紙に書く必要も、上手に描く必要はありません。

    折り紙の裏に、マジックペンで書いてもらいました。

    「どんな絵なら嬉しいかな?」「どんなバッジなら自慢したくなるかな?」と親子で話しながら描く時間そのものが、ゲーム作りの思い出になります。

    ChatGPTで子どもの絵の雰囲気を残したまま整える

    描いたイラストは、そのままでも素敵ですが、小さなアイコンとして表示されるため、少しだけ見やすく整えるのがおすすめです。

    どうしても家で撮影するので影も入っちゃうし、斜めにもなっちゃう。

    今回はChatGPTを使って、線をきれいにしたり色を整えたりしましたが、「別のイラストに描き直す」のではなく、子どもの絵の良さを残すことを一番大切にしました。

    この記事で実際に使用したプロンプトも紹介するので、ぜひ参考にしてみてください。

    ↓プロンプト↓

    この画像は子どもが手描きしたイラストです。
    Robloxのゲームクリアバッジとして使いたいので、子どもの絵の雰囲気や個性はできるだけ残してください。

    新しく描き直したり、大人っぽいイラストに変更したりせず、
    ・線を少しだけ整える
    ・色を見やすく調整する
    ・小さいアイコン(64×64px程度)でも見やすいデザインにする
    程度の修正にしてください。

    元のイラストの構図・表情・モチーフは変更せず、追加・削除も最小限にしてください。

    ゲームのバッジらしい、明るく楽しい雰囲気に仕上げてください。
    背景はシンプルで、バッジとして見やすいデザインにしてください。

    ↑このままコピペでオッケイです。この文書と子供の描いた絵を一緒にchatGPTのチャット欄に貼り付けましょう。

    2回やってどちらとも丁度いい感じになったので、再現性取れておりますよー。

    できあがり

    Robloxでバッジを登録する方法

    画像の準備ができたら、Creator Hubでバッジを登録します。

    Roblox creator hubは今まで使ってきたRoblox studioとは違って、ネット上でやります。
    検索窓にRoblox Creator Hobと入れて検索。

    すると出てくるのでここから作業します。

    英語ですがビビらなくてもOK。開けば日本語訳になりますので。

    サイトに入ったら、左の列の「作品」をクリックすると、真ん中のスペースに自分が作ったゲームが表示されます。
    その右上の「・・・」をクリック。

    するとメニューが開くので「バッジを作成」をクリック。

    作ったバッジ画像と名前、詳細を入れればバッジ作成ができます。

    ただ、このあと審査が入るため少々時間がいります。

    おけ

    私はこの間に近所に1時間半ほど子供たちとお買い物に出かけました。

    登録が完了するとバッジIDが発行されるので、このあと紹介するスクリプトでゲームと連携させれば完成です。
    バッジIDはわかりにくいですが、上部のアドレス欄をみます。

    セキュリティ上隠しましたが、黄色に塗りつぶした赤丸のところに数字が羅列しています。これがIDとなります。
    これをコピーしておいてください。あとでペーストします。

    次はいつものRoblox Studioに戻ってゴール床のスクリプトに赤線を追加します。
    3か所ですな。
    黄色のところには上でコピーしたID番号をいれてください。

    おけ

    え?入力がめんどい?わかる。いいでしょう。画像ではなく、コピーできるコード貼っておきます。
    IDのところだけ自分のIDいれてくださいね
    メモ付ですが、このまま入力でOKです。

    -- 必要なサービスを取得
    local Players = game:GetService("Players")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local BadgeService = game:GetService("BadgeService")
    
    -- ゴール床
    local goal = script.Parent
    
    -- ゴール床の中にあるファンファーレ
    local fanfare = goal:WaitForChild("自分で選んだファンファーレの名前")
    
    -- ReplicatedStorageにあるCLEAR表示用RemoteEvent
    local showClear = ReplicatedStorage:WaitForChild("ShowClear")
    
    -- バッジID
    local BADGE_ID = ここに自分のIDいれてね。
    
    -- 同じ人が何度も連続でゴール処理されないようにする
    local touchedPlayers = {}
    
    goal.Touched:Connect(function(hit)
    
    	-- 触れた部品からキャラクターを探す
    	local character = hit:FindFirstAncestorOfClass("Model")
    	if not character then
    		return
    	end
    
    	-- キャラクターのHumanoidを探す
    	local humanoid = character:FindFirstChildOfClass("Humanoid")
    	if not humanoid then
    		return
    	end
    
    	-- キャラクターからプレイヤーを特定
    	local player = Players:GetPlayerFromCharacter(character)
    	if not player then
    		return
    	end
    
    	-- すでにゴール処理済みなら終了
    	if touchedPlayers[player] then
    		return
    	end
    
    	touchedPlayers[player] = true
    
    	print("ゴールしました:", player.Name)
    
    	-- ファンファーレを鳴らす
    	fanfare:Play()
    
    	-- CLEARの文字を表示する
    	showClear:FireClient(player)
    
    	-- バッジを付与する
    	local badgeSuccess, badgeResult = pcall(function()
    		return BadgeService:AwardBadgeAsync(player.UserId, BADGE_ID)
    	end)
    
    	if badgeSuccess then
    		print("バッジ処理成功:", badgeResult)
    	else
    		warn("バッジ処理失敗:", badgeResult)
    	end
    end)

    でも、これまた後で書き直すので、最後まで読んでから始めてね。
    だって、なんか知らんけど、子供ら、ゴールしたら髪型変えるっていうんだもん。
    ゴール床をもうちょっと書き換えなきゃね。

    ゲームクリアでアフロに!クリア特典を付けよう

    ゴール床にスクリプトを追加する

    ゲームをクリアしたら、プレイヤーの髪型がアフロに変わる仕掛けを作ります。
    「えっ、なんでアフロ?」と思うかもしれませんが、子どもたちはこういう予想外のごほうびが大好きなんですかね。

    実際にわが家でも、「クリアしたー!」「アフロになったー!」と大笑いしながら何度も遊んでいました。

    まずは変更したい髪型をクリエイターズマーケットから選びます。

    Hairと検索すればたくさん出てきます。我が家に合わせてアフロにしなくていいですよ!?

    そしたらば、ServerStorageに髪型を入れておきます。

    この時はClearHair名称変更にしましたが、やっぱりアフロのままにしました。
    準備はこれでOK。

    ゴール床のスクリプトをもう一度開いて全部消して、これをコピペしてください。
    ゴール床にスクリプトを追加するだけで動くように紹介します。

    で、先ほどのスクリプトの最終形態はこちらです。

    -- 必要なサービスを取得
    local Players = game:GetService("Players")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local ServerStorage = game:GetService("ServerStorage")
    local BadgeService = game:GetService("BadgeService")
    
    -- ゴール床
    local goal = script.Parent
    
    -- ゴール床の中にあるファンファーレ
    local fanfare = goal:WaitForChild("自分で選んだファンファーレの名前")
    
    -- ReplicatedStorageにあるCLEAR表示用RemoteEvent
    local showClear = ReplicatedStorage:WaitForChild("ShowClear")
    
    -- ServerStorageに入れたクリア特典のアフロ
    local clearHair = ServerStorage:WaitForChild("自分で選んだ髪型の名前")
    
    -- バッジID
    local BADGE_ID = バッジのID数字
    
    -- 同じ人が何度も連続でゴール処理されないようにする
    local touchedPlayers = {}
    
    goal.Touched:Connect(function(hit)
    
    	-- 触れた部品からキャラクターを探す
    	local character = hit:FindFirstAncestorOfClass("Model")
    	if not character then
    		return
    	end
    
    	-- キャラクターのHumanoidを探す
    	local humanoid = character:FindFirstChildOfClass("Humanoid")
    	if not humanoid then
    		return
    	end
    
    	-- キャラクターからプレイヤーを特定
    	local player = Players:GetPlayerFromCharacter(character)
    	if not player then
    		return
    	end
    
    	-- すでにゴール処理済みなら終了
    	if touchedPlayers[player] then
    		return
    	end
    
    	touchedPlayers[player] = true
    
    	print("ゴールしました:", player.Name)
    
    	-- ファンファーレを鳴らす
    	fanfare:Play()
    
    	-- CLEARの文字を表示する
    	showClear:FireClient(player)
    
    	-- バッジを付与する
    	local badgeSuccess, badgeResult = pcall(function()
    		return BadgeService:AwardBadgeAsync(player.UserId, BADGE_ID)
    	end)
    
    	if badgeSuccess then
    		print("バッジ処理成功:", badgeResult)
    	else
    		warn("バッジ処理失敗:", badgeResult)
    	end
    
    	-- 現在つけている髪型を外す
    	for _, item in ipairs(character:GetChildren()) do
    		if item:IsA("Accessory") then
    			if item.AccessoryType == Enum.AccessoryType.Hair then
    				item:Destroy()
    			end
    		end
    	end
    
    	-- クリア特典のアフロを複製
    	local newHair = clearHair:Clone()
    
    	-- プレイヤーにアフロを装着
    	humanoid:AddAccessory(newHair)
    
    	print("アフロ装着成功:", player.Name)
    end)

    ファンファーレの曲名、選んだ髪型の名前、バッジのIDは自分のを書いてくださいね。

    アフロが付いたかテストプレイしよう

    スクリプトを入れたら、必ずテストプレイをしてみましょう。
    バッジが取得できるか、アフロがちゃんと付くかを確認すれば、ゲームはほぼ完成です(`・∀・´)ノ

    バッジの修得は通常のテストプレイでは手に入れれないので、先に公開して、自分が実際にRobloxで遊ぶ必要があります。

    でも心配は御無用!

    限定公開(自分と友達だけ)の公開がありますので、限定公開にしておきましょう。
    まずはRoblox studioでファイル→Robloxで公開を押します。

    そしたらば、先ほどのネットで開いたRoblox creator Habに戻っていきます。

    左側の「作品」を押し、公開したい作品をクリックします。

    設定を押すと

    説明画面になります。
    入力画面を済ませて、真ん中の限定を選びます。

    ユーザー設定を行っていない方は、公開することができなくて警告文がでます。
    でも焦らなくて大丈夫!しっかり設定を行っておきましょう。

    これでOK!

    ちなみに、サムネイルはなんでもOKですが、簡単につくれる方法をお伝えしておきます。

    • Roblox Studioでいい感じの背景をスクショします。(スクショはキーボードでウィンドウズマーク+shift+Sで撮れます)
    • テストプレイでジャンプしたキャラクターをスクショします。
    • chatGPTに「Robloxのゲームのサムネイルを作ります。題名は○○です。添付する背景とキャラクターを使用して、~~のようなイメージのゲームなのでポップな雰囲気で仕上げてください」といって画像2つを添付します。

    すると、台所でお茶のんで帰ってくる間にできあがっております。
    使ったのは次の画像。

    通常のRobloxで自分の作品を探すのは大変ですよね。
    そんな時は無理せず、そのままネットのRoblox Creator Hubで、

    先ほどの「作品」から自分の作品の右上の「…」からメニューを開き、Robloxで表示を押せば、そのままプレイができます。


    完成したゲームを公開しよう

    公開前にチェックしたいこと

    限定公開から一般公開する前に、ゲームタイトルや説明文、アイコン、サムネイルなどを見直しておきましょう。
    最初に目に入る部分なので、少し工夫するだけで「遊んでみたい!」と思ってもらいやすくなります。

    おけ

    あと忘れがちなのが、RobloxStudioで各ブロックが「固定」をしっかり押してあること。スクリプトがすべて正常に機能しているか、そのあたりも要確認です。

    Robloxで公開する手順

    設定が終わったら、公開設定を「限定」から「公開」に変更して世界へ公開します。
    自分たちだけのゲームだった作品が、世界中の人に遊んでもらえるゲームになる瞬間です。

    家族や友達に遊んでもらおう

    公開したら、まずは家族や友達に遊んでもらいましょう。

    「面白かった!」「ここ難しかったよ!」という感想は、次のゲーム作りのヒントになります。

    ゲームは公開して終わりではなく、遊んでもらって育っていくものです。


    まとめ|親子でゲームを完成させた経験は、一生の宝物

    ゲームを作ることは、プログラミングを学ぶだけではありません。

    「どんなコースなら楽しいかな?」
    「どんなバッジなら喜んでもらえるかな?」
    「どんなごほうびなら笑ってくれるかな?」

    そんなことを親子で考えながら、一つの作品を完成させる時間こそが、このシリーズで一番大切にしたかったことです。

    完成したゲームの出来栄え以上に、「自分で最後まで作れた!」という達成感は、きっとお子さんの自信につながりますよ✧*。٩(ˊᗜˋ*)و✧*。

    ぜひ今回のゲーム作りをきっかけに、「次はこんなゲームを作ってみよう!」と、親子で新しいチャレンジを楽しんでくださいね。

    ここまで読んでくださってありがとうございました!

    ランキング参加中!

    ポチるとよろこびます にほんブログ村 にほんブログ村へ
    にほんブログ村
    よかったらシェアしてね!
    • URLをコピーしました!
    目次