Cocos2d-x Action

今回は、Cocos2d-xのアクションについて勉強しました。

公式ドキュメントの
Action->Sequence Internals->Reverseのサンプルコードをもとに動作を確認しました。

参考:http://westplain.sakuraweb.com/translate/cocos/The%2520Basics/Actions.cgi
及びhttps://docs.cocos2d-x.org/cocos2d-x/v3/en/actions/sequence_internals.html

前回のHelloWorldの中央の画像を動かしてみます。実行したコードがこちらです

HelloWorld::initに追加して実行しました。
画像の動きを整理してみると各2秒ほどのインターバルで
1. 2秒かけてx方向に画面の横幅の半分移動
2. 2秒かけて高さと幅を2倍に
3. 2秒かけて高さと幅を半分に
4. 2秒かけてx方向に画面の横幅の半分*-1移動
でした3. 4. は1. 2. の逆の動きです。Sequenceの最後に8秒の待ち時間が設定されていることと2. と3. の間隔からreverse()で追加されたアクションも同時に開始されているとわかります。ドキュメントのSpawnの欄にも示されていますが、実際に動かすことでより理解しやすくなります。

次に、先ほどのサンプルコードにはないEasingを試しました。Easingはアクションに加速度を設定するオブジェクトで、複数のEasingを組み合わせることにより多くの動きを再現できます。しかし、動作によってはActionを使用せず実装したほうがよさそうです。

Easingを使いどのような動きができるか試しているときに判明したことがあります、マニュアルにはSpawnはrunAction()を複数回実行するのと同じ結果になるとありますが、SequenceをSpawnでまとめた場合個別にrunAction()を実行した時と異なる動作をしました。

同様にRepeatForeverをSpawnでまとめた場合、繰り返しが無くなりました。

よって、これらはSpawn,Sequence,RepeatForeverの順で使用しなければ正常に動作しないと思われます。

次回は、主にUIやSceneの勉強をしようと思います。

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

10日間でAndroidゲームネイティブ制作に挑戦(エラー編)

 皆さんこんにちは。星野耀司です。

 前回の時、次回はゲーム画面を制作していきたいといったのですが、エラーが出てうまくいっていません。
 そのため今回は起こった問題についていくつか説明してみようと思います。

 一つ目はエミュレーターがフリーズする問題です。ある時からエミュレーターを起動したらフリーズし、何も操作を受け付けなくなりました。
アプリのテストで使うので、アプリが問題だと思われました。
原因は、アクティブ系のjavaクラスファイルが、本来あるべき位置とは別の場所に移動していることが原因でした。ファイル整理をしているときに移動させてしまったか、アプリ側の機能で移動してしまたことが原因かもしれません。
幸い、テスト用のアクティブファイルを作るとあるべき位置に作られたため、場所を特定することができました。
元に戻したところ、きちんと起動するようになりました。 

 二つ目はよく見るUnexpected tokenというエラーです。括弧が足りないという理由でよく出るものですが、明らかに括弧が足りているのに出る時があります。セミコロンもつけていたので原因が不明なのですが、括弧やセミコロン以外にも足りないものがあるのかもしれませんね。

 さて、エラーの話以外にも現在の状況をまとめてみました。
 そもそも貝を集めるアクションゲームを作ろうとしていたのですが、まずその貝はどうやって出現させるのかわかりませんでした。
衝突判定などは後でやりますが、まず画像の出し方すらわからないのではどうにもなりません。そのため思いついた方法を調べてみました。
 まず一つ目、アイテムをプログラムでランダムな位置にスポーンさせる。しかしこの方法は、調べ方が悪いのかどこを探してもありませんでした。
 二つ目、最初から特定の場所に置いておいてそれを回収する。ただ、この方法だと、広いマップを使うわけではないので、敵がいてもすぐに回収できてしまうし、変化がないためすぐ飽きてしまうでしょう。
 三つ目、画面外に置いておいて、それをランダムな位置に移動させる。これは現在実験中ですが、様々なエラーに直面し、まだできていません。
