Author Archives: y_okaya@geishatokyo.com

今流行のArctic.jsと、enchant.jsの比較

こんにちは ライセンス云々で話題になっていたArctic.jsですが、スマフォに特化したCanvas Frameworkということで 機能的にどうなのか、というところが大変気になります。弊社では同じゲーム向けのJSFrameworkとして、 enchant.jsを使用しているので機能をざっくり比較してみようと思います。 機能の差 Arctic.js enchant.js サイズ(byte) 90851 88593 圧縮後サイズ(byte) 36696 33570 オブジェクトの描画 canvas上 div毎 License MIT MIT or GPLv3 圧縮後のファイルサイズはenchant.jsのほうが3kbほど少ないですね。 どちらもjs上に継承などを行う擬似クラスを作るためのClass要素があったり、スマートフォン/PC両方で使えるようにtouch系イベントとmouseDown/Move系イベントを判定したり、fps(フレーム数)を設定してフレーム毎のイベントを設定するなどしています。 Arctic.jsだけにある機能としては、Ajax対応(ただしJSONPはサポートしていないので、すべて同ドメインのサーバで処理する必要がある)、FLASHライクなタイムライン指定でのアニメーション機能があります。 反対に、enchant.jsだけにある機能としてはaudio要素への対応としてのSoundオブジェクト、RPGのフィールドマップのようなものを作るMapオブジェクト、あとはプロパティ型の記述ができるのが特徴でしょうか。 label.text = ‘abc’; img.x=12; と書くenchant.jsのほうが、 labe.setText(‘abc’); img.setX(12); とするArctic.jsよりも直感的ですよね。 後発だけあって、Arctic.jsのほうはenchant.jsの機能をパクったenchant.jsにある基本的な機能はだいたいあるような感じですね。 オブジェクトの描画についてですが、Canvasでの描画の方が性能的に有利かもしれませんが、enchant.jsは divタグ毎にオブジェクトに持っていることで利便性をあげています。既存のアニメーション効果をdivタグ単位で 適応することにより、今までのエフェクトを使いまわすことができるのです。 enchant.jsと他のライブラリを合わせて使うサンプルはこちらのブログに具体的な実装方法が書かれていたので、実装方法はリンク先を御覧ください。 スプライトするまでのコードの比較 … Continue reading

Posted in Android, JavaScript, iOS | 1 Comment

Play frameworkで動的にリンクを作る(for scala)

こんにちは。GTEエソヅニアの岡谷です。 クリスマスはPlay framework(Ver1.2.4)とアツい夜を過ごしたので、その時得た Tipsをご紹介します。弊社ではScalaが最大勢力のメジャー言語なので、Play frameworkでも scalaを使ってみようと検証中です。 動的にリンクを作りたいケースがあり、テンプレートに実装していたのですが、Java版で書くと 下記のようなことをScala版でもしようとしました。 参考URL:Playframework tutorial(Java) このコードはJava版とScala版のリファレンスを見ると、Scala版にはサンプルコードがないのですが、 見る限りそのまんま使えそうに見えます。 参考URL:Scala templates しかしながら、Scala版でそのまんま使おうとしたところ使えませんでした。 Application.showのリンク先がこのコードの部分でレンダリングされてしまうのです。 あれー、と思ってplay-scalaのソースをまさぐってみたら下記のコードを見つけました。 views.object in ScalaTemplate.scala この機能を使えばうまくいきそうです。 書いてみるとこんな感じですね。 動かしてみるときちんと動きました。 以上、Play framework(for scala)で動的リンクを作るためのちょっとしたTipsでした。 share this on:ShareFacebook

Posted in Scala, Tips, play framework | Leave a comment

CoronaSDKを使ってみるその1

こんにちは。GTEエソヅニアの岡谷です。 iPhone関連のライブラリは色々と出ていますが、今回はCoronaSDKというものを使ってみようと思います。 Luaでスクリプトを書くというイカしたライブラリで、GLベースということも相まって非常に高速らしいです。 詳しい説明についてはこちらをご参照ください。 簡単なゲームっぽいものを作りたいなーと思った時に知るべき要素として下記がぱっと思いつきます。 画像描画の方法 タッチの検出方法 当たり判定の仕方 画像描画に関してはそれがないと要素として成り立たないので、適当に調べれば見つかります。 色々調べてみると画面遷移を行うテンプレートがあったので、そちらへのリンクを張っておきます。 上記リンク先のテンプレートで、画像の描画とタッチの検出、ついでに画面遷移までクリアになりました。 あとは当たり判定なのですが、coronaSDKにはBox2Dというライブラリが内包されています。 コイツは物理ライブラリで、重力係数や摩擦係数、反発係数とかを設定してやれば勝手によしなに やってくれるこれまたイカしたもの、らしいです。 コイツを使ってあたり判定を実装します。 coronaSDK上はPhysicsというモジュールになっているのでソイツを少しばかりいじってみました。 一言で当たり判定と言っても、色々あるのですが、下記の二種類で網羅できるでしょう。 移動できるできないの判定のみ 当たり判定時に任意の動作をする 今回は移動できるできないの判定のみについて、サラッとコードを書いてみます。 デフォルトで重力定数が設定されているので、上記コードを実行するとボールが落ちてくる表現が再生されます。 サラッと書きましたが、ちょっぴり理解しづらい部分はありますでしょうか。 一般的にプロパティに設定している下記の値が特に理解しづらいポイントかと思います。 上記の値は、当たり判定を行う対象を指定する部分になります。 categoryBits は自身のカテゴリを指すBit値、maskBitsは当たる対象を指すBit値になります。 例えば であれば、自身は1というカテゴリでコイツに当れるのはカテゴリが4のものだけになります。 ややこしいのは で、自身は4というカテゴリでコイツに当れるのは3となっていますが、 コイツはbit値なので、カテゴリが1と2のものになります。 またこのbitの設定値ですが、相互に指定しあう必要があるようです。 どういうことかというと や のような片側のみ指定しているようなコードでは当たり判定が発生しません。 そんなこんなで壁にぶつかるだけの判定は、特に自分で物理演算を組むことなく 非常にリーズナブルなコードで実現できました。 次回は当たり判定時に任意のコードを実行する方法を紹介したいと思います。 share this … Continue reading

Posted in Lua | Leave a comment