Cocos2d-x Scene Layer

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

今回は、Sceneを練習するにあたって躓いたことを中心にお伝えしようと思います。

ファイルを作成してもプロジェクトへの追加は手動で行わなければならないようです。

Sceneを継承するHelloWorldのクラスを参考にSceneを継承するクラスを作成しましたが、スーパークラスのinit()の呼び出しなどができませんでした。

このように赤くなってしまします。

調べても原因がわからず、ソースファイルを一つにしてしまおうかと考え始めたころ、見つけることができました。

———————-
・ External Buld Files/Android.mk の LOCAL_SRC_FILES 部分を以下のように修正

LOCAL_SRC_FILES := $(LOCAL_PATH)/hellocpp/main.cpp \
$(wildcard $(LOCAL_PATH)/../../../Classes/*.cpp)]

————–引用:http://vivi.dyndns.org/blog/archives/1563

どうやらExternal BuildFiles /Android.mkのLOCAL_SRC_FILESにパスを追加すればいいようです。
早速Android.mkを探します。
見つかりました……大量に。

しかし、ExternalBuildFilesとパスに入っているものは見つかりません。
探し方を変えてみます。プロジェクトウィンドウのプルダウンをAndroidにするとありました。

ところが、あるのはCMakeLists.txtのみでAndroid.mkはありません。
このファイル名の前半部分、見たことがあります。Gradleが同期できないと悩んでいた時に”ビルドシステムがcmakeに変わった”と書いてあるのを見かけました。
もしや、と思いプロジェクトファイルのルートにあるものを開いて中身を確認してみると、HelloWorldクラスの書かれているソースファイルとヘッダファイルの記述がありました。これに倣ってファイルパスを追記し、同期したところ赤くなっていた文字が通常の色になりました。

やはりAndroid.mkはcmakeビルドではCMakeList.txtに変更されているようです。

また、後から気づいたことですが
”プロジェクトに追加されていない”とエディタ上部に表示されていました。

次回から本格的に制作に取り掛かることができそうです。

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

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

こんにちは、インターンシップ生の松本です。前回は武器を振る動作とステージの作成をやりました。

今回も引き続きステージを作っていこうと思います。

テーマが夏ということで砂浜をイメージした地面と背景に海を作り、置きましたがまだ夏、という感じがあまり出てきていません。ですので今回はそういった夏を連想できるような物を置いていこうと思うので、置いたものの紹介とどのように使ったのかを今回は説明しようと思います。

まず海といえばカモメやウミネコなど鳥が意外と見られると思います。そこでEpicGames公式で無料で配布している”AnimalVarietyPack”を使っていきます。このアセットはカラスやシカ、トナカイ、キツネ、ブタ、オオカミといった動物のモデルが入っています。ここからカラスを使って海で飛ぶ鳥を表現していこうと思います。カラスを使ってウミネコやカモメと言い張るのはなかなか難しいですがあまり近いところに配置せず、距離を離すことで何とかしようと思います…..

動かし方は障害物やプレイヤーを動かしたときと同じ方法です。一定の間隔で現れるように障害物を生成したときを参考にして、設定していきます。

さらにもっと夏、そしてこのゲームのメインでもあるスイカを印象的になるように障害物を火をまとったスイカにします。火のマテリアルは、こちらもEpicGames公式にあるFXVarietyPackのものを使いました。

あとは左右の移動制限として、通り過ぎたらゲームオーバーにするフェンスのようなものを設置し、さらにゴールのスイカの前に過ぎれば障害物の生成が止められるようなアクタも設置しました。

最後に、前回武器を振るアニメーションが無く攻撃の動作ができないという話をしましたが、今回何とか使うことのできそうなアニメーションを見つけることができ、Zキーの長押しでアニメーションをするように設定できました。

こちらがプレイヤー側のブループリントで、

こちらがアニメーションブループリントの画像です。

今回はステージにさまざまな要素を増やすことができましたが、GameOver画面やクリア画面、タイトル画面が仮のものしかできなかったので次回はその三つを完成させるのとプレイヤーの攻撃の当たり判定を作っていこうと思います。

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

アプリの内容調整(THE ORAL CIGARETTES少々)

こんにちは!エム・ビー・エーインターナショナル株式会社インターン生の岡田優太です。

今回は2日目になります。昨日はアプリの内容と構成が決まったので、本日はアプリのプログラムを書いていこうと思います。HTMLとCSSでアプリの全体像を決めて、JavaScriptで動的に動かしてしっかりと遊べるアプリにしていきたいと思います。

 

<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=300,user-scalable=no”>
<title>ブロック崩し</title>
<script type=”text/javascript” src=”breakout.js”></script>
</head>
<body>
<canvas id=”sample” width=”640″ height=”480″></canvas>
<button onclick=”main()”>押してみよ</button>
</body>
</html>

サンプルコードを少し改変させたコードです。これだけでサイトに表示させることができます。このコードとJavaScriptを組み合わせることで一応アプリの完成です。ですが皆さん、こんなものはコピペすれば誰でもできますよね。私は個性的な成果物をつくりたい!そう思いました。そこで、

とりあえず色だけ変えて十五夜カラーを演出しました。ちなみにブロックが餅でボールが月を表しています。わかりにくいとかそういった批判は後でにしてくださいね。そんなこんなでHTMLはだいたい完成して、JavaScriptを試行錯誤中です!

ところで今日はRADWIMPSの話はないのかと思いませんか?本日は THE ORAL CIGARETTESのライブについてお話します。(以下オーラル)オーラルのライブ(PARASITE DEJAVU)が9/14,9/15にあります。これは待ち遠しいですね。

オーラルは9月に半年に渡りアリーナ4公演含む全国ワンマンツアー「Kisses and Kills Tour 2018-2019」も開催しており、なにか由来があるのかもしれませんね。信じるか信じないかはあなた次第です。まあ、私はまだオーラルのライブ行ったことないんですけどね。誰か一緒に行きましょう。お願い致します。

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

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

 皆さんこんにちは、MBAインターナショナル インターン生の岩岬です。早いものでインターン二日目です。進捗に不安はありつつも、ゆるりと作業中な現状です。

 さて、前回の記事ではデータカタログサイトについてご紹介しましたが、今回は、内閣官房のIT総合戦略室がまとめたオープンデータ活用事例集、オープンデータ100より、気になった事例を2件ピックアップしてご紹介します。

 一件目は、5374.jpというアプリケーションです。こちらのアプリは、一般財団法人コード・フォー・カナザワ(Code for Kanazawa)さんが制作した、地域別のごみ収集日と、分別を表示するアプリです。このアプリは、「あと何日で燃えるゴミの日?」や「ビニール袋って燃えるゴミ?」といった疑問を解決できます。この5374.jp、元々は金沢市でのデータを表示するアプリですが、オープンソースであるため有志が様々な地域向けの5374.jpを作成しています。あなたの町向けの5374.jpがあるかもしれないし、なかったらあなたが作ることもできます。

 二件目はWheeLog!というアプリケーションです。こちらは一般社団法人WheeLogさんが運営しているアプリであり、車いすユーザーが移動したルートをGPSを用いて記録し、車いすで通行できる道のデータを収集して共有するという機能があります。この機能に加えて、都立公園などにあるエレベーターや多目的トイレの情報を提供していますが、こちらがオープンデータを活用している部分です。このアプリの面白さは、対象や目的が明確であることに加えて、このアプリがデータを蓄積しながら利用している点にあると思います。

 先行事例のご紹介が済んだところで、今日の進捗報告です。今日は制作するサービスの方向性を決めるために、先行事例や利用可能なデータの調査にあたりました。ダウンロードしたデータは、例えば日本の人口推移やレッドリスト、都道府県別の図書館数などありましたが、これらはまだ、利用したシステム案が思い浮かんでいません。個人的に気になっているのが、歩行空間ネットワークのデータです。これは日本各地の歩行者用通路をノードとリンクで構成されたグラフとして表現したデータです。加えて、スロープやエレベーターの有無がデータになっているため、うまく読み解ければ何か面白いことができるんじゃないかといったところで、本日の進捗はこれまで。

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

参考資料

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

情報通信技術(IT)総合戦略室 オープンデータ100|政府CIO ポータル
https://cio.go.jp/opendata100 (2019/8/21 アクセス)

一般財団法人Code for Kanazawa 5374 Official Website
http://5374.jp/ (2019/8/21 アクセス)

NPO法人PADM NPO法人PADM -遠位型ミオパチー患者会-
https://npopadm.com/ (2019/8/21 アクセス)

一般社団法人WheeLog アプリ – WheeLog!
https://www.wheelog.com/hp/app (2019/8/21 アクセス)

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ファイルを扱うことになるとは思ってませんでしたのでとてもいい経験になったと思いますね。

ではまた次回

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