だらだら〜自由自在〜

インディーゲーム制作チーム GAME GABURI でプログラム担当してます

Swiftでなんかゲームを5

swiftでvoid*でバッファを確保しつつ、任意の構造体にキャストして値を書き込む。ということをやってみた。頂点バッファなどにつかいたい

struct Int3 {
    var x: Int = 1
    var y: Int = 2
    var z: Int = 3
}
var allocSize = sizeof(Int3)*10
var usp = UnsafeMutablePointer<Void>.alloc(allocSize)
for var i:Int=0; i<10; i++ {
    var tmp = Int3()
    tmp.x = i
    tmp.y = i
    tmp.z = i
    var usptmp = UnsafeMutablePointer<Int3>(usp) + i
    memcpy(usptmp, &tmp, UInt(sizeof(Int3)))
}
for var i=0; i<10; i++ {
    var usptmp = UnsafePointer<Int3>(usp) + i
    var i3 = usptmp.memory
    print("\(i) : \(i3.x),\(i3.y),\(i3.z)")
}
usp.dealloc(allocSize)

書き込みで、memcpyつかってるけど、直接 usptmp.memory.x でアクセスしても良い。
てか、はてな記法ってswiftのSyntaxHilight対応してないのか…?

Swiftでなんかゲームを3

Swiftでなんかゲームを2

  • Swiftの仕様もよくわからないけど、SpriteKitの仕様のほうがもっとわからない。
    • でもSpriteKitで頑張る!
  • Spriteアニメーションをしたい。
  • Swiftの仕様がガンガン変わっていたお陰で、ネット上の以前の言語仕様に基づいて書かれた記事を見て書いてもビルド通らないとか...。今から入った人間だと状況がわかってないからキツイ
  • Floatにキャストする時でもやもやする。
    • intとCGFloatの値が混ざった式でintをFloatにキャストしたらエラー。 SwiftでObjCも利用したアプリ開発のときにハマったこと - Qiita こちらの記事にあるようにCGFloatでコンバージョンすればOKだった。これすごいモヤモヤする。Architectureにarm64含めてビルドしたからCGFloatがDoubleのエイリアスになっているためだと思うが。arm64ってなんやねん。
      • 64bitアーキテクチャか...。てことはもし切るとしたらarmv7とかになるのかな?(そっちのほうが古いやつだと思うので)となるとCGFloat==Doubleになるわけでめっちゃキモくない?って思ったりするわけだけど。
  • Spriteアニメーションできた。 アニメーション - SpriteKit.jp こちらの解説をSwiftで書きなおしただけ。
  • とりあえずGithubに上げる
  • ボタンをおいて、それで自機移動してみよう
    • ボタンはSkLabelNodeで文字を置いて、touchBeganメソッド中でNodeとの衝突をチェックするやり方なようだ。
    • LabelのPositionは、スクリーンの左下が原点なようだ
      • Nodeのhorizontal/verticalAlignmentを調整しても思ったような座標に表示できない...。SceneのFrameサイズが1024/768とかなってるのでそれな気がする。Sceneのsksを編集したいが方法がわからない・・・。ちょっと他のゲームのコードをみてみよう
      • 何かで fullstackio/FlappySwift · GitHub こちらが参考に良いと聞いた気がするのでこれでGameScene.sksがどうなってるのかみてみる
        • ビルドエラーでるなぁ。Nullable(という言い方で良いのか。。。)でエラー。!をつけてやるとOKぽいが数がおおい。
      • 結局良くわからんかった;放置しよ

Swiftでなんかゲームを

Swiftで何かゲームを作ってみたい。
何か。というかネタは一応あるんだけど、始めに習作として一つ簡単なのを作ってみたい。
例によって爆裂カブトムシで・・・。


XcodeGM seedをインストールしてGameのスケルトンプロジェクトを開いてみたけど分からない部分多い...。
やっぱりiOSアプリをObjectCとかXcodeでガリガリ作ったこと無いのでそのへんのハンディキャップがでかいなぁ。Swift言語自体も仕様知らないけど。言語もライブラリも何も知らない状態でゲーム作ってみるって中々チャレンジングでいいですねぇ。ちゃんと続くのかが問題だけど。

