画像について弱い部分
たとえば、SGEである画像を読み込もうとする。
gui.create(800,600) texture.load(1, "fake.png")
この時、ファイル fake.png が invalid (不正)なファイルだとしたら。事故が人為かは問わず、とにかくファイルが正しいpngのフォーマットになっていなかったらどうなるか。
当然、エラーになって、落ちる。
ちなみにこれをpcall()で囲んでもこける。
pcall(texture.load, 1, "fake.png") -- こける!
つまるところ、textureには画像以外を食わせるな、と言う話である。
実際のゲーム製作にどう影響するか。
たとえば、スクリーンショットを撮って、セーブデータに紐づけるとする。この場合、スクリーンショットのpngファイルを生で放り出したとすると、そのpngファイルをユーザーにいじられる可能性がある。
ではどうするか。
- 自前でこれから読み込むファイルがpngかどうか確認する。
- ユーザーからいじられないようにする。
1は正直敷居が高いような気がする。
2の方がマシだろうか。
逆にその画像を必要とする時は、逆の手順。
- ランダムにファイル名を決めて、データベースの中身を書き出す。
- textureに読み込む。
- 作った外部ファイルを削除する。
なんか迂遠なことをしているような気がする。