2ヶ月くらい前から新しいアプリをつくり始めたのですが、ちっとも進まなくてモチベーションが低下しはじめちゃってるので(ほぼひとりごとの)アプリ制作日記を不定期に書いていこうかと思います。
ただひとりごとベースなので、有用なことはほとんどないと思いますが(´・ω・`)
(ちなみに、今回のからcocos2d-xのv3を使い始めました)
とりあえずこれまでのダイジェスト
シミュレーションゲームを作ってみたいなと前から思ってたので、今回思い切って作ってみることにしました。
作りたいイメージ
作りたいのはざっくりこんなイメージ。
- シムシティとかセトラーズみたいなシミュレーションゲーム
- 工場で何か作っていくようなイメージ
- ドット絵初挑戦してみたい
- ちょっとストーリーもあるようにしたい
- 自由度は高くしたい
- ただスマホであることを意識したUI設計にしたい
ドット絵で、タイルマップを使って工場を作るような感じで作成していきたいと思います。
まずは簡単な画像作成
とりあえず、PhotoShopを使って以下の画像を簡単に作成
マップの為のと、それぞれ工場で使うパーツなど
これだけで1時間以上かかった(´・ω・`)
確認しながらじゃないと作っていけないので、マップも簡単なのを作ります。
マップの作成はTiled Map Editorを使います。
確認用のシーンを作成
冒頭のように、確認する為の簡単なシーンを作成。
シーンの作成はCocosStudioを使いました。
UIで作成できるから便利。
タイルマップを表示する部分をScrollViewで作成したら、簡単にスワイプでマップをスクロールすることができるようになります。
作成したcsbファイルをcocos2d-xで使うには以下のようにしたらいいだけ。
auto ui = CSLoader::getInstance()->createNode(csbFile); scene->addChild(ui);
従業員を動かす
マップに従業員を配置して、動かす。
従業員たちが勝手に動いて製品を作る、ということをしたいのですが、
そのためには以下のことを考慮しないといけません。
- 対象まで最短距離で移動する
- ただし障害物があったら避ける
調べたら、そういうのは最短経路問題というらしい。
A*(エー・スター)アルゴリズムというのを実装したらちゃんと障害物も避けていくようになりました。
あとは、対象まで移動した後色々と作業するように。
セーブ・ロード機能
別に全部無料のアプリにするつもりだからあまり気にしなくていいとも思うけど、一応中身をセーブする際に暗号化するように。
セーブデータの作り方ってどうすればいいのかいつもよくわからないけどとりあえずCompositeパターンとMementoパターンで実装しました。
作ったやつ
ちょっと途中通信の関係でカクカクしちゃってるけど。
というか、もうちょっとペースあげないとこれ終わらない(´・ω・`)