でらうま倶楽部

バカってゆうか、ゲームを作る事しか能の無いプログラマの、面白おかしな日々を綴ってみる実験。

2019年03月

パズル&モナーク Ver.1.1 配信開始

IMG_0240

コード書いとる?

パズル&モナーク Ver.1.1 の配信が始まっています。

今回は新しく「制限時間なし」モードを追加しました!前々から「ゆっくり遊びたい」という要望をたくさん耳にしていたので、ようやくの機能追加です! あと友達とかに遊んでもらう時に便利なよう「90秒」と「3分」モードを個別に選べるようになっています。

時間制限がないということは...必ず71枚のパネルが置き切れるということで...こりゃあ大変ですよ!めっちゃ大きな森ができたり長い道ができたりしてハイパーインフレが始まる予感ですよ! 「読み切った!」って感じですよ。

ついでに恥ずかしいバグを仕込んでしまいました...。 アプリが落ちるといった致命的なものではないものの...万が一遭遇された場合に...くれぐれもSNSなどでの拡散は謹んでいただければ... するなよ???!!!! 拡散するなよ!!!!!?????

IMG_0204

さて先日東京工業大学 大岡山キャンパスにて開催されたGAME^3にて拙作を展示してきました。 総勢30作品が並びイベントは盛況でした。

パズル&モナークは試遊時間50分という状況でのべ90回以上もプレイされ、開発者としてとても励まされた1日となりました。拙作を手に取ってくれた方々、並びに運営の方々、本当にありがとうございました。

次回のGAMAE^3は9月開催予定です。


ではまた次回。

boost 1.69.0 を試してみたよ。

30

コード書いとる?

気づけばboostライブラリも随分と新しくなっていたので、隙間時間に更新してみました。
そこでboost 1.67.0→1.69.0でいくつかハマった点を共有しまーす。


最初にここに目を通しておけばよかった!という内容ですので、お急ぎの方はリリースノートを呼んでください(苦笑)


いつものようにboost1.69.0をビルドして、Cinder0.9.1をビルドして、拙アプリをビルド...あれ? この警告が出ますか...


これはライブラリをビルドした際に「内部シンボルが全て公開状態なのか、必要なものだけ公開状態なのか」の設定があって、アプリからリンクした時に2つの設定が混在していまっせ!という趣旨の警告です。えーそれって随分前に統一していたハズなのにー!

これリリースノートに「設定を変更しました」と書いてありました。すいませんすいません。という訳でCinderのビルド設定とアプリの設定を同じに変更して終了!

Build Settings内の「Symbols Hidden by Default」Yesに変更するだけです。

あともう一点! Cinder0.9.1のビルド中にエラーになりました... マジか...

これリリースノートに「boost::Logicに破壊的変更を加えたよ!!」って書いてありました!すいませんすいません。という訳で static_cast を加えて無事ビルド通過。

警告も出力されなくなり、無事新しいboostに更新できました!!


最後に、boost::systemはヘッダオンリーになったので、当該ライブラリファイルをリンクする必要はもうありません。素晴らしい!

ではまた次回!!

ipa形式のファイル作成〜実機転送は思った以上に簡単だった...!!

スクリーンショット 2019-03-17 0.47.23

コード書いとる?

拙作「パズル&モナーク」の新しいバージョンをそろそろリリースします。
 
一番要望の多かった「制限時間の無いモードが欲しい!」に応えた形となりますが...これいいですね。制限時間が無くなると全く違う攻略法が必要になりますね。パズモナの新たな切り口を見出せたような気がします。

で!

これまでのバージョン1.0、1.1から大きくセーブデータ内容が変わったので、起動時にセーブデータを変換する処理を追加しました。これまでの記録を良きに計らってですが...おかげで動作確認項目が増える増える。
  • バージョン1.0(無課金) → バージョン1.2
  • バージョン1.0(課金) → バージョン1.2
  • バージョン1.1(無課金) → バージョン1.2
  • バージョン1.1(課金) → バージョン1.2
ああ〜めんどくさい!(笑)

さすがにテストの度に古いバージョンのビルド→インストール→動作確認→最新バージョンのビルド→インストール...とかやってられんわ!

と思って調べてみたら...アプリをipa形式で出力しておけば再ビルドせずとも実機に転送できるのね!

やり方はこうです。

  1. 対象のスキームを選んだ状態でメニューから「Product→Archive」

    test1
  2. ビルドが終わるとオーガナイザが開く
  3. Distribute App

    test2
  4. Developmentを選んで次へ

    test3
  5. Automatically manage signingを選んで次へ

    test5
  6. Export!!

    test6
これでipa形式のファイルが出力できます。

これを実機に転送するには
  1. 「Window→Devices and Simulators」

    test7
  2. 「+」のボタンを押してipa形式のファイルを選択

    test8
これで実機にアプリをインストールできます。

こりゃ便利!

ではまた次回。

[spacemacs]magitだとcherry-pickも簡単です

53690334_2851227494895360_2061324392134082560_n

コード書いとる?

先日は人生初即売会で「パズル&モナーク イベント限定PC版」が売れて上機嫌の拙者です。次はTokyo Sandboxだ!

イベント限定版向けにブランチ切って作業を進めるじゃないですか。
 
途中でイベント限定版とは関係ない仕様を実装するじゃないですか。
 
