でらうま倶楽部

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

opengl

レイトレ合宿4!? 無事完了

photo1

コード書いとる??

レイトレ合宿4!? も無事完了!! 今回もめちゃめちゃレベルが高くとても有意義な時間を過ごせました。

とにかく景色が最高!! 道端にごくフツーにハイビスカスが咲いとるとか、ヤシの木が生えとるとか、露天温泉から海が見えるとか、肉眼で天の川が見られるとか、人生初の八丈島は発見の連続でした。

photo2

「海面のスペキュラの感じがたまらん」「さすが南国は彩度が高い!!」「すっげぇ・・ハイビスカスの赤が飽和しとる!!」とか秀逸なコメントの連続でみなさん勉強熱心ですよね。

photo5

拙作は惜しくも入選を逃しまして、次回こそはと雪辱を誓うのであった・・・。

photo3

さて詳細は公式サイトを見ていただくとして今回拙作はレイマーチングによるレンダリングを自作しました。

photo4

また、新たな試みとしてマルチスレッド化をOpenMPにお任せしてみたのですが、Widnows版はMSYS2+MinGw64のgccが対応していたのでよし、OSX版はXcode付属のclangが対応・・・していない!!

ので、Homebrew経由でgcc6.0.2をインストールしました。ただ標準だとOpenMPに対応していない(標準ライブラリのマルチスレッド対応と喧嘩する)ので
 
brew install gcc --without-multilib

として、もちろんフルビルド!! あはははは!!!!

これで事なきを得ました。


ではまた次回!!

Cinder 同梱の boost を1.57に差し替える

icon

コード書いとる??

Cinderに夢中です。
Cinderに夢中なのです。

そんなCinderはboost同梱です。だが同梱されとるboostが1.55とちと古い(この記事を書いている時点では最新版は1.57)。やっぱ新しいの使いたいよね〜

でもiOS向けビルドとかどうやってやれば...

と思ってCinder公式サイトのドキュメントを眺めてたらboostのビルドについて書いてあるじゃないですかー

というわけで、試行錯誤しながらOSX版 & iOS版のCinderで使うぶんだけboost1.57をビルドした記録。オマケでWindows版のビルド手順も。

ますはboost1.57を公式サイトからゲット。

ダウンロードしたboostのカレントフォルダで以下を実行
./bootstrap.sh --with-libraries=filesystem,system,date_time

続いて、同じ場所に生成されたproject-config.jamに以下を追加
using clang : osx
: xcrun clang -arch x86_64 -stdlib=libc++ -std=c++11 -mmacosx-version-min=10.7 -fvisibility-inlines-hidden ;
using clang : ios
: xcrun clang -arch armv7 -arch armv7s -arch arm64 -stdlib=libc++ -std=c++11 -miphoneos-version-min=5.0 -fvisibility-inlines-hidden -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/ ;
using clang : ios_sim
: xcrun clang -arch i386 -arch x86_64 -stdlib=libc++ -std=c++11 -miphoneos-version-min=5.0 -fvisibility-inlines-hidden -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/ ;

追加したら以下のコマンドを実行
./b2 -a -j4 toolset=clang-osx link=static stage

カレントのstage/libにできた.aファイルを、Cinderライブラリのフォルダ内のlib/macosxにコピー

続いて
rm -rf stage
./b2 -a -j4 toolset=clang-ios link=static stage

カレントのstage/libにできた.aファイルを、Cinderライブラリのフォルダ内のlib/iosにコピー

さらに
rm -rf stage
./b2 -a -j4 toolset=clang-ios_sim link=static stage

カレントのstage/libにできた.aファイルを、Cinderライブラリのフォルダ内のlib/ios-simにコピー

boost1.57のビルドは以上でおしまい。あとはboostフォルダをCinderライブラリのフォルダ内のboostにコピーして完了!!

最後にCinderのビルド
Cinderのライブラリは、Cinderライブラリのフォルダ内のxcode/fullbuild.shを実行すればよいだけ。
ただし、その前に同じ場所にあるcinder.xcodeprojを開いて、アーキテクチャとかSDKとかを今風に設定しなおす必要があります。


オマケ
Windowsでのboost1.57のビルド
開発者コマンドプロンプト for VS2013を起動して、boost1.57のフォルダへ移動。んで、いかのコマンドを実行。
bootstrap
b2 link=static runtime-link=static variant=debug runtime-debugging=on --with-filesystem --with-date_time --with-system --with-thread
b2 link=static runtime-link=static variant=release --with-filesystem --with-date_time --with-system --with-thread

あとはだいたいOSX版と同じw


ではまた次回!!

iOS7のarm64対応でやったこと

photo3
今日もコード書いてる??

先日リリースした拙作『ういろう』を取り上げて頂き恐縮です。

iをありがとう

AppLibrary

あぷまがどっとねっと

Appliv

どれも素晴らしいレビュー記事で、とても励まされます!!

