ゲーム/アニメーションの入門に一番簡単なのはcanvasかも
Canvasは、ブラウザ上に図を描くために策定されたHTML5の仕様です。制御にはjavascriptを用います。
www.benjoffe.com | Canvascape
このサンプルをみて、HTML+jsでここまでできるのか!と感動しました。しかもそんなに大きいコードじゃない。
というわけで、迷路の自動生成アルゴリズムを組んでゲームっぽいものを作ってました。 対応はたぶんFirefox safari chrome
http://magnetpress.net/test/laby.html
リロードで再生成。最終的にローグライクもしくはWizのような何かを作ってみる予定。Web ストレージの使用も視野に。
ソースはみないでください、で、javascriptの練習しながら作ったものなので酷いものです。あとでリファクタリングしたい。
扱い方
MDCに詳しい仕様が載っています
基本的な使いかた - MDC
ソースを読んで頂ければだいたいの雰囲気はわかると思います。javascript で canvas要素に対して図形を描いていきます。
- サンプル
<html>
<head>
<title>Canvas tutorial</title>
<script type="text/javascript">
function draw(){
var canvas = document.getElementById('tutorial');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
}
}
</script>
<style type="text/css">
canvas { border: 1px solid black; }
</style>
</head>
<body onload="draw();">
<canvas id="tutorial" width="150" height="150"></canvas>
</body>
</html>
アニメーションの構成
ということで、アニメーションの最小構成を組んでみました。
- anicv_chrome.js
main.html ========= <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Animation Test</title> <script type="text/javascript" src="anicv_chrome.js"></script> </head> <body> <canvas id="mainWindow" width="600" height="450"></canvas> </body> </html>
ゲーム的な構成にしている為、アニメーションを書くだけならキー入力、アップデートモジュールは複雑に分割しなくていいでしょう。
重い処理をやらせてくると、javascriptの実行速度がネックになってきます。firefoxは正直辛い感じ。safariやchromeはそこそこ。
3Dについて
将来的に3Dもサポートするそうです。
Firefox開発版でもWebGLの初期実装が完了 - Mozilla Flux
すでに動いていた。
WebGL Samples/Demos and other bits at Vladimir Vukićević
現在のAPIではOpenGLほどの複雑な処理はできないそうなのですが、canvasを使って実装された processing.js というのもあるそうです。processingのjavascript移植だそうで。次はこれをいじってみるかも。ただ、アニメーション処理させるには重いかもしれませんね。