決済つきの予約システムが3,940円〜/月

Developer PORTFOLIO

Chiba Ryohei
Email / ryohei0824c@icloud.com

Works

制作実績

  Apps  

Super Hockey
2人対戦のホッケーゲーム
小見出し
ここをクリックして表示したいテキストを入力してください。テキストは「右寄せ」「中央寄せ」「左寄せ」といった整列方向、「太字」「斜体」「下線」「取り消し線」、「文字サイズ」「文字色」「文字の背景色」など細かく編集することができます。

Super Hockeyについて
目次

  • ゲームの進行
  • 基本操作
  • ゲームモード
  • ゲームバランス
  • ボールを打ち出す角度、壁の反射角
  • 移動速度
  • スタミナ
  • CPUの挙動
  • 改善点
  • アプリ制作の動機
  • 苦労したこと
  • 次作りたいゲーム
  • ここをクリックして表示したいテキストを入力してください。

ゲームの進行

このゲームは二人のプレイヤーがボールを打ち合って、プレイヤーの後ろの青いバーに先に6回(デュースあり)当てると勝ちです。最初ボールは真ん中から打ち出されます。1ポイントごとに交互に1P、2Pに打ち出され、ボールの角度は毎回ランダムに変わります。

基本操作

このゲームは左右の画面長押しによりプレイヤーが左右に動きます。長押ししている間だけプレイヤーに力が加わり移動します。

プレイヤーに当たるボールの角度によって打ち返すボールの速度が変わります。

プレイヤーの真ん中の赤い部分(ホットスポット)に当たると早いボールが打てます。

最初の一球目はホットスポットはなく、一球目が打ち返された瞬間ホットスポットが出現します。

下の緑のバーは体力で、プレイヤーが移動すると体力が減ります。体力がほとんどなくなったら、プレイヤーの移動速度がとても遅くなります。

ゲームモード

1 vs 1
一つのスマホで二人対戦ができるモードです。

 

VS CPU
CPU対戦ができます。

 

Game speed
ゲームスピードはfast、middle,slowの三種類から選べます。ゲームスピードによってボールの速さとプレイヤーの速さが変わります。

ゲームバランス

ゲームバランス調整はテニスを参考に行いました。このゲームに想定しているテニスの要素は主に、ポジショニングと配球の駆け引きです。この駆け引きがうまくいくと勝てるゲームを作りました。ざっくり言うと、ポジショニングがある程度出来てラリーになり、余裕があるポジショニングが出来たら主導権を持って配球ができるゲームバランスにしました。

ボールを打ち出す角度、壁の反射角

ボールを打ち出す角度は真ん中から打てばどこにでも打てるように調整しました。壁の反射角はボールを隅に打たれた時に打ち返すボールが相手の真ん中に行くように調整しました。これによって相手コートに隅にボールを集めるという戦略を強い戦略の一つとし、テニスを始めとするネットスポーツとして理解のしやすい設計にしました。このようにプログラムを行った時にプレイヤーの角にボールが当たると想定よりかなり大きい反射角で打ち返してしまうバグが生じました。このバグはコート端に追い詰められた時の一つの解決策として機能していたので、このゲームを面白くする要素だと思い、そのまま残しました。

移動速度

このゲームはテニスを想定していて、プレイヤーは人に見立てています。人は加速減速に多少時間がかかり、逆方向にすぐには移動できません。

このような人の挙動に寄せるために移動に慣性をつけました。具体的にはプレイヤーを動かす時に位置を直接動かすのではなく、プレイヤーに力を加え動かすようにしました。車を掴んで移動させるのではなく、エンジンで動かすイメージです。スマホゲームは画面タッチで直感的に操作できることが画期的なので、ホッケーゲームなどはスワイプ操作で移動できるものばかりです。このゲームではプレイヤーの移動を人に見立てた挙動を優先し、スマホの利点が台無しになりますが長押しによる操作を採用しています。

移動速度は真ん中で静止状態の時にどこに打たれても返せるように調整しました。移動中、真ん中にいない時ならある程度の隙ができます。移動中や真ん中にいなくても自分や相手の体勢を考慮し、移動速度と位置を調整すると大体打ち返せます。逆に自分のすぐ隣にホットスポットで打たれたボールが来ると全く動けずに点を取られることもあります。

スタミナについて

スタミナはアップデートで実装しました。移動距離に応じてスタミナが減り、ほとんどスタミナがなくなったタイミングで移動速度が著しく遅くなります。

スタミナの実装はゲームスピードの高速化、状況判断の早期化を意図しています。スタミナの概念がない場合、膠着状態の時、例えば真ん中から端に打つ、もう片方は端から真ん中に打つとなった時どちらもリスクを犯して状況を変える必要がなく相手のミスや偶然による決着を待とうと感じた時、同じ状況が長く続くこととなります。スタミナが実装されることで、スタミナによって状況が悪い側が早くリスクを冒して状況を変えなければいけません。そのため、この例では端に追い詰められた側は移動距離が長くなるので、プレイヤーの角にボールを当てるなどでリスクを冒して状況を早く変えようとします。このことによりゲームスピードの高速化、状況判断の早期化を目指してスタミナを実装しました。

しかし移動速度はこのゲームにおいてとても重要な要素なので、スタミナによって安易に移動速度を変えてしまうと相手のスタミナを減らす戦略が強くなりすぎてしまい、ゲームが単純になってしまいます。そのため、スタミナがなくなった時だけ移動速度が遅くすることで、スタミナを意識しつつこのゲームの本質であるポジショニングと配球の駆け引きを楽しめるようにしました。

CPUの挙動

