Swift3 から Data 構造体が追加され Objective-C 時代の NSData クラスはお役御免になりました。この Data 構造体は NSData の置き換えなので、できることに違いはほとんどありません。ただしメソッドに互換性がないため NSData を使ったコードを Data に置…
Swift で プロトコルを定義するときにオプショナルなメソッドを定義したい時ってありますよね。そんなときに使える小技です。 @objcを指定するよく知られた方法 Swift のプロトコルは Objective-C と違ってオプショナルメソッドを定義することができません。…
NSUserDefaults あらため UserDefaults のキーを enum で管理する方法(Swift3対応)です。UserDefaults のキーを enum で管理する方法はいくつか見つけたのですが Swift3 に対応しているものが見つからなかったので書きました。 キーに文字列リテラルを直接指…
Unity の uGUI でテキストをこんな感じに点滅させる方法です。 Update メソッドに処理を書いても良かったのですが個人的な好みで UniRX を使って実装してみました。Mathf.Sin メソッド(三角関数)を使ってアルファ値を0から1に緩やかに変化させています。 usi…
AVAudioSequencerでMIDIファイルを再生して曲の終わりにコールバックを設定する方法です。AVAudioSequencer 自体にそのようなコールバックがないので CoreMIDI のコールバックを使います。CoreMIDIはSwiftのブロックではなくてC言語の関数ポインタでコールバ…
Unity で開発をはじめた頃、一番わけがわからなかったのがゲームを構成するオブジェクト同士の関係でした。ゲームオブジェクト?コンポーネント?トランスフォーム?なんじゃこれってなりました。Cocos2d-x や SpriteKit のように単純なノードツリーで構成され…
Xcode 7.3 から Swiftのバージョンが 2.2 になりました。このバージョンから Swift 3 に向けた deprecated(非推奨)警告が出るようになったのでその対策です。 '++' is deprecated: it will be removed in Swift 3 結構話題になったインクリメント(デクリメン…
フロントエンド開発と iOS アプリ開発でステート管理に Redux(iOSはReSwift)を使っています。Unity でも Redux 使えないかなと探していたところ Redux.NET というC♯の実装を見つけたので使ってみることにしました。 手順 Redux.NET を使うためには Reactive …
Swiftで開発した自作ライブラリを Bitcode に対応させるためには Xcode の Build Settings 項目に以下を設定する必要があります。 Enable BitcodeをYesにセット Other C Flagsに-fembed-bitcodeをセット(Other C++ Flagsには自動でセットされます) User-Defi…
SpriteKit でゲームやアプリを開発していると UI 系の部品がなくて困ることがあります。SpriteKit にはラベルしかなくボタンすらないです。ましてやスクロールビューなんて贅沢なものは当然ありません。現在開発しているアプリでどうしても必要になったので…
最近、デスクトップアプリ開発界隈で流行ってる Electron の環境を React と Redux を組み合わせて作成してみました。Redux は Swift にも移植されたたりしているので前から気になってました。せっかくなんでオリジナル Redux 触ってみようと思った次第です…
一昨年(2014年)の10月にスマホのネイティブゲームの開発をはじめたのですが、そこからずっと Cocos2d-x を使っています。同じゲームエンジンを使い続けると知識が偏るし ゲームエンジンのシェア的には Unity の方が大きそうなんで Unity にもチャレンジする…
1年半ほど前から本格的にブラウザじゃないゲーム開発(ネイティブゲームって言うんですかね)を始めたのですが、Web の知識が全くと言っていいほど役に立たずほとんど一から勉強するみたいな感じでかなり苦労しました。自分は Cocos2d-x を使って開発していた…
約6年前に LinkedWord という英英辞書アプリを開発しました。リリースからしばらく(2年ぐらい、時期的には iOS4とか5の時代)は機能アップデートやバグ修正をしていたのですが、本の執筆やら他のアプリの開発やらで忙しくなりしばらく放置してました。その間…
OpenGL ES入門 その1 -描画の仕組みとバッファ-の続きです。今回は OpenGL ES を使って三角形を描画してみます。三角形を描くだけなら簡単そうな気もしますが、三角形を描くにはシェーダーを用意しきゃいけないという少し面倒くさい作業があるのでその辺の説…
最近 Cocos2d-x を触っているとどうしても細かいところで OpenGL の知識がないと理解できないみたいなことが多いです。いままで避けてきた感がある OpenGL の勉強をそろそろ始めてみようかなと思い少しづつ日記的にまとめていこうと思います。OpenGL と言っ…
オフスクリーンレンダリングという手法があります。この手法をつかって動的に画像をアトラス化してスプライトフレームキャッシュ(SpriteFrameCache)に乗せることができると、必要最小限の画像をアトラス化して効率よくキャッシュできるのではないかというこ…
iOS が8.3にバージョンアップしたのに伴い Xcode が6.3に Swift が1.2にバージョンアップされました。Swift 1.2ではシンタックスエラーとなりビルドできなくなるコードがあります。本書で記載しているコードだけでなく、サンプルの自動生成コードにも変更が…
Cocos2d-x でゲームを開発していると広告を表示させたり、ランキングを追加したり、課金を入れたり、SNS や Twitter と連携したり、アクセス解析をしたり、など iOS や Android の機能を使わないと実現できない機能があります(このようにプラットフォームと …
「プロの力が身につく iPhone/iPadアプリケーション開発の教科書」をお買い上げの皆様、ありがとうございます。 読者様からご指摘を頂き、誤りがありましたので訂正させていただきます。 2-3テーブルビューとコレクションビュー 148ページ、プログラム2つ目…
Cocos2d-x(3.4 Final) の ui::ScrollView クラスを使うとAndroidで背景色が緑色になる現象が発生しました(iOS ではこの現象は発生しません)。 こちらのページに載っている方法で解決することができました。 Problems with UIScrollView: Green Background an…
Cocos2d-xでゲームの開発を始めてそろそろ5ヶ月たちます。とにかく作ってみるといった感じで基礎知識があるかもも怪しいまま(Scene と Layer の違いがわからんとか)開発を続けていました。最近になってiOS/Androidとのネイティブ連携ではまったり、iOSだと問…
Cocos2d-xにはプラグインという仕組みがあり、それを使えばTwitter連携やら広告表示なんかが割と簡単に使えるようになります。 Cocos2d-xのプラグイン導入の方法は以下のサイトが参考になりました。 Cocos2d-x Plugin-XでObjC/Java連携 自分の環境だと上記の…
結構前に読んだストーリー作りのための本です。 ストーリーを作るためのテクニックについて書かれています。著者はただ闇雲に物語を書くのではなく、セオリーに則ってストーリーを組み立てると未経験者でもそれなりのストーリーを作ることが出来ると主張して…
1月17日に「プロの力を身につける iPhone/iPadアプリケーション開発の教科書」の改訂版が発売されました。改訂内容は以下の通りです。 iOS 8.1とXcode 6.1に対応 内容をすべて見直し文章を大幅に修正 新プログラミング言語 Swift に対応 よろしくお願いしま…
Cocos2d-xでIsometric Mapを使ったゲームのサンプルを作成していたところz-order(zorder, zindex, z-index)の指定で結構ハマったのでメモです。 Isometric Mapというのはよくある2.5D的な1マスが菱形になっているマップのことです。こんな感じのやつです。 I…
最近 Cocos2d-x で2Dゲームを作ってます。 スプライトに名前つけて追加したあと、その名前のスプライトを検索して削除する時にハマったのでメモです(Cocos2d-x のバージョンは3.3です)。 まずはダメなコードから bool HalloWorldScene::init() { // nameとい…
先日こちらの記事にも書きましたが「Hedgehog Drive」というゲームをリリースしました。このアプリのゲーム部分は SpriteKit を使って実装しました。初めて SpriteKit を使ったので備忘録的にこのフレームワークの使い方をまとめてみました。 2D ゲームで使…
こちらの記事にも書きましたが先日「Hedgehog Drive」という2Dのゲームをリリースしました。 ハリネズミと遊ぼう!指でなぞるだけのシンプルな2Dゲームをリリースしました アプリと違ってゲーム開発は初めてということもあり、苦労したところが多かったので…
先日、iOS向けの2Dゲーム「Hedgehog Drive」をリリースしました。 画面を指でなぞって丸いセルを消していくシンプルなゲームです。アプリは無料で広告表示もありません。 4才の娘がルールを理解して遊べるようにゲームのバランス調整をするのが大変でした。…