読者です 読者をやめる 読者になる 読者になる

VNCTST games 開発日誌

ゲーム開発日誌

スクリーンショット付きtweet機能の実現方法

スクリーンショット付きtweet機能の実現方法について検討した。

これまでの話

  • 自作ゲームの結果をtweet機能に、そのゲームのスクリーンショットを追加したい。

  • 現在tweetに使っているwebclientのフォームには「画像を添付する」機能が全くなく、テキストのみしかtweetできない。これをどうにかしたい。

検討結果

以下の選択肢がある。

  1. スクリーンショット付きにするのは諦め、テキストのみとする(現状維持)
    • これが現在の状態なので、この状態と比較してより良くなるか/悪くなるか、で判断する必要がある。
  2. 普通にtwitterアプリとして登録し、twitter api経由でtweetできるようにする
    • これが正攻法なのだが、ゲームを遊んでtweetしようとした時に「このアプリを許可しますか?」とか出て許可するのは煩雑であり、これを見たユーザは「よく分からないからtweetはやめとこう」「なんかめんどそうだからtweetはやめとこう」と思う。なので他の手法を考えたい。というのが今回の記事のスタート地点。
  3. IFTTT経由で登録する
    • 上記と同じく、アプリ許可が必要だった
  4. 自サーバに「スクリーンショットのアップロード機能」を追加し、tweet時にそのurlを含めるようにする
    • 以下の「容量の問題」さえなければ、これで問題なく機能する
    • 「アップロードしたスクリーンショット」は「一定期間後に削除する」訳にはいかない(削除してしまうとtweetから見れなくなってしまう)。よって、容量はひたすら増え続ける事となる。これを許容できるのであれば、これがベストだと考える
      • 何らかの、容量無制限のストレージが確保できればよいのだが…
  5. imgur等の外部サービスに保存し、tweet時にそのurlを含めるようにする
    • これも上記と同様に「一定期間後に削除」のあるサービスは選択できない事に注意
    • twitpicのようにサービス終了する危険性があるので、長期に渡って運用が継続しそうな外部サービスを選択する必要がある
  6. twitterに「自ゲームのスクリーンショット専用botアカウント」を作成し、そこに画像付きでtweetを行い、そのurlをプレイヤーのtweetに含める
    • これなら、画像はtwitter側に保存される事になり、容量の制約はなくなる。しかし画像を見ようとした場合に、プレイヤーのtweetから専用アカウントのtweetと一段はさまる事になり、ちょっと微妙。
    • 流量が多くなった場合に、tweet上限等に引っかかる可能性があるかもしれない

結論

  • どれも選び難い。
  • どうにかして容量無制限の外部ストレージを確保できれば、自サーバを選択できる
  • それが無理なら、諦める方向で

その他のメモ

  • スクリーンショットの取得タイミングとtweetの送信タイミングは一致しない(スクリーンショットはゲーム中に取得するが、tweetするのはゲームが終わってから)。なので、tweetする時までバッファとしてずっと保持しておく必要がある
  • スクリーンショットはサイズが大きくなりがちなので、圧縮率を絞ったjpgとして保存したいところ
  • 自サーバにアップロード機能を追加する場合、ゲームurlとアップロードurlのホストが一致していた方がよい。設置時には、アップロード部/表示部ともに、proxy的な機能/設定を行う事を検討すべき