ゲームプレイ画面のアクティブファイルにxmlファイルにある画像の情報を読み取らせることは、変数を作り、findViewByIdを使い情報を変数に入れることにより成功しました。xmlファイルの中に入っている一つ一つのアイテムには必ずIdがつけられているため、それを参照することによって、情報が得られたのですね。
 しかし、それを活用する段階でうまくいかないため、まだまだ時間がかかりそうです。

 次回は進捗があればその成果を、なければその間に出た問題について話そうと思います。

 ではまた次回

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

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

こんにちは、インターンシップ生の松本です。

前回はソケットの機能を使って武器を持たせることに成功しました。今回は武器を振るモーションをどうするか、とステージの作成をやっていこうと思います。

まず初めに武器を振るモーションですが、このキャラクターのアニメーションにこういった近接武器を振るアニメーションが無く、自分で作ろうともしたのですが、なかなかうまくいかず前回はそのことがあったため、後半は行き詰ってしまいました。ですので今回は振ること専用のアニメーションをつけず、歩行アニメーションで腕を振っていることを使って、そのままスイカに触れればクリアということにしようと思います。

次にステージですが、ただ単純にスイカに向かっていって終わりでは面白くありません。なのでこちらに向かってくる障害物を作ります。触れると爆発しダメージを受けるといった感じのものを作っていきます。

初めに障害物の設定をしていきます。コンテンツブラウザというところで右クリックし、ブループリントを選びます。親クラスはアクタにします。コンポーネントの追加でSphereを追加し、さらにCollisionのSphereも追加します。

次はイベントグラフと書かれたところを押し、どう動くかや爆発してダメージを与える設定をしていきます。こちらに向かってくる動きはプレイヤーを動かすときにやったこととほぼ同じです。爆発は、先程追加したCollisionを超えたら爆発のエフェクトを生成し、障害物自身を破壊します。先程のビューポートという画面でColisionのSphereを選択して左側の詳細の下の方にイベントというところがあり、その中のOn Conpornent Begin Overlapと書かれたところの横にある+をクリックします。するとイベントグラフに同じように書かれたイベントのノードが現れます。これがCollisionを超えたら、というイベントです。そこから適当なところまで伸ばして離すと、次につなげるノードを検索して出せます。ですが今回はただ触れると爆発するだけでなく一定時間で消えるようにするので、接触判定というBool型の変数を作り、セットします。この場合は真にします。これを使って別の場所で触れたらエフェクト出して消滅、振れなかったらSet Life Span時使って時間で消滅するようにしていきます。

Overlapで接触判定にセットした後に、ダメージを与えるところを作っていきます。Apply DamageとAny Damageを使って、Apply Damageで設定したダメージ値をプレイヤー側でAny Damageを使うことでダメージとして与えることができます。プレイヤー側ではあらかじHPになる変数を用意しておきます。そこから先程設定したダメージ値を引くことでダメージを与えたことになります。

大まかな作業はこのような感じです。より細かいところはこちらの画像を見てください。

次回も引き続きステージ作成と、クリア画面やタイトル画面を作っていこうと思います。

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

アプリの内容と構成決め(RADWIMPS少々)

初めまして!エム・ビー・エーインターナショナル株式会社インターン生の岡田優太です。

今回はインターン初日です。なので、5日間で作るアプリの構成案を考えようと思います。私は大学でHTMLを学んでいるので、今作品はHTMLで作っていこうと思います。ですがそこで第一の課題があります。アプリを作ろうにもどんなアプリを作るのか決めていません。そこで、ここに書き出していこうと思います。

・9月に関する謎解きゲーム

・RPGゲーム

・ブロック崩し

・プログラミングゲーム

