ラベル 作品 の投稿を表示しています。 すべての投稿を表示
ラベル 作品 の投稿を表示しています。 すべての投稿を表示

2013年6月8日土曜日

リバーシ for 3DS を公開

Nintendo 3DS のウェブブラウザで遊べるリバーシを公開しました。

公式サイト: http://yokano.github.io/reversi3ds/
アプリ本体: http://okanoworld.appspot.com/reversi3ds
(アプリは 3ds のウェブブラウザ専用です)

MITライセンスです。公式サイトからソースコードが落とせます。

3DSのWebブラウザ上で動きます

十字キーとAボタンで操作出来ます


ウェブアプリですが、十字キーとAボタンで遊べます。
もちろんタッチペンでも操作出来ます。
CPU と対戦することができます。1台で2人対戦することもできます。
2人対戦はタッチペンが2本あるとやりやすいかも。

十字キーの上下で画面がスクロールされないようにコンテンツを下画面にフィットさせています。(320x212px)
イベントのコールバック中に return false; しても、
preventDefault() してもイベントがキャンセルできないため、
コンテンツを2画面に広げてしまうと十字キーの上下でスクロールが発生してしまいます。
2画面で十字キーの上下を使えれば理想なのですが・・・。

Canvas は使わず DOM で動作しています。
アニメーションはスプライトを作成して、CSS の background-position を操作しています。
3ds は @keyframe にも対応しているのですが、step() を指定できずパラパラアニメができません。
結局、JavaScript から定期的に background-position を操作しています。
アニメはすべて CSS でやりたいのですが、良い方法が無いものか・・・。

2013年5月19日日曜日

okasize を公開


Android 端末の画面サイズと解像度を入力すると、
Size Group (small / normal / large / xlarge) と
Density Group (ldpi / mdpi / hdpi / xhdpi / xxhdpi) の
どれに属するのかを調べることができる Web アプリです。

こちらで使えます
http://okanoworld.appspot.com/okasize


GitHub でソースコードを公開しています。
MIT ライセンスなのでご自由にお使いください。


計算方法

ユーザからの入力は以下の3つです

  • 画面サイズ inch
  • 解像度 widthPx heightPx

この3つから dpi を計算します。
1 インチあたり、何個のドットが入っているかを調べます。
対角線上のドット数をピタゴラスの定理で求めて、対角線の長さ inch で割ります。
dpi を計算出来れば Density Group の判定ができます。
var dpi = Math.sqrt(widthPx * widthPx + heightPx * heightPx) / inch;

 次に px を dp に変換します。
Size Group を判定するために使う単位は dp です。
px が実際の端末の画面サイズによって相対的に大きさが変わるのに対して、
dp はどんな端末でも物理的に同じ大きさで表示されることが保証されます。
dp については過去の記事を参照してください。
var widthDp = widthPx / (dpi / 160);
var heightDp = heightPx / (dpi / 160);

あとは dpi と dp によってグループ分けをするだけです。
グループわけに使う閾値はいかにまとめられています。

Supporting Multiple Screens - Android Developers
http://developer.android.com/guide/practices/screens_support.html

var density = getDensityCode(dpi);
var size = getSizeCode(widthDp, heightDp);

...

var getDensityCode = function(dpi) {
 var result;
 if(dpi < 120) {
  result = 'ldpi';
 } else if(dpi < 160) {
  result = 'mdpi';
 } else if(dpi < 240) {
  result = 'hdpi';
 } else if(dpi < 320) {
  result = 'xhdpi';
 } else if(dpi < 480) {
  result = 'xxhdpi';
 } else {
  result = 'not matched';
 }
 
 return result;
};

...

var getSizeCode = function(width, height) {
 // 横長にする
 if(width < height) {
  var buf = width;
  width = height;
  height = buf;
 }
 
 var result;
 if(width > 960 && height > 720) {
  result = 'xlarge';
 } else if(width > 640 && height > 480) {
  result = 'large';
 } else if(width > 470 && height > 320) {
  result = 'normal';
 } else if(width > 426 && height > 320) {
  result = 'small';
 } else {
  result = 'not matched';
 }
 
 return result;
};

2013年5月12日日曜日

ムチャブリBacklog を公開

PC・スマートフォン対応のWebアプリ「ムチャブリBacklog」を公開しました。

公式ページ:http://yokano.github.io/mucha/
アプリURL:http://okanoworld.appspot.com/mucha

