ゲームプログラマー暇人日記

プロのゲームプログラマーが技術的な事から、そうじゃないことまで書いていきたいと思います。

ゲーム紹介(6)『ゼルダの伝説 ブレス オブ ザ ワイルド』

ゲーム紹介第6弾。

まずはPVをどうぞ。

 

このゲームをクリアしてから、いつかブログで書かなければいけないと思っていたゲームです。

2017年で間違いなく1番面白かった。

いや、今までプレイした数百本のゲームの中でも1番面白かったと言っても過言ではない面白さでした。

ぜひプレイしていただきたい1本です!

 

知らない世界に行ってみるのってこんなに面白かったのか!

って再認識させられるゲームでした。

  • 目の前に崖がある。
  • 崖を登るのは大変そうだから、迂回する。
  • 迂回すると祠が見つかる。
  • 祠に近づいてみると、塔が見える。
  • 塔を登ってみると村が見える。
  • 村に着くと、村の上の方に滝がある。
  • 滝の方に行ってみると……。

という感じでもう、気になるところに行き続けてしまうゲームでした。

ホントにこのゲームの世界の中で歩いていました。

それが楽しすぎました。

例えるなら、旅行で知らないところに行って気になるところに向かって歩き続けてたら、気になったところに着いた時に絶対に面白いことが起こる感じです。

オープンワールド(オープンエアー)ってスゲェ、任天堂ってやっぱりスゲェと思わされました。

 

CEDECの公演であった『フィールド三角形の法則』をそのまま受けて、衝撃が走りました。

リンクを紹介しておきます。

クリエイターなら読むべきです。(できればクリア後に読むことをおすすめします。)

 

今作のゼルダでは、ほぼすべての壁を登る事ができるというのが特に衝撃的でした。

スタミナ切れで登れないということはあるのですが、基本的にどんな壁も登れます。

ゲームでよくある透明な壁を感じる事が無かったです。

透明な壁は『あー、やっぱりゲームだよなぁ』って認識させられるのですが、そういうゲームならではの仕方なかったルールがなくなったことによって、よりゼルダの世界に入り込めたのだと思います。

 

ゼルダは発売日に買っていたのですが発売された頃は別のゲームをプレイしていたため、ちょっと遅れてゴールデンウィーク頃にゼルダをプレイしました。

ゴールデンウィークは実家に帰っていたのですが、実家のリビングでずっとやってました。

1日10時間くらいやってたので、ほんとに実家に帰った意味あったのかな?って思うくらいです(笑)。

親はゲームに興味が無い方なのですが、ゼルダの画面を楽しそうに見ていて、祠の攻略では『こうやったらできるんじゃない?』とか言ってきました。

その時、『ゲームに興味がない人に興味を持たせるなんて凄い』と感じてしまいました。

そして、大阪に戻る電車の中で風景を見て、『あ、この崖はリンクなら登れそう』とか思ってしまっていました。

ほんとにゼルダの事ばかり考えている時期でした。

 

ゼルダの当たり前を見直す』

今作で言われていた言葉です。

そのため、過去作にあった瓶とかフックショットとか長いダンジョンとかなくなってますね。

素晴らしい判断です。

今までのゼルダも何本かやっていますが、長いダンジョンが長すぎてダレてしまった物があります。

時のオカリナとか、もう何年も積みゲー状態です。

今作は面白すぎて全く積む事なく一気にクリアしてしまいました。

面白さの本質は長いダンジョンをクリアすることではないと思わされました。

 

今作は敵の数が少ないです。

他にも減っているモノが色々あり、種類が少ないなと感じるところがありました。

が、ボリュームはものすごくあります。

これは数が減ったのではなく、最終的にできる事が増えた結果だと思います。

どういうことかというと、オブジェクトの種類としての数は減っているのですが、影響を与える相互関係が増えているということです。

  • 木を剣で攻撃すれば木が倒れ、それを足場にして渡れます。
  • 倒れた木を攻撃すれば薪が出来ます。
  • 薪の近くに火打ち石を置き、攻撃すれば火が付きます。
  • 薪に向かって炎の矢を撃っても火が付きます。
  • 火に向かってアクションを起こせば時間を進める事ができます。
  • 火の近くにリンゴを置けば焼きリンゴが出来ます。
  • 火の上には上昇気流が生まれていて、パラセールで上昇出来ます。

それぞれのオブジェクトは1つの役目を持っているのではなく、他のオブジェクトと組み合わせて使うことで色々な使い方ができる。

