UnityのFlappyBirdStyleチュートリアルをやってみた感想。

Unity5.5ベースでFlappyBirdを作るチュートリアルが公式であったのでやってみました。FlappyBirdは仕組みが簡単で同じようなプログラムを作ったことがあるのですが、復習もかねてやってみました。以下のような感じでした。

  • 初心者向けなので丁寧。
  • 動画が小さく分かれているので自分のペースで進められる。
  • 移動する壁や床にKinematicなRigidbody2Dを使う方法が分かる
  • 土管はオブジェクトプーリングで管理する
  • 簡単なAnimatorも用意する。

FlappyBirdは一定時間で土管が右から左に流れますが、こういう仕組みはUnityの場合はコルーチンで簡単に実装できますが、このチュートリアルでは使っていませんでした。

ソースコード

https://github.com/dev001hajipro/FlappyBirdLive

デモ

http://hajimete-program.com/Unity/FlappyBirdLive/

Androidのミニゲーム「Bean Clicker」を作りました。(ソースコード配布あり)

 

 

Bean Clicker(Play store)をAndroidへリリースしました。でてきた豆をタップして得点を稼ぐミニゲームです。豆はどんどん下に落ちていき、右上のライフがなくなったらゲームオーバーです。

作ってみた感想

はじめてAndroid向けにゲームを作ってみました。ミニゲームでゲーム自体のプログラムは難しくないのですが、タイトル画面を用意したり、ハイスコアを保持したり、モバイル入力に対応したりと、ゲームロジック以外のプログラミングがかなり必要でした。

また、Android実機とWindowsでは、フォントがArialファミリーでもかなり異なるので、タイトルロゴなどは画像ファイルを用意したほうが調整がなく簡単そうに感じました。またUnityでは、実機のデプロイ作業に数十秒かかるので、ちょっと修正して動作確認をするようなことが難しかったです。

ソースコードとZIPファイルのダウンロード方法

https://github.com/dev001hajipro/BeanClicker

githubで公開しています。gitをインストールしている場合は、git cloneでダウンロードできます。zipファイルがほしい場合は、上記のgithubへ行くと、右上付近に、「Clone or download」の緑ボタンがあるので、これをクリックすると、以下のような吹き出しで、「Download ZIP」が表示されるので、ここからZIPファイルがダウンロードできます。

 

cocos2d-xは環境構築回りがあまり追随できていない模様

ここ数日Cocos2d-x 3.16をインストールして開発環境構築やシーンを作成したりしました。環境回りでいくつか問題が見えてきたので書いておきます。

インストールにPython2.7が必要

下位互換性のためかPython3に移行しないようです。

AndroidStudio更新に追いついていない。

次のCocos2d-xで警告は解消されるようですが、Gradle、AndroidSDKのバージョンに追い付いていないです。AndroidStudioで開発を始めると警告が消えないままになります。

静的ライブラリーが生成できない。

cocos2d-x 3.16をインストールした初期設定ではgen-libsコマンドが実行できませんでした。githubからcloneしたりすると出来るかもしれません。

VisualStudio2017に対応していない。

cocos2d-xは、VisualStudio2017でソリューションを開いて、その中にある各プロジェクトを右クリックして「再ターゲット」をすると、プロジェクトを2017に対応できます。これでひとまず開発できますが、上記のような静的ライブラリーはわかりませんでした。

AndroidStudioで実機確認すると重い

ゲーム開発中はちょっと修正して動作確認したいと思いますが、ビルドとapkファイル更新に数十秒かかるので、かなりのストレスになります。

cocosコマンドとテキストエディターで開発

AndroidStudioでスマートフォン実機で開発し始めましたが、win32用にVisualStudioまたは、cocosコマンドとテキストエディターである程度開発するのが効率がよさそうでした。

 

 

HappySandwichCafeで「マグを探そう!」でマグの手がかり23が表示されない。

バグ?マグの手がかり23が入手できない。

HappySandwichCafeで以下の条件まできましたがマグの手がかり23が手に入りませんでした。この状態で、住民にマグアイコンが出たときに、100人以上クリックしていますが、「探してた犬は、もう見つかった?」しか表示されません。

総当たりで調べると単純な作業なので、せっかく面白いゲームなのに残念。

  • ゲーム進行がChapter4
  • 重要ミッション3クリア
  • 具材95%,パン90%,調味料58%,デコパーツ5%

Bash on Ubuntu on Windowsの青色を簡単に見やすくする

まとめ

Bash on Ubuntuの初期設定では深い青色がとても見づらいです。そこで以下の3つの簡単な作業で見やすくします。

  • .bashrcを1行修正しプロンプトを見やすく!
  • githubのsolarizedを使い、2コマンドでlsコマンドを見やすく!
  • .vimrcに1行追加で、vimも見やすく!