勇者となって王様からBacklogのタスクをムチャぶりしてもらえるアプリです。
行く末に迷った時などにご使用ください。
アプリはMITライセンスのためソースコードや画像はご自由にお使いください。
詳しくは上記の公式ページをごらんください。






2013年4月16日火曜日

もぐらたたき for 3DS を公開

もぐらたたき for 3DS を公開しました。
Nintendo 3DS のウェブブラウザ上で動作するブラウザゲームです。
3DS 以外の PC やスマートフォンのブラウザでも動作します。

アプリ本体
http://okanoworld.appspot.com/mogura

ソースコード
http://yokano.github.io/mogura/


3DS のウェブブラウザで遊べます

ゲームエンジンとして enchant.js を使用しています。
3DS 上では思っていたよりもパフォーマンスが出せず、
9箇所の穴から9つのもぐらのスプライトを出すだけで処理落ちが発生しています。
フレームの処理が遅いため、fps を 30 などにするとスローモーション状態です。
結局、fps を 5 に設定しています。
タッチイベントを ontouchstart で取得していますが、こちらも 0.5 秒近くラグがあります。


9つの穴からもぐらが出現

ランキングにも対応しており、上位 10 までをランキング画面で確認できます。
サーバを Google App Engine + Go でつくり、Ajax で名前とスコアを送信しています。
Ajax は問題なく動作しました。GAE の Channel API による Ajax ポーリングが処理できるか試してみたいですね。


ランキングに登録

ランキング画面

実行中に「画像の表示に失敗しました」や「スクリプトの実行を停止します」と表示され、実行が止まることがあります。
コンソールがないため原因がわからないのですが、表示される場合とされない場合があります。
メモリの使い過ぎかと思い、画像を jpg にして容量を抑えたりしましたが変わりませんでした。
その他の Web サイトをサーフィンしていても発生します。
3DS の Web ブラウザは、アクションゲームや画像の多いゲームは厳しいことがわかりました。

次回は 3DS のブラウザで遊べるソーシャルゲームを作ってみようと思っていますが、上記の問題で厳しければ、また別のものを考えます。

2013年3月12日火曜日

単語帳オンラインを公開

PC,スマホ対応のオンライン単語帳を公開しました。

アプリ紹介ページ: http://yokano.github.com/tango/
アプリ: http://tangocheck.appspot.com/

 

 


英文を読んでいる時にわからない単語をメモしておいて、
寝る前にチェックしたいなと思って作ったツールです。
ユーザ認証のため Google アカウントが必要なのでご注意ください。
アプリの使用方法については紹介ページを御覧ください。

ソースコードはすべてMITライセンスで公開しています。
コードのダウンロードもアプリ紹介ページから可能です。

なお、アイコンも作ったので iOS Safari の「ホーム画面に追加」を選択するとローカルアプリっぽく使えます。


2013年2月10日日曜日

マインスイーパー逆式を公開

ブラウザゲーム「マインスイーパー逆式」を公開しました。
PC・スマートフォン・タブレットどれでも遊べます。


普通のマインスイーパーは、数字を見て爆弾の位置を当てるゲームですが、逆式では爆弾を見て数字を当てます。
最初からすべての爆弾の位置が表示されており、空いているマスに入る数字を素早く入力するゲームです。
オンラインランキングに対応しており、他のプレイヤーのタイムと競い合うことができます。
HTML5対応のゲームライブラリ enchant.js を使って開発しました。
ソースコードは github にて公開中です。

2013年2月7日木曜日

オカタイマーを公開

こちらから:http://yokano.github.com/okatimer/


オカタイマーはタスクをより早く終わらせるためのWebアプリです。
目標時間と経過時間が画面に表示されます。
PCでもスマートフォンでも利用できます。

使い方

  1. URLを開きます
    http://okatimer.appspot.com/
  2. タスク名と目標時間を入力してスタートボタンを押します
  3. トグルスイッチで時間の一時停止、実行を切り替えられます
  4. タスクが完了したら経過時間をチェックしましょう
  5. 次のタスクを実行したい場合は戻るボタンを押してください

注意

  • このウェブアプリは単一のタスクにしか対応していません
  • 制限時間は 5分〜24時間55分まで対応しています
  • スマートフォンがスイープ状態だとアラートが鳴りません。

連絡先

2013年2月6日水曜日

じゃんけんシューティングを公開


 GitHubにてじゃんけんシューティングをリリースしました。
    http://yokano.github.com/JankenShooting/

    GoogleChrome用のブラウザゲームでJavaScriptで書かれています。
    GitHub pageからソースコードを見ることができます。