これがボリュームがものすごくあると感じている大きな理由です。

引き算はしたけど、残っているもので掛け算しているため、ボリュームとしては増えている。

そういう仕組みになっているからこそ、『こうしてみたらどうなるんだろう?』という疑問が産まれ、実際にやってみたら期待通りor期待以上の結果が返ってきた時に『面白い!だったらこれはどうなるんだろう?』という感情が産まれるのだと思います。

それが連鎖的に起こることで連続して面白さを感じ続ける事ができる。

すごいゲームです。

 

不満点はハッキリ言ってあります。

1番思ったのは操作がしにくいです。

XボタンでジャンプでBボタンでダッシュって、結構特殊だと思うんです。

他のゲームには無い操作性。

ボタン間違いで死んでしまう事も結構ありました。

不満です。

が、そんな不満を軽く上回る面白さと満足度でした。

そもそも自分が加点でゲームを考えていて、減点でゲームを考えないというのがあるかもしれません。

 

今回書いたのは自分が面白いと感じたところのごく一部であって、全てではありません。

というか、全ては書ききれないレベルです。 

オープンワールドのゲームの基準がこのゼルダになると、次のゲームはかなり厳しいなと思ってしまうレベルで面白かったです。

この面白さを越えるゲームはあと数年は出ないと思いますね。。。

このゲームを参考に、さらに面白いゲームが開発される(開発できる)事を祈っています。

紅白歌合戦の投票システムが気になる

年末『紅白歌合戦』を見ていました。

楽しく見ているのですが、毎年やってる紅組・白組の勝ち負けを決める投票システムが気になってしまって、ちょっと雑談っぽく書いています。

 

2016年の結果について

まずは前々回の結果です。

紅組が勝ちました。

投票システムはボールの数で勝敗でボールはそれぞれ下記の通りでした。

  • 特別審査員が1つずつ
  • 会場の観客投票で多かった方にボールが2つ追加
  • 視聴者審査で多かった方にボール2つ追加

結果は下記の通りです。

最悪の結果だと思うのですが、会場投票も視聴者投票も白組が買っていたのに、特別審査員が紅組に固めて入れたため紅組が勝ってしまってます。

もうね、一般視聴者の意見が一切入らない出来レースじゃねーかと。

こんな結果になるんなら特別審査員だけで優勝決めろよ。

って思ってました。

 

2017年の結果について

ここからは昨日あった紅白歌合戦の話なのですが、投票システム変わってました。

まぁ、そうでしょうね。

というか、2016年の結果になったのに投票システム変えないのはあり得ないだろうし。

2017年の投票システムですが、それぞれ下記の通りでした。

・特別審査員、会場の観客投票はすべてのアーティスト終了時に1票

・視聴者は紅白のアーティストが1戦1戦勝負になっていて、1戦終わるごと紅白の良かったた方に投票する

結果は下記の通りです。

約80万票差で白組が圧勝しています。

数えてみたら視聴者は22回も投票を行うタイミングがありました。

このルール、ほとんど視聴者の結果で決まるってことですよね?

視聴者の投票はどっちでも良いってことなので、白組を絶対に優勝させたい人はアーティストに関係なく22回白に入れるでしょう。 

それぞれの問題点

2016年だと特別審査員が圧倒的な力を持っていました。

2017年だと1人あたり視聴者 が特別審査員・会場の観客の22倍の票を持っています。

それぞれ、票の重みがちがいすぎるんですよね。

2017年の方法で投票を番組終了のタイミングだけにしたとした場合は票の重みは同じになります。

ただ、紅白って毎年同じ人が出ている事が多いじゃないですか。

ということは2017年の投票方法や完全に票の重みを同じにした場合は毎年のように白組が勝つことになりそうなんですよね。

解決方法

解決方法考えました。

勝ち負けつけるの止める。

もうそれでいいんじゃない?

この投票気にしている人あんまりいないと思うんですよね。

ダメ?

じゃあ、

みんな票の重みを同じにしてしまう。

この方法だとさっき書いたように毎年のように同じ組が勝ちそうですが、いいでしょ?

ダメ?

じゃあ、

たまに2016年の方法を入れて作為的にそれぞれの組が同じくらいの勝数になるように調整する。

この方法ですかね?

ダメ?

2017年プレイしたゲームまとめ

年末にインフルエンザにかかってしまいました。

まだまだ記事編集中ですが、毎年恒例にしているので投稿だけしておきます。

と言うか、元々書いていたところまでを投稿します。

 

1/4更新