で、現在さっそくiOS7に正式対応中なのですが…ほとんどUIKitとかARCとか使っていなくてC++で書いてる拙ソフトでもやはりいくつかiOS7対応の罠にハマっていたので、簡単にまとめておきたいと思います。


ステータスバーを非表示にする
 
Xcode5 + iOS7 SDKでビルドすると、これまで表示されていなかったステータスバーが表示されてします。これは、info.plistで以下のように「View controller-based status bar appearance」を追加すれば消せます。
 
photo1


NSInteger/NSUIntegerの値が64bit値になった

typedef long NSInteger;

NSIntegerはもともとこんな感じに定義されてて、これまではlongとintが同じ「32bit」でした。ですが、arm64ではlongが64bitになっています。ですのでビルド時に「longからintに変換されてるよー」と警告されます。ゲームのスコア計算くらいなら問題ないかもですが、これがUITouch:hashだと問題になってきます。
うっかり自分のコードでハッシュ値をint型の変数に保存していると、arm64ではハッシュ値がlong→int変換され、識別に必要な情報が失われてしまいます。32桁のシリアル番号の上16桁が無くなるみたいなもんです。これではタッチの判定でハッシュ値が同じかどうかの比較ができなくなるので直しました(汗)

NSIntegerの配列からint型の配列へ直接memcpyしてるのもヤバいよね??

NSInteger hoge[4];
int fuga[4];
memcpy(fuga, hoge, sizeof(hoge));
// ↑arm64ではhogeは32バイト、fugaは16バイトになる

しかもこれ、ビルド時に警告が出ないという…orz

あとは、
 
NSInteger hoge = 10;

NSLog(@"%d", hoge);

これもarm64だと警告が出るので
 
NSInteger hoge = 10;

NSLog(@"%ld", (long)hoge);

しばらくはこう逃げたほうがいいのかなぁ…


arm64対応とiOS5対応…どっち取る??両方!!

追記:AppStoreからダウンロードした32/64bit同梱アプリがiOS6では動作しないとの報告があるので、しばらくはこの方法は使わないのがよさそうです

Architecturesにarm64を含めると、「ビルド対象をiOS7以降にするよ??」というダイアログが表示され、iOS Deployment TargetがiOS7に変更されます。「いやいや、アプリはiOS5でも動くようにしたいんだけど…」と思って色々試行錯誤した結果、以下のように設定したらうまくビルドできましたー。

photo2

これ、オープンソースなライブラリとか、自作ライブラリとかにも適用してビルドする必要があると思う(自分がそうした)


iOS7は色々と大きく変わって戸惑ってますが、「変化に対応していくのも自分を鍛えるいい機会」と思って楽しんでます。


ではまた次回!!

iBooks でも『チュートリアル形式で始めるOpenGL[2D編]』

Dropboxの仕様変更により、ダウンロードデータへのリンクが切れております。
ご不便をおかけして申し訳ありませんが、以下のリンクからダウンロードしてください。

お待たせしました。
ibooks

『チュートリアル形式で始めるOpenGL[2D編]』

iBookstore版も出版されました。「OpenGLの基礎をC++のチュートリアルを通して手取り足取り」教える内容の本です(苦笑)
写真 2013-06-11 14 51 25
iBooksの「スクロールモード」だと、サンプルコードがページ分割されずに読めるので実に快適。とくにiPadは画面も広くて最高。これ、Kindle版にもあるのかな?

ただし、epubの言語を「en」にしとかないと、このスクロールモードの方向がiPadで横になっちゃうのよオロロン…めっちゃ読みづらい…。あと、表示に使われるフォントもなんか変。これ、バグなのか仕様なのか…アップルに問い合わせてみます。

とりあえず「内容は日本語だけどepub的には英語」というアカン状態で出版できてしまった前例を作ってしまったの…か。審査時間はだいたい1週間程度。まあそんなもんだよね。

という訳で、「ゲーム作るんならC++でOpenGLだよね〜」と感じてる人は、

『チュートリアル形式で始めるOpenGL[2D編](Kindle)』
『チュートリアル形式で始めるOpenGL[2D編](iBooks)』

を手に取ってみてください。


ではまた次回!

個人で電子書籍を出版する為に私がした事。

Dropboxの仕様変更により、ダウンロードデータへのリンクが切れております。
ご不便をおかけして申し訳ありませんが、以下のリンクからダウンロードしてください。
ibooks

電子書籍を出版しました。

電子書籍を出版したんです!(大事な事なので二回言いました)


今やインストールされていない端末を探す方が難しいくらいに普及しているグラフィック技術「OpenGL」
CやC++でプログラミングしてやると、柔軟で非常に高速に動作する、まさにゲーム向けな技術なのですが…

なのですが!

C++でOpenGL2.0以降にも対応した参考書がなかなか見つからなかったので書いてみました!まずは2D描画機能に絞った16のチュートリアルを通して、OpenGLの仕組みを学んでみましょうね。という感じの「2D編」です。

あなたがゲーム制作を始めるきっかけになれば。

