2018/02/20(火) [n年前の日記]
#1 [dxruby] DXOpalでタイルマップBG描画その4
DXOpalを使って、タイルマップBGを描画する実験をしているわけだけど。32x32ドットの時は Firefox ESR 上で60FPSを出せなかったけど、少しサイズを大きくして、48x48 にしたらどうなるだろうかと疑問が湧いたので試してみたり。
_DXOpal fake draw_tile (1chip: 48x48 ver.)
640x480ドットのウインドウサイズ、レイヤーを3枚描画してる状態。カーソルキーの入力で、任意の方向にスクロールできるようにしてある。
Firefox ESR上では…。ちょっと危ないけど、なんとか60FPS出てる…ように見えなくもない…かな…。ただ、CPU使用率は20%前後をウロウロしてるので、もう少し何かしらの処理を追加したら、すぐに処理落ちしそうな予感もあるのだけれど。
ちなみに、 Google Chrome で動かすと、CPU使用率は13%前後。
Tiled のデータも置いときます。License : CC0 / Public Domain ってことで。
_atari_test_48x48_chip.png
_atari_test_48x48.tmx
_atari_test_48x48.json
_DXOpal fake draw_tile (1chip: 48x48 ver.)
640x480ドットのウインドウサイズ、レイヤーを3枚描画してる状態。カーソルキーの入力で、任意の方向にスクロールできるようにしてある。
Firefox ESR上では…。ちょっと危ないけど、なんとか60FPS出てる…ように見えなくもない…かな…。ただ、CPU使用率は20%前後をウロウロしてるので、もう少し何かしらの処理を追加したら、すぐに処理落ちしそうな予感もあるのだけれど。
ちなみに、 Google Chrome で動かすと、CPU使用率は13%前後。
Tiled のデータも置いときます。License : CC0 / Public Domain ってことで。
_atari_test_48x48_chip.png
_atari_test_48x48.tmx
_atari_test_48x48.json
◎ 余談。 :
[ ツッコむ ]
#2 [dxruby][ruby] RubyスクリプトがOpal上で動いてるかどうかを判別する方法ってあるのかな
今現在、DXRuby と DXOpal の両方で、最低限の修正で動くようなスクリプトソースを書いているつもりではあるのだけれど。そのRubyスクリプトソースが、Opal(DXOpal)上で動いているのか、ローカル(DXRuby)で動いてるかを判別する方法があれば、一々ソースを修正して動かさなくても済みそうだなと思えてきたわけで。
しかし、そんな方法はあるのだろうか…。
require 'opal' がされてるかどうかを判別できればいいのかな? でも、どうやって判別すればいいのだろう。もしかして、名前が定義されているかどうかを調べればいいのだろうか。
ググってみたものの、検索キーワードがマズいのか、それらしい情報には遭遇せず。Ruby で、「既に require 'hoge' されてるか調べる」ってのは、どうやるんだろうなあ…。
しかし、そんな方法はあるのだろうか…。
require 'opal' がされてるかどうかを判別できればいいのかな? でも、どうやって判別すればいいのだろう。もしかして、名前が定義されているかどうかを調べればいいのだろうか。
ググってみたものの、検索キーワードがマズいのか、それらしい情報には遭遇せず。Ruby で、「既に require 'hoge' されてるか調べる」ってのは、どうやるんだろうなあ…。
◎ 2018/03/01追記。 :
コメント欄でDXOpal作者様から判別方法を教えていただけました。ありがとうございます。助かります。
動作確認してみたけれど、ちゃんと動いてる模様。一々ファイルを修正しなくても動作確認ができるので、かなり楽になりそう。ありがたや…。
_constant Object::RUBY_ENGINE (Ruby 2.5.0)
if RUBY_ENGINE == "opal" # DXOpal else # DXRuby endまたは、
if RUBY_ENGINE == "ruby" # DXRuby else # DXOpal endこんな感じかしら。
動作確認してみたけれど、ちゃんと動いてる模様。一々ファイルを修正しなくても動作確認ができるので、かなり楽になりそう。ありがたや…。
_constant Object::RUBY_ENGINE (Ruby 2.5.0)
RUBY_ENGINE -> Stringこんな定数があったのか…。勉強になった…。
Ruby処理系実装の種類を表す文字列。
この記事へのツッコミ
- Re: RubyスクリプトがOpal上で動いてるかどうかを判別する方法ってあるのかな by yhara 2018/02/22 18:19
- RUBY_ENGINE == "opal" でいけますね (CRubyだと"ruby"になります)。
[ ツッコミを読む(1) | ツッコむ ]
#3 [javascript] ACEエディタを複数並べるあたりで悩んだり
JavaScriptで書かれた ACEエディタというものがあると先日知ってちょこちょこ使い始めているのだけど、複数のソースを並べて表示させる方法が分からなくて悩んだり。
今のところ、以下のような書き方をしちゃってるけど…。これでいいのだろうか…。本当に合ってるのか…? もっと上手い書き方があるのでは…?
今のところ、以下のような書き方をしちゃってるけど…。これでいいのだろうか…。本当に合ってるのか…? もっと上手い書き方があるのでは…?
<h2>Source code</h2> <h3><a href="main.rb">main.rb</a></h3> <div id="editor1" class="editor"></div> <h3><a href="dxrbmapjson.rb">dxrbmapjson.rb</a></h3> <div id="editor2" class="editor"></div> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.1/ace.js" charset="utf-8"></script> <script> var file_list = [{ id: "editor1", filename: "main.rb" }, { id: "editor2", filename: "dxrbmapjson.rb" } ]; var editors = (file_list).map(function(file_info) { var id = file_info["id"]; var filename = file_info["filename"]; var editor = new ace.edit(id); // editor.setTheme("ace/theme/chrome"); editor.getSession().setMode("ace/mode/ruby"); // editor.setFontSize(16); $.get(filename, function(rb) { editor.setValue(rb, -1); // -1: set cursor to document start }); return editor; }); </script>
[ ツッコむ ]
以上、1 日分です。