ゲーム画面を覆うようにforループでNSMutableArrayを生成する

陣取りゲームとして目論む処のゲーム主画面に於いては 陣地の遣り取りの判定のために画面全体を区切る必要があります。 区切った画面各々にプレイヤーの陣地か如何かの判定フラグを持たせ 更には他にも様々に応用して用いる使い勝手の良い 配列 として扱う腹積もりです。 この際ゲーム画面の幅に合わせて区切りを柔軟に保たせるために 可変配列を用いることにします。

可変配列オブジェクト NSMutableArray の概要については iPhoneアプリ開発の虎の巻 のページ NSMutableArray などが参考になるかも知れません。

"ゲーム画面を覆うようにforループでNSMutableArrayを生成する" の続きを読む

Scene受け渡し時の画面サイズの初期化

キャラクターが空を飛んでいるのを表現するのに iPhoneの画面を超えて縦横無尽に飛び回る状況を作り出したい為に上方に上限を設けぬ実装を鑑み Spritekitに於ける座標系を考察したのが以下列挙する本ブログの両記事です。

処が此処に問題の内在が発覚しました。 時折デバッグの為に変数を出力して検討するのは誰もが実行する処でしょう。 2017年5月5日記事 SpriteKitに於ける時間軸に基づく背景グラデーションの独自実装 に記したようにゲームに於いてキャラクターが上空に飛翔すればするほど 宇宙空間に近いた表現で空色を濃く染め上げるのに背景色を変化させたのですが 此の時必要なのはキャラクターの縦軸の位置変数であるのは言う迄もありません。 其の変数とした honmaruPosYRatio の算出法は以下コードとなります。

"Scene受け渡し時の画面サイズの初期化" の続きを読む

SpriteKitに於ける時間軸に基づく背景グラデーションの独自実装

手元の開発ゲームに於いてキャラクターの縦横無尽に動き回る 背景の空部分の広大な空間を表現するためにグラデーションを用いたく考えました。 青空は単に一様に青いのではなく 青さも位置取りに基づいて薄っすらと変化させたい要請が発生した訳です。

其処でXcodeでグラデーションを描画する実装が必要になり 大凡簡単なものだろうと高を括っていたら案に相違して 其れ程お手軽に実現出来るメソッド等はどうやら用意されていない様です。

SpriteKitに関する情報は余り多くなく 其れでこそ本ブログも幾許かの役立つ情報を提供出来るかも知れない所ですが 残念ながらSpritekitでは現状背景グラデーションに用意されたメソッドは見当たりません。 しかし UIView では幾つか方法がネットに共有されているのを見付けましたので下にリンクを貼り置きましょう。

"SpriteKitに於ける時間軸に基づく背景グラデーションの独自実装" の続きを読む

Spritekitの物理空間で衝突を発生させる為の必須処理と衝突判定とすり抜け

アップル社がiPhoneアプリ開発に提供する2Dゲーム用フレームワーク SpriteKit を開発アプリに適用すればゲーム画面内に物理空間を生じせしめ 内部でオブジェクト同士の衝突の検出を可能にします。

処でアップル社が提供する統合開発環境、 IDE(Integrated Development Environment) 足るXcodeでは補完機能が随分重宝します。 特にスティーブ・ジョブズに依って齎された NEXTSTEP を継承するアップル社の開発環境では長くなり勝ちなメソッド名や変数名などを扱うには 補完機能がないとなると実に不便に感じるものです。

さてSpritekitを利用して開発するゲームに於けるコーディングでは 利用するクラスファイルのヘッダファイル冒頭に以下記述が必要になるのは周知でしょう。 先ずはSpritekitをインポートしなければならないのは言わずもがなです。

"Spritekitの物理空間で衝突を発生させる為の必須処理と衝突判定とすり抜け" の続きを読む

SwiftのPlaygroundsを使ってみた

下の図は手持ちのiPad Pro 9.7インチ版のApp Storeで Swift Playgrounds で検索した結果表示です。 どの環境でも此の如く先ず真っ先にアップル社が提供するiPad専用アプリ Swift Playgrounds が表示されるでしょう。