この4つが今浮かんでいる内容です。私のインターンシップの成果物が9月がテーマのアプリなので、現段階でよさそうなものは謎解きゲームか、ブロック崩し、プログラミングゲームとかでしょうか。RPGゲームは9月をテーマにしてもあまりうまくできない気がします。そこで、3択まで絞り込めました!あとはやりやすいゲームを選ぶだけですが、サンプルコードなどを調べていると、ブロック崩しとプログラミングゲームが出てきました。(URL:http://phinajs.com/)そこでサンプルコードを見ながらできる2択に絞りました。ブロック崩しは背景に、9月に関連した画像を貼ったり、ある一定得点を獲得するとサイトや画像が表示されるという設定にすれば、5日間でつくることができると思います。

プログラミングゲームでは打った文字列が9月に関連することだったり、ブロック崩しのように一定得点で画像表示とかはできると思います。散々悩んだ結果、誰もが一度はやったことがあるブロック崩しにしようという結論に至りました。後決めるものは、ブロック崩しと9月をどんな関係で結ばせようという課題があります。関連させる内容は十五夜、音楽の2種類にしようと考えています。9月と聞いて音楽を連想する人はなかなかいないと思いますが、私は9月にはいったら、「セプテンバーさん」という曲を必ず聞きます。そうです、私はRADWIMPSが大好きです。RADWIMPSは「君の名は」や「天気の子」などの主題歌を歌っており、知らない人は少ないはずです。RADWIMPSは2001年に野田洋次郎がバンド活動をしている友人からギターを聞きたいと言われ、ギターを弾いて聞かせたところ、友人はそれを携帯電話で録音しており、こっそりバンドメンバーにも聞かせていたらしいのです。その中のメンバーであった桑原が野田に惚れ込み、野田をバンドに誘いRADWIMPSが結成されたとウィキペディアにありました。そこで、RADWIMPSを背景にゲームを作るというのも良いと考えます。そこで、初日はブロック崩しに決めて、背景をどういう設定にするかと十五夜カラーのブロック崩しも作るということを決めました。

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

引用元:https://www.sejuku.net/blog/3960

    https://ja.wikipedia.org/wiki/RADWIMPS

オープンデータ活用サービス開発日誌~01~

 皆さん初めまして。本記事にごアクセスいただきありがとうございます、MBAインターナショナル インターン生の岩岬と申します。

 この記事はインターン初日に書いております。当初はゲームプログラマとしてインターンに参加しようと考えておりましたが、オープンデータの活用に興味をひかれたため急遽webプログラマとして10日間のインターンに参加します。この日を含めて10日間のインターンということで、不安も大きいですが、何か得られるものがあればという期待も抱いております。

 さて、これから10日のインターン参加期間中、オープンデータを活用したWEBサービスの開発に挑戦するとともに、毎日記事を作成する予定です。各日の作業中に調べたデータや先行事例、これから作りたいサービスやその進展が主な内容になります。

 さて、初日の活動としては、そもそもオープンデータとは何か、という問題を解決しなくてはなりません。総務省はオープンデータを以下のように定義しています。

以下、総務省の「地方公共団体のオープンデータの推進」より引用

国、地方公共団体及び事業者が保有する官民データのうち、国民誰もがインターネット等を通じて容易に利用(加工、編集、再配布等)できるよう、次のいずれの項目にも該当する形で公開されたデータをオープンデータと定義する。

1. 営利目的、非営利目的を問わず二次利用可能なルールが適用されたもの
2. 機械判読に適したもの
3. 無償で利用できるもの
〈参照:オープンデータ基本指針(平成29年5月30日高度情報通信ネットワーク社会推進戦略本部・官民データ活用推進戦略会議決定)〉

引用ここまで

 オープンデータとはなんぞや、という疑問も晴れたところで、今回利用したデータカタログサイトについて紹介します。データカタログサイトは、総務省行政管理局によって運用されている、オープンデータのポータルサイトです。このサイトからは中央省庁が公開しているオープンデータにアクセスすることができます。例えば、1899年から2017年までの年次、性別ごとの日本の人口のデータや、動植物の分類ごとに分かれたレッドリストのデータなどをダウンロードできます。下のリンクから、データカタログサイトにアクセスできます。

データの前処理、活用サービスの立案、サービスの実装など不安なことは多いですが、これから10日間頑張っていこうと思います。

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

参考資料:
総務省 地方公共団体のオープンデータの推進 http://www.soumu.go.jp/menu_seisaku/ictseisaku/ictriyou/opendata/
(2019/8/19 アクセス)

総務省行政管理局 データカタログサイト
https://www.data.go.jp/
(2019/8/19 アクセス)

10日間でAndroidゲームネイティブ制作に挑戦(画面切り替え編)

 皆さんこんにちは。星野耀司です。

 さて今回もゲーム作りの過程を記事にしたいと思います。画像のサイズについては小さくても中央に置いておくことにより見栄えがよくなりました。

 今回の記事のテーマは画面切り替えなのです。
まずAndroidstudioで画面切り替えってどうやってやるんだろうと思い調べてみました。

引用元URL:https://akira-watson.com/android/activity-1.html

引用始め

「Activityを変えて画面遷移」をしたい場合には、Intent を使います。

引用終わり

なるほど,Intentを使えばよいのですね。
では早速…と思いましたが画面切り替えのきっかけを作っていませんでしたね。
そのためのボタンを作成することにしました。

 ボタンはxmlファイルに直接記入するか、Designファイルの中にパーツを入れるだけで入れられました。
ボタンの中にはButtonという文章が入っていましたが、わかりづらいので変更することにしました。
文章変更は簡単で、そのボタンが入っているxmlファイルのそのボタンの部分のButtonを探し、その中のAndroid:textの=の右側に””で囲って自分のボタンにつけたい文字を入れるだけでした。
ただし二つ以上のButtonを入れた場合は混在するので一個一個作った後につけたほうが良いです。
あとはjavaファイルに変数定義やクリック処理の継承を行うなどして準備が完了しました。

後は先ほどのサイトを参考にIntentを使用して処理すれば、ゲームプレイ画面に移行できます。
これを応用して使わせていただいた素材のクレジット表記画面も作ってしまいたいですね。
ただ、この時点でかなりエラー等を発生させてしまい時間がかかってしまったため、ゲーム画面に移行することができませんでした。
時間迫ってきているのでそろそろゲーム内容にも触れていかなければいけませんね。
 というわけで次回以降はゲーム画面の制作過程を記事にしようと思っています。
現状アイテムのスポーンの方法などわからないことだらけですが頑張ろうと思います。
気がかりは主人公や海の波等の素材が納得できるものが見つかっていないことですね…。サンプルを作ってる暇もありませんので見つけないとゲーム内容に中々触れることができません。そこも次回以降の記事でご報告できればと思っています。
前回でもそうなのですが、xlmファイルを扱うことになるとは思ってませんでしたのでとてもいい経験になったと思いますね。

ではまた次回

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

Cocos2d-x 環境構築その2

 

こんにちは、インターン生の宮本です。

前回に引き続きCocos2d-xの環境構築をしていきます。
参考:https://takachan.hatenablog.com/entry/2017/10/29/185550

と言っても残っている作業は、プロジェクトの実行を確認するのみです。
早速ビルドしたいと思います。

無事HelloWorledが表示されました。

これで環境構築が終了しました。やっと、Cocos2dの勉強ができます。日本語のマニュアルはありませんが公式ドキュメントを日本語訳してくださっているサイトがありました。

http://westplain.sakuraweb.com/translate/cocos/Installation/Android%2520Command-line%2520Setup.cgi

また、自動生成されるHelloWorldクラスのコード解説もありました。
http://marupeke296.com/IKDADV_CC_2D.html

これらのサイトを参考に勉強していこうと思います。

まずはスプライトです。
これはUnityのスプライトと同じように画像を扱うオブジェクトです。
画像の一部分を抜き出して作成することも可能で、プロパティにはrotation,position,scale,colorなど基本的なものがあるようです。

次に、アクションです。
これはNodeのプロパティの変更を行オブジェクトで、移動・回転などのアクションを指定した秒数で行います。
スプライトはNodeを継承しているためスプライトにも適用することができます。また、複数のアクションを逐次または同時に行うようオブジェクトも使用可能です。注意点として、内部ステータスを持つため同じオブジェクトを複数適用したいときは複製しなければなりません。

この2つを使用して実際にHelloWorld中央の画像を動かしてみました。実行してみて初めて分かることも多かったため。次回は、実際に動作を確認しながら進めていきます。

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

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

こんにちは、インターンシップ生の松本です。前回はキャラクターの移動のプログラムを作っていきました。

今回はこのキャラクターにスイカを割るための武器を持たせるところを作っていこうと思います。

まず、武器は何を使うかを決めます。Unreal Engine4を開発したEpic Games公式から無料で配布されているInfinityBlade:Weaponsというアセットを使っていきます。

次に武器をしっかり持たせるために、このキャラクターの右手にソケットと呼ばれるものを作ります。ソケットを作ることでその場所からエフェクトを出したり、これからやるように武器を持たせることができます。コンテンツの中のMannequinというファイルの中にCharacterというファイルがあり、さらにその中のMeshの中にSK_Mannequinというこのキャラクターのスケルタルメッシュと呼ばれるものがあります。これを開き、右上のスケルトンと書かれているところをクリックするとスケルトンツリーが出てきます。そこにはキャラクターの体のさまざまな場所が表示されていて、そこから今回は右手にあたる部分を選びます。そこで右クリックをすると出てくる項目の中の”ソケットを追加”をクリックすると、先程右クリックした場所にソケットができます。あとは位置を調節して、次は実際に武器を持たせます。

ソケットに持たせたい武器をアタッチすると持たせることができるが、アタッチする方法はいくつかあり、スナッピングと呼ばれる機能を使った方法やメインのエディタのコンテキストメニューからアタッチする方法、ブループリントを使用した方法などがあります。それぞれ試してみたのですが、成功したのはブループリントを使った方法だったのでこちらを使っていきます。

まずはアタッチしたい武器のメッシュを”Add Static Mesh Component”と”Set Static Mesh”を使って追加し、”Attach To Component”を使ってアタッチします。

”Attach To Component”のTargetにはアタッチするコンポーネント(武器)を指定し、Parentには持たせる側のコンポーネント(キャラクター)を指定します。そしてSocket Nameにアタッチしたいソケット名を指定することで、無事持つことができました。

参考元http://api.unrealengine.com/JPN/Engine/Content/Types/SkeletalMeshes/Sockets/

http://kagring.blog.fc2.com/blog-entry-375.html

↑今回の作業結果です。次回は武器を振るアニメーションに関してとステージの作成をやっていこうと思います。

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

10日間でAndroidゲームネイティブ制作に挑戦(取り掛かり編)

 皆さんこんにちは。星野耀司です。

 今回はAndroidのゲームを作り始めてみたので、現在までで行ったことと、使ったツールを紹介します。

 そもそもどのソフトを使って作ればいいのかわからなかったので調べてみました。どうやらAndroid Studioというアプリがいいようです。

 というわけで早速使ってみました。しかし問題が発生。

 まず画面を見ただけで訳が分かりません

 というわけで以下のサイトで使い方を見てみました。
 

【Android Studio】 ゲームアプリ開発入門 第1回 「プロジェクトの作成」  https://codeforfun.jp/android-studio-catch-the-ball-1/

ミニマムSDKは一番低いものにすることにしました。そんなに機能もいらないはずですし、どうせ遊ぶならみんな遊べたほうがいいですからね。

ActivityはEmpty Activityにしました。色々入ってても扱える気がしませんし、そもそもマップ機能なんてものは邪魔でした。

大枠のものを設定したところでようやく制作に入りました。
おそらくここだけで1時間以上使っています。

まず何をしようかと思い再び先ほどのサイトを見たところ手っ取り早くできることがありました。

引用始め
まずは、ゲームに必要ないアクションバーを非表示にします。
引用終わり

大体のアプリで消えているのであまり意識したことはありませんでしたが確かにそんなものがあった気がします。
消し方はというと

引用始め
style name=”AppTheme” parent=”Theme.AppCompat.Light.DarkActionBar”

style name=”AppTheme” parent=”Theme.AppCompat.Light.NoActionBar”

にします。
引用終わり

DarkがNoに変わっただけでした。
比較的簡単にアクションゲージを消すことができたはずです。

あとは素材などを探して入れることが必要ですね。

試しに貝の素材を手に入れてみて、どのように実装するかを調べたところ
drawableフォルダというものを発見しました。

今後、ゲーム内で使う画像はここに入れておけばよいのかなと思います。

そしてゲーム内に画像を取り入れる行為をしようとしましたがここでまた問題が。

適切なサイズの画像が見つからない…

タイトル画面の背景に海を取り入れようと考えていたのですがそもそもスマホに合わせることのできる画像が見つからないのです。
次回記事を書く時までに見つけておかないといけませんね。

正直言ってあまり進んでないです。エラーも多く出てるので、今までやっていることで間違っていることもあると思います。とりあえずまずはゲームを完成させることを目的に頑張ろうと思います。

それではまた次回。

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

Cocos2d-x 環境構築 Ninjaがない!

こんにちは、インターン生の宮本です。

今回は、環境構築をします。

VisualStudioからイントールできると見かけたのでとりあえずやってみましたが駄目でした。

新しいプロジェクトの作成でcocosテンプレートを選択、次へを押し画面の指示に従ってインストール

しかし、インストールが終わり再び新しいプロジェクトの作成でcocosを検索しても何も出ません。

諦めて普通にインストールすることにします。

前回環境設定がインストールするものが多いと書きましたがCocos2d-xを使うだけならば必要なものは
・Cocos2d-x
・Python
だけです。

しかし、今回はAndroid、iOS向けの開発なのでさらに
・JDK(Javaの開発環境)
・Apache Ant
・Android SDK/NDK(Androidアプリの開発環境/Android SDKをC++に対応させる開発環境)

が必要です。

こちらのサイトを参考にインストールを進めます。
https://takachan.hatenablog.com/entry/2017/10/29/185550

Cocos2d-x,Python,JDK,Apache Antをダウンロードし、
Android SDK/NDKはAndroidStudioがインストールされていたのでAndroidStudioからダウンロードしました。

プロジェクトの作成まではスムーズに行けましたが、AndroidStudioでプロジェクトを読み込む段階でエラー。

AndroidStudioを使ったことがなかったためなかなかエラーメッセージを見つけられずGradleの同期が失敗しているということしかわかりませんでした。

何とかエラーメッセージを発見し読んでみると
”Ninja”がないから というようなことが書いてありました。
よくわかりません。

どうやら、AndroidSDKのbinフォルダにninja.exeがありそれを読み込むことができていないために出ているようでPathが通っている場所にninja.exeを置いたら解決しました。
参考:https://kazblog.hateblo.jp/entry/2018/09/26/011307,
  https://takachan.hatenablog.com/entry/2019/02/03/014844

ところが、今度は”そのAPIは廃止され2019年に使えなくなる”といった旨の警告が出てきました。これは無視して問題ないようです。
参考:https://codeday.me/jp/qa/20190511/802695.html,
  https://takachan.hatenablog.com/entry/2019/02/03/014844

中途半端ですが今回はここまでとさせていただきます。
次回こそは制作に取り掛借りたいと思っています。

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