カテゴリー別アーカイブ: Heroes of the Storm

「勝ったら実力、負けたら運」についての考察

ゲームで負けると悔しい。  何度やっても負け続けると、そのゲームではもう遊ばなくなってしまうだろう。 長く楽しめる要件として「負けたときの理由を自分以外に転嫁できる」は大事な要素だと思う。

多対多のゲーム(MOBA)の場合

そういう見方をしたときに、多対多の MOBA は「勝ったら実力、負けたら味方のせい」が成り立ちやすいと思う。 Heroes of the Storm を例に上げると Warrior x 1, Assassin x 3, Support x 1 という構成だったときに、

「Warrior が 仕事してなかった」
「Assassin が突撃して死にすぎた」「Support の回復が悪かった」
「集団戦で 1人だけ集まるのが遅くて 4 vs 5 で負けた」
「私が揃う前に集団戦を始めて 4 vs 5 で負けた」

など、各々の立場で他人への批判ができる。 1 人で敵5人の集団に突撃するようなクソ Assassin にさえ「味方がついてこないのが悪い」という言い訳が可能になる。

その批判が適切なことも当然あるし、20 分くらいのゲームにおいては各人が少しずつ批判されうるプレイングになるのも確かだ。

1対1のゲームの場合

負けたときの理由は「相手が強かった」「自分が弱かった」というのが実際のところで、言い訳としては「ユニット、戦略の相性が悪かった」などになる。

負けたときにリプレイを見て「よし、ここが悪かったから次はこうしよう」と切磋琢磨できる人や、相手を出し抜いて勝ったときの楽しさが忘れられない人が遊んでいるように思う。

1人でやるゲームの場合

ソシャゲに多いパズルゲームなんかを想定して書く。 こういうゲームは基本的にはプレイヤーが勝てるように、あるいは敗北がない設計になっているように思う。 それは、負けたときの言い訳が「自分が下手だった」「必要なアイテム、ユニットを持っていないのに挑戦した」くらいしかできないからだ。

実際には、プレイヤーが勝てるステージを何度もプレイできるようになっており、プレイするうちにユニットのレベルが上がって次のステージがクリアできるようになる、という設計で、ゲームの寿命を伸ばしているように思う。

ただ、何度も同じステージをプレイしていると飽きてしまうので、そのあたりの調整はすごく大変だと思う。

まとめ

負けたときに「下手だから負けた」以外の言い訳ができると、ゲームとしての寿命は長くできると思う。 作りたいゲームを考えるときには、こういうのを意識していこうと思った。

負けたときに他人のせいにしてしまうのは、「自分が他人に親切にしたことは覚えてるけど、親切にされたことは忘れがち」という心理も絡んでいるのかもしれない。

 

Heroes of the Storm 反省会(12/30)

Heroes of the Storm をプレイして思ったことを適当に書きます。上手くなるためのトピックとかは、ないです。

1戦目

モード: Quck Match
マップ: Infernal Shrines味方: Sonya, Artanis, Tyrael, Nova, Raynor(私)
敵: Murky, Nova, Arthas, Raynor, Abathur

えっと、味方の Sonya, Artanis, Tyrael が3人チームで参加してたんですけど「なんで3人とも Warrior なんだよ!」ってツッコミたいです。 とてもツッコミたいです。 Warrior が弱いってことはないけど、Assassin よりは攻撃力が伸びにくい。

最初のレーン分け

hots_2015_1230_only_nova

違う、そうじゃねぇ!
チームメイトといちゃいちゃしたいのはわかるけど、「mid の Nova が 1人で寂しそうでしょ!」って思った。 そもそも Artanis はいつまで Core にいるのか。動いて、動いてよ! AFK なの? ってハラハラしてた。 でも、まぁ、ある意味楽しい。

だめだ。 もっと自分のプレイを反省しようと思ってブログを書き始めたのに、負けたゲームのリプレイは見ててつらい。w