App Storeに於けるSwift Playgroundsでの検索結果画面

アップル社から提供されるアプリで尚且つ無料でもあり躊躇うことなく入手インストールします。 なお Swift Playgrounds の詳細説明画面を開けば下図のように 何やら楽しげな内容を垣間見せるものとなっています。 レートが 4+ 、即ち制限なく年少者にも問題なく見せられる設定となっており アップル社としては積極的に次代を担う子供達に使用を促すものとして提供されている様子が伺えるでしょう。

"SwiftのPlaygroundsを使ってみた" の続きを読む

Swiftに於ける変数の文字列化の評価の違い

プログラムをしていれば思わぬ結果に右往左往するのも多くあります。 其れはiPhoneアプリ開発に於いても例外ではありません。 以前では其の開発言語は Objective-C の一択であり自らもアプリを幾つか当該言語で以て記述してリリースしました。 今は多くアップル社から提供された新開発言語 Swift で書かれるアプリも多くなってきました。

開発アプリのヘックス画面

Swiftは型に厳格な言語で更には思わぬバグを防ぐために 何の値をも持たない nil (null)を許す際には当該事項も型として用意されるものです。 optional (オプショナル)型と称すものですが なかなか理解が難しく正直自身も恥ずかしながら正確な部分迄把握は出来ておらず 都度都度対処療法を施している様な状況です。

さて今回落とし穴に陥ったのは変数の文字列化に於いてでした。 既にリリースのなっているアプリをバージョンアップしようと機能追加するに於いては 変数の宣言も形や場所を変えざるを得なくなります。 従来は変数の宣言を3次元配列から一義に代入していました。 以下の如くです。

"Swiftに於ける変数の文字列化の評価の違い" の続きを読む

Spritekitのタッチイベントの検出と長押し及びタップ継続の検出

風船を膨らませているゲーム画面
風船を膨らませているゲーム画面

ファミコン以来ゲームはコントローラーを以て操作するのが常道でしたが iPhoneに代表されるスマートフォンの普及に連れタップやスワイプ、フリックなどで操作する必要が出来しゅったいしました。 ゲーム開発に限りませんがiPhoneに於ける開発では従って 其れ等操作の検出が必須となります。

タッチの検出

先ずタップではタッチを検出し、其の位置を検出し、 タッチの時間が閾値内であるならタップとするためタッチしている時間を検出する必要があるでしょう。 当該案件に関する有用な情報を昨日2017年3月27日配信した記事 -(void)update:(CFTimeInterval)currentTimeメソッドに於ける任意時間のコールバックメソッド でも参考にしたiPhone及びiOSゲームアプリ開発のチュートリアルサイト RAYWENDERLICH TUTORIALS FOR DEVELOPERS & GAMERS を参考にします。 現在Swiftをメインに SpriteKit Swift 3 Tutorial for Beginners が配信されていますが本稿では2014年4月12日の試行に於いて現在アーカイブされている Objective-Cで書かれた情報ページを参考にします。

Sprite Kit Tutorial for Beginners "Spritekitのタッチイベントの検出と長押し及びタップ継続の検出" の続きを読む

-(void)update:(CFTimeInterval)currentTimeメソッドに於ける任意時間のコールバックメソッド

ゲーム開発に時間の処理が欠かせぬものとしてiPhoneアプリ内で 時間は如何様に扱われるのかの検証記事として本ブログに2017年2月19日に配信したのが -(void)update:(CFTimeInterval)currentTimeメソッドに於けるシステム時間の参考出力と考察 でしたが此のメソッドは任意の単位時間毎にコールバックメソッドを呼び出すにも応用が効きます。 其の様な応用を用いればこそ此のメソッド及び呼び出されるコールバックメソッドにて キャラクターのリアルタイム移動、 アイテムの一定時間毎の出現、 イベント起動、 等のゲームならではの機能を実現せしめ得ます。

