見出し画像

ブースで家具を使えるようにするためにあわせてなんとかした7つのこと Now In REALITY Tech #125

スティック型の掃除機をちょっと前に買ったのですが、開けるモチベーションがどこかにいってしまったので未開封で部屋の隅に放置している、エンジニアのようてんです。

最近は「ブースで家具が使えるようになる」、コードネーム「アルコーブ」という開発をずっとやってまして、やっとリリースにこぎつけたので、その話をしようと思います。

本来であれば、当番制のソフトウェアエンジニアブログという位置付けではあるので、新機能の開発における技術的な話をしたいところではあるのですが、皆様に紹介したい特別な技術の話があるわけではなく、このエントリでお伝えしたいのは「長く大きくなったプロダクトでは、ある1つの目的を達成するのに、関連する課題はいっぱい発生しがちで、それは一つ一つ丁寧に対応していくしかない」という、どちらかというとプロジェクトマネジメント領域の話になります。

また、REALITYアプリを普段から使っていない方にはわかりづらいハイコンテクストなエントリであることは悪しからずご了承願います(ちょっとだけなんとかしようか考えたのですが諦めました!)。

プロジェクト「スピリタス」、開発コードネーム「アルコーブ」

REALITYアプリでは、アバターとギフトを中心とした素の「ブース配信」をベースに、特定のゲームをプレイすることができる「ゲーム配信」や最大8アバターで歩き回ったりできる「ワールド配信」、好きな家具を配置して座ったり装備したりできる「ルーム配信」を切り替えることができます。

このうち、配信者ユーザの持ち物である「"家具"をブース配信でも使えるようにする」ことを目的とし、「家具が使える配信を96%にしよう」という意味でプロジェクト「スピリタス」を発足、ルームよりは小さい、特化したアングルに対して自分だけの空間をつくることをイメージして、コードネーム「アルコーブ」として新機能の開発が遂行されました。

部屋の隅で窪んでる秘密基地っぽい空間のアレをイメージしました

コードネームはプロジェクトの運用における認知負荷に大きく影響します。大きな開発では、ユニークで、適切な抽象感があり、長すぎないコードネームをつけることは大変オススメです。

リリース時社内向け資料(1):アバターホームが変わります
リリース時社内向け資料(2):画面ごとに細かく動作が違います

【1】全ての配信がルームになってもサーバがパンクしないようにしました

アルコーブは内部的には実質全てのブース配信がルーム配信になるため、そのままではサーバ負荷が懸念されました。
クライアント側は不要な通信を行わないように、サーバ側は一部メッセージに限定してRedisのレプリカ対応を行うことにより許容量があがっています。

【2】アバターホームで直接ルームが起動されるようにしました

ルームとブースはトグルで切り替えます

ブースとルームを、配信前でも配信中にも、かんたんに切り替えられるようにするために、アバターホーム(起動後、配信する虹色の丸ボタンを押した後、アバターが表示されている画面を実はそう呼びます)で直接ルームを起動できるようにしました。

最後に起動したのがブースであればブースになり、ルームであればルームが起動するようになっています。

【3】配信を開始したり配信を終了したりする際にルームを再起動しないようにしました

今までは配信外で起動したルームをそのまま配信中にもっていくことができず、かならずルームという機能を再起動する必要がありました。

今回、アバターホームでブースとルームを切り替えられるようにした上で、「配信前にブースモードの際にはそのままブース配信が、ルームモードの際にはそのままルーム配信がはじまってほしい」仕様にあわせて、不要な再起動が挟まらないようにしました。

関連して、カメラ画角の保存・復元についてはまだ不要なところでリセットされてしまうケースが残っており、このあたり、自然に状態を保つ改善の余地は残っています。

【4】ギフトの動作を改善しました

主には「家具の椅子に座ったまま、くまさん抱き抱えエモートギフトなどをもらうと背中が反ってしまう」問題への対応がメインでしたが、あわせていくつかのギフトの動作を改善しました。

多くのタワーが立っている配信枠にて、復元スポーンが速やかに完了するようになったりもしています。

【5】ガチャ演出を変更しました

以前のガチャ演出は、黒い半透明の板の手前にアバターと、クマが表示される特別なカメラレイヤーの操作と合成を行なっていたのですが、実はルームではその機能は正しく動いていませんでした。

黒い半透明の板はなくなりました

ブースが内部的にはルームになるため、その違和感をなくすべくガチャ演出の方式をちょっと変更しました。関連して、演出クマが表示されている外側でカメラが操作できたり、エモートが発動できるようになっています。

【6】ブース専用「白い光」を導入しました

めちゃくちゃ細かい(正直ここで説明しない限り気づかれない自信があります)のですが、実はルームの「昼の光」がアバターを照らす色と、今までのブースでアバターを照らす色がちょっとだけ違っていました。ルームの「昼の光」の方がちょっとだけ実は青いのです。

リリース直後にブース・ルームそれぞれで色が変わらない使い方ができるように、ブースのみ、「白い光」が導入されました。将来どうするかは悩みどころなのですが、アプデは常に歴史との対話なのです。Don't think, Feel.

新顔の紫色の「ヴァンパイア城の光」もよろしく!

【7】地面に埋まっていた壁紙を、地表の高さまで引き上げました

REALITYは過去、コーデに床カテゴリが存在しておらず、後から追加されました。そのため、床がない時代に作成された壁紙は、見た目バランスがよくなるように調整された結果地面に埋まっており、その後に作られた壁紙も地面に埋まったりそうでなかったりしていました。

アルコーブでは、「既存の壁紙はそのまま使えるようにする」かつ「壁にかける家具を使えるようにする」方針に決めましたが、壁紙の配置座標が揃っていないことにより、さまざまな問題が発生しました。
改めて過去の壁紙の座標を全部見直し、地面に埋まっていた壁紙は地表の高さまで引き上げるなどの対応を行いました。

修正前の地面に埋まっていた壁紙の例

ちょっと見た目が変わってしまうケースはあるのですが、床と一緒に使うと一部隠れてしまっていたイラスト壁紙がちゃんと表示されるようになったなど、全体的にはよくなったのでは、という認識でいます。

さいごに

今回紹介した課題は一部ですが、アルコーブは非常に影響範囲の大きな開発だったため、これ以外にもたくさんの課題を捌き、やむを得ず仕様変更も結構挟んだりして、やっとこさリリースとしては一区切りつくところまで来れました。

しかし、技術的にも仕様的にも、整理の必要な課題は多く残っています。

  • イスに座っていると、透明テーブルへのギフトのスポーン座標は上すぎることがある。

  • 家具のさまざまなサイズ・座る箇所のバリエーションにより、アバターがカメラ範囲に収まりきらないケースが頻繁にある。

  • ブースとルームはどう使い分けるのがよいのか、分かりづらい。エモートUIと、家具の直接タップで操作方法が枝分かれしてしまっているのも、初心者に優しくない。

  • コラボゲストの座標をカスタマイズするのに、いい感じの位置にイスなどの家具を配置するのは、まだまだめんどくさい。

  • 改めて考えるに、コーデの壁紙と床紙は家具でしかないのだから、クローゼットではなく、家具インベントリにもっていくのが望ましい。

大きな機能をリリースすると、考えるべきことがいっぱい増えます。サービス開発ってそういうものですよね。

とは言うものの、この開発はほんとうに疲れたので、ロマサガ2とドラクエ3を待ちつつ、しばらくゆっくり休みたいと思います。

…え?GREE Tech Conference 2024REALITY CON 2024 in Tokyoもう今月って本当ですか?