Cover Image for 読書メモ:Game Development with Rust and WebAssembly (Chapter 3,4)

読書メモ:Game Development with Rust and WebAssembly (Chapter 3,4)

概要

↑を読んだメモ

サンプルコードを書いて遊んでたリポジトリは以下

メモ

3章 ゲームループの作成

  • フレームワークを作ることに熱中しすぎてモノが完成しない -> あるある
  • やっぱanyhow使うのか。どこでも出てくるのでデファクトっぽい

なぜaccumulated_deltaはf32なのだろうか? 気がついた読者は観察力がある。短い答えは、「そうでき るから」だ。もう少し長めに答えると、f64はなるべく使いたくないからだ。JavaScriptはすべての数 に対して 64 ビット長の Number 型を使う。私は、可能な限りビット数が小さい値を使いたいし、もし可 能なら整数にしたい。サイズの大きい f64 は実際必要ないし、それがあちこちにあると思わぬほど性能 を低下させるからだ。

雑にf64にするのは良くないらしい

4章 ステートマシンを用いたアニメーションの管理

  • タイプステートパターン
    • 初めて聞いた
    • "無効な状態を表現不可能にする" 方法
    • ステートマシン作るときに欲しくなるやつ
  • コンパイラ駆動開発(Compiler-Driven Development)
    • これも聞いたことなかったけどなんとなくわかる
    • エラーになるコード書いてIDEに生成させるのは理に適ってる気がする
  • Fromトレイトはやっぱり便利
  • デルメルの法則(Law of Demter)
    • 不変のデータには過剰とういう話は同意
    • Javaでよく言われるが、Javaに本当に必要なのは不変のデータ型だと思っている
  • ジェネリックな構造体があるので、そのジェネリックな型に 対してメソッドを書くとすべての型に対して適用される
    • これは便利そう
  • Feature Envy
    • 自分のメソッドよりも他クラスのメソッドを呼ぶ回数が多い状態を指す
  • impl Game for WalkTheDog
    • WalkTheDog が Enum でも impl できる
    • struct じゃないとダメだと謎に覚えてたので衝撃だった
    • これは便利そう
  • 重力入れるとボッシュートされるの笑った
  • 最後にジャンプする部分は自分で作れるからやってみてくれという斬新な流れ
    • 「ここからは自分の目で確かめてくれ!」という往年のゲームの攻略本感