関してはiPhone及びiOSゲームアプリ開発のチュートリアルサイト RAYWENDERLICH TUTORIALS FOR DEVELOPERS & GAMERS では以前日本語で有益な情報を提供してくれていましたが今は当該記事は残念ながら削除されている様です。 但し英語版が当時のObjective-Cでのコード記述から装いも新たにSwiftのコード記述に変えて 現在でも用意されていますので下にリンクを貼り置きます。

SpriteKit Swift 3 Tutorial for Beginners

またObjective-Cでの記述もアーカイブされているので其方も下にリンクを貼り置きましょう。 本記事に記載されるコードは単位時間毎の処理を実装した当時 2014年4月12日の試行錯誤に習い最後のコードを除き基本的には以下のページから引用するものです。

"-(void)update:(CFTimeInterval)currentTimeメソッドに於ける任意時間のコールバックメソッド" の続きを読む

MacBook Pro 2016にSassとCompassを導入する

トラブルは繰り返されるものとて 己れの遭遇した不都合のブログへの配信は己が身にも都合良く機能し 延いては少しは他者のお役にも立とうかと言うものにて 以前は2016年8月5日に本ブログに投稿した記事 Windows10機へのCompassの導入とDEPRECATION WARNING問題 再び と言う訳で情けは人の為ならずと言った趣がある本記事は 今や手元の環境に必須となりし Sass 及び Compass を先日入手した新機 MacBook Pro にも導入しようとした際の顛末です。

スターバックス珈琲店で開いたMacBook Pro 2016
スターバックス珈琲店で開いたMacBook Pro 2016

尚Rubyで書かれた Sass、Compassを導入するには事前に Rubyの走る環境を整えねばならない のは言う迄もありません。事前の環境が整った後ターミナルを起動し 先ずはRubyGemでインストールされているプログラムリストを確認します。

"MacBook Pro 2016にSassとCompassを導入する" の続きを読む

MacBook Pro 2016にHomebrew、rbenvを導入してシステムと別バージョンのRubyを使用する

FreeBSD に由来する MacOS Sierra には初めからプログラム言語 Ruby が備わっています。 ただ少しばかりバージョンが古いものなので新しいバージョンに置き換えたいものですが 何もごっそり丸さら置き換えなくとも新しい別バージョンを導入して並立出来得るものならばさせたい処です。 Macには固より此の様な場合に rbenv なるRubyのバージョン管理システムを利用するという確立された方法が用意されています。 此のrbenvを導入するには更にまた Homebrew なるMacのパッケージ管理システムが用意されています。 Rubyのバージョンを幾つか並立させる為には此れ等を逆から導入していく段取りとなります。

従って先ず手元の MacBook Pro 2016 にHomebrewを導入します。 インストールにはネットに繋がった状態でMacのターミナルを起動し Homebrewの公式サイト に用意される一行 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" をコピペして実行するだけで宜しいとされています。 手元の環境で以下の如く入力、実行しました。

Last login: Sat Mar 4 11:45:42 on ttys000
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然る後要求されたMacBook Pro 2016のパスワードを入力すると以下の如く出力されました。

==> Installation successful!

==> Homebrew has enabled anonymous aggregate user behaviour analytics.
Read the analytics documentation (and how to opt-out) here:
http://docs.brew.sh/Analytics.html

==> Next steps:
- Run `brew help` to get started
- Further documentation:
http://docs.brew.sh
Run `brew doctor` before you install anything
Run `brew help` to get started

インストール成功の表示の後に上に赤字で記した様に出力にされるインストール診断とヘルプ表示を実行し、 バージョンを確認してみればどうやら首尾良く運んだのが分かります。

$ brew doctor
Your system is ready to brew.

$ brew help
Example usage:
…(ry

$ brew -v
Homebrew 1.1.10
Homebrew/homebrew-core (git revision 8f25; last commit 2017-03-04)

Homebrewの準備が整えば次はrbenvの導入です。 以下ではRubyのバージョンを確認した後、 Homebrewを用いてrbenvをインストールしています。

"MacBook Pro 2016にHomebrew、rbenvを導入してシステムと別バージョンのRubyを使用する" の続きを読む