Minecraft風Pebble時計

ありそうで無かったのでMinecraft風のPebble Time用の時計を作ってみた。

Minecraftのワールドには時間の概念があって、時間を知るために時計がクラフトできる。それと同じようなものをwatchfaceとして作ってみた。このネタはPebble Classicの時から考えていて、Pebble Time Roundという丸型のPebbleを手に入れたことで開発意欲が湧いた。最初はデジタル時計無しで考えていたのだが、実用性に欠けるのでデジタル時計も合わせてみたら良い感じになった。

季節や地域によって太陽・月と時間の関係は変わってくるので調整が必要とかいろいろ考えはしたけど、使ってみたらAM/PMのアナログ表現として知覚し、実際の日没とずれてても個人的には問題に感じなかった。

2つほど問題が残っていてまだ公開はできていない。

一つは画像を回転していてそれがバッテリー消費に影響していそうなこと。ドキュメントに graphics_draw_rotated_bitmap() はCPUパワーを使うと書いてある。避けるには Draw CommandsGPaths を使うのだが簡単な変換方法がまだ理解できていない。5分に一回描画するようにしようと思ったがPebbleでは一つのLayerを更新するとLayer Treeが再描画されるため、デジタル時計のTextLayerを更新するとアナログ時計のBitmapLayerも更新されてしまう。つまりデジタル時計を表示する限り、毎分描画され graphics_draw_rotated_bitmap() が呼び出されてしまう。

もう一つの問題は、通知を表示したあとにwatchfaceに戻ったときに画面の一部が白くなったまま再描画されないことがあるバグ。描画が重いことに影響しているのか、毎分のデジタル時計の更新がくるまで描画されない。

このまま公開するか考えどころ。