Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SINoALICE -シノアリス- グローバル版、全139ヵ国リリースへの道のり
Search
gree_tech
PRO
September 18, 2020
Technology
0
440
SINoALICE -シノアリス- グローバル版、全139ヵ国リリースへの道のり
GREE Tech Conference 2020 で発表された資料です。
https://techcon.gree.jp/2020/session/Session-8
gree_tech
PRO
September 18, 2020
Tweet
Share
More Decks by gree_tech
See All by gree_tech
REALITY株式会社における開発生産性向上の取り組み: 失敗と成功から学んだこと
gree_tech
PRO
2
190
『ヘブンバーンズレッド』におけるフィールドギミックの裏側
gree_tech
PRO
2
150
セキュリティインシデント対応の体制・運用の試行錯誤 / greetechcon2024-session-a1
gree_tech
PRO
1
140
『アナザーエデン 時空を超える猫』国内海外同時運営実現への道のり ~別々で開発されたアプリを安定して同時リリースするまでの取り組み~
gree_tech
PRO
1
120
『アサルトリリィ Last Bullet』におけるクラウドストリーミング技術を用いたブラウザゲーム化の紹介
gree_tech
PRO
1
150
UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について
gree_tech
PRO
1
240
実機ビルドのエラーによる検証ブロッカーを0に!『ヘブンバーンズレッド』のスモークテスト自動化の取り組み
gree_tech
PRO
1
180
"ゲームQA業界の技術向上を目指す! 会社を超えた研究会の取り組み"
gree_tech
PRO
1
230
Jamstack でリニューアルするグリーグループのメディア
gree_tech
PRO
2
390
Other Decks in Technology
See All in Technology
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
180
生成AIのガバナンスの全体像と現実解
fnifni
1
180
なぜCodeceptJSを選んだか
goataka
0
160
.NET 9 のパフォーマンス改善
nenonaninu
0
690
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
380
MLOps の現場から
asei
6
630
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
520
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
260
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
150
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
260
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
24
11k
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.5k
Writing Fast Ruby
sferik
628
61k
Site-Speed That Sticks
csswizardry
2
190
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
Typedesign – Prime Four
hannesfritz
40
2.4k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Making Projects Easy
brettharned
116
5.9k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
The Language of Interfaces
destraynor
154
24k
What's in a price? How to price your products and services
michaelherold
243
12k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Transcript
SINoALICE -シノアリス- グローバル版 全139ヵ国リリースへの道のり 株式会社ポケラボ エンジニアマネージャー 覚張 泰幸
覚張 泰幸 (Yasuyuki Kakuhari) 『SINoALICE -シノアリス-』エンジニア統括として立ち上げから参画 現在は同タイトルのグローバル版のエンジニア統括を担当している • [2013年リリース] 戦乱のサムライキングダム
• [未リリース] 新規アクションRPG • [2017年リリース] SINoALICE -シノアリス- • [2020年リリース] SINoALICE -シノアリス- (グローバル版) 2013年 株式会社ポケラボ 入社 登壇者の紹介 2
https://pokelabo.co.jp/ 株式会社ポケラボの紹介 3
https://sinoalice.jp/ SINoALICE -シノアリス-の紹介 4 (c) 2017-2020 SQUARE ENIX CO., LTD.
All Rights Reserved.
https://sinoalice.global/ SINoALICE -シノアリス- (グローバル版)の紹介 5 (c) 2017-2020 SQUARE ENIX CO.,
LTD. All Rights Reserved.
GREE Tech Conferenceで初公開!! CEDEC等ではシノアリスの色々なグラフを中心に紹介して来たが、GREE Tech Conferenceでは実装事例, ノウハウを紹介 勿論コレらの内容はGREE Tech Conferenceでしか聞けない!!
全139ヵ国リリースへの道のり 6
グローバル版って何?? • localize周りの考慮も入っていなければ、ソースコード上に日本語がベタベタで入っ ている箇所も多数.. 開発時のシノアリスの予算ってx億円だった気が.. • 海外に展開出来る様なアーキテクチャを想定していない • 地球って77億人くらいいるんでしたっけ... (2020年調べ)
ポケラボ自社Pub海外、負け続けている歴史..!! • 海外パブリッシャーとの協業はナレッジがあるが、自社Pubは... そもそも.. 7
【サーバー (PHP) 編】 S-1. 前代未聞の139ヵ国, 7言語対応!! S-2. ワールド分割関連, レイテンシ関連 S-3.
localize処理 S-4. 負荷対策関連コードの移植 / 実装 全139ヵ国リリースへの道のり (Index) 8
【クライアント (Unity) 編】 C-1. クライアント側の対応 C-2. 全世界共通バイナリでの実現 C-3. localize処理 C-4.
負荷対策関連コードの移植 / 実装 全139ヵ国リリースへの道のり (Index) 9
【other (その他) 編】 O-1. 人周り O-2. シノアリス国内で踏み切れなかったコト O-3. プラットフォーム審査対応 O-4.
海外版ならではの不具合 全139ヵ国リリースへの道のり (Index) 10
Server 11 サーバー (PHP) 編
アイスランド アイルランド アゼルバイジャンアメリカ合衆国 アラブ首長国連邦 アルジェリア アルゼンチン アルバ アルバニア アルメニア アンゴラアンティグア・バーブーダ
イエメン イギリス イスラエル イタリア イラク イラン インド インドネシア ウガンダ ウクライナ ウズベキスタン ウルグアイ エクアドル エジプト エストニア エルサルバドル オーストラリア オーストリア オマーンオランダ オランダ領アンティル ガーナ カーボベルデ カザフスタン カナダ ガボン カメルーン カンボジア ギニアビサウ キプロスキューバ ギリシャ キルギス グアテマラ クウェート グルジア クロアチア ケイマン諸島 ケニア コートジボワールコスタリカ コロンビア ザンビア ジャマイカ シンガポール ジンバブエ スイス スウェーデン スーダンスペインスリランカ スロバキア スロベニア セネガル セルビアソロモン諸島 タークス・カイコス諸島 タイ タジキスタン タンザニア チェコ共和国 チュニジア チリ デンマーク ドイツ トーゴ ドミニカ共和国 トリニダード・トバゴ トルクメニスタン トルコ ナイジェリア ナミビア ニジェール ニュージーランド ネパール ノルウェー バーレーン ハイチ パキスタン パナマ バハマ パプアニューギニア バミューダ パラグアイ ハンガリー バングラデシュ フィジー フィリピン フィンランド ブラジルフランス ブルガリア ブルキナファソ ベナン ベネズエラ ベラルーシ ベリーズペルー ポーランド ボスニア・ヘルツェゴビナ ボツワナ ボリビアポルトガル ホンジュラス マケドニア マリ マルタ マレーシア ミャンマー メキシコ モーリシャス モザンビーク モルドバモロッコ ヨルダンラオス ラトビア リトアニア リヒテンシュタイン ルーマニア ルクセンブルグ ルワンダ レバノン ロシア 英領ヴァージン諸島 大韓民国 南アフリカ 英語 ドイツ語 スペイン語 フランス語 韓国語 タイ語 (日本語) S-1. 前代未聞の139ヵ国, 7言語対応!! 12
139ヵ国分の価格設定 • Appleはtierを指定するだけなので、まぁ国内他アプリと変わらず • Googleは価格テンプレートと言う機能がある物の、使い物にならない!! 価格テンプレートのエクスポート, インポート機能がない!! 商品から価格テンプレートに移行させる際、税抜き, 税込みで価格がずれる!! 為替から入力する機能もあるが、Appleと価格を揃えなければならない!!
S-1. 前代未聞の139ヵ国, 7言語対応!! 13
6言語分のゲーム訴求画像作成 • Googleはどんな画像を突っ込んでもよしなにリサイズしてくれる • Appleは厳密に画像サイズが定義されており、最低3サイズのスクショを用意しない とならない 1言語5枚 * 6言語 *
3サイズ = 90枚 のゲーム訴求画像.. S-1. 前代未聞の139ヵ国, 7言語対応!! 14 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
139ヵ国分の価格設定 • 事前に通貨とtierの対応表を全て作成し、個別インポートにて対応!! • パッと見一番遠回りな感じがあるが、一番近道 6言語分のゲーム訴求画像作成 ・UnityのEditor拡張を使いながら作成!! (GameViewの中身だけを保存) ・解像度の高いモニタが自宅にない為、MacBook Pro
16inchを90度回転して対 応..!! S-1. 前代未聞の139ヵ国, 7言語対応!! 15
利用規約, 法律問題 • 国によって細かい部分が異なる • 諸々出し分けられる様に改修 S-1. 前代未聞の139ヵ国, 7言語対応!! 16
2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
レイテンシを考慮し、2ワールドでの展開 • アジアパシフィック シンガポールリージョン (ap-southeast-1) • アメリカ / EU オハイオリージョン
(us-east-2) S-2. ワールド分割関連, レイテンシ関連 17 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
リリース前に各国の拠点から接続試験 • 本来ならば直接出向きたかった所だが、昨今のコロナ事情もあり外部の協力会社様 に依頼 現地の担当と綿密な連携を行い、動作を担保 S-2. ワールド分割関連, レイテンシ関連 18
綿密な連携 • 海外時間に合わせて接続確認を行う為、現地時間に合わせて徹 夜での対応 紅蓮魂 : i am pokelabo engineer
!! S-2. ワールド分割関連, レイテンシ関連 19 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
localize専用のMstを作成し、データを翻訳 • 全ての翻訳を司るMstを作成 tableName : テーブル名 tablecolumn : カラム名 JP
: 日本語 EN : 英語 KR : 韓国語 DE : ドイツ語 FR : フランス語 ES : スペイン語 TH : タイ語 S-3. localize処理 20
テーブル名 (tableName), カラム名 (TableColumn), JPを予め抽出, 入力し、翻訳 者に各言語の翻訳を依頼 JPが同じであっても、テーブル名, カラム名が異なる場合は個別に翻訳を行う tableNameは同一だが、tableColumnが異なるの
で別レコード S-3. localize処理 21
スクリプトで翻訳テーブルを作成 saffixに[_言語]を統一で入れ、tableを 作成 CardMst_EN SkillMst_KR CharacterMst_FR and more... S-3. localize処理
22
メリット: • 翻訳情報の一元管理が出来る 翻訳者が各々のMstを意識する必要がない • unique制約により、重複した翻訳を防ぐコトが出来る 用語の統一 • C-3. localize処理で詳細を後述するが、クライアント側の実装が楽
& パフォーマ ンス面で優位 クラアントはあくまでもビューワー 予め翻訳済みのデータでやり取りを行う為、余計なオーバーヘッドが発生しない S-3. localize処理 23
Ver29.2で対応出来ていない負荷対策コードを移植 • 2年分の負荷対策コードをガンガン入れ込み シノアリス国内は3月時点でVer59.0の開発中であり、差分が大量にあった 元々同じソースコードなので、ガンガン入れ込み • リリース後に手を入れられなかった部分を修正 シノアリス海外はリリース前なので、ずっと手を入れたいと思っていたコードの修正が 容易
シノアリス国内でボトルネックとなっている部分を改修 S-4. 負荷対策関連コードの移植 / 実装 24
負荷試験 シノアリス国内リリース規模 (100万DAU) を凌ぐべく、現状の負荷から目標値を定 義 internal 目標RPS : 22,569 external
目標PRS : 31,801 シノアリス国内の実績があるので、より良い数値が出れば担保出来る!! S-4. 負荷対策関連コードの移植 / 実装 25
シノアリス国内でボトルネックになっており、今回対応を入れた箇所の一例 • sharding対応 キャラクターデータ • 非正規化 データが取り難い箇所の非正規化 S-4. 負荷対策関連コードの移植 /
実装 26
シノアリス国内とのグラフ差 S-4. 負荷対策関連コードの移植 / 実装 27 2020/06/25 シノアリス国内ニーアコラボ復刻時 sys_load (RDS)
シノアリス国内とのグラフ差 S-4. 負荷対策関連コードの移植 / 実装 28 2020/07/16 シノアリス海外ニーアコラボ時 sys_load (RDS)
Client 29 クライアント (Unity) 編
クライアント埋め込み文字 埋め込まれた場所の抽出 & 管理番号の付与 & Best Fitを入れる作業 C-1. クライアント側の対応 30
2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
139ヵ国同時パブリッシュ 日本, 繁体字, 簡体字を除く共通バイナリを実現 故にシノアリスに関しては全4つのバイナリが存在 ※簡体字未リリース (2020-09現在) C-2. 全世界共通バイナリでの実現 31
大まかな対応項目 (他にもあるけど) • 国毎の個別対応 GDPR対応, GRAC対応, PEGI対応, 倫理対応.. • 言語
(画像, 翻訳) 日本語が含まれる全ての表示項目が該当 • 時間 地域時間での表示に対応!! (一律UTC+0, UTC+0900にせず) C-2. 全世界共通バイナリでの実現 32
サーバー側で翻訳処理を行っている為、驚 異の作業なし!! ※正確にはTextFieldに対し、翻訳文字列の長さ 調整 (タイ語長い!!) 等の作業は発生するが、基本 的に何もしなくても動く ※Unity側はあくまでもマスタから読み込んで表示 のみを行っており、言語の違いを意識しない S-3.
localize処理で紹介したマスタデータを伴う翻訳 C-3. localize処理 33 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
各TextFieldに対し管理番号を割り当て、 Object生成時に翻訳を行う ※UnityTextMst的なマスター情報をサーバーから DLし、それを元に翻訳を実施 ※ゲーム内で利用するMstと同じ属性を持たせてい る為、変更があった時のみDLを行う & 変更に強い (後述) ※C#のDictionary型に詰め込み、onMemory
から読み込む Unity側だけで利用する固定文字列による翻訳 C-3. localize処理 34 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
言語の選択 ≒ 言語Mstの選択 と言う概念。 DLする言語Mstの切り替え C-3. localize処理 35 2017-2020 Pokelabo
Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
全てMst DLする言語Mstの切り替え C-3. localize処理 36 2017-2020 Pokelabo Inc./SQUARE ENIX CO.,
LTD. All Rights Reserved.
クライアント側で時間の判定を誤ってしま い、修正する為にはクライアント側のアップ デートが必要... 謎の時間表記でユーザー様は大混乱.. ※時間のコンバート処理が漏れ、JSTで表記されてし まっている状態 ※通常は端末のロケーションに沿った現地時間が表 示される実装 変更に強い C-3.
localize処理 37 2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
(UTC+9) を表記するコトで回避..!! ※全ての文字列はUnity外で管理されているので、 バイナリ変更なしで差し替えが可能 ※当然ですが、後日端末のロケーションに沿った現地 時間が表示される様に修正 変更に強い C-3. localize処理 38
2017-2020 Pokelabo Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
シノアリス国内で実装した チューニングコードを移植 移植 C-4. 負荷対策関連コードの移植 / 実装 39 2017-2020 Pokelabo
Inc./SQUARE ENIX CO., LTD. All Rights Reserved.
Other 40 other (その他) 編
O-1. 人周り 41 とは言えシノアリス国内最優先!! 今やグリーグループの旗艦タイトルであるシノアリス国内の運営に支障が出てはなら ない シノアリス国内からの人員異動は僅か3名!! ナレッジの共有体制 スケジュールがタイトかつ人員が限られている案件であった為、メンバー全てが同じ 粒度で物事を話せる状態を構築
(特にクライアント側) プランナーにもJenkins経由での作業移譲を積極的に行い、協力体制を構築
O-2. シノアリス国内で踏み切れなかったコト 42 長年直せなかったtypo修正 quest (モノガタリに関連するテーブル) がqeustになっているとても気持ち悪い問 題の修正 シノアリス国内は今もqeustでガンバってます..!! 念願の.NETのupdate
シノアリス国内は運用中と言うコトも有り.NET 3.5を利用し続けているが、今回新規 タイトルなので、.NET4.xを採用 脱Legacy..!!
O-3. プラットフォーム審査対応 43 審査対応 Androidフィーチャー獲得の為、完璧な翻訳 & 完璧な動作を早々に求められる (c) 2017-2020 SQUARE
ENIX CO., LTD. All Rights Reserved.
O-4. 海外版ならではの不具合 44 あるあるな不具合 外国語読めない問題が引き起こす翻訳ミス 2017-2020 Pokelabo Inc./SQUARE ENIX CO.,
LTD. All Rights Reserved.
海外展開を全く考慮していない状態からでも、何とかなる • 当たり前の発想を少し変えるだけで、意外と何とかなったりする • 「出来ない理由を考える」より「出来る方法を考える」方が、楽しいし何とかなる localizeの手法は様々なので、localizeを諦めている会社さんもノリと勢いで一回検討し てみてはどうだろうか?? • 海外に日本のGameを発信しよう!! •
相談乗りますよ^ー^ まとめ 45
Happy Hacking !! 46
47