さて今回も先人たちのネットの情報にたいへんお世話になったので、そのお礼も込めて出版までの流れを自分なりにまとめてみました。もし「オレも出版するぜ!」と考えているあなたの助けになれれば幸いです。あ、私の環境はOSXですのでそのへん考慮して読んでみてください。

あなたが電子書籍で出版するきっかになれば。 


・原稿を用意
今回は、HTML+CSSで原稿を用意。『emacs+org-mode→html』という変態環境ですので詳細は割愛しますが、ごく簡単なタグの使用とcssによる構成と装飾を少し。自分の制作環境では、htmlに書き出す時に目次を自動的に生成してくれるので、
・Kindle版は目次あり
・iBooks版は目次なし
の設定で書き出しました。

・表紙
1500x2000 で作成
KindleはTIFF形式を要求されますよー。

・原稿をepub形式に変換
calibreというアプリを利用。大雑把な使い方はネットを探してみてください。
 
目次はこの設定で変換。
photo1

あと、自分の環境では強制的にh1タグによるタイトルが追加されてしまっていたので、それを除去するようにも設定。
photo2

・Kindle版
  本を右クリックして表示されるメニューから「書籍の調整」を選択
photo3

続いて「書類の分解」を選ぶと、epubとしてパッケージされたファイルの内容がFinderで表示されます。
photo4

そしたら、「content.opf」の内容の一番最後に、目次の情報を追記。

<guide>
  <reference href="目次のhtmlファイル" type="toc" title="Table of Contents"/>
</guide>

「目次のhtmlファイル」には適時目次のhtmlファイルを指定してください。それができたら、「書類の再構成」でepubに再パッケージします。
photo5

これで、Kindle用のepubファイルができました!実機やKindle Previewerなどで確認してみてください。

・iBooks版
フォント指定が有効になるよう、以下の名前のテキストファイルを作ります。
 
com.apple.ibooks.display-options.xml

内容
<?xml version="1.0" encoding="UTF-8"?>
<display_options>
<platform name="*">
<option name="specified-fonts">true</option>
</platform>
</display_options>

これを、書類を分解して、META-INFの中に放り込んで再構成。これでiBooks用のepubファイルができました!iTunesのブックに放り込んで、実機で確認するなりしてみてください。


・epubの正当性をチェック
ファイルを提出する前に、epubcheckを使ってepubの中にエラーが無いかチェックしておきましょう。配布されているファイルはJavaなので、ターミナルから
java -jar epubcheck-3.0.1.jar hoge.epub
こんな感じに実行してください。

・KDPに登録
ポータルはここ〜。クレジットカード必須?だったかな。銀行口座の情報とか登録します。
公式ヘルプが超充実してるのでよく読んでね。

それが済んだら自分の本棚の「新しいタイトルを追加」から先に進み、あとは必要項目を埋めるだけです。
photo6
現在ISBN無しでも出版できてしまうので、あとはアチョーっと提出すればオッケー!
Kindle版は提出後5、6時間でめでたく出版されました。早い。

・iBookstoreの場合
こちらが非常に参考になりました。
もし、AppleIDをiOSやOSXの開発ようアカウントとして使っている場合、そのアカウントは出版用には使えません。なので、新規にAppleIDを作り、さらにiTunesStoreで支払いの登録も行っておいてください。ちなみにGmailの「エイリアス機能」を使えば、新たにメールアドレスを作る必要はなくて

メインアカウント:  hoge@gmail.com
iOS開発アカウント: hoge+ios@gmailcom
出版用アカウント:  hoge+epub@gmailcom

と、「+」の後ろに適当な文字をくっつけたのは、いっけん別のメールアドレスながら、どの宛先に送ったメールも「hoge@gmail.com」に届くというナイスな仕様がございます(今回使ってみた)

んで、登録してiTunesConnectへログイン。KDPと同じく、銀行口座の情報とか諸々登録したら、専用アプリiTunes Producerからepubデータをアップロードして完了です。
photo7
 
iBooks版は現在レビュー中。ドキドキしますね!


オマケ

・EIN取得はこんな感じ
こちらこちらがたいへん参考になりました!

・「フォームW-8BEN」を提出
公式ヘルプに書いてあります〜
 
• 個人 -- 租税条約に基づく軽減税率の適用を求める場合 
• 法人 -- 租税条約に基づく軽減税率の適用を求める場合

この2つの例を見ながら書類を埋めましょう。

法人の場合はこんな感じ。個人の場合は

2 法人または組織のある国名
  空欄
3 受益者の種類
  Individualにチェック
9 私は以下を証明します(該当するものをすべて選択)
  aとbのみチェック

最後、署名者の資格
  オレはSelfと記入

※必ず種類上部の空白に「KDP出版者コード」を記入しておく事!

これをAmazon本社へ郵送。数日後にメールが届く…ハズ(現在進行中)

まあそんな感じで個人が手軽に出版できるなんて、いい時代になったもんです。


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

「チュートリアル形式で始める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コード
  • ライブドアブログ