まとめを更新しました。 

書き漏れていたタイトルも追加しました。

 

赤字がクリアまでプレイしたタイトル、黒字が途中までプレイしたタイトルです。

 

1月

罪と罰 宇宙の後継者

2月

ダンガンロンパV3

FINAL FANTASY XV

GRAVITY DAZE

3月

GRAVITY DAZE 2

4月

Horizon Zero Down

NieR:Automata

The Unfinished Swan

5月

ゼルダの伝説 ブレス オブ ザ ワイルド

キングダムハーツバースバイスリープファイナルミックス

6月

ヒューマンリソースマシン

ARMS

Farpoint 

7月

キングダム ハーツ ドリーム ドロップ ディスタンス HD

キングダム ハーツ キー バックカバー

キングダム ハーツ 0.2 バース バイ スリープ -フラグメンタリー パッセージ-

Splatoon 2

8月

ドラゴンクエストXI 過ぎ去りし時を求めて

大逆転裁判2

FINAL FANTASY VI

9月

アンチャーテッド 古代神の秘宝

10月

V!勇者のくせになまいきだR

グランツーリスモSport

スーパーマリオオデッセイ

11月

UNDERTALE

12月

ゼノブレイド

SUPER HOT

オーディンスフィア レイヴスラシル 

 

2017年ゲームベスト3

2017年でプレイしたゲームは28本、クリアしたゲームは24本でした。

毎年クリアゲーム本数25本を目標にプレイしているので、ほぼ目標通りのクリア本数ですね。

ちなみに2016年はプレイしたゲーム34本、クリアしたゲーム23本で、

2015年はプレイしたゲーム34本、クリアしたゲーム14本でした。

 

2017年最も面白かったゲームは『ゼルダの伝説 ブレス オブ ザ ワイルド』ですね。

今年どころか、今までで最も面白かったゲームと言っても過言ではないです。

圧倒的でした!最高でした!

 

 2位は『ドラゴンクエストXI 過ぎ去りし時を求めて』ですね。

JRPGの王道のドラクエ

やはりストーリーとゲームバランスが良かったです。

ドラクエシリーズは半分くらいクリアしていますが、今までプレイしたドラクエの中では1番好きですね。

あと、この物量なのに修正アップデートを全く行っていないのが凄い。

 

3位は『Farpoint』です。

ガンコンに対応したVRゲームです。

例えて言うなら遊園地のアトラクションが自宅でできるレベルの面白さです。

ガンコン使わないと楽しさは全く味わえないと思います。

発売当初はAmazonガンコンの在庫がなくなってて、手に入れるために実店舗まで行ったなー。

 

2017年も面白いゲームがたくさんありました。

 

2018年に期待しているゲーム 

来年は『モンスターハンターワールド』、『ドラゴンボール ファイターズ』に期待しています。

特に楽しみにしているゲームはモンスターハンターワールドです。

β版プレイしましたが、やはり面白いですね。

ドラゴンボール ファイターズはアニメがそのままゲームになったような感じでPV見た時に興奮しました。

いやー、凄いわ。

 

来年も楽しいゲームで遊べる事を期待しています。

ぷちコンで作ったPC用ゲームをAndroid対応してみる

 この記事はUnreal Engine 4 (UE4) Advent Calendar 2017の22日目の記事です。

今回はUE4ぷちコンで作成したPC用ゲーム『60 Seconds Shooting』をAndroidに移植する話です。

『60 Seconds Shooting』はこんなゲームです。

 PC版は無料ダウンロード出来ますので、詳しくはこちらを参照してください。

 

行ったAndroid対応ですが、下記の順番でやってます。

  1. Andoridで動かしてみる
  2. システムとして問題がある部分を修正する
  3. ゲームとして問題がある部分を修正する

 Androidで動かしてみる

もちろん、Andoridで動かないことには話になりません。

ということで、Androidで動かしてみます。

と言っても、昔UE4からAndroidのアプリを吐き出す対応を行っていたため、ここでの作業はあまりありませんでした。

Androidの開発環境が準備できていない場合は

Unreal Engine | Android クイックスタート

を参考にAndroidの開発環境を構築してください。

 

作業を始める前に一応、プロジェクトのバックアップを取って作業を取っておきます。

これは別に必要の無い作業でしたが、バックアップの安心感はありますよね。

 

プロジェクトの設定を変更します。

ハードウェアをモバイル/タブレットに変更する

グラフィックレベルをScalable 3Dまたは2Dに変更する