いいなーと思ったUnityPluginメモ

Hierarchy2 - https://www.assetstore.unity3d.com/#/content/14032
Build Report Tool - https://www.assetstore.unity3d.com/#/content/8162
DocuMaker - https://www.assetstore.unity3d.com/#/content/16257
Enhanced Edtor - https://www.assetstore.unity3d.com/#/content/135

2Dのタイルマップエディタを探しているわけなんですけど

Unity4.3でドラクエ6とか、FF6とかの街マップみたいなものを作りたくて、そのためのタイルマップエディタを探しているわけなんですけども、結論からいうとどうも微妙な気がする。
Unityの拡張を最初にあたったんですけども、2D Map Factoryなんかがいいのかなぁと思って買って試してみたんですけどね、慣れの問題というのはものを評価するときにちゃんと気にしてはいるんですけど、ちょっと意味分かんない。Layerがね、増やせないんですね(こわいなーこわいなー)
まぁそれで「もういい」って思って視点を変えてWindowsフリーソフトとかでMapEditorって無いかな?ッて思って探してみたんですね。Tiled Map Editorってのがありました。結構操作しやすい感じます。Eventエリアなんか設定したくなってくるんですが、それはObjectでRectをおいてObjectPropertyでEventIDやらを設定してやればいいのかな?まぁちょっと使えそうなんで検証したいんですが、肝心なのはUnity上での再生ですね。C#のパーザなんかがあれば超ありがとうなのですが。

あとこの方が自分と同じ思いからの同じ帰結でおもしろい。そうなんですよね、画面上下で奥行きのある見下ろし型マップの作成が楽にできそうなUnity拡張さがしてたんですが、どれも真横から見る感じの2Dアクションのマップばっかりつくってて(デモで)、なんだかなぁと思ってるところ。

PSM UISystem

昨日から悩んでいた、UISystemとGameEngine2Dを一緒に使うとクラッシュする件。進展があった。
GameEngine2Dはどうやら無関係、おもいっきり濡れ衣を着せていた、ごめんね。

いろいろ削って削って最小構成だろう、というものでもUISystem.Initializeでクラッシュしてしまう。
正確に言えば
・F5デバッグすると
・Launchしたゲームウィンドウが白画面のまま動作が停止して
・しばらくすると、「psm.exeは動作を停止しました」というダイアログが表示され
・TTYには下記ログが出力されている状態

app.info : memory : resource_heap_size=67108864, managed_heap_size=33554432

app.info : require feature : Touch

C# Assembly Loading [ C:\\Users\\Public\\Documents\\PSM\\sample\\UI\\DemoGameUI\\bin\\Debug\\GameUI-unsigned\\Application\\app.exe ]

Loaded assembly: C:\Program Files (x86)\SCE\PSM\mono\lib\psm\Sce.PlayStation.Core.dll
Loaded assembly: C:\\Users\\Public\\Documents\\PSM\\sample\\UI\\DemoGameUI\\bin\\Debug\\GameUI-unsigned\\Application\\app.exe
Loaded assembly: C:\Program Files (x86)\SCE\PSM\mono\lib\mono\2.1\System.dll
Loaded assembly: C:\\Users\\Public\\Documents\\PSM\\sample\\UI\\DemoGameUI\\bin\\Debug\\GameUI-unsigned\\Application\\Sce.PlayStation.HighLevel.UI.dll
Sony Computer Entertainment America LLC

OpenGL

OpenGL ES 2.0 Piglet(0.1.1)

OpenGL ES GLSL ES 2.0

Thread started:
Thread started:

で、もうわけわからんなー。もしかしてGraphicsAPIにグラボが対応してない?とおもって対応OpenGLバージョンをしらべてみたけど、OpenGL4.2まで対応している様子。
そういえばサンプルはコード見ただけで実行してないなとおもって、C:/Users/Public/Documents/PSM/sample/UI/DemoGameUIをデバッグ実行。
やっぱりクラッシュする…。

えー、それはさすがにおかしい。と思って普通に「実行(Ctrl+F5)」してみる…ちゃんと動いた。
もう寝よう