2016-04-04 [長年日記]

Steam ホームストリーミングを試してみた

現状、テレビの横にPCを置いて、HDMIで直接接続してゲームをしているんだけど、チャンネル権がないときもゲームしたいよねということで、macをクライアントとしてSteamホームストリーミングを試してみた。と言っても、やることは同じネットワーク内でsteamを起動するだけ。アカウントが同じであれば通知が出て、起動/インストールのボタンがストリーミングになって、そのままプレイできるようになる。

無線(11a)で接続した場合は、帯域不足でモコモコした画になっていたんだけど、有線で接続すれば違和感のないレベルで表示され、操作感としてもFallout4をやった感じでは、普段使用していないキーボード+マウスでの操作ということを除けば*1ほとんど違和感のないレベルだった。

このクオリティなら、PCを別の場所に置きテレビではストリーミングでプレイというのがいいかもということで調査。Steamホームストリーミングは今回試したmac版とwindows、linuxのSteamクライアント、日本で未発売のSteam Linkに対応していて、この中では諸々考えるとlinux版が良さそうだけど、それでも10,000円は下らなさそう。h.264のデコードが必須要件ということで、Raspberry Pi 2はh.264のハードウェアデコードに対応していたよなあということで検索したところ、UbuntuのSteamクライアント以外の解として、ホームストリーミングとほぼ同じコンセプトのNvidiaのGameStreamの互換アプリMoonlightが各種プラットフォームに移植されていて、Raspberry Pi 2へも導入できるというのがわかった。

ということで、Raspberry Pi 2を早速アマゾンで注文したんだけど、そういえばこの間スマホに似たようなアプリ入れて放置していたよなあというのを思い出して見てみたら、これがMoonlightのAndroid版で、Nexus Playerにも対応していた。慌ててアマゾンの注文をキャンセルして、まずはNexus Playerでストリーミングを試してみることにした。以下続く。

*1 トラックパッドだと右クリックがなく、AIMができないのでスナイパーになれない

お名前 : コメント :


2016-04-05 [長年日記]

Nexus PlayerでSteamのゲームをプレイする

続き。リビングでPCゲームができるのはいいけど、案外ファンがうるさい!ということで、PC本体は別の場所において、ストリーミングでプレイしようという記録。

steamのストリーミングでのプレイには大きく2つの選択肢があって、

  • Steamクライアントでのストリーミング
  • NvidiaのGameStream

後者は配信側のPCにNvidiaの特定のグラフィックボードを搭載している必要がある。今回はNexus Playerでストリーミングを受けるので、NvidiaのGameStreamでのストリーミングを試してみた。配信側のPCではGeForceExperienceからNvidiaのアカウントでログインし、GameStreamを有効にする必要がある。NvidiaのアカウントはGoogleアカウントでのOauthによるログインにも対応しているのでそちらでアカウントを作成した。

Nexus Playerには以下のアプリをインストール。

起動すると、同じネットワーク内でGameStreamが有効なPCが表示される…、はずなんだけど出ない。IPアドレスを手動で入力すると、「ポートを開いてね」みたいなメッセージが出るのでファイヤーウォールが悪さしてるのかなーということで確認してみると試用版のMcafeeでファイヤーウォールが有効になっていたので、一時的に無効にしたところ、Moonlightで表示されるようになった。

あとはMoonlightで適当に設定してプレイするだけ。Xbox360のワイヤレスコントローラーもUSBのアダプターを接続すれば認識するので、PCとほぼ同じ感覚でプレイすることができる*1。設定は、解像度、フレームレートを1080p 60fpsにしたのと転送レートの目標値を30Mbpsに、5.1chを有効化したくらい。転送レートは、ここから下げると細かい文字の表示が少しだけモヤッとした感じになる。

macbookにSteamクライアントでストリーミングしたときはそもそも解像度が落ちているのであまり気にならなかったけど、同じ画面でストリーミングとネイティブの出力を見比べるとさすがに違いは分かる。最高の環境でプレイしたいということであれば直接接続がいいのは間違いないけど、PCがテレビと別の場所にあるけどテレビでも気軽にプレイしたいということであれば、いい選択肢だと思う。

*1 LEDが点滅するのがちょっとウザい

お名前 : コメント :


2016-04-11 [長年日記]

テレビ買った

最近テレビの動作がたまーにおかしくて*1、頻度は低いので気にはなるけど問題ないレベルなんだけど、そういえばテレビいつ買ったかなーと思って検索したら7年半経過していた。そろそろ買い替えを検討しはじめてもいいかなあということで、ちょっとサイズアップ、くらいのフワフワした感じでいろいろ見てみたんだけど、最近はフルHDのモデルは終息に向かっていて廉価版的なモデルしかないし、(再生するコンテンツはないけど)4Kも価格的にこなれてきた感じがあったので、最終的に先行きのあやしい東芝のRegzaか、Androidを採用して最初はだいぶ不安定だったらしいソニーのBRAVIAの二択に絞って、電気店に実機を見にいった。

