はじめてのCocos2d-x

はじめまして、インターン生の宮本です。

私はCocos2dとC++を使いインターンをすることになりました。

初日は作業には入らないそうなので、Cocos2dについて紹介しようと思い調べました。

初めに、私はインターンに参加してCocos2dの簡単な説明を聞き「単体で使うものではない」「C言語・JavaScriptで使用できる」といったようなことから勝手にDXライブラリのようにファイルを解凍し少し操作するだけで使えるものを想像し、C言語はそれなりに経験があるから大丈夫だろうと勝手に思っていました。

ところで、C言語って派生言語多いですよねC++とかJavaとか。

Cocos2dを使用した開発で使われる言語はC++・JavaScript・Luaだそうです。

C言語じゃなくてC++です。

しかも、若干環境構築が面倒くさいようです。

私は、C++はDXライブラリを使用しちょっとしたゲームを作ったくらいしか経験がなく、他の二つの言語に至ってはほぼ皆無です。

Cocos2dについてわかったことをいくつかまとめてみます。

・使用する言語はC++・Lua・JavaScript

 C++はパッケージの容量が少なく、他2つはスクリプト言語であるためデバッグがしやすいようです。

・Unityのような感覚で操作できる CocosCreatorがある

 Unityとは違い検索しても使い方はあまり見つからず、公式からダウンロードできるサンプルを実行してみたほうがわかりやすいこともあるそう。

・CocosCreatorを使わない方法もあるが環境設定でインストールするものがやや多い

・フレームワークである

・2Dゲームに強い

などが印象に残りました。

特にフレームワークとライブラリの違いはなんだという疑問が出てきたので調べました。

最近では明確な境界線はないようですが、

・ライブラリは、”数学”や”入出力”などに多様な機能ごとに関数をまとめたもの

・フレームワークは、特定の機能を作る場合の設計

といった感じでしょうか。

参照:https://teratail.com/questions/107012

経験になりそうなため、とりあえずCreatorを使わないで頑張ります。右も左もわからないような状況からのスタートなので、どこまでできるかわかりませんが、簡単なゲームを作れるくらいまで身に着けることができたらと思っています。

興味を持たれた方はお気軽にお問い合わせください。

7日でゲームを作ろう!1

初めまして、インターンシップ生の松本(まつもと)と申します。

今回から、このインターンシップ中にUnreal Engine4を使ってゲームを制作していく過程を1日ごとの成果を含めて記事にしていこうと思います。

まずUnreal Engine4というものについて少し説明します。

Unreal Engine4というゲームエンジンでは、「ブループリント」という他のプログラミング言語とは違う方法でプログラミングしていく言語が搭載されています。その方法は言語を記述するのではなく、マウスを使い部品と部品をつなげるだけです。部品は「ノード」と呼ばれ、メイン画面から直接呼び出すことができます。Unreal Engine4の本体と融合していて、特殊なツールなど無しでそのまま動作させることができます。

現在のUnreal Engine4になる以前までは、C++を使った開発が基本でしたが、このブループリントが出たことにより、最近ではブループリントがUnreal Engineでの開発の主流になってきています。
引用元
https://www.tuyano.com/index2?id=10476003

次にこのUnreal Engine4を使ってどういったゲームを作っていくか、概要を説明します。

条件として、

・インターンシップ中に完成(7日間)

・「夏」というテーマに沿ったもの

というものがあります。

まず「夏」というテーマに沿ったゲームにできるものとして、

・ホラー系

・花火

・海でやる遊び(ビーチフラッグス、ビーチバレー、スイカ割りなど)

・かき氷作り

・祭り系

などといったものが思いつき、この中からスイカ割りのゲームを作ろうと思いました。

ゲームの大まかなルールは、

・ゲーム上のキャラクターは自動で動き、手にはスイカを割る用の棒を持たせる。(最初は左右どちらかへ斜めに動く)

・左右へ動きを修正させることができるものを置く

・目標であるスイカにたどり着き、割ったらクリア

・ステージの範囲を決め、左右でその範囲を超えたらゲームオーバー

私たちプレイヤーはスイカ割りでいう周りで指示してくれる人としてゲームをプレイします。

次にこのゲームを7日間で完成させるための計画を立てます。

1,キャラクターの設定(2日)

2,そのキャラクターの動きを修正するシステムの設定(3日)

