CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

【生成AIの検証】Roblox StudioのAI-Powered Code CompletionとMaterial Generator

ここ半年ほどの生成AIブームにより、いろいろな生成AIが発表されています。

どういう機能なのかは実際に試してみないと判断ができないので、気になったものを試しています。

今回は、Roblox Studioというゲーム作成ツールに搭載された生成AI機能を試した結果をまとめました。

1. Roblox とは

Roblox社が公開している、オンラインゲーミングプラットフォームです。2021年9月時点でアクティブユーザは4940万人、半数は10-20代とのことです。

www.4gamer.net

ちょっと試してみましたが、レゴっぽいキャラクターでプレイするオンラインゲームです。いろいろありますが、たとえば私が試した「ワイルドウェスト」は、いきなり銃撃戦が行われている世界から開始しました。

基本プレイは無料ですが、アイテムに課金することもできます。

現在は5000万個以上のゲームがあるそうです。個人や企業が作ったものが公開されています。

2. Roblox Studioとは

Robloxでプレイ可能なゲームを作るためのツールです。無料で入手できます。雰囲気やルールはUnityやGodot Engineに似ています。

Unity Asset Storeのように、3Dモデルや機能が多数公開されており、Roblox Studioの中で簡単にインポートできます。これはAsset Storeと同様に、有料・無料と分かれています。

以下は、Roblox StudioでForest Lakeというモデルを表示させて実行した例です。おまけで、最後に特定ブロックに触るとプレイヤーがkillされるスクリプトを入れてみました。

A locomotion example on preset forest on Roblox Studio

なお、キャラクターの表示・移動は何もしなくても使えるようになっています。

3. Roblox Studioに搭載された生成AI機能

公式ブログで公開されているYouTube、および3月に公開された記事から判断すると、AI-Powered Code CompletionとMaterial Generatorが現在使える生成AI機能です。

blog.roblox.com

venturebeat.com

AI-Powered Code Completionは単純なテキスト入力からコードを自動生成する機能で、Roblox Studio内のスクリプト (Unityと同じようにオブジェクトに対してアタッチします) の中で使用します。

Material Generatorは、シーン配置ウインドウの中で実行し、オブジェクトを指定してから単純なテキスト入力をすることで、指定オブジェクトのマテリアルを変更することができます。

どちらも、Roblox StudioでFile > Beta Featureを選択して表示されるウィンドウで、それぞれの機能名称にチェックを入れてRoblox Studioを再起動すると使えるようになります。

Beta Feature lists on Roblox Studio

4. コードの自動生成機能:AI-Powered Code Completion

とくに専用メニューなどはなく、スクリプトエディタの中で使用します。

適当なオブジェクトにスクリプトをつけて試してみました。

まず、オブジェクトの表示ですが、Home > Part > Sphere を選択しました。Partの中にあるのが基本図形です。

Create sphere on Roblox Studio

これはUnityでのGameObject > Sphere でSphereを出すのと同等の操作です。

ここでは表示させたSphereの位置や大きさを少し調整して配置しました。

UnityでのHierarchy Viewは、ここではExplorerと呼びます。Explorerの中にあるPart (名称変更しないと、SphereでもBlockでもみんなPartになる) を右クリックし、Insert Objectを選びます。これはUnityでのComponent付与に近い操作です。

ここからScriptを選ぶとオブジェクトにスクリプトをアタッチできます。

スクリプトはSceneと同じViewに表示されます。Roblox StudioではLuaというスクリプト言語を使います。

Luaについてはよく知らないのですが、高速で堅牢と書かれているページを見つけました。

Luaは多くの産業アプリケーション(AdobeのPhotoshop、Lightrootなど)、組み込みシステム(ブラジルのデジタルTVのミドルウェアであるGingaなど)やゲーム(World of Warcraft や Angry Birdsなど)で使われています。
特に最近ではゲームのスクリプト言語として人気が高いです。しっかりとしたリファレンスマニュアルがあり、書籍も豊富です。初期リリースから25年以上が経過し、2007年のHOPL(History of Programming Languages Conference) IIIで特集され、Game Developers MagazineでFront Line Award 2011を獲得しています。

