どくらぼ

言いたいことを言います

ゲーム開発とcanvasとtoDataURL

WebGL でゲームを作るときに限らないけど、ゲームにはその思い描いているコンセプトというか世界観がすごく大事なのだと思っている。

それがいつも定まらないから、なんとなく開発が滞る。スッと浮かんだものが、スッとコードにはならないプログラミングという作業ならではの悩みだと個人的には思う。

 

最近は、文字列をちょっとうまいことやって画像に変換するようなプログラムを作っていた。

javascript の場合、全部のソースが丸見えになってしまうのでキャラクターの台詞やシナリオが丸見えになってしまう。それではゲームとしての面白さを損なうので、文字列は一度画像にコンバートして、文字列として必要になったタイミングで、裏でごにょごにょしようと思ったのだった。

しかし、canvas の toDataURL メソッドさんが勝手に値を変換して画像出力する現象に遭遇して、マルチバイト文字の使用を断念した。シングルバイト文字の場合は誤変換が起こらないので、しょうがねえやって感じ。

先述のメソッドを使わずに、黒魔術的なコードを書けば自前でもできそうな気もする。でもなんかそれはやっぱり黒魔術なのでやめておくことにした。

結果、とりあえず一度文字列を PNG で出力するコードを書いて、その画像を保存しておけるようにした。本番では、この画像をいったん canvas に読み込んだあと、文字列に復元してから適当に fillText かなんかで canvas 上に吐き出す。

それをテクスチャとして使えば、まぁ WebGL でも文字列は普通に使える感じになりそうだ。