flameチュートリアル、クロンダイクのメモ
isarのバージョンアップのbreaking changeと、古いバージョンのライブラリがダウンロードできなくなってテストが動かなくなってしまったので、がんばれなくなって、とりあえず違うことをしてみようと思い…。
気になってたFlameを触ってみることにします。
とりあえず動かしたいので、チュートリアル。
空のゲームプロジェクトの作り方でした。
このあとの章でクロンダイクを作るようです。
実際にゲームを作っていきます。
クロンダイクというのは…Windows標準添付のソリテアのことだそうです。
最初にゲームのスケッチ見るのいいね。
有名なクロンダイクのような有名なゲームなら、各オブジェクトにすでに名前がついてるし、誤解なくできそう。チュートリアルにいい題材を選んだなあ…。
スプライトの追加。あとで入れ替えたい。
スプライトの説明がおもしろかった。
- 文字を画像で持っているのは、正確な位置に配置できるから。
- 文字の色が青と黄色なのは、ウクライナカラーではなくて、見やすさの問題。
ゲーム全体の足場を作ってくっぽい。
ゲームの基盤部分の作成。
ママ写経してたら、Flame
が見つからずにエラーが出ていました。バージョン非互換かと思って焦りましたが、ただimport 'package:flame/flame.dart';
がチュートリアルで抜けていただけでした。
カードの集合を扱うコンテナクラスの追加。
一応、PositionComponent のドキュメントも。
ゲームの構造の話。
ワールドというのは…サイズがあるようなので、むしろ撮影セットみたいなものなのかも。
その撮影セットをカメラで撮る的な。
複数のデバイスを扱う現在、表示ピクセル数のようなものは扱わないほうがよいからかな。
Unityは基本メートル法で動いていたけど、こっちはそこまではなさそう…?
このサンプルでは画像のピクセルを基準に考えてました。
いまさら気づいた…。まだ途中なのか…。
しきりにWorldと言っているのは、KlondikeGame
だったのか…。
Alright, let’s put all this together and implement our KlondikeGame class.
これを読み飛ばしてしまって、苦労しました…。
worldの設定できた、run!!と思ったら…絶対おかしいよね><
見直そうw
いろいろ間違ってたw
直したらちゃんと↓みたいになりました。
ステップ3、カード。
@immutable
がflutter/widgets.dart
にあるのだということを知りました…。
Dartのものではないんですね。
シートからスプライトを切り出してくれる便利なサイト…!
これでキレイに配置しなくてもイケるじゃないか…!
お…表示できるのか!と思ったけど、まだでした。
このあとのrenderingのおたのしみ!
ちんたらやってるうちに、1.5.0のチュートリアルが…!
どっか間違ったな…。
(あとから考えたら、ただのテストコードで下の山場の上に乗せようという気がなかったっぽい。)
ひととおり打ち終わったら、ちゃんと表示された…!
(Suit#isBlackが間違ってたので、それも直した。)
次は…ゲームプレイ!
ざっと読んだら、カードの移動などが書かれてたんで、ここまでのやり方で将棋盤とか碁盤とか作れる気がしてきた…。
結構長いので、ゆっくりやろう。
ストックパイルがカードを所有するように変更。
捨て山がカードを持つように変更。
ストックパイルをタップすると捨て山に移動するようになりました…!
ストックが空になったときにタップできることがわかるよう、円を表示してます。
捨て山から戻す処理を追加。
…ゲームっぽくなってきたw
シンプルな移動。
renderの結果とかキャッシュせんでええのかのう…。全然ちらつかないし。
許可されたカードのみ移動できるようにする。
カードを適切な場所に落とす で、更にゲームっぽくなったが…。
捨て札から場札へ移すと、捨札の表示が変になる…。どっかに不具合が (T_T)
バグってますが…とりあえず先に進んでしまいます…。
この章が終わったら、githubのソースと見比べようと思ってます。
ゲームプレイ!
おおおお…!クロンダイクできてる!
動きがヘンだけど!
どうしても言葉が覚えられないので、貼り付け。
まず…ストックから3枚引いているのに、ズレて表示されていないのがおかしい。
WastePileかStockPileがおかしそう。
StockPileのacquireCard()の最後で_fanOutTopCards()して広げました。
下のカードが見えない…。
TableauPileがおかしそう。
直った。
TableauPileのコンポーネントサイズがおかしい…。
おかしいのではなくて、そういう仕様でした。
たくさんの場札をまとめて移動するときに置きにくいからのようです。
書いてあるところまで終わりました!!!
残りはまた続きが書かれたらやります。