Python3 3Dゲームプログラミング(Pythonではじめる3Dゲーム開発)

2020年の12月に拙著「Python3 3Dゲームプログラミング」を出版しました。

https://www.kohgakusha.co.jp/books/detail/978-4-7775-2129-6

ところがなぜか、いくつかのオンライン書店で「Pythonではじめる3Dゲーム開発」というタイトルに間違えて登録されているようです。

理由はわかりませんが、両者とも同じ「Python3 3Dゲームプログラミング」の画像が使われているはずなので、確認してご購入してください。

ゲーム開発ではじめるPython3

工学社から「ゲーム開発ではじめるPython3」を出版しました。

ただ問題があって、工学社のサポートページにある「PygameSamples.zip」で解凍したフォルダ名の名前の変更が必要です。

https://www.kohgakusha.co.jp/support/pygame/

解凍して作成された「PygameSamples」フォルダ名を「PyGame」フォルダに名前を変更してください。

Webサイト「macOS研究所」日本語版・英語版の公開

ゲームやツールやデモのmacOSアプリやiBooks電子書籍が無料でダウンロードできるホームページ「macOS研究所」「macOS Lab」を公開しました。

今まではiOSアプリと一緒にWebサイト「Cyberdelia.net」で公開していたものを分離しました。
ホームページの設計は、ジャンルごとに1つのテーマに特化したコンテンツがいいと聞いたので。まあmacOSで動くiBooks電子書籍はmacOSアプリと一緒だと考えています。

Metalライブラリ「RoxigaEngine」サイト公開

「macOS」の「Xcode」の「Objective-C」言語で「Metal」プログラミングする3Dライブラリ「Roxiga Engine」とそのサイトを公開しました。


https://engine.roxiga.com

3Dデータは「Autodesk FBX」形式をRoxigaEngine専用形式に変換して表示できます。
FBXファイルは、ボーンアニメーションした1オブジェクトで1マテリアル1テクスチャが必須です。
この変換には「macOS」アプリ「FbxToCSharp」を使います。

「RoxigaMain.mm」ファイルにコードを記述するだけで、3Dゲームなどの3Dコンテンツが作れます。

できればこのRoxigaEngineの入門書を執筆できたらと思っています。

Xamarin.iOSのMetalで3Dプログラミング

「Visual Studio for Mac」で「Xamarin.iOS」の「Metal」をいじっています。

でも「FBX SDK」は「C++」なので、「Cocoa」の「Objective-C」で、FBXファイルを「CSharp」ファイルにモデルデータとアニメーションを配列として書き出すところまでプログラムができました。

困ったところは、「シェーダー」でコードからボーンの番号を「int」型で送ったらうまくいかず「float」型でボーン番号を送ったらうまくいきました。

また「SetVertexBuffer」の「offset」を変更することでアニメーションさせているのですが、オフセットのサイズに「sizeof(float)」の値も乗算してやる必要がありました。

また「DirectX」や「OpenGL」ではデフォルトでZバッファが効いていましたが、「Metal」は常にZバッファを上書きする
DepthCompareFunction = MTLCompareFunction.Always,
だったのを、既存のZバッファより手前に描かれるときにだけ描画する
DepthCompareFunction = MTLCompareFunction.Less,
に変更するのに気づきませんでした。

「Xamarin.iOS」で「Loop – 簡易ループシーケンサー」開発

超シンプルな作曲ツールのiOSアプリ「Loop 簡易ループシーケンサ」をApp Storeで公開しました。


https://xamarin.vixar.jp/ios/loop.html

以前までは、iOSとAndroidとWindowsでクロスプラットフォームする「Xamarin.Forms」を使ってアプリを作っていましたが、今回はiOS固有の機能を100%使える「Xamarin.iOS」を使って作成しました。
もちろんプログラミング言語は「C#」です。

今度は「Xamarin.iOS」と「Xamarin.Forms」のiOS固有の機能を使った入門書を執筆しようと、簡単なサンプルを開発しました。

Segmented Control FormsPluginとAndroidのバージョン

「NuGet」で取得できる「Segmented Control for Xamarin Forms 1.1.0」ですが、「Android API 15+」で使用できるとありますが、どうやらデバイスによっては動作しないようです。

segmentedcontrol
https://github.com/alexrainman/SegmentedControl

僕が試したのは「Android4.2(API 17)」の「Galaxy Nexus」ですが、エラーが出て動作しませんでした。
でも「Android 6.0(API 23)」のエミュレーターでは動作したので、「これは端末のバージョンに問題があるのでは?」と考え、親の「Android 4.4(API 19)」と「Android 5.0(API 21)」で試すとどちらも実行できました。
ただしAndroid 4.4では若干絵がずれていますが。
やはりAndroidも新しい機種を使わないと時代に乗り遅れるなあ、と思った次第です。

iPhone実機でデバッグ中にデバイスが動かなくなった場合

iPhoneをMacにUSBで繋いで、Xamarin Studioで開発中に、Debugで実機で動作テストしている最中にUSBケーブルを抜いてしまうと、iPhoneデバイスが真っ暗になって動作しなくなる可能性があるようです。
多分Xcodeでも?
その場合、もう一度iPhoneをUSBコードで繋いで、デバッグビルドしてみてください。
僕の場合はそれでiPhoneが正常に動きました。

Xamarin.Formsで作ったiOSゲームで初めてappStoreに登録された

screen322x572

OSX版の「Xamarin Studio」で作ったiOSアプリ「UIゲーム」をiTunes Storeに登録しました。
https://itunes.apple.com/us/app/uigemu/id1138941515?l=ja&ls=1&mt=8

以前音だけのゲームが審査でリジェクトされたので、今回は絵が全く無い(ただしアイコン画像はあり)ゲームなのでリジェクトされるかもしれないと覚悟していました。
ゲームの内容は、Xamarin.FormsのUIパーツだけを使ったクイズに似たゲームです。
「スイッチUIをOffにしろ」など操作する命令が出されるので、全ての指令を操作し終わるのにかかった時間を競います。

またもちろんXamarinはクロスプラットフォームなので、Android版「UIゲーム」もGoogle Playに登録しています。
https://play.google.com/store/apps/details?id=com.roxiga.uigame

Xamarin.Formsの機能だけで作って、それを入門書で解説するために作ったミニゲームです。なのであまり面白くはないですが、読者が参考になる技術を解説するように編集者には言われるので。
ところでXamarinStudioからはValidationに失敗しました。そこでXcodeのOrganizerを使ったら正常にアップロード完了しました。

iOS・OSXサイト「Cyberdelia.net」の英語版

OSX上で作った、iOSアプリ、iBooks電子書籍、OSXアプリがダウンロードできるホームページ「サイバデリアドットネット」の英語版を公開しました。


https://english.cyberdelia.net/

僕は今までに40サイト以上Webデザインしてきたのですが、今年中に50サイトを越えるように目標を立てたので、月に1サイトずつ作れば目標を達成できると考えました。

でもネタがそんなにあるわけではないので、とりあえず今まで作ったWebサイトの英語版を作ればいいと思いつきました。

だけど既に作ったWebページのメンテナンスやコンテンツの充実も視野に入れたいです。