2015年1月22日木曜日

Stencyl で Android アプリ作成のメモ

Windows 版 Stencyl 3.2 時点でのメモです。(無課金)
Android 向け以外のことも書いてます。

GUI 上で設定した日本語テキストは表示できない

あら不思議、Stencyl は Android アプリにすると、ビヘイビアの text とか list とか map なんかで入力しておいた日本語が表示されなくなります。

ただし何故かスクリプトからであれば使用できます。
つまり set [text] to [attribute] というように、スクリプト上で設定すればOK。
ビヘイビアやアクターのカスタマイズとかの画面で入力した日本語は表示されないので注意。

なお、Flash 書き出しなら、何の問題もなく出力されます。

GUI でビヘイビアのテキスト属性値を設定すと、表示できない文字がある

それは「<」「>」「”」「&」です。「&lt;」などとエンティティ化しやがった上でそのまま表示しやがります。

ただしこちらもスクリプトからであれば使用できます。
なので、スクリプト上で「replace “&lt;” with “<" in [text]」とかすれば解決はします。 また、Flash であれば問題なく表示されます。 ちなみに 1byte フォントで該当する位置にある文字は使用できないことになります。(位置はフォントによる)

フォントの「Import Font from Image」機能がへん

この問題は Stencyl 上で発生します。
なんかこの機能はまともに動作しないです。
(ワークスペースフォルダ内のファイルを直に書き換えたりしないとダメ)

show alert with title ブロックは使えるよ。

もちろん日本語は使えないがな!
ちなみにスクリプト上で「\u3042」という感じに文字コードで入力したらコンパイルが止まらなくなったゾ☆

AdMob Extension は利用できない?!

Setting にて AdMob Extension を利用可能な状態にするだけで、Compiling が中断してしまう。
英語圏では特に問題になっていないようなので、私の環境限定なのかは分かりませんが、とにかくダメになりやがります。
Stencyl 自体をクリーンインストールしなおすと直るかもしれないらしいです。
標準の Monetization 機能使えということか?!

App Name に日本語は使えない

全角が含まれていると Compiling が終わらない。
運良く終わってもアプリ名が文字化けする。

Scale Mode でスケール変更するようにしていると WebViews の位置がズレる

100%で表示されるなら問題ないと思われますが、拡大縮小されるとその分 WebViews の位置がズレます。
No Scaling にして Scale 1x、1.5x…で対応するようにすればOK。

Enable Debug Drawing が有効なのは Box2D の時だけ

この問題は Android に限りません。Flash でも発生します。
また、Collision Group で何かしらのグループの Region を ON にすると書き出し時にエラーが出ます。
さらに動的に create region したい時は、Created イベントなどで作らないと、生成されるのに反応しない region ができる。(例えば Enter Screen イベント時で作っても反応しない)

シーンでアクターのカスタマイズをすると本家の値も変更される場合がある

この問題は Stencyl 上で発生します。
List 形式の Attributes でよくなります。
本家の編集画面を開いていると回避できるような…

Attribute の Internal Name を変更したら一旦セーブしてからゲームを閉じた方がいい

この問題は Stencyl 上で発生します。
でないと null がぁーってエラー出るだけで参照できません。

アプリ終了するには、以下のスクリプトで安定か?!

Import で、
import nme.Lib;
をインポートして、必要な箇所で
#if android
nme.Lib.exit();
#end
とすればOKかな。
ほかにも
import nme.system.System;
nme.system.System.exit(1);
という案もあるようだが、こちらでは完全に終了されない様子。

「trigger event」にテキストは渡せない

この問題は Android に限りません。Flash でも発生します。
テキストの Attribute はムリなご様子。
「trigger event [text] in behavior [text] for [actor]」とかを使いませう。

五十音のテキストデータ(ひらがな・カタカナの一覧)

ひらがな、カタカナ、の五十音テキストデータが欲しいのに全然見つからなかったのでわざわざ作りました。
組み込みフォントで文字指定するときに便利です。
コピペしれ。

あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
はひふへほ
まみむめも
やゆよ
らりるれろ
わゐゑを


がぎぐげご
ざじずぜぞ
だぢづでど
ばびぶべぼ
ぱぴぷぺぽ

ぁぃぅぇぉ

ゃゅょ

