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

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

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

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

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

 

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はこちらからどうぞ。

UE4ぷちコン 進捗報告(1)One Minite Shooter紹介

現在開発中のゲームの動画を公開しました。

まずは動画をどうぞ。

BGMは魔王魂さんを使用させて頂いています。

 

このゲームは株式会社ヒストリアさんで行われている第8回UE4ぷちコンの応募作品です。

今回のテーマは「60秒」。

詳しくはこちらをどうぞ。

 

自分はUE4ぷちコンには初参加です。

1回目から知ってはいましたが、応募したことは無かったです。

今回はやってみようかなと思ってゲームを作ってます。

いや実際は結構面白そうなゲーム案が思いついたので作ってるって感じです。

冗談っぽく書いていますが、マジで60秒くらいで原案が思いつきました。

いや、60秒以内に思いつきました。

それをほぼそのままゲームとして作ったのが公開したゲームです。

 

今回の開発ではいろいろと試しながらやっています。

Twitterで進捗報告をメッチャしているのも試していることの一つです。

いろんな意見をもらっていい案があれば採用しています。

コンボシステムはTwitterで意見もらって採用しました。

今回作ってるゲームの開発記録用ツイートをまとめましたので、開発の進捗報告についてはこちらからどうぞ。

まだ応募期間まで時間がありますので、まだ改良していきます。

応募よりも前に公開とかできないかなと考え中。

いろんな意見をもらって作っていくっていう開発スタイルも面白そうだと思っています。

まだまだ頑張ります。