f:id:hima_zinn:20171215230151p:plain

ETC1フォーマットで出力します。

f:id:hima_zinn:20171215230203p:plain

これだけでAndroid用のアプリケーションファイルが出力されます。

とても簡単です。

マルチプラットフォーム開発環境万歳! 

 

次に出力したアプリをAndroid端末に入れます。

PCとAndroidを接続した後、AndroidがPCで認識されているか確認します。

コマンドプロンプトから

『adb devices』

で端末が認識されていることを確認します。

もし端末が認識されていない場合はドライバが入っていない可能性があります。

『端末の機種名 adb ドライバ』などで検索し、ドライバを入れてください。

adbがうまく動いていない場合は

adbの停止『adb kill-server』コマンドを行った後、

adbの起動『adb start-server』コマンドを行うとうまくいくことがあります。

その後は

Install_SixtySecondsShooting_Shipping-armv7-es2.bat

を実行するとAndroidスマホにアプリが入ります。

f:id:hima_zinn:20171215230223p:plain

あ、もちろんただ確認するだけならデバイスを選んで起動してもOKです。

f:id:hima_zinn:20171215232943p:plain

でも、最終的にはアプリとして出力しなければいけないので、先に正しく出力できるかは試しておくべきかと思います。

 

 システムとして問題がある部分を修正する

Andoridで動いたらゲームを遊んでみます。

しかし、『60 Seconds Shooting』の場合は即問題が発生してゲームが遊べませんでした。

タイトル画面からゲームを開始する方法を

キーボードのスペースキーを押すorコントローラーのStartボタンを押す

しか対応していませんでした。

そのため、タイトル画面から次の画面に行く方法がありません。

 

PCとAndroidで処理を変える必要があります。

プラットフォーム別に処理を変える方法ですが、

『Get Platform Name』ノードを使用します。

Get Platform Name | Unreal Engine

返り値はプラットフォーム名で

WindowsMacIOSAndroidPS4、XboxOne、HTML5Linux

が返ってきます。

IOSが大文字なので注意が必要です。

今だとSwitchとかも返ってきそうですね。

 

今回はGUIWidgetの部分で処理を変えています。

とりあえず、こんな感じです。

f:id:hima_zinn:20171215230238p:plain

PC版では文字を表示してキーボードorコントローラーのボタンでゲーム開始、

Andorid版ではボタンを表示して押したときにゲーム開始にしました。

それぞれ下記の見た目になります。

PC版

f:id:hima_zinn:20171215230303p:plain

 Android

f:id:hima_zinn:20171215231524p:plain

『60 Seconds Shooting』に関してはこの対応くらいで他にシステムとして問題があるところはありませんでした。

もし処理負荷が高い場合は処理負荷の軽減対応なども必要になります。

 

 ゲームとして問題がある部分を修正する

ここまでゲームとして動くようになったので、テストプレイを行いました。

調整を全く行っていない状態でのNexus 5での実機プレイ動画です。

これは難しい。。。

PC版でコントローラーで遊んだら慣れた人なら3分くらい遊べるように調整を行ったのですが、スマホでは操作性が悪すぎて19秒で死んでしまいました。

何回もプレイしたのですが、平均30秒くらいしか生き残れませんでした。

特にタッチパッドになったことによって指の部分が隠れてしまい、

指の下から来る敵に気付いた時には当たってしまいます。

PC版と同じ難易度にしてしまうとかなり難しいゲームになってしまうことがわかったので、Android用に調整することにしました。

 

敵の動きの速度を経過秒数に応じて変更することを試してみました。

敵の動きをゲーム開始時に今までの半分の速度にして3分経過時にPC版と同じ速度になるようにだんだんと早くするようにしてみました。

こちらが難易度調整後のNexus 5での実機プレイ動画です。

90秒ほど生き残れるようになりました。

まだ調整がかなり荒いところはありますが、これでゲームとして遊べる形になったかなと思います。

単純に敵の動きを遅くしたため、ステージ上に敵が想定よりも多く出てしまっています。

PC版と同じプレイ感になるようにするには、敵の出現数の調整もまだまだ必要そうです。

 

 最後に

このゲームは最初の企画段階からぷちコンに提出するためにPC版を作るだけではなく、あとでスマホ版対応を行う予定でした。

初めからなるべく移植しやすいように作っていたので、システムとして変えなければ行けない部分が少なくて助かりました。

PCとスマホの両対応するアプリを作る時はキーボードやコントローラーボタンのみの操作をなくしておいた方が簡単です。