[前提].profileと.bash_profileと.bashrcについて

ログイン時(Bash on Ubuntu起動時)に.profileが呼ばれ、その中で.bashrcが呼び出されます。もし自分で.bash_profileを作成した場合は、ログイン時に.bash_profileが呼ばれ.profileは無視されるので注意してください。

PS1環境変数

.bashrcを見ると以下のように、PS1変数でコマンドプロンプトの色や表示を指定しています。

ひとまず、[\033[01;34m\]が青色を意味するので、シアン[\033[01;36m\]にすれば、見やすくなります。

https://unix.stackexchange.com/questions/124407/what-color-codes-can-i-use-in-my-ps1-prompt

 

LS_COLORS環境変数

LS_COLORSの設定は、githubのdircolors-solarizedプロジェクトからからデータを取得して、.dircolorsにリンクを作ってしまう方が簡単です。以下の2つのコマンドで完了です。

アンインストールしたい場合は、.dircolorsを削除すればよいので手軽です。

lsコマンドで作成した、.dircolorsシンボリックリンクは、.bashrcで読み込まれます。

[補足]dircolorsコマンドの基礎

lsコマンド実行時の色は、.dircolorsファイルが存在する場合は、そのファイルから色を取得し、ない場合はdircolors -bコマンド実行によりLS_COLORS変数を用意し、設定しています。.bashrcでは以下のようになっています。

ちなみにdircolors -bとすると、-bはbash標準の色で、LS_COLORSの標準色を出力します。とはいえRGBではないので知識がないと読み解くのが大変です。

VIMの色を見やすくする

vimもsolaizedがありますが、以下コマンドで見えるようになります。

set background=dark

 

 

ひとまずWordPressに広告を張る方法

少し前にGoogle公式のアドセンスプラグインが無効になりました。別のプラグインを使うと思いますがひとまず、広告を張る場合は、以下のようにアドセンスのコードを貼り付けるとよいです。

  1. ダッシュボードを開く
  2. 外観->テーマの編集を選択
  3. 右側にいろんなphpファイルの一覧が表示されるので、「個別投稿(single.php)」を選択。
  4. 以下画像のようにアドセンスコードをコピペします。
  5. 画像のように、?>と<?phpを書きます。

注意点は、アドセンスコードを貼り付けた後、その前に?>、コードの後に<?phpを付け加えます。つまり以下のようになります。

これでひとまずGoogleアドセンスを表示できます。

テーマがバージョンアップされた場合はsingle.phpが上書きされるので再度設定する必要があります。そこは面倒ですが手軽にアドセンスを貼り付けられました。

組み合わせの列挙の再帰プログラム

再帰 全探索 | アルゴリズムとデータ構造 | Aizu Online Judge」で組み合わせの列挙をする再帰プログラムがあったのでC++で、記事の通り書いてみたけれど、ちょっと動きが分からなかったので修正して、詳細な動きを書いてみました。

AOJのコードの場合は、以下のように、配列がゼロ初期化されていて、rec関数から戻るときにS[i]=1でオン状態になったものは、必ずS[i]=0でオフに戻すという記述のため、※の部分のS[i]の値がぱっと見分からない。

rec関数の最後で、S[i]=0でゼロに戻しているので、基本的には以下と同等です。

関数の最初でリセットするか呼び出し後の最後でリセットするかの違いです。上記のコードで一度ステップ実行してしまえば理解が深まります。

ステップ実行してみる

要素数が3の組み合わせ一覧をメモ帳で書きながらステップ実行すると、以下のようになります。rec呼び出しでprintしない場合は、必ずS[i]=0となるため上手く動作します。

出力

 

JavaScriptで実装

Node.jsで実行

 

気になる実装チュートリアル

正規表現の基本をJavaScriptで実装するチュートリアル。

postd.ccに40行以内で正規表現エンジンを構築という、正規表現をJavaScriptで実装するチュートリアルがあります。ソースコードもhttps://github.com/nadrane/build-your-own-regexにあるので実装が上手くいかない場合、正しい実装を確認できます。元々はC言語の実装のようですが、JavaScriptを使っているので配列はslice関数で先頭とその他に分けられたりして簡単に実装できるようになっています。

React+Reduxで、TODOリストを作成するチュートリアル

Immutable.jsも使ったReact+ReduxのTODOリスト作成チュートリアルです。基本的な用語を押さえてからこのチュートリアルでTODOリストを作成して、どんどん機能を追加していくことで効率よくReact+Reduxが学べそうです。