3,ゲームオーバーになる範囲の設定と全体の確認(2日)

暫定的ではありますが、このような流れでできることを目標にやっていこうと思います。

また作業の進行速度によって、ゲームの概要や作業の計画が変わることがあると思いますので、その場合は記述します。

興味を持たれた方はお気軽にお問い合わせください。

C言語しか知らない大学生がCocos2d-xでゲーム作ってみたいpart10

皆様こんにちは。インターン生の百目鬼(どうめき)です。

動く作品はなんとか完成しました。
縦に揺れるドローンを左右に動かして桜の花びらを集めるゲーム、
名付けて「gathering_sakura_petals」ができました。

さて突然ですが、皆さんはPCにフリーゲームをダウンロードして遊ばれますでしょうか。
「洞窟物語」、「ゆめにっき」、「青鬼」、「elona」などなど、
様々な名作がインターネットにアップロードされていますよね。
で、それらの多くは、画像ファイルや音楽ファイル、
実際にゲームを起動するexeファイルなどがzip形式などで圧縮されている形でダウンロードしますよね。
 
このCocosCreator、もしかしたらそういう形で作ってくれるわけではないのかもしれません。

今回の製作物をCocosCreatorで製作している時、
シミュレーターで何度も起動して動作を確認しながら調整を行っていたのですが、
いざビルド、そののちコンパイル…とやっていき、なんとかコンパイルできたので、
作成されたファイルを開き、いざ起動しようとしても、
自分のPCではどうしても起動しなかったのです。

もしかしたら自分のPCがおかしいだけなのかもしれませんが、
さすがに自分で起動できないのは良くないと思い、
何がおかしいのだろうと色々調べてみました。

すると、先述したフリーゲームの配布形式のような、
「zip等でまとめて公開する」といった形で公開している方がひとりもいらっしゃらなかったのです。

最初の方で、私は簡単なものならゲーム製作をしたことがある、と言いましたが、
その時に使用したツールで作製したゲームはいずれもzip形式で圧縮・配布でき、
解凍ののちexeファイルを開けば実行することができたので、
「これもそうなのだろう」と勝手に思っていましたので、
「もしかしたらそういう形にはできないのかもしれない」というのは衝撃でした。

慣れない環境で慣れない道具を使い、
閃きと実戦、挫折と妥協を繰り返してひとつのモノの完成を目指す、
というのは経験したことがあまりなかったので、今回は貴重な機会でした。

結局は、CocosCreatorは自分のような初心者には難しいツールだった、
という結論を出さざるを得ないのですが、このような難しい経験も、
ひとつの宝としてこれからまたゲームの世界に没頭していきたいと思います。

興味を持たれた方はお気軽にお問い合わせください。

C言語しか知らない大学生がCocos2d-xでゲーム作ってみたいpart9

皆様こんにちは。インターン生の百目鬼(どうめき)です。

前回に引き続き、なぜビルドできないのか調査中です。
考えられる原因はいくつもあります。

・CocosCreatorのバージョンとチュートリアル用ゲームのバージョンが合っていない
・Android用ゲームをビルドするための各ファイルのバージョンが合っていない
・インストールするものを間違えている
・ファイルの対応方法が合っていない
etc…

ひとつひとつ原因と考えられるものを潰していっておりますが、
全く手ごたえがありません。
何が合っていて何が間違っているのかもわかりません。
私はこれを人の目に触れてもらうことはできるのでしょうか…

引き続き生暖かい目で見ていただけたら幸いです。

興味を持たれた方はお気軽にお問い合わせください。

C言語しか知らない大学生がCocos2d-xでゲーム作ってみたいpart8

皆様こんにちは。インターン生の百目鬼(どうめき)です。

まさかこんなところで詰まるとは思っていませんでした。

前回までで仕様を固め切ったので、
Androidもしくはiosで動作するかシミュレーターを使って動かし、
想定通りの動作をしてくれたので、
いよいよビルドを行おう、というところで詰まりました。
どうやってもビルドが行われないのです。
ビルドできなければ完成とは言えません。
せっかく作っているものを完成させないのは私としても避けたいところです。

引き続き生暖かい目で見ていただけたら幸いです。

興味を持たれた方はお気軽にお問い合わせください。

C言語しか知らない大学生がCocos2d-xでゲーム作ってみたいpart7

