のえら

技術備忘とかメモとか.間違いはつっこんでいただきたい所存.アフィリエイトはやっていません.

【PS4版】Enter the Gungeon(エンター・ザ・ガンジョン)で協力プレイする方法

結論

コントローラーを認識させれば協力プレイができる。

以下は購入に至った経緯とか協力プレイ手順とかです。

ゲームと動画の話

ねんがんの にんてんどーすいっちを てにいれたぞ!

ということで、スマブラをプレイしたい欲がジョーカー参戦でさらに高まりニンテンドースイッチを購入しました。

スマブラ以外にも他になにかおもしろいゲームないかなーと同僚さんにオススメを聞いたらDeadCellsというローグライクゲームを教えてもらい、どんなゲームかと動画を検索したらYoutuberの2BRO.の弟者さんという方が実況されていたので視聴。ゲームの内容を確認するだけのはずが、プレイもトークも面白く、そこから2BRO.さんの動画をちょこちょこ見始めています。

なおDeadCellsはPS4版があったのでそっち買いました。トロフィー取れるほうが好きなんだ…。

横スクロールアクションローグライク面白いです。アクションがおそろしく下手なので全然進みません。

で、弟者さんの動画を色々と見ていたらEnter the Gungeon(エンター ザ ガンジョン)というゲームを知りました。

#1【アクション】弟者の「Enter the Gungeon(生放送)」【2BRO.】 youtu.be

こちらもローグライクで、見下ろし2Dシューティング型です。かわいい見た目の敵キャラが恐ろしい量の弾を撃ってきます、弾幕系好きな人はおすすめです。

トロフィー欲しいのでPS4版を購入…。

キャラクターかわいいし音楽かっこいいしアイテム組み合わせたくさんあるし弾避けるハラハラ感たまらないし、面白いです。ただ私はTPSもシューティングも苦手なので全然進みません(2回目)

協力プレイができる

弟者氏が動画内で「おついちさんと協力プレイしたんですけどね」と言っていたので、調べてみたらどうやらこのゲームではローカル限定だけど2人協力プレイ(Co-op)ができるとのこと。 (あとから、おついちTUBEチャンネルの方で生放送協力プレイをしていたのを知った)

協力プレイしたらちょっとは進むかなと思い、妹を誘ったらノリでやってくれることになったのでコントローラーを購入。ところがゲーム内で協力プレイが選択できない…。

公式サイトや攻略サイトを見ても、協力プレイができます、くらいしか書いておらず、手順が見当たらなかったので英語のブログを探したところヒントを得ました。

twinfinite.net

Plug your second controller in, and make sure both input devices are turned on, then walk over to the cool purple guy that’s standing to the right of the character select.

2台目のコントローラーを接続し、デバイスがオンになっていることを確認する。つまり、コントローラーを接続するだけではダメということでした…。

以下、実際に確認できたときの手順メモ。

1)2PのコントローラーをPS4に接続する

2)接続したコントローラーのPSボタンを押す

3)ユーザーを選択する画面が表示されるので、1Pが使用しているユーザー以外を選択する。 ユーザーがない場合は、新規作成するかゲストで入る。PSNアカウントは作成しなくてよい。

f:id:noterr0001:20190715170939j:plain

4)認識されると、エントランスの右下に紫色のキャラクター、イニシエートが登場するので話しかける。協力プレイをするか尋ねられるので『はい』を選択する。

f:id:noterr0001:20190715171240j:plain f:id:noterr0001:20190715171249j:plain f:id:noterr0001:20190715171458j:plain

これで2P側でCo-opキャラクターが操作できるようになります。 やめたいときはオプションメニューから『協力プレイ終了』を選択する。

f:id:noterr0001:20190715171508j:plain

あと、1Pでチュートリアルはしないと協力プレイが選択できない、かもしれない。すでに1回終わっている状態だったので未検証です。

2Pはイニシエートというキャラクター固定で、1Pが倒れると強くなるという性能。協力プレイ時は敵のHPが増えるらしいので、1Pがいなくなってからが本番かもしれない。

協力プレイはわちゃわちゃして楽しいので、ぜひプレイしてみてください。