引用元:Lua とは?動作確認や機能、特徴などを解説 | OSSサポートのOpenStandia™【NRI】

一方、完全ではないようです。

初期には、このエンジンは Lua スクリプト言語を使用していました。Luaは高速ですが、オブジェクト指向システム(フォールバックを使用して)へのバインディングの作成は複雑で時間がかかり、膨大なコードを必要としました。 Python でいくつかの実験を行った結果、それを埋め込むのは難しいことがわかりました。

引用元:よくある質問 — Godot Engine (stable)の日本語のドキュメント

話を戻します。Scriptを開き、最初に以下のように記載しておきます。

local part = script.Parent
task.wait(5)

Luaスクリプト言語では、"--"を入力するとコメントになります。今回の生成AIは、コメントに文章を入力することで対応するコードが表示されます。生成されたらTabキーを押すと確定できます。エンターキー、矢印キーだと消えてしまうので注意が必要です。

たとえば、Sphereの色を赤に変更したい時はこのように入力します。

"-- Change the part color to red"

すると、"part.Color = Color3.new(1, 0, 0)"というコードが2,3秒後に自動表示されます。

同様に "-- wait 5 seconds"、"-- Change the part scale to 2,2,2" と入力した結果がこちらです。

A generative AI example on Roblox Studio

これを実行するとこのようになります。
補足:開始直後のSphereはscale=9,9,9に設定しています。scale=2,2,2に変更したため、小さくなっています。

A generative AI code example on Roblox Studio

YouTubeに上がっている検証動画などもみてみましたが、まだこの機能はベータ版ということで制約があるようです。

・スクリプト冒頭に何も書いていないと発動しない

細かい条件は不明ですが、以下の2行がないと何も生成されませんでした。

local part = script.Parent
task.wait(5)

・Explosionという言葉を入れると、オブジェクトがDestoryされるだけで爆発効果がでない

まだ複雑な表現はできないのだと思われます。

・マテリアルを生成、テクスチャを貼るなどはうまくいかなかった

試してみましたが、こんな結果になりました。wood textureもwood materialも表示されませんでした。

local part = script.Parent
task.wait(5)

-- Change the part color to red
part.Color = Color3.new(1, 0, 0)

//これは間違った書式
-- Attach wood texture to the part
part.TextureID = "rbxassetid://123456789"

//これは間違った書式
-- Attach wood material to the part
part.Material = Enum.Material.Wood

なお、こちらの動画ではコード生成画面などを確認できます。

www.youtube.com

5. マテリアルの自動生成機能:Material Generator

File > Beta Featureで有効化していると、HOMEというタブにMaterial Generatorが表示されるようになります。

Material Generator on Roblox Studio

今回は、基本図形のWedge (三角柱) のマテリアルを変更してみます。

Wedgeを選択した状態で、"Material Generator"ボタンを選択すると、プロンプトが表示されます。

たとえば、"Change copper metal material" と入力してみます。

Material Generator prompt on Roblox Studio

すると、このようにcopper (銅) のテクスチャ候補がいくつか表示されます。どれか選択すると、ベースのマテリアル指定、テクスチャの幅などを指定できるようになるので、Metalを選んだらApplyを実行すると、Wedgeに反映されます。

Material Generator prompt on Roblox Studio

ベースマテリアルとは、Roblox Studioで準備されている基本的なマテリアルのことです。何もしないとPlasticになっていて、Metal以外にもNeon、Grassなど多数あります。Neonにするとぼんやり光った状態がすぐに表現できます。

そのほかにもWoodとかいくつか対応できることを確認しました。

なお、こちらの動画ではMaterial Generatorを使ってみた内容が紹介されています。

www.youtube.com

6. おわりに

現時点ではベータ版なので、どちらの機能も複雑なことはできませんでした。また、コード生成については間違ったコードが生成されることがあるので、やはり基本的な知識があった上で使うのがよさそうと思います。

Roblox Studioは慣れると使いやすい印象です。Roblox以外にも使えることはないので深入りはしづらいですが機会あればまた見てみたいと思います。