読者です 読者をやめる 読者になる 読者になる

Kawaz広報ブログ

札幌ゲーム制作者コミュニティKawaz(http://www.kawaz.org)の広報ブログです

プログラム初心者がcocos2d-xを使ってゲームを作って分かったこと

f:id:kawazblog:20151006000749p:plain

ご挨拶

普段は作・編曲をメインに活動しているTetu_fsといいます。
7月手前あたりからC++、8月からcocos2d-xの勉強を始めました。

2か月ほど前に作り始めて先日リリースしたゲームについて
ブログを書いてみてほしい、という声をいくつかいただいたので
記事にしてみようと思った次第です。

もくじ

1.作ったゲームについて
2.作ろうと思ったきっかけ
3.実際にやったこと
4.まとめ

作ったゲームについて

f:id:kawazblog:20151114173038p:plain タイトルは「みるみらミニ」です。
わざわざ「ミニ」をつけているのには理由がありますが後述します。

プレイ動画等を用意しようかとも考えたのですが、
ボリューム軽めですので、
Windowsユーザーの方はぜひDLして遊んでいただければと思います。
http://www.freem.ne.jp/win/game/10482

このゲームはいわゆる「アクションパズル」で
移動とジャンプだけの簡単なアクションとともに
ブロックを反射して移動する「反射魔法」を使うことでゴールを目指す
全20ステージの比較的簡単なゲームになっています。
簡単ではありますが、試行錯誤して泥臭くクリアすることもできれば、
最適解を見つけ出すようなやりこみも可能です。

作ろうと思ったきっかけ

実はこのゲームは原作が存在します。
PlayStationMobile(PSM)というプラットフォームで公開されていた
みるみら-MiruMirror」というゲームです。

www.youtube.com

僕はみるみらのサウンドとディレクションを担当していました。

中心メンバーの他、知人友人の助けを借り
9か月の開発期間を経て昨年11月に発表しました。
発表してから比較的すぐ、PSM終了が決まり
惜しまれつつも9月、配信が終了。

初めて自身の企画で、多くの人の力を借りて完成させたゲームで、
ゲーム自体も面白いはずという自信も愛着あって
何とかまた日の目を見せられないかな、という思いがありました。

そんな中、仲良くさせていただいているプログラマー@giginetさんの
「cocos2d-xではじめるスマートフォンゲーム開発」に収録される
サンプルゲームのサウンドという形でお手伝いさせてもらった時に
1冊献本していただいた事を思い出し調べてみたところ
Windows向けにVisual C++でcocos2d-xを動作させられる事がわかったので
ではやってみよう、と思いプログラムの勉強を始めました。

最初はコンソールで1~100の数あてゲーム、オセロ
そしてcocos2d-xを使った簡単なシューティングゲームを作ったのち、
アクションかパズルを作りたい、という欲求と重なり
「みるみらミニ」へと取り掛かりました。

実際にやったこと

細かいことを書くときりがないのでざっくりと。
ドット絵をかきたくなっていたので同じ素材を用いた移植ではなく
「ディメイク」という形に決めました。

プログラム編

GitHubを利用したバージョン管理

f:id:kawazblog:20151114174415p:plain 簡単なシューティング時点で利用してはいましたが、
本格的に活用し始めたのはここからでした。
コミット失敗したり、
お世話になっているプログラマーの皆様からプルリクエストをもらったり
いろいろといい経験になりました。

Tiled Map Editorを利用したレベルデザイン

Tiled Map Editor
マップチップを配置するソフトをつかい、マップの作成・表示を行いました。
が、最終的にはタイルのIDのみを取得し自力で配置する方法に切り替えました。

理由としては一部のブロックのみがプレイヤーの行動により移動、という処理があり、
そのまま使うのは難しい、というアドバイスを受けこの方法をとることになりました。

物理エンジンを触る

最初はあたり判定から何から全部物理エンジンの機能を利用していました。
が、実装を進めるにつれ着地の判定タイミングがぶれたり、
接触判定等でゲームと合わない部分が多く見つかり、使用をほぼ断念
結果的にはジャンプと重力のみ利用しました。

グラフィック編

マップチップ、ループ背景、キャラクターアニメーション

f:id:kawazblog:20151114175057p:plain
16x16のドット絵を基本にし、主人公「ルクルク」のみ縦24pxで作成しました。
キャラクターのモーション切り替え等はシューティングでのコードを流用したり。

マップチップの主要ブロックや主人公は
可能な限り原作を忠実に再現する形でドットを打ちました。

使用したソフトは主にEDGESAIです。
ほとんどはEDGEで製作し、サイズが少し大きいものはSAIで描いたり、
Tiled Map Editorでタイルを並べ画像出力したりしました。

UI

f:id:kawazblog:20151114180737p:plain
f:id:kawazblog:20151114180712p:plain
とても難しかったです。
ここは経験がほぼなく、今回もうまくいったか、と言われると難しいところです。
今回は背景やタイルと重なったときに読みやすいように縁取りしてみました。
今後の課題の一つです。

サウンド編

f:id:kawazblog:20151114180224p:plain せっかくなので3和音1ノイズを守ってBGMやジングルを作り直しました。
効果音は反射魔法の効果音に関してはかなり気を使って作りました。
オリジナルの空気を残しつつレトロな感じに。

足音やジャンプの音をどうするか考えましたが、載せないことにしました。
今後もし反響がありアップデートする気持ちになったら載せるかもしれません。

レベルデザイン

f:id:kawazblog:20151114180555p:plain オリジナル版みるみらで印象的だったステージを意識したステージを作ってみたり、
PVで登場したけどリリース版では使われなかったステージをオマージュしたり。

あとはオリジナル版の難易度は高めに設定してあったので、
今回はプログラム初心者の自分に対しても、新たに触れるであろうプレイヤーに対して
敷居を下げるという意味で、ブロックが一定回数で壊れるという仕様をなくしたり、
ステージ自体も比較的遊びやすい難易度に抑えて製作しました。

まとめ

まったく進めず2週間近く停滞したり、
あまりにうまくいかず半泣きになりながら作っていたこともありましたが
プログラムを中心に、Kawazのプログラマー初心者でない方々に多く助けられました。
改めてありがとうございます。

プログラムに関して

簡単なことをやろうとするときには簡単な方法で実装が可能でも
ちょっと凝ったことをやろうとすると簡単・便利な方法だけでは実装するのは難しい。
結局のところすべてのゲームエンジンフレームワークでも同じだと思いますが、
こだわりが出てくると、細かく自力で実装するのが一番きれいで早いんだな。
ということを学びました。

完成してみて

ほぼ満足です。
オリジナル版みるみらに近い感覚で遊べるところまで何とか持ってこれたと思います。
今となっては入手手段がありませんが、もし、知り合いの中にPSVitaを持っていて、
さらにPSMの存在を知っており、
みるみらを購入していた!体験版を持っていた!という人がいたら
ぜひ一度オリジナル版も触ってみてください。

最後に

cocos2d-xを2か月半弱触って出した結論ですが、
スマートフォン向けではなく、PC向けに製作するという目的の場合
cocos2d-xを選択するのは間違っている。

以上です。