GREE Tech Conference 2023で発表された資料です。 https://techcon.gree.jp/2023/session/TrackC-4
Robloxでの開発半年間参入から運営までREALITY株式会社ソフトウェアエンジニア内田 素貴
View Slide
アジェンダ● 自己紹介● Robloxとは○ Robloxの紹介○ Robloxのエクスペリエンス開発○ エクスペリエンス公開までのフロー● ゲーム事業部での取り組み○ SUPER SF SOCCER○ Wizard’s Legacy● どうしてRoblox開発を行ったのか?● まとめ2
自己紹介名前内田 素貴所属REALITY株式会社 ゲーム事業部経歴● 2013年新卒としてグリー株式会社に入社● REALITYには前身のWright Flyer Live Entertainment設立時から参加● スタジオの基盤構築およびフェイシャル対応● Platformで低遅延モード等開発● ゲーム事業部にてREALITY釣り部・Roblox開発3
Robloxとは ● Robloxの紹介● Robloxのエクスペリエンス開発● エクスペリエンス公開4
Robloxの紹介Robloxはユーザーがそれぞれ独自の体験を作成できるツールとプラットフォームを提供している参加している誰もが手軽に作れて誰もが遊べる環境になっている※エクスペリエンスとはゲームなどのユーザー体験空間のことを指している5
Robloxの紹介2023年6月30日時点までの3ヶ月間で6,550万のデイリーアクティブユーザーと560万のアクティブなエクスペリエンスが存在しているDAUのうち約44%が13歳未満で、約56%13歳以上を閉めている(不明が約1%)巨大なUGCプラットフォーム6出典:https://s27.q4cdn.com/984876518/files/doc_financials/2023/q2/Q2-23-Supplemental-Materials-FINAL.pdf
Robloxの紹介2022年末IR資料によるユーザー詳細7出典:https://s27.q4cdn.com/984876518/files/doc_financials/2022/ar/roblox_2023-proxy-and-2022-annual-report_web-ready.pdf
UGCとはUser Generated Contentsの略称ユーザー自身が作成したコンテンツ(アセットやエクスペリエンス)のことRobloxはユーザーがアセットやエクスペリエンス作り、別のユーザーがそれを購入したり遊んだりする場所となっているUGCプラットフォームとしては今年の3月ごろUnreal Editor for Fortnite (UEFN)がパブリックベータになったことが話題になった8
Robloxの紹介開発環境としてはパソコンのみ遊べる環境としてはパソコン、Mac、iOS、Android、Amazon デバイス、Xbox コンソール、Oculus Rift、HTC Viveからアクセス可能9
Robloxとは ● Robloxの紹介● Robloxのエクスペリエンス開発● エクスペリエンス公開10
Roblox Studioを用いた開発● 開発はRoblox Studioを使用する● Robloxが提供しているツール● Roblox Studio1つで開発環境として完結している11
Roblox Studioを用いた開発● デフォルトの画面構成○ アセットの配置。クライアント・サーバーコード実装等がこれ1つで可能○ チーム開発に対応しているため同時に複数人で同じ Placeに対して編集作業を行うことができ、リアルタイムでそれぞれの編集が反映されていく12
Roblox Studioでの配置場所● WorkSpace○ 3D空間にあたる。このフォルダ以下に配置物等おいていく● ServerScriptService○ サーバーとして動くスクリプトはこちらに配置する● StarterPlayer○ クライアントでのみ動くフォルダ。ユーザー操作に関するものやUI操作等に関するアセットやスクリプトが配置される● ReplicatedStorage○ クライアント・サーバーどちらからもアクセスできるフォルダ。共通で使いたいロジックやアセット等を配置する● ServerStorage○ サーバーでのみアクセスできるストレージ。サーバーからのみアクセスしたいアセットやスクリプト等を配置する● その他(ネットワーク、マテリアル、サウンド等もある)13
Roblox StudioでのコーディングRobloxでのスクリプティング言語としてはLuaを使用する実行環境に合わせてファイルを定義する必要がある● LocalScript○ 名前の通りローカルでのみ実行されるスクリプト○ 基本StarterPlayerに配置される○ ユーザーの入力やボタン操作等で使用される● Script○ 基本的にはサーバーコードの実行として使用される○ 基本的にはServerScriptServiceに配置されるが、用途によってはWorkspaceやServerStorageにも配置される○ 応用としてRunContextによって実行環境をローカル等で行うことができる● ModuleScript○ 使いまわしたいロジックの格納スクリプト。責務の分離やluaでいうprototypeの定義場所として使用される○ 基本LocalScriptやScriptどちらでも使用することができ、requireすることで使用される○ requireでは同一インスタンスを見ているので、Managerのような使い方もされる○ ReplicatedStorageやServerStorageに配置されるENとしては基本このスクリプトとフォルダの組み合わせを把握してロジックを実装していくことになる14
アセットの利用①● マーケットプレイスにあるUGCを利用する○ ユーザー同士が公開できるためアセット量が豊富にある○ 利用の際はどこかで聞いたことあるような音・画像が紛れている可能性があるので注意15
アセットの利用②● 独自で作ってアップロードしたものを使用する● いくつか制約がある○ オーディオはアップロード上限が 1月にアップロードできる数が決まっている○ テクスチャはアップロード後最大 1024x1024になる○ etc…16
バッジ● エクスペリエンス内で目標を達成したときにユーザーが獲得できる● ユーザーのプレイ指針として使用するために便利● 登録○ バッジの登録ページで画像等を登録することで AssetIdが発行され登録される● 実装○ BadgeServiceが用意されている○ AwardBadgeでバッジのAssetIdを指定することでユーザーにバッジを付与できる17
ローカライズ● 自動翻訳含めて提供されている● テキストに表示される際リストに吸い上げられて自動翻訳が行われる○ 初めて使用する言語等だとラグがある● csvで文言を入れたり、自動翻訳が意図しない表現になっている等があった場合はRoblox開発者用のページで翻訳結果を書き換えることができる18
データストア● ユーザーデータの格納やマスターデータの入稿等に用いられる● 基本無料。開発時・運用時で使用に際して別途費用を払うことがない● 基本Robloxでの売り上げはレベニューシェアなため、そこに費用として含まれていると思われる● 1分間にRead/Writeといったそれぞれでアクセスできる回数に上限があるため使用の際には注意が必要19
マネタイズの種類● エクスペリエンス内アイテムの販売○ Developer Products■ エクスペリエンス内のアイテムや通貨などの製品○ Passes■ 永続的に獲得経験値2倍等の入手することで永続的に効果を発揮する製品等にしようできる● プレミアムユーザーの滞在● 有料のプライベートサーバー提供○ 自分や招待したユーザーしか入ることのできないサーバーを提供する● UGCアセットの販売○ アバター衣装等● その他○ Roblox StudioのPluginを作成して販売○ 今年の中頃に入ってゲーム内広告の機能も公開されている○ アクセス費用■ 有料アプリと同じ考え20
マネタイズについて(収益)● 基本的にRoblox内ではRobuxという通貨を用いて購入等が行われる○ サーバーの保守等Robloxの運用費用が省かれた状態で開発者の収入 Robuxが入る○ 獲得したRobuxはDeveloper Exchangeによってその時のレートに合わせて現金化することが可能になっている21
マネタイズについて(開発)● エクスペリエンス内アイテムの販売○ 「MarketplaceService」を使用することでRobuxの消費購入部分は基本的に Robloxに任せられ、その後の商品付与等を記載するのみで実現できるため開発しやすい形になっている22
Robloxとは ● Robloxの紹介● Robloxのエクスペリエンス開発● エクスペリエンス公開23
公開フロー24Roblox StudioでExperienceを作成Placeの中身を作っていくPublish To RobloxでRoblox上に配布
公開フロー作ってから公開までのフローが簡易で変更を加えてから公開するまでがとても簡単に行うことができる開発中も作ってから本番環境(スマホ実機等)で確認するというサイクルがとても早い25発行されたURL経由でエクスペリエンスにアクセスできる
公開後サポート● ユーザー広告○ UserAd■ バナー広告■ 指定サイズの画像と Robuxを支払うことでRobloxのバナーに表示される■ 表示される頻度は入札システムで決定される26
公開後サポート● ユーザー広告○ Sponsor■ スポンサー枠へのエクスペリエンス表示■ 表示する年齢とデバイス等指定を細かくできる■ Robuxを支払うことで表示されて表示される頻度は入札システムで決定される27
公開後サポート● Dashboard○ Robloxのクリエイターページに Dashboardがあり公開後のアクティブユーザー等を見ることがでる○ ENが追加実装することなく入っている機能○ 項目■ REAL-TIME● パフォーマンス● エラーレポート■ ANALYTICS● ユーザーアナリティクス● マネタイズ28
ゲーム事業部での取り組み ● SUPER SF SOCCER● Wizard’s Legacy29
SUPER SF SOCCER3vs3での対戦サッカー3分間により多くゴールできた方の勝ち30
SUPER SF SOCCER開発期間 約2ヶ月各職種(兼務含)PM 1人EN 2人Art 2人31
目的● 初めてのRoblox開発として実装フローや開発サイクルを経験する● マネタイズの実装把握や機能検証をする32
振り返り● 開発として○ テスト機能により複数人での動作を一人再現して動作確認することができた○ PC、タブレット、スマホの簡易的なエミュレート環境があり各環境を Studio上でもある程度確認できた○ 各職種との連携方法や RobloxStudioとしての特性を把握することができた○ マネタイズ周りの実装方式を把握することができた○ 複数人が入り混じるエクスペリエンスの開発として、新規実装しなくとも基本的にプレイヤーは同期されたりAPIが豊富にあるためカジュアルな体験が作りやすい33
振り返り● エクスペリエンスとして○ 公開手順が簡単○ ユーザー体験としてわかりやすいものを短期で作って出すことができた○ 公開ボタンを押してから検索で引っ掛かるようになるまで 2~3日は様子見が必要○ エクスペリエンスが多い分人が複数人いてから体験ができるような GvGを根本においてしまうと人が必要人数集まりきらず提供したい体験を提供しきれないということが発生する○ ソロや1vs1でも何かすることがあることが望ましい34
ゲーム事業部での取り組み ● SUPER SF SOCCER● Wizard’s Legacy35
Wizard’s Legacy魔法や剣・弓を用いてPvPやPvEを行うクエストをこなしつつレベルをあげていき、新たなスキルを解放したりステータス強化等を行いワールドを散策していく36
Wizard’s Legacy37敵撃破 ⑤経験値獲得(小) レベルアップ ボス撃破 ⑤経験値獲得(大) ③ゴールド獲得 ⑥魔法ガチャ ③ゴールド獲得 プレイヤー撃破 クエスト 報酬(クエスト) 報酬(敵) 報酬(PvP) 難 易 度 成長 クエスト > 報酬獲得 > 成長が基本的な流れ。プレイヤーと武器/魔法が1対多で並列に成長、武器/魔法が追加更新される。 ⑧アイテムドロップ ⑨ステータスアップ ⑦スキル経験値獲得 武器・魔法強化 収集品(時間湧き) 討伐ポイント獲得 ランキング ⑤経験値x2 ③賞金x2 ③賞金購入 ⑥魔法購入 マネタイズ ⑦マスタリーーx2 ⑧ドロップ率x2 ⑨ステリセ 永続 消費 購入物のギフト機能
Wizard’s Legacy開発期間 約4ヶ月各職種(兼務含)PM 2人EN 4人Art 4人38
目的● 収益化を目的としてRoblox内でのヒットタイトルをベンチマークとして運用も考慮した作品を作る● よりエクスペリエンス性の高い作品を作ることで開発知見を貯める● 同様の体験を作れるように制作エンジン化39
振り返り● 開発として○ バトル要素があるエクスペリエンスを作る際の基盤等ベースとなるエンジン作成をすることができた○ 開発用のエクスペリエンスと公開用のエクスペリエンスを分けておくことで、開発者用本番環境で動作確認をしつつ問題なかったら公開用に持っていくといったサイクルはうまく行った○ Robloxとして独特な挙動を新たにいくつか踏んだためこの辺りはまだ注意が必要■ オブジェクトの当たり判定をとる Touchedをリッスンした際サーバーとクライアントで挙動面が変わり、負荷も注意が必要になった等○ チーム開発での作業衝突がよく発生したため、複数人が絡む開発の際の環境はもう少し検討した方が良い■ 編集途中のスクリプトが syncされてしまって他の人の環境でエラーを出してしまう等40
振り返り● エクスペリエンスとして○ 体験としては今作はユーザーデータも使っているので運用も視野入れた作品を提供できた○ RobloxのDashboardとしては簡易なパフォーマンスやアナリティクスもついているため運用する上での足がかりもあり便利○ エクスペリエンスに開発者が入る際ログインユーザーの情報に開発者としてわかるアイコンがつくため、エクスペリエンス上で直接話を聞くこと等もできたため体験をユーザーと作っていくというのがわかりやすい環境41
どうしてRoblox開発を行ったのか?42
どうしてRoblox開発を行ったのか?ゲーム事業部はメタバースプラットフォームのコンテンツ開発スタジオとして、ヒットタイトルを作って運営することを目的にしているROBLOXはプラットフォームとして売上もユーザー規模も大きく、アバターやゲーム内課金などのREALITYと同様のマネタイズに関わる機能が提供されているROBLOXでヒットタイトルを作ることで、グローバルでもヒットするコンテンツが作れるようになり、ゲーム事業部としてメタバースプラットフォームとして本当に必要な機能を見極める43
まとめRobloxはUGCプラットフォームとしてRobloxStudioのみで開発環境として完結しているためエクスペリエンスを作って出すがとてもしやすいまたシェアが広いため届ける先のユーザーも多く存在しているただしユーザーが簡易に作れる分エクスペリエンスが溢れかえっているためどうやって作った体験をユーザーの目に届けるか?が鍵となっている44
45