CPUの移動速度、ボールを打ち返す速度はプレイヤーと全く同じにしました。CPUの強さWeakでは少しCPUのスピードが遅くなっています。スタミナの仕様だけプレイヤーと同じではうまくいかなかったので、あまり覚えていないのですが少し変えた気がします。簡単に挙動を説明すると、プレイヤーにボールが当たった時ボールの速さと角度を取得し、CPUが打つ時のボールの位置を計算し、そこに移動して打ち返し、打ち返したら守備位置に戻るという流れです。CPUがボールを打つポイントは三つあり、CPUの真ん中と左右のポイントです。左右のポイントは真ん中からボールを打った時ちょうど相手コートの端にボールが行くポイントです。三つのポイントからランダムに選び、ボールが来るポイントに合わせています。守備位置はCPUが打ったボールによって三種類に分けられます。守備位置を真ん中のみに設定して打ったら真ん中に戻るようにプログラムすると真ん中に戻るのが間に合わない、ホットスポットのボールが返せないという問題がありました。そこでプレイヤーがボールを打つ位置によって三種類の守備位置を作り隙の少ない守備をできるようにしました。

改善点

私はこのゲームでポジショニングと配球の駆け引きをするゲームを実現できたと思いとても満足しています。ですが今考えるとゲームが難しすぎるという大きな問題があることがわかりました。ラリーを成立させるだけでも、適切な守備位置で相手の体勢を見てスムーズにプレイヤーを動かせるというたくさんの難しい要素を両立させることが要求されます。この判断は初めてこのゲームを触った人にできるはずがありません。これは新規にこのゲームを始める人の大きな障害になっていて、このせいで友達に勧めても難しすぎると遊んでくれません。ゲームスピードを変更は出来ますが、この状況判断のスピードを落とすことを意図しただけで要求レベルはそれほど変わっていません。ゲームを簡単にするために、もっとプレイヤースピードを早くしたものも用意しておいたらよかったかなと考えています。

アプリ制作の動機

子供の頃からゲームを作ろうとは思っていました。ゲームを作ろうと考えた時に作ろうと考えていたのはまた別のゲームです。それは「次作りたいゲーム」で詳しく説明します。しかし、私が作りたいゲームは特殊で作り方をググっても参考にできるものが全然出てきません。出てくるのはブロック崩しの作り方ばかりです。それならばブロック崩しから派生させてとりあえずゲームの作り方を学ぼうと思い、このゲームの制作をスタートさせました。対戦ゲームを作りたかったので、ブロック崩しから派生させるとホッケーのような形が良いと思い、なんかテニスみたいだなとゲームのコンセプトはトントン拍子で決めることが出来ました。

苦労したこと

苦労したことはプログラミング未経験なことと、周りに詳しい人が誰もいなかったことです。まず、Unityを見つけて開発環境を整えるために1ヶ月かかりました。プログラミングを初めてゲームを作り上げるのも一人で行ったので苦労しました。プレイヤーを動かすだけでも既存のプログラムをそのまま入れただけでは思うような挙動になりませんでした。Google上のプログラムはプレイヤーの位置を直接書き換えるというものばかりだったからです。そこでまずは実現したい挙動を細かく書き出し、プログラムに落とし込んで動かしてエラーが出たら何がだめかもう一度考え直してプログラムを書くという作業を繰り返して1ヶ月かけて一応のゲームが完成しました。そこからApp Storeにゲームをアップロードするためにまた1ヶ月ほどかかりました。合計3ヶ月GoogleとUnityとAppleに向き合いやっとアプリをリリース出来ました。とても苦労しましたが、ゲームができていく過程はとても楽しかったです。

次作りたいゲーム

私がゲーム制作をしようと思った構想段階のゲームで、どう作ればよいか分からず諦めたゲームです。名前はナンプレバトルです。ナンプレバトルは名前の通りナンプレをアレンジして二人対戦のゲームにしたものです。ゲームの進行としては、ナンプレのルールの元、数字が入ったボードを用意して、全ての数字を伏せます。そして二人のプレイヤーが一つずつ交互にマスを取り合って、そのマスの数字の合計点数を競うというものです。追加ルールとして自分の番の前の数字と同じ数字をとった時にもう一度マスを取れるというものを追加しても面白いかなと思います。このゲームの似たようなものとして、将棋、オセロが挙げられると思います。どちらも二人対戦で四角のマスのゲームで、戦略性がありとても面白いゲームかと思います。ナンプレバトルも同じように戦略性のある面白いゲームになると考えています。またオセロ、将棋との差別化要因としてナンプレバトルには運という要素が挙げられます。運が絡むゲームは麻雀やトランプゲームの大富豪があります。運要素の面白い要素は誰が勝つか分からないこと以外に、展開にバリエーションができるということです。存在しないゲームを例に出すのですが、ナンプレバトルでは自分が勝っている場面では安全に得点が取れるマスを取り、大きく負けている場面では得点の低いリスクがありながらも高得点を狙えるマスを取ることが考えられます。同じ盤面でも将棋やオセロと異なり、最適解は一つではないのです。二人対戦のボードゲームでありながら運要素も絡むこのゲームは新規性があり面白いと思います。またこのゲームはナンプレを元に作るのでルールを理解しやすく、操作もオセロ並みに簡単なので親しみやすいと考えています。

こんなに面白そうだと感じているのに作らないのは、作るのが難しすぎて作れなかったからです。まずナンプレの自動生成プログラムが作れません。自動生成したところで、数字を伏せてタップでその数字が取れるようにしなければいけません。気が向いたら作ろうかなと思います。誰か作って勝手にApp Storeにアップしていただいても構いません。

Profile

自己紹介
千葉 涼平 ーChiba Ryoheiー
Indie Game Creator

プログラミングは完全独学です。誰か教えて欲しいです。

Contact

ryohei0824c@icloud.com