味方の反省点を箇条書きで書き出して終わりにしよう。

  • Sonya … 「攻撃したら回復するからw」って思ってるかもしれないけど、体力が2割になったら下がってほしい。
  • Artanis … 味方より敵の数が多いときに攻撃し始めないでほしい。
  • Nova … 茂みの中で待ち続けるんじゃなくて、もっと攻撃してほしい。
  • Tyrael … 普通だった。 ありがとう。
  • Raynor … Object 取り合い中は、敵ヒーローへの攻撃を優先しよう。

まとめ

Warrior が活躍して前半は押してたけど、後半までに Abathur に Split Push で削られたり Nova に私がやられたり、人数が少ないのに集団戦を始めて負けたりしてずるずると負けたゲームだった。

負けました!

2戦目

味方に「お前アホだわ!」って煽られて嫌な気分でプレイしたゲームだった。というか、レーンにやってきた戦車+メディックに対してどう対処すればいいのかわからん。

負けた。
味方にののしられながらプレイするゲームは最悪だった。

Heroes of the Storm プレイ記録(10/9)

知人に説得されて Hero League をプレイ中。 今日も、負けたゲームのリプレイから「これは良くないかも」ってシーンを抜粋しました。

少ない体力で頑張るのは危ないかも!

HotS_2015_1009_2252_2
あ!
HotS_2015_1009_2252_1
あ!

命を粗末にするの、よくないなと思った。 死ぬと生き返るまでの時間が無駄になった上に拠点に戻ることになるので、最初から拠点に戻るようにしたい。

Heroes of the Storm のスクリーンショットのプレイヤー名をぼかすプログラム作成

ブログ記事を書くときに、スクリーンショットのプレイヤー名にボカシを入れる処理を、毎回やるのが面倒そうなので、そういうプログラムを作ってみました。

方針

引数でスクリーンショットの画像ファイルを渡すと、プレイヤー名の位置にボカシを入れた画像ファイルを生成することにします。

実装

OpenCV の matchTemplate() を使って、用意した体力フレーム画像とマッチングを行います。
具体的には、赤青それぞれのチームの以下のような画像をゲーム中の画像から切り抜いて用意しました。 jpg 画像から切り抜いたせいか、微妙に各チームの色味があるのがわかります。

blue_frame red_frame

ソースコードの処理概要は、引数で渡された画像を読み込み、枠のテンプレート画像とのマッチングを順番に行っていることくらいです。 難しくないです。

ソースコードへのリンク

動作例

hots_training_clipped hots_training_clipped.png.masked

このくらいの重なりぐらいなら、適切に処理できます。
(名前でない場所にボカシを入れたり、名前のある箇所を検出できなかったりすることもあります)

ソースコードの場所

下記アドレスで Mercurial 管理しています。
https://bitbucket.org/satofumi/hots_tools

今後の予定

もう少し自分で使ってから、Windows 版を作成して配布します。(使ってみたい方は、お知らせ下さい。大喜びでお渡しします)
あとは、このプログラムとは別ですが、ゲーム中の視線を記録してミニマップを見るよう矯正したり、脈拍を計測して自分にどういう影響があるかを可視化するプログラムも作っていきたいと思っています。

Heroes of the Storm プレイ記録(10/4)

Heroes of the Storm の Quick Match で負けたときのリプレイを元に悪かったシーンについてコメントしていこうと思います。 Hero League でない理由は、怖くて Hero League できないチキンだからです。

体力に見合った戦いをしよう編

hots_2015_1004_1744
同じレーンの味方が回復に戻っているとき。この数秒後にゲート外にでた Valla は死亡…

Valla さんへ
あなたの体力は少ない方なので、ゲートから外に出るときは体力が回復してからの方がいいと思いました。 あと、無理にゲートの外に出なくてもいいのよ?

集団行動をしよう編

hots_2015_1004_2010_01
Zagara さん、一人だけ残ってタワーを攻撃するのは危ないよ?
hots_2015_1004_2010_02
Zagara さん、一人だけで敵陣よりのキャンプを攻撃しに行くのは危ないよ?
hots_2015_1004_2010_03
Zagara さん、一人だけで相手の5人の Boss 狩りにちょっかい出すのは危ないよ?

序盤に2レベル差がつくくらい勝ってしまった結果、ナメプして集合しなくなって負けてしまうの悲しい。