皆様こんにちは。インターン生の百目鬼(どうめき)です。

インターンの期間も残り少なくなってきました。
なんとか期間内には完成させたいところです。

チュートリアルで用意されていたゲームに手を加える形で色々やってきて、
多少なりとも仕様を理解できるようになってきているのが実感できて、
とても楽しくなってきています。
自分はC言語が専門でJavaScriptはあまりやってこなかったので、
他人より理解は遅いとは思いますが…。

それに、当然楽しいばかりではありません。
どうにも乗り越えられない障害もあります。

このゲームの主人公は勝手にピョンピョンとジャンプし続ける仕様になっていました。
しかし、前回主人公をカゴを上に乗せたドローンにすると決めたので、
上下にフワフワと揺れるように手を加えました。

その際に使用した技術を利用して、キャッチするアイテムも動くようにし、
ゆっくり落下させてその下にカゴ付きドローンを潜り込ませる形にしようとしました。
しかしこれがどうにもうまくいきません。
主人公の時と同じような処理にしているはずなのに、アイテムはその通りに動いてくれないのです。

残り日数も少ない以上どこかで諦めるのも肝心ですが、
あまり元の配布物に手を加えなさすぎるのも問題です。
どこまでできるかわかりませんが、もう少し粘ってどうにもならないと思ったら、
全く動かないアイテムを集めるゲームになると思います。

引き続き生暖かい目で見ていただけたら幸いです。

興味を持たれた方はお気軽にお問い合わせください。

C言語しか知らない大学生がCocos2d-xでゲーム作ってみたいpart6

皆様こんにちは。インターン生の百目鬼(どうめき)です。

CocosCreator、依然として勉強中です。
だいぶ仕様を理解できるようになってきました。
こういうものは長く携われば携わった分だけ身に付いてくるというのがよくわかります。

突然ですが皆さんは2D格闘ゲーム、
例えば「ストリートファイター」シリーズで遊んだことはありますでしょうか?
ああいったゲームではほぼ必ず、キャラクターの画像を左右反転させて右向きと左向きに対応させていますよね?
それこそ「ストリートファイターⅢ」シリーズのキャラクター「ギル」のような、
「右向きと左向きで違う画像が用意されている」キャラクターでもなければ、
一方向だけの画像を反転させる形で表現しているわけです。

このゲームも「左右にキャラクターを動かす」というゲームな以上、
そういった処理が必要になってくるのは当然と言えましょう。

しかし、このCocosCreator、なぜかそこは親切ではありませんでした、