BRAVIAはぱっと見で綺麗なんだけど同画面サイズ比で若干価格が高く、Nexus PlayerもあるのでAndroidTVである優位性はないかなあという印象。Regzaはそれほど派手な画面ではなく、調整すれば自宅で見る分にはこちらの方がいいかもという感じ。見に行った店舗ではRegzaはトランスフォーマー(4Kソースかは不明)を繰り返し再生していたんだけど、映像の動きが速いためかハイスペックモデルであるZ20Xで倍速液晶のフレーム補間が悪い方向に働いていて、かなり印象が悪かった。

ということで、Regzaの4KモデルのうちZ20Xは値段が突出して高いこともあって脱落、RegzaとしてはJ20X、G20Xが選択肢として残った。この2機種の差は主にタイムシフトに対応しているかどうかで、何故かタイムシフトに対応しているJ20Xの方が安くなっていたため、店員にきいたところJ20Xは先週辺りの生産完了を受けての価格で、在庫がなくなり次第終了とのこと。もう少し待てばG20Xも安くなるかもと思いつつ小一時間ほど悩んで結局55J20Xを購入することにした。

ぴったり

NIKON D7200 27mm F3.5 1/50sec. +0.0

翌日に配送されたので早速設置。壁掛けの作業はやってくれないので自分でやった。事前に測定した数値からのイメージとしても最近の狭額フレームでも55インチが限界のサイズだということは認識していたのだけど、予想以上にピッタリのサイズ感だった。以前はこんな感じ

Tags: 散財

*1 BSで一瞬黒画面になる

お名前 : コメント :


2016-04-13 [長年日記]

Javaで記述されているAndroidアプリをKotlinに置き換えてみた

そろそろJava面倒だよね…。ってなっていたので、Kotlinのバージョンが1.0.0になったときに試しに自作のアプリをKotlinに置き換えてみようと試行錯誤したのだけど、JavaとKotlinのコードが混在している状態ではAndroid Studioでのビルドが遅く、ストレスフルだったのでそのまま放置していた。Android Studio 2.0が正式にリリースされたタイミングで再度試してみたところ、混在状態でも現実的な時間でビルドしてくれるようになったので、再チャレンジしてみた。

基本的にはAndroid Studioのメニューから[Code]-[Convert Java File to Kotlin File]を選択し、 .javaのコードを.ktに変換、一部手動で修正して動作確認というのを繰り返した。元のコードでは、RetroLambda、RxJava、RxAndroidを導入していて、ラムダ式による記述があるのだけど、これは一旦無名関数による記述に直して*1から変換すると、かなりの精度でKotlinのコードを生成してくれる。

その他気になったのは、以下の点

  • Activityやカスタムビューを変換した場合は、再ビルドが必要
  • なにか変だなと思ったら再ビルドすると解決することが多い
  • パブリックなクラス変数はcompanion objectになるけど、Javaでの参照元は連動して修正されない
  • HogeClass.Companion.getXXXX()みたいな感じにする必要がある
  • Javaからの変換では、nullableな変数はとにかく!!演算子によるアクセスになるので、コードの意味を考えて?に置き換えたりする必要がある

Android Studioによるコード変換が優秀なので、それほど手間をかけずに変換はできた。コード量としては、行数換算で約15%減少、文字数でいえばもっと少なくなっていると思う。

$ git diff --shortstat master
 66 files changed, 2229 insertions(+), 2624 deletions(-)

今回は新規のコードを書いていないのでアレだけど、変換されたコードを眺めた感じではシンプルに記述できそうな気はするので、既存のコードの置き換えはコスト見合いとしても、新規のコードはKotlinで書いていくというのはありだと思う。

  • whenベンリ
  • if から書き換えるとすっきりするパターンがある
  • ?: や if文の戻り値など、ベンリ文法がいっぱい
Tags: android

*1 Android Studioの機能で自動変換できる

お名前 : コメント :


2016-04-18 [長年日記]

試しにNetflixに登録してみた

4Kテレビを買ったのはいいけれど、4Kで再生するコンテンツが存在しないので、TVに組み込まれているNetflixに登録して一ヶ月間のお試し視聴をすることにした。

登録自体はスマホからサクッと完了。家族間でアカウント共有するのをある程度見越してプロファイルを登録できるようになっていて、それぞれのプロファイル毎に視聴履歴の記録やリコメンデーションが行われるのは面白い。ただ、アカウント共有なので各プロファイルの視聴履歴のブロック等はできなさそう。

アカウントの登録が完了すると、スマホのNetflixアプリからchromecastの送り先としてNetflixが出てくる。のだけど、ここでもアカウントの設定が必要になる。Regzaのcast機能は、本家Chromecastとは異なりTVに内蔵されている対応アプリ(確認できているのはYoutudeとNetflix)が起動してコンテンツの再生を行うというもので、対応していないサービスではそもそもcastの送り先としてリストに出てこないという理由はまあなんとなく察せられるけど微妙な実装になっていて、アカウントはTV内のアプリでの管理になっているためだろう。

テレビでもアカウント設定を行えば、あとは適当にコンテンツを再生するだけ。試しにNetflix独占タイトルであるところのデアデビルを再生してみたけどたしかに綺麗。ただ暗い場面が多く映り込みがちょっと気になるかなあ(Netflix関係ない)。

Tags: Netflix

お名前 : コメント :