「BUG! exception in phase 'semantic analysis' in source unit 」と出てしまったときの対応

  • IntelliJ IDEA 2018.1.5 (Ultimate Edition)
  • JRE: 1.8.0_152-release-1136-b39 x86_64
  • JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
  • macOS 10.13.5
  • Groovy 2.14.x

開発中に、アプリケーションを実行しようとしたりテストを実行しようとしたときに、以下のエラーが出てしまい何もできなくなることがしばしばある。

Error:Groovyc: While compiling tests of xxx_test: BUG! exception in phase 'semantic analysis' in source unit '/Users/user.name/IdeaProjects/projectName/xxx/src/test/groovy/jp/co/hoge/foo/controller/api/bar/HogeApiControllerSpec.groovy' sun.reflect.annotation.TypeNotPresentExceptionProxy
(中略)
Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
(中略)

他のブランチを取り込んだときに gradle の設定にズレが生じて発生する?ちゃんとした原因はよくわからない。。
自分の場合は gradle を再読み込みすると直るので、一旦編集して import gradle するか、メニュー>Build>Rebuild Project する。

Groovy で Scala の zip みたいなことやりたい

def ids = [1, 2, 3]
def names = ['Alice', 'Bella', 'Carol']

[ids, names].transpose()
=> [[1, Alice], [2, Bella], [3, Carol]]

ここからさらに加工したい場合は collect() 使うとかする。

[ids, names].transpose().collect { array ->
    [id: array[0], name: array[1]]
}

=> [[id:1, name:Alice], [id:2, name:Bella], [id:3, name:Carol]]

Gatlingを使ってみる セット編

負荷テストのツール Gatling を使ってみた。
セットアップにごにょごにょしてしまったのでメモライズ

2.1.x は Java のバージョン8でしか使えません、というお話。

公式サイトから本体をDLして、任意のディレクトリに展開する。

Gatling Load and Performance testing - Open-source load and performance testing

展開したディレクトリに移動して、テスト実行スクリプトを呼び出す。
と、バージョンによっては以下のエラーが表示される。

cd gatling-charts-highcharts-bundle-2.1.7
sh bin/gatling.sh

Java9(or 6)

GATLING_HOME is set to /Users/akirasan/work/gatling-charts-highcharts-bundle-2.1.7
intx ThreadPriorityPolicy=42 is outside the allowed range [ 0 ... 1 ]
Improperly specified VM option 'ThreadPriorityPolicy=42'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Java7

GATLING_HOME is set to /Users/akirasan/work/gatling-charts-highcharts-bundle-2.1.7
Exception in thread "main" java.lang.UnsupportedClassVersionError: io/gatling/app/Gatling : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

java8

起動するとどのシミュレータを実行するか尋ねられるので選択。
*デフォルトでサンプルが6つ入っているので試しに一番を実行

GATLING_HOME is set to /Users/akirasan/work/gatling-charts-highcharts-bundle-2.1.7
Choose a simulation number:
     [0] computerdatabase.BasicSimulation
     [1] computerdatabase.advanced.AdvancedSimulationStep01
     [2] computerdatabase.advanced.AdvancedSimulationStep02
     [3] computerdatabase.advanced.AdvancedSimulationStep03
     [4] computerdatabase.advanced.AdvancedSimulationStep04
     [5] computerdatabase.advanced.AdvancedSimulationStep05
1
Select simulation id (default is 'advancedsimulationstep01'). Accepted characters are a-z, A-Z, 0-9, - and _

Select run description (optional)

Simulation computerdatabase.advanced.AdvancedSimulationStep01 started...

================================================================================
2018-03-09 19:19:12                                           0s elapsed
---- Scenario Name -------------------------------------------------------------
[                                                                          ]  0%
          waiting: 1      / active: 0      / done:0
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=0      KO=0     )

================================================================================


================================================================================
2018-03-09 19:19:16                                           5s elapsed
---- Scenario Name -------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
          waiting: 0      / active: 1      / done:0
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=4      KO=0     )
> Home                                                     (OK=1      KO=0     )
> Home Redirect 1                                          (OK=1      KO=0     )
> Search                                                   (OK=1      KO=0     )
> Select                                                   (OK=1      KO=0     )
================================================================================


