Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hack

Preview:

Citation preview

Virtua Fighter5 Final Showdown の

Twitter連動機能について 株式会社セガ 岩﨑剛

自己紹介

株式会社セガ

第二研究開発本部 開発2課

岩崎剛

Twitter: @twtrfk

開発の前段階

部内SNSの構築

2009年5月頃 岩﨑「VF5Rの新仕様にあるライバル設定ってTwitterっぽくすると面白いかもしれませんね」 企画「うーん」 岩﨑「ちょっと待ってて下さい」 3日後 岩﨑「AmitterってSNSを部内用に作ってみたんで試してみてください」

部内SNSの構築

参考:Amitter

「青天の霹靂」?「にわかに始動」?

2009年11月頃 何故か、初音ミク Project DIVA Arcade(DIVA-AC)とTwitterの連動の話が急に盛り上がる。

部内SNS用ライブラリの作成

2010年1月頃 Amitterに外部ゕクセス用APIを実装。 DIVA-ACにAmitter用のライブラリ(AmitterUtil)の作成。

AmitterのTLにDIVA-ACのプレイ結果が流れ始める。

部内テストを経て・・・

2010年3月頃 VF5 Final Showdown(VF5FS)の新規機能としてTwitterとの連動を改めて提案。

正式に始動

2010年4月頃 VF5FSでのTwitter連動が正式に動き出す。 AmitterUtilをVF5FSに移植。 Twitter4JとAmitterUtilをラップするクラスの作成。

システム概略図

ゲーム用サーバ

VF.NET用サーバ

バッチ用サーバ

VF5用データベース

データセンター

ツイート

XAuth/OAuth認証

個人設定等

ユーザTL

戦績等

ゲームセンター

大まかな処理の流れ

(1)ICカードを使ってプレイ

(2)VF.NETのアカウント作成

(3)VF.NETにICカードを紐付ける

(4)VF.NETとTwitterを紐付ける

(5)Twitter連動の設定を行う

(6)ICカードを使って筐体でプレイ

(7)プレイ結果からユーザTLを作成

プレイ結果(八段に昇格など)などがVF5DBに記録されます。 この時、Twitterと連携しているゕカウントの場合、ツイートすべき条件を満たしていればVF5DB内のUSER_TIME_LINE(以下、ユーザTL)と呼ばれるテーブルへユーザ毎にツイート内容を記録していきます。

(7)プレイ結果からユーザTLを作成 create table USER_TIME_LINE ( -- ユーザーID I_UID int not null, constraint fk_utl_1 foreign key (I_UID) references USER_INFO(I_UID) on delete cascade, -- データID -- 0〜19 DATA_ID smallint not null, -- プライマリキー設定 constraint pk_utl_1 primary key (I_UID, DATA_ID), -- ツイート内容 -- 140文字*2バイト(EUC) TWEET varchar(280) not null default '', -- 最終更新日時 UPDATE_TIME timestamp not null default '2001-01-01-00.00.00.000000' );

(8)バッチでツイートする

1分間隔で起動するバッチで(7)で生成したユーザTLの内容をツイートします。 バッチが最後にツイートした時刻より後に更新されたユーザTLを最大1000件分SELECTして、50個のスレッドに最大20件分づつ割り振ってパラレルでツイートしています。

この様な仕様になっている理由

ゲーム本編で実装するリスク

1. C++でTwitter連動の実験はしていなかった。 2. スケジュールがかなり短かった。 3. VF.NETとTwitterの紐付けはサーバ側で行うので、筐体

で実装しても工数はそんなに減らない。 4. 万が一、バグでプログラムが制御不能になるとどうにも

ならない。 5. もしも、セガ本体やTwitter社からクレームが来ても迅速

に対応できない。 6. バグ等で修正版を出すのに数週間単位で時間がかかる。 7. バグ以外の機能追加版は簡単には出せない。 8. ゕクセストークンを送信する事になる。 9. ゲームセンターからセガ管理外のサーバに直接通信した

タイトルが当時は(多分)無かった。

サーバ側で実装するメリット

1. 既にTwitter4J等を使う基礎実験は済んでいたので、すぐに作業に入れた。

2. VF.NET側の処理を作る段階で、一緒に作ればいいので作業に集中できる。

3. バグ修正が簡単に出来る。 4. 機能追加が簡単にできる。 5. ツイートする量がセガ側で確実にコントロールできる。 6. ゲーム筐体からセガ管理外のサーバに直接通信する場合

にセガ社内で必要な申請が回避できる。

バッチでツイートするメリット

1. 筐体用サーバの負荷をなるべく上げたくない。 2. 処理時間を長引かせたくない。 3. 負荷分散を可能にするため。

その他

1. テスト用のゕカウントは地道に用意するしかない。 2. 一部の携帯キャリゕからTwitterへ直接遷移させることは

NGとされた。 3. 当時は携帯電話だとOAuth認証ページが正常に表示でき

ない機種があった。 4. XAuthを使うのに申請が必要なのを知らなかった。 5. XAuthの申請が英語だった。

苦労した点

残念ながら未定。

今後の展開

ハッシュタグとか

ハッシュタグ #VF5FS 連動ツイートだけ検索する時には #VF5FS source:VF.NET バーチャフゔイター公式ゕカウント @vf_official

ご清聴ありがとうございました