また、処理負荷に関してはなるべく早めに考えておいた方が楽ですね。

ゲームとしての調整は実際にプレイしてみないとわからないところが多そうです。

マルチプラットフォームでの開発では操作性の違いから難易度が大きく変わってしまい事があるので注意が必要です。

このゲームはapkファイル化までは行ってゲームとしては作成できたので、時間があるときに残りの難易度調整を行って署名つけて公開しようと考え中です。

 

明日はじゅる (@xxJulexx)さんのUE4+Arduinoでいろいろとです。

UE4ぷちコン 進捗報告(4)『60 Seconds Shooting』提出完了しました

第8回ぷちコンに向けて作っていた『60 Seconds Shooting』の提出が完了しました。

やっと一区切りついたって感じです。

 

開発記録についてはtogetterでまとめています。

テーマ『60秒』でゲームを思いついたのはもう1ヶ月以上も前なんですね。

早いものです。

ゲーム制作を終えて思ったことは

『早めに動くところまで作ることは大切!』

です。

実は今、仕事がかなり忙しいです。(暇人じゃないです。)

今回、ゲームとして遊べるレベルに作るまでをかなり早く実装しました。

そのことによっていろいろと余裕ができ、調整や機能の入れ込みができたと思います。

 

落ち着いたら初期段階から考えていたスマホ移植についても考えようかなと思います。

ゲーム中の文字をなるべく英語にしたのも世界に向けてのスマホアプリとしてのリリースを考えて作っていたからなんですよね。

 

今回の開発では制作過程をTwitterやブログでオープンにして開発しました。

ぷちコンに興味はあるけど参加したことのない人や、ゲーム作りには興味あるけど作り方がわからない人の参考になればいいなと思います。

ゲームの難易度調整のノウハウやこだわった部分など他のゲームでも応用できそうな内容をオープンにしたつもりです。

誰かひとりでも自分の情報が役に立つことを祈っています。

UE4ぷちコン 進捗報告(3)『60 Seconds Shooting』操作方法・ダウンロード

第8回UE4ぷちコン応募作品

『60 Seconds Shooting』の紹介とダウンロードのページです。

f:id:hima_zinn:20170914004556p:plain

 

紹介動画

 

ダウンロードはこちらからどうぞ

 

【このゲームについて】

60秒間のみ移動できる宇宙船を操作し、できるだけ敵を倒すゲームです。

【起動方法】
ゲームを行うには
SixtySecondsShooting\WindowsNoEditor\SixtySecondsShooting.exe
を起動してください。

 
【操作方法】
ゲームパッド
左スティック …移動

右スティック …カメラ移動
Start    …リトライ
[キーワード・マウス]
WASD   …移動
方向キー …ショット

R    …リトライ
Esc   …ゲーム終了

 

【ルール】
Life Timeが移動可能時間です。初期値は60秒です。
移動を行っている間、Life Timeが減っていきます。
地面が赤色の場所はDAMAGE AREAで、宇宙船が止まっていてもLife Timeが減っていきます。
Life Timeが尽きる前にできるだけ敵を倒してスコアを稼いでください。
紹介動画も公開していますので、こちらもご覧ください。

 

【初めてプレイされる方へ】
Life Timeが減っていくのがもったいないと考えてなるべく動かないようにして、
そのまま敵にぶつかってゲームオーバーになる人が多いです。
敵にぶつかってゲームオーバーになっては元も子もありません。
もったいないと考えすぎないようにしましょう。

 

【ハイスコアを狙う方へ】
敵を倒してから1.5秒以内に次の敵を倒すとコンボになります。
コンボをつなげればつなげるほど獲得スコアが多くなります。
DAMAGE AREAの上を移動してもLife Timeの減りが早くなることはありません。
そのため、DAMAGE AREAの上を移動して青色のエリアまで戻るのはアリです。

 

【制作スタッフ】

暇人 @hima_zinn


【免責】
本ソフトを運用した結果について作者は一切責任を負えないのでご了承ください。

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


【BGM/SE】

BGM, SEは下記を使用させていただきました。

魔王魂
http://maoudamashii.jokersounds.com/

UE4ぷちコン 進捗報告(2)『60 Seconds Shooting (Ver0.3)』操作方法・ダウンロード

『60 Seconds Shooting (Ver0.3)』を公開しました。

 

ダウンロードはこちらからどうぞ。

バージョン1.0を公開したため、バージョン0.3の公開を停止しました。

バージョン1.0のDLはこちらからどうぞ。