================================================================================
2018-03-09 19:19:22                                          10s elapsed
---- Scenario Name -------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
          waiting: 0      / active: 1      / done:0
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=8      KO=0     )
> Home                                                     (OK=2      KO=0     )
> Home Redirect 1                                          (OK=2      KO=0     )
> Search                                                   (OK=1      KO=0     )
> Select                                                   (OK=1      KO=0     )
> Page 1                                                   (OK=1      KO=0     )
> Page 2                                                   (OK=1      KO=0     )
================================================================================


================================================================================
2018-03-09 19:19:27                                          15s elapsed
---- Scenario Name -------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
          waiting: 0      / active: 1      / done:0
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=10     KO=0     )
> Home                                                     (OK=2      KO=0     )
> Home Redirect 1                                          (OK=2      KO=0     )
> Search                                                   (OK=1      KO=0     )
> Select                                                   (OK=1      KO=0     )
> Page 1                                                   (OK=1      KO=0     )
> Page 2                                                   (OK=1      KO=0     )
> Page 3                                                   (OK=1      KO=0     )
> Page 4                                                   (OK=1      KO=0     )
================================================================================


================================================================================
2018-03-09 19:19:31                                          19s elapsed
---- Scenario Name -------------------------------------------------------------
[##########################################################################]100%
          waiting: 0      / active: 0      / done:1
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=13     KO=0     )
> Home                                                     (OK=2      KO=0     )
> Home Redirect 1                                          (OK=2      KO=0     )
> Search                                                   (OK=1      KO=0     )
> Select                                                   (OK=1      KO=0     )
> Page 1                                                   (OK=1      KO=0     )
> Page 2                                                   (OK=1      KO=0     )
> Page 3                                                   (OK=1      KO=0     )
> Page 4                                                   (OK=1      KO=0     )
> Form                                                     (OK=1      KO=0     )
> Post                                                     (OK=1      KO=0     )
> Post Redirect 1                                          (OK=1      KO=0     )
================================================================================

Simulation finished
Parsing log file(s)...
Parsing log file(s) done
Generating reports...

================================================================================
---- Global Information --------------------------------------------------------
> request count                                         13 (OK=13     KO=0     )
> min response time                                    287 (OK=287    KO=-     )
> max response time                                   1121 (OK=1121   KO=-     )
> mean response time                                   452 (OK=452    KO=-     )
> std deviation                                        242 (OK=242    KO=-     )
> response time 50th percentile                        333 (OK=333    KO=-     )
> response time 75th percentile                        540 (OK=540    KO=-     )
> mean requests/sec                                  0.683 (OK=0.683  KO=-     )
---- Response Time Distribution ------------------------------------------------
> t < 800 ms                                            11 ( 85%)
> 800 ms < t < 1200 ms                                   2 ( 15%)
> t > 1200 ms                                            0 (  0%)
> failed                                                 0 (  0%)
================================================================================

Reports generated in 0s.
Please open the following file: results/advancedsimulationstep01-1520590751977/index.html

実行結果は results ディレクトリの配下に保存される。

open results/advancedsimulationstep01-1520590751977/index.html

WordPress で何かアクションがあった時に slack に通知したい

概要

WordPress で何らかのアクション(「投稿」を「公開」したとき、など)に Slack 内の任意のチャンネルに通知する手順。

手順

Slack で Incoming WebHooks URL を生成する

Slack に管理者権限でログインし Incoming WebHooks URL を発行する。

この時、通知先の指定が可能だが、プラグインの設定でも通知先を指定できる。

※この URL に対して POST すると slack に通知が飛ぶので、外部に漏れないよう注意すること( URL を再発行することも可能)

WordPress に Slack プラグインをインストールする

WordPress に管理者権限でログインし、メニュー>プラグイン>新規追加 から、キーワード「slack」で検索、「Rock The Slackbot」をインストールする。

インストール完了後、メニュー>プラグイン>インストール済みプラグイン から、Rock The Slackbot を有効化すると使用できるようになる。

補足:

Rock The Slackbot は git で公開されている。

github.com

プラグインの設定をする

  1. メニュー>ツール>Rock The Slackbot をクリック
  2. 画面中央の「Let's get this party started」をクリック
  3. 通知設定画面が表示されるので、以下の項目を適宜設定、Save Webhook をクリック

設定できる項目は以下の通り。
*ハイフンの部分は確認中