でも時間に追われてるとそのまま作業進めるじゃないですか。
 
イベントが終わってはたと「イベント限定版で追加した実装の一部をメインブランチにマージしたいんだけどどうすれば?」ってなるじゃないですか

そこでcherry-pickの出番ですよ!(受け売り)

gitのcherry-pickは、とあるブランチのコミットを別のブランチにマージする機能です。

拙者はspacemacsを使っているのでmagitが標準装備です。magitはポチポチキー入力するだけでgit操作が出来る超優秀なemacsの拡張機能です。今回もいくつかキー入力をするだけでcherry-pickできてしまいました。

まずは「SPACE-g-s」でstatus画面

スクリーンショット 2019-03-11 21.30.01

そしたら「l-b」でリポジトリ全体のログを出す
 
スクリーンショット 2019-03-11 21.39.39

続いてcherry-pickしたいcommitにカーソルを合わせて「v」で選択

「A」(SHIFT-a)でcherry-pick

スクリーンショット 2019-03-11 21.44.49

さらに「A」でPick!!

超簡単!

magitでのcherry-pickを使い方はこちらのサイトが参考になりました!!

ではまた次回!!

頼れるXcodeの機能「Address Sanitizer」

コード書いとる?

先日勉強会にて「教えて!Xcode」という内容を発表してきました。
その補足です。

XcodeのAddress Sanitizerは「ビルドは通るが実行時の挙動が不安定」という状況で役立つ機能です。
主に実行時のメモリ破壊や未定義動作を検知して教えてくれます。

使い方はScheme内のRun設定→Diagnosticsで「Address Sanitizer」にチェックを入れるだけ! 専門的な機能が使いやすいってほんと大事!

スクリーンショット 2019-03-08 13.24.48

するとこういう状況のメモリ破壊や未定義動作でプログラムが一時停止します。
 
int main() {
  int array[5];
  array[5] = 0;      // おっと!!
}

で、さらに「Detect use of stack after return」にチェックを入れると...

スクリーンショット 2019-03-08 13.24.48

こういう状況も見つけてくれます。
 
int* getArray() {
  int array[5];
  return array;
}

int main() {
  int* p = getArray();
  *p = 0;            // おっと!!
}

こういうのもあります。char* → std::string の暗黙の変換にやられるパターン。
 
void execDelay(const std::string& text) {
  // 引数をキャプチャして時間差で処理する的な
  delayContext.add([text]() {
       std::cout << text << "\\n";
     });
}

int main() {
static const char* text = "Hello!!"; execDelay(text); }

さらにさらに「Undefined Behavior Sanitizer」にチェックを入れると...

スクリーンショット 2019-03-08 13.24.48

こういう状況を見つけてくれます。
 
int main() {
  int i = 1;
  i <<= 64;           // おっと!!
}

Debugビルドでは基本「Address Sanitizer」を有効にしておきましょう!! ただしメモリ使用量を監視できませんが...

そしてこの機能、Swiftでは使えません...orz


ではまた次回!!
記事検索
電子書籍発売中

「チュートリアル形式で始めるOpenAL」
サウンド怖くない。C++による8つのチュートリアルで始めるOpenALプログラミング。さああなたも、自作アプリに魅力的な音効を添えてみませんか??
⇒Kindle版 ⇒iBooks版


「iPhoneアプリ『ういろう』のレシピ」
ゲームってどうやって作ってるの?? 拙アプリ『ういろう』の製作過程を本にまとめました。もちろんソースコードつき
⇒Kindle版 ⇒iBooks版


『チュートリアル形式で始めるOpenGL[2D編]』
OpenGL怖くない。C++による16のチュートリアルで始めるOpenGLプログラミング[2D編]。さああなたも、ゲーム作りを始めてみませんか?
⇒Kindle版 ⇒iBooks版
自作ゲーム配信中

『Puzzle & Monarch』
「君主候補となって国作り!! ただし制限時間は90秒。」森を作って道をつないで...あなただけの国を作ってみませんか??
⇒AppStore


『BRICK & TRIP』
咄嗟の判断に、あなたの指先はついてこれるか?! 爽快フリックアクション!! 様々な難関をくぐり抜けて旅の終着点を目指そう!!
⇒AppStore


『ういろう』
名古屋土産ういろうがiPhoneで大活躍?! 白ういろうを守れるのはあなただけ。ひゅーん、ぼよよーん!!
⇒AppStore ⇒LITE版


『こなへん』
ヒマラヤ山脈、大西洋、世界で一番深い湖… それって地球のどこにあるのか知ってるかな?『全方位直感地理クイズ』という新ジャンルに挑戦!あ、それ。地球をくーるくるw
⇒AppStore ⇒LITE版


『GEOSPOT』
ヒマラヤ山脈、大西洋、世界で一番深い湖… それって地球のどこにあるのか知ってるかな?『全方位直感地理クイズ』という新ジャンルに挑戦!あ、それ。地球をくーるくるw
⇒Windows ⇒Mac


『TieGunner』
マウス片手に大宇宙へ飛び立とう!『しっぽシューティング』というジャンルを作って頂きました^^; WinでもMacでも動きます。ソースもあるでよw
⇒Windows ⇒Mac
QRコード
QRコード
  • ライブドアブログ