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にすることが可能なわけです。
いちいちコードエディタで開き直して変更箇所見つけて書き換えて保存して読み込ませて…という手間がいりません。

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

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

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

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

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

初心者が征く!オリジナルゲーム作成道 day10


こんにちは!インターン生の内村です!

いよいよこの記事も今回が最後になります。
今回は前回からゲーム完成までを解説していきます。

以下の手順で行います。
①スコアの導入
②敵キャラクターの追加・スコアによる生成変更
③ステージ変更・ゲームクリア画面の導入

【解説】
①スコアの導入
以下のように行います。

まずはスコアを表示するラベルをレイヤに作成します。
文字列で「”Score:”」を指定することによって画面に表示されます。
フォント(ここではArial)や位置を調節してレイヤに加えて完成です。
(今後呼び出される変数_scoreLavelにラベルを代入するのを忘れずに!)

先ほどの変数を切り替える関数を作成します。(上記のラベルはゲーム開始時に表示されるものでこちらは1秒ごとに変化するスコアを反映するものです)
この関数では”Score:”の後に変数_scoreTimesで更新された値が表示されます。

次に変数_scoreTimesの値を変更する関数を作ります。
これは1秒ごとに値が1増える変数_score(ちなみにこの変数はvar game の親クラスで宣言して0で初期化しておいてください)と40をかけた数に変更されます。
(なぜ40をかけるかというと250秒でゲームクリアのため、この処理を行うと最終スコアが10000になるからです)

次に先ほどの変数_scoreの値(最初は初期化されているため0)が1ずつ増えていく関数を作成します。
これは特に難しい処理ではないため割愛します。

そしてscheduleで引数を1にして1秒ずつ呼び出します。
(更新するための関数はすべてupdataで呼び出してください。)

これでスコアが自動で更新され画面へ反映されるようになりました。

② 敵キャラクターの追加・スコアによる生成変更
以下のように行います。

敵キャラクターの挙動についてはこれまでの記事やこの画像を参考に各自で作成してください!

この処理は①で作成したスコアをもとに生成される敵の種類を変更しています。
if文でまとめて分岐するようになっています。
({}の中ではunscheduleを使ってscheduleによる自動生成を止めています)

③ステージ変更・ゲームクリア画面の導入
以下のように行います。

この2つについてはゲームオーバーの処理を流用しています。
ネクストステージは敵の生成が変化するたびに実行してプレイヤーに知らせているためリスタートなどは削っています。

実行処理の例はこんな感じです!

以上でこのシューティングゲーム作成に関しての記事は終了です。
至らぬところばかりですが最後までお付き合いいただきありがとうございました。
自分の未熟さによって実装できずに終わった要素が多く悔しい思いはありますが、1つのゲームを完成させた達成感を得ることができました!
今後もゲーム制作を続けていく中で今度こそ悔いが残らないゲーム制作を行えるように日々精進していきたいと思います!

このゲーム制作では下記のサイトを参考にさせて頂きました!誠にありがとうございました。
https://creive.me/archives/9788/ けいしゃけ 様
素材をいただいたサイト様
https://www.irasutoya.com/
https://www.ac-illust.com/

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

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

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

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

…したかったんですけどね。
今回もダメでした。

まず、導入の方法が千差万別すぎてどれが自分に合った方法なのかわかりません。
そもそもCocos2d-x自体がかなり頻繁にアップデートされているらしい上に、
色んな導入例を見てみると3年前の記事だったり、Windowsのバージョンが全然違ったりでメチャクチャです。