設定名 設定内容
Name of Webhook この通知設定の名前
Name of Slack Account -
Webhook URL Slackで発行した通知用URL
Send To Slack Channel(s) or Direct Message(s) 通知先をwebhookで指定したチャンネル以外に指定したい場合は入力(空白の場合、デフォルトのチャンネルに通知される)
Post Message As Which Slack Username -
Icon Emoji For Message -
Use Custom URL For Message Icon -
The WordPress Icon -
Exclude Post Types From Notifications 指定した投稿タイプを通知対象から除外する
When Slack Notifications Fail 通知が失敗した時に知らせるメールの送信先
Notification Events 何をした時に通知するかを設定する(以下の項目から選択)
Content
When a post is published 投稿が公開
When a post is unpublished 投稿が非公開
When a post is drafted 下書きを作成
When a post is pending review 投稿がレビュー待ち※レビュー待ち・・・権限「寄稿者」が記事を投稿したあと、公開に承認が必要な状態
When a post is scheduled 自動投稿(予約投稿)が作成
When a post's content is updated 投稿内容が更新
When a post is deleted 投稿が削除
When a post is trashed 投稿がゴミ箱へ移動
When a 404 error is thrown 404(Not found)エラーを検知
Comments
When a comment is added コメントを追加
When a comment is unapproved コメントを非承認
When a comment is approved コメントを承認
When a comment is marked as spam コメントがスパム判定された
When a comment is trashed コメントを削除(ゴミ箱)
Menus
When a menu item is deleted メニューアイテムを削除
Media
When media is added メディアを追加
When media is edited メディアを編集
When media is deleted メディアを削除
Users
When a user is added ユーザーを追加
When a user is deleted ユーザーを削除
When a user's role has changed ユーザーの権限を変更
Updates
When a WordPress core update is available WordPress 本体のアップデートが利用可能
When WordPress core is updated WordPress 本体がアップデートされた
When a plugin update is available プラグインのアップデートが利用可能
When a plugin is updated プラグインがアップデートされた
When a theme update is available テーマのアップデートが利用可能
When a theme is updated テーマがアップデートされた
Deactivate チェックすると、設定は残したまま、このwebhookを無効にする

その他

  • Slack に通知される情報の中には旧ステータスなどの内容も含まれるので、削除したい場合はプラグインPHP を直接いじる必要がありそう。
  • 通知のフックは複数登録ができるため、上記投稿通知とは別に、例えば「コメントが追加された」「テーマのアップデートが利用可能」という管理者向けのイベントをまとめて slack の任意のユーザへと通知することも可能。

チャレンジ失敗の原因と攻略「猫の品種を認識する Cat Rescue アプリケーションの構築」編 その2

プロジェクト「猫の品種を認識する Cat Rescue アプリケーションの構築」の単元「Einstein Vision Apex ラッパーのインストール」から。 

trailhead.salesforce.com

チャレンジ失敗メッセージは以下の通り。

Challenge Not yet complete... here's what's wrong: 
Could not authorise with Einstein Vision. Please validate your credentials.

まず、一つ前の単元「Einstein プラットフォームアカウントの作成 」にそって Einstein アカウントを作成・認証証明書を登録・ファイルをアップロードする。 ここでのチャレンジは成功しているので、手順はOKだと思う。

セクション「未管理パッケージをインストールする」で Trailhead の Playground に入れていることを確認済み。

ので、おそらく問題は次のセクション「Einstein 認証ユーザを設定する」にあるっぽい。

  1. [Setup (設定)] の [Home (ホーム)] タブから、[Quick Find (クイック検索)] ボックスに「Custom Settings」(カスタム設定) と入力し、[Custom Settings (カスタム設定)] を選択します。
  2. [Einstein AI Settings (Einstein AI 設定)] の横の [Manage (管理)] をクリックします。
  3. [Default Organizational Level Value (デフォルトの組織レベルの値)] の上の [New (新規)] をクリックします。
  4. [Einstein EMail (Einstein メール)] 項目に、Einstein プラットフォームアカウントにサンアップしたときに使用したメールアドレスを入力します。
  5. [Save (保存)] をクリックします。

4のメールアドレスには Playground のアカウントで Einstein のアカウントを作成したので、ユーザ名@playful-hoge-nnnnnn.com を入力していたが、組織で使用しているメールアドレスを入力したら解決。 メールアドレスを入れるべきところに Playground のユーザ名を入力していたことが原因でした。