モーリーのメモ:アクションの設定:Cocos2d-x v3.7(JavaScript)
(http://mmorley.hatenablog.com/entry/2015/09/29/110505)
Cocos Creator v2.1 User Manual
(https://docs.cocos2d-x.org/creator/2.1/manual/en/)

上記の記事及び解説をよく読むと、

画像の「回転」「拡大・縮小」「スキュー」「色調補正変更」を行う処理はあるのに、
「反転」を行う処理が見当たらないのです。

なので「異なる画像を用意し、方向を変えるたびに切り替える」といった形でそれをフォローしようとしました。
しかしこれもうまくいきませんでした。キャラクターに複数の画像を対応させる方法が見つかりませんでした。

しかしここで諦める私ではありません。
「反転できないなら、そもそも反転を必要としないキャラクターにすればいい」のです。
本当は人間の男の子を走り回らせたかったのですが、
上にザルを抱えたドローンを動かすことにしました。彼に色々集めてもらうことにします。

妥協に妥協を重ねつつ涙目になりながらの製作ですが、
引き続き生暖かい目で見ていただけたら幸いです。

興味を持たれた方はお気軽にお問い合わせください。

C言語しか知らない大学生がCocos2d-xでゲーム作ってみたいpart5

皆様こんにちは。インターン生の百目鬼(どうめき)です。

CocosCreator、依然として勉強中です。
公式サイトのアップローダーに現バージョンに合わせたチュートリアル用のサンプルゲームのコードを発見したので、
それに切り替えて何がどうなっているのかを再びチェックしているところです。
使用されている言語が英語と中国語だけだと翻訳などの手順を踏まないとすぐ理解できないのがやはり難点です。

ようやく音を出せるようになりました。効果音付きのゲームです。
ゲームには音が欠かせません。目に加えて耳でも楽しむことができれば最高ですからね。
自分には音源を作る能力は無いので、フリー素材を使う事にしています。
使用するキャラクターなどの画像もフリー素材なので、
こういう時フリーで音源や画像を用意して下さっている方々の存在は本当にありがたいです。

遅々として開発が進みませんが、焦っても知識は入っていかないので落ち着いて着実に進んでいこうと思います。

引き続き生暖かい目で見ていただけたら幸いです。

興味を持たれた方はお気軽にお問い合わせください。

C言語しか知らない大学生がCocos2d-xでゲーム作ってみたいpart4

皆様こんにちは。インターン生の百目鬼(どうめき)です。

CocosCreatorに絞り、開発を進めていこうとしているわけですが、
ここでまた問題発生です。

前回、こちらのサイト(https://qiita.com/hirodragon/items/aa73490b52ec4ca7f5ec)
を参考にチュートリアルで作成したものを、
手を加えて別のゲームにしてみようと色々書き加えている状況で、
具体的には横方向の移動時にボタンを離すと停止するようにしたり、
ジャンプを任意でできるようにしようとしているところです。
ですが、それがどうにもうまくいかないのです。
何かおかしいと思い、エラーメッセージから何が原因かを自分なりに推測し、色々調べてみました。すると、

「CocosCreatorではじめるゲーム制作」のサンプルゲームを 2.x系 で動かすための修正まとめ
(https://qiita.com/sugaret/items/1209b50440b0c0fbd658)

出てきたこちらの記事によると、バージョンアップによって削除され、使われなくなった記述・コードがいくつかあるようです。
しかし、自分の能力ではどの記述がどう変化しており、
どう改善すれば思うように動作するようになるのかを突き止めるには至りませんでした。

バージョンアップは頻繁に行われていることと、過去のバージョンの記述が書かれたサイトであることを
承知した上で参考にしていた以上は自分の責任に他なりませんが、
ソフトウェアのバージョンアップが頻繁であると、
壱から携わろうとする人間には、そこは厳しい環境であることだなあ、などと思ってしまいました。

作成するゲームのテーマは「春」と大雑把に決まってはいます。
もしこのまま「キャラクターを動かして何かを集めるゲーム」といった形になるのであれば、
月並みではありますが、「キャラクターを動かして桜の花びらを集めるゲーム」にしようと思っています。

引き続き生暖かい目で見ていただけたら幸いです。

興味を持たれた方はお気軽にお問い合わせください。

C言語しか知らない大学生がCocos2d-xでゲーム作ってみたいpart3

皆様こんにちは。インターン生の百目鬼(どうめき)です。

前回、前々回とインストール作業だけで終わってしまいました。
今回こそはしっかりインストール作業を終えてゲーム制作に着手!

しました!やっと!

CocosCreatorに絞ることにしました。
というわけでまず、公式から出題されているらしいチュートリアルで簡素なものを組みあげていくことにしました。

全編英語だったのですが、日本語に訳してくださっている方がいらっしゃいましたのでそちらを参考に進めてみました。

CocosCreator の公式チュートリアルを翻訳してみた
(https://qiita.com/hirodragon/items/aa73490b52ec4ca7f5ec)

ここで様々な基礎知識を学びました。
「ノード」という概念、画像の取り込み方、キーボードの入力との紐づけ方…
特に驚いたのが、このソフトウェア、
何かしら設定したい数値の中身を0でも何でもコードエディタで一度設定したら、
以降はCocosCreator側でサクっと変更できるようになっています。
例えばあるキャラクターをジャンプさせるとして、
ジャンプの高さを30、次のジャンプとの間隔を0.3と設定してコードを書いて読み込んでおけば、
CocosCreatorでボタンをポチポチすれば高さを50、間隔を0.7にすることが可能なわけです。
いちいちコードエディタで開き直して変更箇所見つけて書き換えて保存して読み込ませて…という手間がいりません。

そんなこんなでピョンピョンとモンスターが動き回って星を集めるゲームができました。

が、本番はこれからなわけです。
まだ自分のゲームを作ったわけではありません。
チュートリアルですからね。

まずどんなゲームにするかまだ決まってないのです。
一応、テーマを「春」にしてはどうか、という提案をある方からいただいたので、
春らしい何かにしてみようとは思っています。

引き続き生暖かい目で見ていただけたら幸いです。

興味を持たれた方はお気軽にお問い合わせください。