「独創アプリ開発日記」カテゴリーアーカイブ

独創アプリ開発日記 211日目 MACでの開発環境構築

Mac上で.NET Core、Visual Studio Code(拡張機能C#)、OpenTK.NETCore、などなど入れて、 C#でOpenGL開発出来る環境を整えていきます。

https://www.microsoft.com/net/download/macos/buildから、macOS用の.NET Coreをダウンロードします。

インストールするには、ダウンロードしたpkgファイルを実行して、あとはインストーラに従うだけですね。

以下、動作確認用です。プロジェクト用のディレクトリを作成して、その中で実行します。”Hello World!”と表示されれば成功です。これはUbuntuの時と全く同じコマンドですね。


dotnet new console

console run

次はVisual Studio Codeです。https://code.visualstudio.com/downloadからmacOS用のVisual Studio Codeをダウンロードして、Applicationsフォルダに入れるだけですね。

コマンドラインから起動するには、一旦Visual Studio CodeをApplicationsフォルダから起動し、Shift(⇧)+Command(⌘)+Pを押してコマンドパレットを表示したのち、Shell Command と打って、表示されたShell Command: Install ‘code’ command in PATHを選べばOKです。これ以降、コマンドラインから code と打っても起動できるようになります。

あとは、Ubuntuでの環境構築時と同様に、https://minnano.app/support/2018/05/09/ubuntu-18-04-lts-opengl/の手順4から6を実行すれば、C#のプラグイン、nuget、OpenTK.NETCoreが使えるようになり、環境の準備が整います。ショートカットキーのCtrlがCommand(⌘)に変わるので注意してください。

Ubuntuよりmacの方が開発し易そうなので、macメインで開発して、動作確認用としてUbuntuや

憎っくきWindows

を使おうと思います。

開発用にPC新調しなくてよかった。iPhoneアプリ開発用にmac持ってましたからね。

いや〜、別OSで全く同じ開発環境使えるって感動するな〜。

強制アップデート機能付きで、セキュリティパッチと一緒に余分機能や情報収集用の更新プログラムをひっつけてアップデートしてくださる憎っくきWindows

に触る機会が減るし、とっても嬉しいです。

((⊂(`ω´∩) しゅっしゅっ

独創アプリ開発日記 210日目 Ubuntu環境の再構築

開発に使うUbuntuはVMWare上で動かしていたのですが、これだとWMWareのグラフィックドライバの制限でOpenGL3.0になってしまうようです。

OpenGLのバージョンは3.3を使いたいと考えているので、VMWareの仮想環境ではなく、直接PCにインストールしてUbuntuを動かす必要が出てきました。

そこで、今日はPCもう1台つくろうかと思い、PCパーツをあれこれ物色した結果、なんかいまいちそそるようなパーツがなくて新しく作る気になれませんでした。特にCPU。

はい、みんな思っていることですが口に出す人があまりいないので大きな文字で書きます。

CPUって進歩とまってるわ。ぜんぜん5年前のCPUで問題ない・・・最近は消費電力増やしてごり押しで性能あげてるだけだよね。AMDとの競争で爆熱化がすすみそう。爆熱電力馬鹿食いCPUはぜんぜん興味ありません。

あーすっきりした。え?新しい型でも低消費電力のCPUがある?いや、すでにそこそこ低消費電力のCPUつかってるから買っても同一電力消費当たりの性能がほとんど上がんなくてうれしくないんですよね・・・

で、買うのやめて、USBメモリにUbuntuインストールしてそこから起動すれば良いジャンとか考えて、READ/WRITEが400MB/SくらいのUSBメモリをWeb上で買いました。HDDよりぜんぜん速い!土日発送作業しないショップのようなので、新環境出来るのにしばらく時間がかかりそうです。

独創アプリ開発日記 209日目 環境に依存しないWindow

今私は、OSに依存しない開発環境の構築を目指しています。目指せ脱Windows10!Windows10嫌い。強制アップデート反対。無駄機能要らない。セキュリティパッチだけよこせ。

話を元に戻します。今私は、OSに依存しない開発環境の構築を目指しています。グラフィックを描画するOpenGLのコードはOSに依存しませんが、ウィンドウなどのUIに関しては、各OS固有のコードにどうしてもなってしまうと記憶していました。

が、OpenTKのGameWindowというクラスを使うと、OSに依存せずにUIを作成出来るという極秘情報を得ました!

いや、極秘情報じゃなくて、ぶっちゃけOpenTKでググりまくってたら出てきた情報なんですけど。

とりあえず今日はGameWindowに関して色々調べていました。あとは、開発するにあたってOpenGLのバージョンいくつを使うべきかを悩んでいました。Ubuntu18.04LTSの初期状態で入っていたバージョンの3.33.0でいいのかな?

独創アプリ開発日記 180〜208日目 プラットフォーム

はい、というわけでですね、読んでいる方は何がどういうわけかよくわからないと思うんですが、このブログは1日に1回必ず書く約束になっていて、書かないとしたら作者は死んでいることになっていたんですよね。

実は、この1ヶ月間は激動の1ヶ月間でですね、地球を離れ、辺境の惑星でロケットをつくっていたんです。
地球にいなかったわけですから、ある意味1ヶ月間死んでいたわけです。うん、約束は破っていないですね。

先日、無事ロケットを打ち上げて地球に帰還しましたので、今後の日々のブログ更新は復活予定です。まあ、まだ無限研究用工場建築作業が残っているのでたまに辺境の惑星に戻るかもしれませんが。

で、辺境の惑星で感動したことがあったのですが、この惑星は、WindowsとLinuxと、そしてMacでも、とても快適に高パフォーマンス!でさくさく動く惑星でして、スマホアプリばかり作っていた身としてはとても新鮮なものでした。LinuxやMacで動くのは感動したなぁ。もう、無駄新機能とバグ自動強制量産機能付のWindows10から脱出できるよヒャッホー。

次回作はいったんスマホを離れてWindows/Linux/Mac対応のマルチプラットフォーム対応にしようと思います。本当はブラウザ上で動くWebGLで作れれば一番楽な気がするのですが、まだパフォーマンスがいまいちだし、ブラウザいきなり落ちたりするし、特定のブラウザじゃなきゃ動かなかったりするし、操作性も悪い気がするんですよね。

独創アプリ開発日記 176〜179日目 次回アプリ構想その2

前回に引き続き、次のアプリのアイデア出しです。

・シミュレーションゲームである(SimCityなどに近い)

・マイクラのようなブロックで構成された世界である。ただし、マイクラのようなただっぴろい世界ではなく、特定の大きさを持つ浮遊大陸である。また、システムの複雑化を避けるためとりあえず高低差は無しとし、当面は平地の2Dフィールドのみとする。

・植物、昆虫、草食動物、肉食動物などが生息する。これらを個体と呼称する。

・個体は”生命の種”で生み出すことが出来る。任意のタイミングで個体を生み出すことが出来るが、個体を削除することは出来ない。環境を変えて、間接的に影響を与えるしかない。

・各個体はHPを持っており、植物は光合成で、昆虫や草食動物は植物を食べて、肉食動物は草食動物を食べてHPが増える。だいたい、植物を100個集めると草食動物が、草食動物を10匹集めると肉食動物が”生成”される。

・各個体は、それぞれ動作ロジックを持っている。(ねこマタの動作ロジックを高度化し、”関数”を作ってそれをサブルーチンのように呼び出せるようにする想定)。複製時、まれに一部ロジックが変化する。

・ロジックの変化により、より環境に適応するロジックならばその個体は増え、適さないロジックならばその個体は死滅する。

・自分のお気に入りの個体はストックすることができる。

・”生命の種”は一定時間で増える。また、各個体が一定時間ごとに生み出してくれる。強い個体ほど多く生み出す。

・ストックした個体を、他人の浮遊大陸に放つことができる。また、他人の浮遊大陸から個体を送り込まれることがある

・他人の浮遊大陸で個体を一定数以上にすると、”生命の種”を奪える。

・・・前に出したアイデアを、Factorioの考えを一部入れて強化した感じです。

これならパクリじゃない!

独創アプリ開発日記 175日目 次回アプリ構想

TextMangaも無事リリースしたし、次のアプリのアイデア出しです。

・アイデアその1

Factorioをパクって3D化する

・アイデアその2

食物連鎖を題材に、生産者(植物など)、消費者(草食動物など)、第2消費者(肉食動物など)などが生きる環境をシミュレーションする。システムはFactorioをパクる。植物を100個集めると草食動物が、草食動物を10匹集めると肉食動物が”生成”されるなど。

 
( ゚д゚) ・・・ 

自分で書いといてなんですが、一応、ほら、”独創”アプリを方針としてるんで・・・

Factorioをパクるのはちょっとまずいよなぁ・・・

独自の”食物連鎖”の部分のアイデアをもうちょっと膨らませて見たいと思います。

色々頭の中でアイデアがぐるぐる回っているんですが、それをシステムに落とし込む様子を思い浮かべたときに、何かゲームとして面白くないんじゃないか?と思うことの繰り返しなんですよね。しばらくはアイデアを文字にして、並べて見比べて色々検討したいと思います。

独創アプリ開発日記 174日目 開発者がクリアできないステージ

ねこマタに追加した新ステージ33ですが、いまだにクリア出来ません。

クリア出来ないけどリリースして良いですか?

・・・いやいやいやいや!ダメだよ!ダメだよ!!自分でクリア出来ないのに他人にやらせんなって話だよ!!!

開発者なんで、勝手に難易度下げれば簡単なんだけど、何か負けた気がする。もうちょっとでクリア出来そうなんだよなぁ・・・・

_(:3」∠)_

引き続き頑張ります。

なお、ステージ33と同時に、最小ステージ面積の対人戦ステージ”P”も同時リリース予定です。

独創アプリ開発日記 173日目 Split View

アプリ「TextManga」はiPadのSplitViewに対応しています。

開発時は特に意識していなかった!のですが、今確認したらちゃんと動いていました!!
すっかりSplitViewのこと忘れてたよ・・・ちゃんと動いてくれていてよかった。

        *’“・ 。*
        |     `*。
       ,。∩      * 
      + (´・ω・`) +゚*。
      `*。 ヽ、  つ **゚
       `・+。*・’ ゚⊃ +゚
       ☆   ∪~ *゚。
        `・。+*・ ゚ 

ブログ書きながら、簡単に貼り付けられます。便利。

⁽⁽٩(๑˃̶͈̀ ᗨ ˂̶͈́)۶⁾⁾ 

独創アプリ開発日記 172日目 Xcode9.3のワーニング対処

今日はアプリの開発ツールであるXcodeをバージョンアップ(9.3に)したらワーニングが出たのでその対処を行いました。

ワーニングとは、「このプログラムコードがちょっとおかしいよ?修正したほうがいいよ?修正しろや!」とプログラミング言語のベンダー(アップル)が開発者に対して警告するメッセージのことです。大抵、放っておいても動作しますが、運が悪いとアプリが落ちたりします。

アップルの提供するプログラムは頻繁に仕様(プログラムを作る約束事)が変更になり、開発者はそれに振り回させることが多々あります。macは古い規格の接続端子がバッサリ切り捨てられますよね?あんな感じです。

今回発生したワーニングは、デバイスが回転する際に利用するメソッド(特定の単位で処理を行うプログラム)に対して、「新しいもの用意したからそっち使ってや!一応、今回は古いやつでも使わしたるけど、そのうち使えんようなるからな!」と言うものです。

回転関連のメソッドって、過去にも2回くらい大幅に変わった記憶があります。「また変わったのかよ!いい加減にしろよ!ちゃんと考えてから長期に利用できる形で変えろよ!さすがアップル様だよ!」と一瞬思いましたが、どうやら今回の変更は、iOS8の頃から考えていた仕様変更らしいです。しっかりと対応します。

変更前


-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {
    // ここに回転時の処理Aを書く
}
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    // ここに回転後の処理Bを書く
}

変更後


- (void)viewWillTransitionToSize:(CGSize)size
       withTransitionCoordinator:(id)coordinator {
    [coordinator animateAlongsideTransition:^(id context) {
        // 回転前
        // ここに回転時の処理Aを書く
    } completion:^(id context){
        // 回転後
        // ここに回転後の処理Bを書く
    }];
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}

以上です。なんか、前の方がスムーズに回転してたような気がするけど、皆さんそんな頻繁にスマホくるくる回転しないと思うので大丈夫かと思います。

    ←
     ∧_∧
   ∧_∧・ω・`) ↑
↓ ( ・ω・`)・ω・`)
  く| ⊂)ω・`)
   (⌒ ヽ・`)
   ∪ ̄\⊃