アイウエオ
カキクケコ
サシスセソ
タチツテト
ナニヌネノ
ハヒフヘホ
マミムメモ
ヤユヨ
ラリルレロ
ワヰヱヲ


ガギグゲゴ
ザジズゼゾ
ダヂヅデド
バビブベボ
パピプペポ

ァィゥェォ

ャュョ



、。ー~「」【】『』゛゜
♪♭■□◆◇△▲▽▼◎○●◯‥…・∴∵※×〒
!”#$%&'()=~|`{+*}<>?_-^\@[;:],./\
!”#$%&’()=~|`{+*}<>?_-^\@[;:],./\

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

0123456789

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

0123456789

2014年6月30日月曜日

【自作】1分で作れる Oculus Rift っぽいスマホ VR HMD (ヘッドマウントディスプレイ)【安価】

※もはや百均で VR ゴーグルや VR メガネそのものが買えるので、自作する意味はほぼ失われました。
ただしそれらは高価な製品に比べるとレンズなどの質が落ちるので注意です。
楽しみかた(コンテンツ)はこちら

まずは完成品の写真をご覧ください↓


おっと!バカにするのは実際に試してからにしてもらおうか!(`・ω・´)

Oculus Rift を体験した衝撃から自作する方が多いようですが、どうも工作に自信のある方のハイレベルな物ばかりなので、もっと究極に手軽なものを考えてみました。

また、先日 Google I/O で配布されたダンボールで自作できる Cardboard もかなりお手軽な感じはありますが、自作するには部品点数も多くダンボールといえど高いカッティング技術が要求されるなど、まだまだ難度は高いように感じます。

※ 最近では簡単に作れるキットも発売されています。
ハコスコ
タオバイザー|TaoVisor

このページでは簡易 VR HMD の作り方や楽しみ方の紹介をしています。
こうやって使うのデス!

■ では早速作り方!

完成品を見れば一秒で理解できる構造(?)ですが、実は色々と注意点もあるので最後までよく読んでね。
まず以下のものを用意してください。
  1. 画面サイズ5~7インチ程度のスマホ
  2. 置き型ルーペ(2個)
  3. セロハンテープ
手軽とか謳っておきながら初っ端にスマホを要求するところが詐欺臭いですが、電子工作なしでディスプレイからトラッキングまでを実装できる唯一の方法なので、これを外すことはできません;

☆ 注意点その1:画面サイズについて

[2016/12/28追記]
Google 先生が画面サイズに依存しない方法を考案してくれました。
これで画面サイズの問題はほとんど解決できます。
詳しくは「iPhone で VR (YouTube・Cardboard )がずれる場合の対処法(android もOK)」の解決策その3をご確認ください。

スマホなら何でも良いというわけではありません。
特に画面サイズ(幅)が重要です。
詳しくは下の図をご覧ください。


つまり中心が大きくズレないことが条件です。
多少のズレ(特に内側へのズレ)は眼球がどうにかしてくれます。(疲れやすくなるけど)
個人差もありますが、昨今の5インチディスプレイ端末であればたぶんOKです。
7インチでもいけるらしいのですが、モノがないので未確認です。(FakeRift では7インチを採用してる)

次に至近距離からディスプレイを見れるようにするための、凸レンズが必要になります。
置き型ルーペであればピント調整や外装を用意する必要もなく、取り付けるだけで完成させることができるのでお勧めです。

ただし恐らくこのルーペを調達することが、最も困難な工程になるかと思います。

☆ 注意点その2:ルーペの選び方

置き型ルーペであれば何でも良いというわけではありません。
そもそも画面内に2つ置ける大きさである必要があります。


没入感に大きく関わる部分なので、余裕のある方は色々な製品で試してみることをおすすめします。
私は運良く丁度いいサイズのルーペが100均で用意できたのですが、そうでない方はこの部分を自作する必要があります。
その方法は後記『置き型ルーペを自作する』を参照してください。
(実は写真のルーペも一手間加えることでより良くできることが後で分かりました⇒『改良してみた』)
先の完成品の写真では以下のものを使用しています。
  1. Samsung Galaxy S III
  2. 100均のルーペ


ちなみに百均でルーペは文房具コーナーではなく老眼鏡コーナーにあることが多いです。
ルーペの位置は個人差があるので一概には言えませんが、まずは両画面の中心にルーペを置き、実際に映像を確認しながら見やすいと思う位置に微調整しましょう。
あとはルーペをテープで固定すれば完成です。


なお、テープはスマホを持った時の上側一箇所だけで止めておけば、ルーペをペロンとひっくり返すだけでタッチ操作ができるようになるので楽チンです。

■ 楽しみ方(コンテンツ)

追記:Youtube ではヘッドトラッキング機能を利用した360°動画も楽しめます。
下記の3D検索と同様に360°動画も絞り込み検索できます。
「#360Video」で検索してチャンネルにアクセスし、360Video のハウス チャンネルを開きましょう!
動画のメニューで Cardboard を選択すれば左右の2画面にできます。
ただし360°=3D動画ではありません!(これ超重要)
ただの 360°動画を左右2画面にしても立体視の効果はないので騙されないようにしてくださいw(360° 3D 動画も無くはない)
最も手軽なのは YouTube の3D動画やニコ動にある立体視(平行法)の画像や動画です。
ヘッドトラッキング機能は利用できませんが、数も多く再生するだけで手軽に楽しめます。
「立体視」や「平行法」などのキーワードで検索すると捗ります。
※ただしスマホの画面と縦横比率が異なり中心がズレるタイプのものは利用できません(ニコ動に多い)
また、YouTube では3D動画を絞り込み検索できます。



専用アプリであればヘッドトラッキング機能を利用した、より没入感の高いコンテンツを楽しむことができます。
同じようなアイデアで作られた自作 VR HMD 用アプリも色々と出ているので、いくつかご紹介します。
ちなみにここで紹介しているものは全部 Android 用です。



Tuscany Dive


Dive City Rollercoaster


The Height Demo

足元にボタンがあって視点を数秒合わせると歩き始めるとか色々工夫されていて面白いです。
Android 対応ゲームパッドがあれば、より本格的なゲームも楽しめます。
まぁ本機では両手がふさがってるから無理ですがねw



REFUGIO 3D Space-Station


Hang Gliding


Shadowgun VR

この他にも色々あります↓
ハコスコに対応している iOS、Androidアプリの紹介(ハコスコ以外でも利用できるもの多数)
divegames のゲーム一覧ページ
REFUGIO3D のゲーム&動画紹介ページ(消えた?)
なお残念ながら Oculus Rift 対応のゲームを遊ぶことはできません。
あと、部屋を暗くしたりイヤホンを使用したりすると、臨場感&没入感がましてイイ感じになります。

■ 置き型ルーペを自作する

そもそも置き型ルーペ自体手に入りにくいので、比較的どこの百均にもある虫眼鏡タイプのルーペで代用する方法を考えてみました。
ルーペは以下のようなものを選びましょう。
  1. できるだけ画面上に2つ収まるサイズ
  2. それでいて、できるだけ大きいもの
  3. できるだけ拡大率(倍率)がいい感じのものw
てか「拡大率がいい感じ」ってナンヤネン!と思われるかもしれませんが、画面やレンズのサイズによって最適な倍率は異なるので、実際に店頭でスマホにかざして試してみることをおすすめします。
(そもそも「○倍率」とかの表示自体が微妙に信用できないです…)

なお、2~3倍のレンズでは数枚重ねなければ、まったく話しにならないレベルです。
そのため、手に入るレンズのサイズと倍率にもよりますが、少なくともこれが2セット(計4個)くらい必要になることが多いです。
小さいお店だとデカイくせに倍率2倍とかのしか無い場合があります。
(そもそも大きいレンズより小さいレンズのほうが倍率を高くしやすい)

どうしても2~3倍のものしか無いという場合は、片側4枚重ねの計8個とかになる場合もありますので覚悟してください。
では、具体的な試し方を説明します。


  1. レンズと目の距離を可能な限り近づける
    (レンズの外が見えないようにするため。大きいほうが許容範囲が広くメガネにも対応しやすい)
  2. その状態でピントが合う位置まで画面に近づく
    (目は遠くを見る感覚のまま、距離でピントを合わせること!)
  3. その状態の視野によって判断する
    • A.広すぎる(余計なものが見えてしまう)
      ⇒倍率が低いので、より倍率の高いものに替えるか、もう一枚重ねて再度1.からやり直し。
      ※妥協点:既に3枚以上重ねてる
    • B.丁度いい
      ⇒その組み合わせで利用できそうです。
    • C.狭すぎる
      ⇒倍率が高すぎる。倍率が低いものに替えて再度1.からやり直し。
      ※妥協点:ほかにない
※この試し方は片目でもおこなえます。
※多少広かったり狭かったりしても、使えないわけではないのである程度は妥協も必要です。


先にも書きましたが文房具コーナーではなく老眼鏡コーナーにあることが多いです。
「やだあの人、老眼鏡でスマホ見てるプププ」という視線に晒されることもありますが、とにかく根性でいい感じのものを探してくださいw

ルーペが用意できたら、早速取り付け作業に入りましょう。
あらかじめ実際に映像(ヘッドトラッキングしない動画や静止画)を再生しながら、ルーペの組み合わせを確認したり、画面との距離や位置などを測り、最適な状態をメモしておくと良いでしょう。


土台(?)には加工しやすい紙コップを使用します。
高さ調節も簡単ですし、なにより円錐形なので視野も保たれます。
紙コップの底をカッターで切り取り、ピントが合うよう高さもカットしてルーペを載せれば完成です!
わ~カンタン!

まぁ組み合わせによっては使えない方法かもしれないけど、各自こんな感じで工夫してみてね!
なお、上記の例では3.5倍ルーペを2枚重ねで使用していますが、それでも視界に余計なものが入ってしまいます。

同じ製品を使用している方は3枚重ねにして距離を縮めることをお勧めします。

■ もう一手間加える

コップの内側を黒く塗りさらに室内を暗くすれば、余計な部分が目立たなくなり見やすくなります。


特に両目で見た時の反射によるチラツキが抑えられます。

レンズだけにするとコンパクトにできます。
重ねにくくなりますが、重い場合や幅があり過ぎる場合に有効です。
ノコギリなどで写真のように一部をカットすればレンズだけ取り外せます。
取っ手を切り取るだけでも軽量化になります。

■ 改良してみた

市販の置き型ルーペをそのまま利用してもそれなりの成果を得られましたが、少し視野が狭いと感じたので、その点を改良してみました。

特定の製品を使用しているため、参考になるか分かりませんが何かの足しになれば幸いです。
さて、「視野が狭い」ということは「倍率が高過ぎる」ということなので、そこを調整する必要があります。

当該置形ルーペはキャップを開けるように回せば、簡単に分解できます。

幸いなことにこのルーペではレンズを2枚使用していたので、1枚外すだけで倍率を下げることができます。
(商品は3倍率と謳っていますが、これ一枚で3.5倍と謳っているルーペより拡大率が高かったです…
何をどう信じたらいいのか分かりません;)

ただし、それだけでは今度はピントがズレてしまい使い物になりません。

ピントを合わせるには画面から少し離す必要がありました。
そこで、下に倍率低め(といっても3.5倍)のルーペを敷いてみたところ、ぴったりと合いました。


あ、あとキャップも外しています。(縦にした時レンズが落ちないようにもした)
結果これだけの効果がありました。(実際にレンズ越しに撮影したものです)


周りがよく見えるようになり、ドットの荒さも気にならなくなりました。
同じような製品が手に入る方は、ぜひお試しください。(/・ω・)/

■ 過度な期待は禁物ですw

当たり前ですが、いろいろな面で Oculus Rift には及びません。
  1. 期待したほどの没入感はない(組み合わせにもよるけど)
  2. Oculus Rift のゲームは遊べない
  3. トラッキング遅延
  4. そもそもヘッドにマウントしてないよね
ディスプレイやレンズのサイズによっては期待したほどの没入感は得られないかもしれません。
多くの手作り VR HMD では7インチを採用しているので、その方がいいのかもしれません。
私は5インチでジェットコースターのアプリをワクワクしながら起動してみましたが、別に全然ギャーとかなりませんでしたw
より高品質な体験を希望する方は、素直に Oculus Rift を注文しましょう。

■ 参考資料

タオバイザー|TaoVisor
FakeRift関連
FakeRiftクラウドファンディングのためのメモ
https://media.dmm-make.com/maker/379/
Google Cardboard
Durovis Dive
REFUGIO 3D
iPhone 向けダンボール製の簡易 HMD キット『ハコスコ
「スマートフォン用ポータブル・VRケース」

2014年6月22日日曜日

windows の stencyl 3.0 系で Extensions が正しく読み込まれない場合の対処法

まず、Extension は windows 版であれば
C:\Users\[ユーザー名]\AppData\Roaming\Stencyl\stencylworks\engine-extensions\
フォルダの中にインストールされます。

それ以外にも
C:\Program Files\Stencyl\plaf\haxe\extensions\
というフォルダ内にもそれっぽいのが入っていますが、ここは違うようです。(現在は使用されていない?)

で、外国で「Extensions ガ、ヨミコマレナイデース」とか「Extensions ガ、インストールデキナイデース」とかの問題の多くは前者のフォルダに解凍した extensions をぶち込めば解決するぜブラザー!とかいう回答ばかりなのですが、私の場合は違いました。
もしかして日本語環境でのみ発生する問題なのでしょうか?

そもそも既存の Extension (Tile API や Test Extension)ですら有効化してもブロックが追加されないので、よくよく調べてみたところ各フォルダ内の blocks.xml が正しく読み込まれていないことがわかりました。

どうもこの XML には Unicode の BOM (byte order mark)が追加されているようで、それをテキストエディタで無しにすることで Extension が機能する(拡張ブロックが利用できる)ようになりました。

上記が直接の原因かはわかりませんが、単にインストールするだけではダメな場合は一度お試しください。

2011年12月29日木曜日

キーストア(keystore)の作り方について

android アプリを配布するには、そのアプリが署名されていなければダメなので、その方法をメモ。

署名のやり方は簡単で、まず自己証明書を用意し、それを使ってアプリに署名すればいいだけのようです。

で、その自己証明書を用意するには JDK に付属している keytool というユーティリティを利用するのですが、証明書単体を作るのではなく、証明書と鍵がセットになったキーストア(keystore)を作ります。

※ちょっと上記のキーストアや鍵・証明書などに関する認識が怪しいかもしれません。
キーストアや keytool に関する詳細は↓のサイトをご覧ください。
keytool - 鍵と証明書の管理ツール

では、そのキーストアの作り方ですが、DOS窓で以下のようなコマンドを実行するだけです。
keytool -genkey -v -keystore [ファイル名] -alias [証明書の名称] -validity [有効日数]
  • -genkey 鍵のペアを生成するコマンド。 (結果的にキーストアができる)
  • -v このオプションを指定した場合、コマンドは「冗長」モードで実行され、詳細な証明書情報が出力されます。だそうですよ。とりあえず付けとけ。
  • -keystore キーストアのファイル名。拡張子は .keystore とするといいみたい。
  • -alias キーストア内での証明書の名称。
  • -validity 証明書の有効日数。android では10000以上が推奨されています。
例えばこんな感じにします。
keytool -genkey -v -keystore C:\folder\test.keystore -alias TEST -validity 10000
で、これを実行すると以下のように質問されまくります。

「キーストアのパスワードを入力してください:」
設定したいパスワードを入力します。(画面には何も書かれない)
んで Enter 。

「新規パスワードを再入力してください:」
と言われるのでもっかいいれる。

「姓名を入力してください:」
素直に入れる。

「組織単位名を入力してください。」
会社で言うところの部署とかのことらしいよ。
個人なら personal とか android とか入れときゃOK。

「組織名を入力してください。」
会社名とかサークル名とかブランド名とか入れときゃイイんじゃん?

「都市名または地域名を入力してください。」
市区町村だべ。

「州名または地方名を入力してください。」
都道府県だべ。

「この単位に該当する 2 文字の国番号を入力してください。」
日本は jp だそうです。

「{入力した内容}でよろしいですか?」
y と入力して Enter 。

「{生成してます的なこと}」
「{証明書の名称}の鍵パスワードを入力してください。
(キーストアのパスワードと同じ場合は RETURN を押してください):」
然るべき入力をする。

んで完成。
ファイル名で指定した場所に .keystore ファイルが出来ているはずです。

corona でビルドするときにはビルドセットアップ画面の「Keystore :」欄に .keystore を。
「Key Alias :」欄に証明書の名称を入力すればOKです。

あらカンタン。

2011年2月24日木曜日

去年の7月のことですが、フカがおもむろにライフルを構えた時の姿が秀逸すぎたので写真に撮りました。
コレです。







おかしなところを拡大







イタイ!イタイ!(ノД`)・゜・。

スコープを覗くという知識が仇になってしまったようです。
その後すぐに構え方を教えたので今ではちゃんと構えられます。🔫🐰