かろうじて自分の探していたCocos2d-x(js)のWindowsへの導入例が見つかったので参考にしてみました。
Windows で cocos2d-x 3.16 のインストール
(https://www.kunihikokaneko.com/dblab/toolchain/cocos2dx.html)

が、使わなければならないソフトウェア「VisualStudio」のバージョンが
自分が持っていたのとは別のものだったのでインストールしなきゃならなかったり、
さらに2つ3つ新しくソフトウェアをダウンロードしなきゃならなかったり、
またそれが結構な容量を食うもので空き容量の確保に忙しかったり、
いざ指示通りにやってみたら全くうまくいかなかったり…

なので今度は別の導入例を参考にしました。
Cocos2d js セットアップ for windows
(https://www.slideshare.net/mogiken1/cocos2d-js-for-windows)

すると、今度はすんなりとHello,worldを表示させることができました。
が、今度は素人目にはどうやって開発していったら全くわかりません。
特に、編集すべきファイルの種類も場所も全くわかりません…

ここは知らずのうちに張っていた見栄を捨て、便利な開発ツールを使う事にします。
そこで見つけたのがCocos2d-x公式サイトにある「CocosCreator」。
画面の様子がリアルタイムでわかり、編集も直感的に行えるのでとても作りやすいでしょう。
言語が英語と中国語のみなのが不便ですが、そこは翻訳サイトとかで何とかできるでしょう。

公式サイトにそんな便利そうなものがあるならなぜそれを最初から使わなかったのかというと、
このCocosCreatorには少しばかりの問題があるからです。

[Cocos2d-x] Cocos Creatorとは:開発ツールのまとめ
(http://site.oukasei.com/?p=1387)
こちらの記事によると、「CocosCreatorは厳密にはCocos2d-xではない」というのです。

このCocosCreator、元々は「fireball」という名前の別のツールだったそうで。
それがCocos2d-xの開発プロジェクトに取り込まれ、Cocos2d-xやCocos2d-jsのエッセンスが盛り込まれた結果、
CocosCreatorとして生まれ変わったそうです。
そんな経緯があったためか、Cocos2d-xと同じような機能でも使われている単語が全く違ったり、
Cocos2d-xで使用できる機能を使用できない、また逆にCocosCreatorのみで使用できる機能があるなど、
例えCocos2d-xで指を慣らしていたとしても、CocosCreatorはイチから覚え直さなくてはならない、というレベルで差異があるそうです。

ちなみに、かつては「CocosStudio」という別の公式開発ツールがあったそうです。
これはCocos2d-xをそのまま開発できるようになっているらしいです。
が、CocosCreatorが開発されたことで、それに置き換えられたようです。

さて、先ほど「CocosCreatorには”少しばかり”問題がある」、と言いました。
なぜ”少しばかり”なのかというと、それは、ゲームを作れるなら何だっていいからです。
使えそうなものはありがたく使うことにします。
CocosCreatorがCocos2d-xを元に作られたのなら、タイトルもかろうじて嘘にはならないでしょうし。
もしこのCocosCreatorもダメだと感じたら、次はUnityすらも検討に入れます。その時はタイトルも変わると思います。

前途多難にも程があると自分でも思いますが、引き続き生暖かい目で見ていただけたら幸いです。

以上、ノートPCにお茶をこぼし一瞬内蔵SSDの接続が切れて肝を冷やした百目鬼がお送りしました。

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

初心者が征く!オリジナルゲーム作成道 day9

こんにちは!インターン生の内村です!

今回もシューティングゲームの作成を行っていきたいと思いますが、残念なお知らせがあります。
この度、企画していたシューティングゲームですが、弾幕ゲームのようなものに変えたいと思います。
理由としては、私のJavaScript及びCocos2dへの知識・経験不足によって技術的な問題が生じ、インターン期間内に解決できないと考えたからです。
解決できなかった問題は、弾と敵キャラクターとの間の衝突判定を設定することができなかったというものです。
この度は誠に申し訳ありませんでした。

気を取り直して、今回から弾幕ゲームを作成していきたいと思います。
今回までに行ってきた制作は弾の発射以外はすべて再利用します。

簡単な想像図としては、操作キャラクターめがけて飛んでくる敵キャラクターをタップによる左右への移動で避け続けるというものです。
これだけでは退屈なのでスコアなどによって生成される敵キャラクターの傾向が変わるなどの要素を追加したいと思います。

今回は、敵キャラクターを避けるための移動の機能を作ります。

以下の手順で行います。
①操作キャラクターの移動速度に使う変数を宣言
②プレイヤーの移動を反映する関数movePlayerを作成
③プレイヤーの移動方向を逆にする関数changePlayerDirectionを作成
④movePlayerをupdataに書く
⑤changePlayerDirectionをタッチ操作処理に書く

【解説】
①そのままのため割愛します
②プレイヤーの移動を反映する関数movePlayerを作成③プレイヤーの移動方向を逆にする関数changePlayerDirectionを作成
以下のように書きます。(移動速度に使う変数はvar gameの初めの方に書いてください。下のコードでは「_dx」と設定)

まずは、getPositionで操作キャラクター_playerのX座標を読み取ります。
次に、読み取ったX座標を先ほど操作キャラクターの移動速度として宣言した変数_dxと足して新しい変数newXに代入します。
そして、画面サイズを読み取りちょうど画面からプレイヤーが見えなくなるくらいでchangePlayerDirectionで反転するように設定します。
changePlayerDirectionについては_dxに入っている値の正負を入れ替え逆に移動するようにします。

④これもそのままなので割愛します。
⑤changePlayerDirectionをタッチ操作処理に書く

以下のように書きます。

前回までにコーディングしたタッチ処理の動作する部分のみを書き換えるだけです。
弾の発射を操作キャラクターの移動方向変更に書き換えます。

今回は以上です。

次回はスコアの追加、敵キャラクターの種類の追加、クリア画面の追加を行いたいと思います。
次回で最後ですがなんとか完成するようにベストを尽くしたいと思います。

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

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

皆様初めまして。インターン生の百目鬼(どうめき)と申します。

皆様はゲーム、特にスマートフォン向けのゲームなどで遊ばれたりしますか?
私はよく遊んでおります。最近は今まで遊んでいた家庭用据え置き機・携帯機のゲームを差し置いてこちらを遊んでいるくらいです。

で、そんなスマートフォン向けのゲームを、
簡単ではないけど誰でも作ることができる、良いモノがあるんです。
        
それが、「Cocos2d-x」というものです。
PCにダウンロードして使います。

こちらオープンソース、つまり無料で誰でも利用できます。
非営利の個人から商用利用の方まで誰でも全ての機能を無料で利用できます。
自宅のPCにダウンロードすれば誰でも入門できます。
主にMacとWindowsで利用できます。
Linuxでもいくつか手順を踏めば利用できます。

iOS、AndroidといったスマートフォンのOSのゲームのほか、
Mac、Windows、LinuxといったPCのOSのゲームも製作できます。

開発する際、言語にC++とLuaとJavaScriptの3つから選択できます。
この3つ、その中でも特にC++は広く用いられているプログラミング言語で、
既にある程度のプログラムを書ける方も多いと思いますので、それもプラスに働くと思います。
また、JavaScriptを選ぶと、ブラウザ上で動くゲームも作ることができるようになります。

Cocos2d-xで開発したゲームは非常に動作が軽く、
性能が良くないマシンでも軽快に動作するなど、細かいけどありがたい特徴もあります。

さて、ここまで長々と、そして自慢げに解説を述べてきました。
さぞ色々経験された方なのだろう、なんて思っていただけたかもしれません。

ハイ、そうです。タイトルの通りです。
私、このCocos2d-xというもの、使ったことがありません。

そもそもゲーム作ったことがほとんどありません。
大学の講義でチームを組んで作ったことはありますが、
出来合いの素材を持ってきて、とある超わかりやすいゲーム制作アプリケーションで組み合わせただけです。
プログラミング的な事は一切やっていません。
かといって他に本格的な事してきたかというと、講義でC言語学んできただけです。

なので、「もしC言語を学んだだけの大学生が、Cocos2d-xでゲームを作ってみたら」
というていでこれから色々やっていこうと思っています。
JavaScriptで、スマートフォン向けのゲームを作ろうと思います。

インストールするのに手間取って何もできてませんが、
とりあえずは「Hello,world!」から始めてみようと思います。

生暖かい目で推移を見ていただけたらと思います。

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