アプリの全体像変更(十五夜とKing Gnu少々)

こんにちは!

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

今回は3日目になります。昨日プログラミングが7割程度終わり、もうすぐ完成というところまで行ったんですが、途中で行き詰ってしまい、結局、見た目等色々と変えてしまいました。後、ブロックを全部崩した後、背景にRADWIMPSの画像を貼ろうとしましたが、著作権等が怖く、クリアした人に画面に出てくるURLを検索してもらい、私が作ったサイトに飛ぶように設定しているところです。

ですが、まったくわからなくて最終日までに終わるかわからないので、もしかしたらリンク貼って終わりになるかもしれません。その時は一応完成させたというところはくみ取っていただきたいと思います。

さて、アプリ制作の進捗状況は特に面白いものでもないので、9月について話していきたいと思います。

[月見は、主に旧暦8月15日から(午前零時を介して)16日の夜(八月十五夜)と、日本では旧暦9月13日から14日の夜(九月十三夜)にも行われる。そのため、月見に関する話題で単に「十五夜(じゅうごや)」、「十三夜(じゅうさんや)」という場合、これらの夜を意味する。中国や日本では、単に月を愛でる慣習であれば古くからあり、日本では縄文時代頃からあると言われる[1]。ただ、『竹取物語』には、月を眺めるかぐや姫を嫗が注意する場面があり、月見を忌む思想も同時にあったと推察される。](ウィキペディア引用)

とありますが9月は15夜じゃなくて13夜らしいですね。意外ですね。はい。

まあそんなことは置いておいて、今日はKing Gnuについて話していきたいと思います。King Gnuは2013年にリーダーの常田大希が立ち上げたプロジェクト、Mrs.Vinci(ミセス・ヴィンチ)、それを原型としたSrv.Vinci(サーヴァ・ヴィンチ)を前身とする。2017年にKing Gnuへ改名(ウィキペディア引用)したといわれています。ヴォーカルが二人いて、常田さんと井口さんの二人で歌っています。井口さんは芸人気質の方で、歌っているときは井口さんで普段は”井口”の愛称でファンの方から親しまれています。いっけんKing Gnuも9月と何もつながりがないように思えますが、実は1stアルバム「Mad me more softly」が9月リリースであの有名な1stシングルPrayer Xも9月に発売されたそうです!これはテーマである9月とばっちり合っていますね!それでは今日はこの辺で終わりにしたいと思います。

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

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

 皆さんこんにちは、MBAインターナショナル インターン生の岩岬です。
インターン3日目ということで、テーマの決定と要件定義を目標に掲げて作業中です。

 さて、今回の作業中に気になったデータですが、AEDの設置場所のデータと、多目的トイレの設置場所のデータです。今回はAEDのデータと、多目的トイレのデータともに、世田谷区が公開しているオープンデータをダウンロードしました(本社ビルが世田谷区なので)。AEDのデータは、設置している施設名と、その施設の住所、郵便番号、地域区分、電話番号とAEDの利用可能時間がセットになったCSVデータです。多目的トイレのデータは、設置している施設の用途と名称および所在地のデータに加えて、車いすでの利用に対応しているか、オストメイトの方が利用できるか、ベビーベッド、ベビーシート、ベビーチェア、大人用ベッドがあるか、というデータがまとめられています。

 これらのデータをうまく使えば面白いことができそうですが、ただ位置をまとめるだけならば、類似のより良いサービスが既にありますので、今回はそのような先行事例を2件ご紹介します。

 まず1件目は、オストメイトなびというアプリケーションです。このアプリはNPO法人エムアクトさんが開発したものであり、機能の1つにオストメイト対応トイレの検索があります。オープンデータとして提供されたデータに加えて、ユーザーから提供されたデータも、他のユーザーに共有されるようです。

 次に2件目は、財団全国AEDマップというWEBサービスです。こちらは一般財団法人日本救急医療財団さんが公開しているサービスであり、AED設置場所がピンで配置されており、ピンを選択するとAEDの設置施設名や設置年月日とともに、そのAEDのパッドやバッテリの管理情報の有無や、設置からの年数をもとに情報の精度が出力されるというサービスです。

 所詮インターンの製作物と割り切ればそれまでですが、位置をまとめただけでは先行事例の劣化版になります。今後は可能な限りサービスの差別化に努め、制作できる範囲で新規性のある成果物を作ることを目標にしたいと思います。言葉だけは意識高いですが、正直あまり進んでいませんし、技術力も不十分です。今後の期間でどこまで伸ばせるか、数日後の自分に任せようと思います。それでいいのか。

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

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

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

NPO法人エムアクト NPOエムアクト(オストメイトなびプロジェクト)
https://www.m-akt.jp/ (2019/8/21 アクセス)

一般財団法人日本救急医療財団 全国財団AEDマップ
https://www.qqzaidanmap.jp/ (2019/8/21 アクセス)

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

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

 今回は前回より進捗がありましたのでその報告とその中で使ったrandumというものについて話そうと思います。

 今回やったところは拾う貝を適当な場所に配置する作業になります。
前回も言った通り画面外に配置してワープをすることにしました。
どうやら配置のし直しはSetXやSetYを使うことでできるようです。
値に座標を入れればワープするのですが、どうやらこの関数は、ワープ前のものの位置に影響されるようなのです。
やってるときは気づくのが遅かったため、全部手作業でそれぞれ変えていきましたが、私のようにワープさせるときはすべてのものを同じ位置に最初に置いておくやり方をしたほうがいくつも別バージョンを作らずに済むでしょう。
またもや一日程度かけてしまいましたが、これで貝が配置できました。
初期位置が同じということはなく、変化するようにすることができました。

 さて、次にrandumの話ですが、これはjavaに元々用意されているものを使用しました。javaのrandumクラスの情報を他の変数に継承させ、それを乱数の発生装置にするというものでした。発生させる場合は

乱数を入れたい変数=random変数.next変数の型()

という記述方法を基本にすると発生させることができます。
ただし、これは完全な乱数というわけではないです。
プログラム内で乱数表というものを作り、そこからシード値というものを使って、数を引き出し始める場所を決めて引き出しているのです。
そのためシード値が変わっていないと複数の変数に乱数を発生させたとき、乱数のはずなのに同じ値が出てきてしまうということがあるので、シード値を変えることができるような工夫をしなければなりません。
どう工夫するかは私もわかっていない部分もあるので自分で調べてみてください。

 では今回はここまでにしたいと思います。
次回は貝をタップした際に、消える又は別の場所にまたワープさせるということができればいいなと思っています。
正直アクションにするのは厳しくなってきたためタップゲーに切り替えようと思っています。
敵キャラクターすら出せるか怪しいです。
とんでもないクソゲーが出来上がる気がしてきました。

また次回

(random等の説明に関しては正しいかどうかはわかりません。ここをきっかけに正しい情報を調べることをお勧めします)

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

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になる変数を用意しておきます。そこから先程設定したダメージ値を引くことでダメージを与えたことになります。

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

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

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