Ruby用ゲームライブラリ DXRuby は、使いやすく人気の高いライブラリです。だだし、Windows上でしか動かないため、Macなど他のOSで動かそうという試みがいくつかなされてきました。
このうち Wine上で本物のDXRubyを動かす以外は、DXRubyのAPI互換ライブラリを作ろうというものなので、なかなか100%互換とはいきません。
そこで、これからAPIの互換性を高めて開発していくための目安として、いくつかのDXRubyプログラムと、これまで作られたAPI互換ライブラリで採用されたメソッド、定数を一覧にしてみました。
今後の開発の助けになれば幸いです。
(なお、調査はあくまで著者個人で行ったものなのをご承知おきください。)
参考;
→・よくわかる Ruby ゲーム開発のいま - あおたくノート
→・「中高生国際Rubyプログラミングコンテスト2016 in Mitaka」の最終審査対象作品はすべてDXRubyを使っていました。
参考にしたプログラム・ライブラリ
○ 『オブジェクト指向言語「Rubyプログラミング入門」テキスト(初心者用または講師用)2nd Edition』(まちづくり三鷹著・刊、2015年)
(dxruby on nanogl が対応させる予定にしている書籍)
△ 『小学生から楽しむRubyプログラミング』(まちづくり三鷹著、日経BP社刊、2014年)
□ DXRubyで 0から作る「ブロック崩し」 - noanoa 日々の日記
● dxruby_sdl
■ dxsdl2r
上記資料で使われたDXRubyのメソッド・定数の頭に、資料の記号をつけてあります。
(DXRubyのメソッド・定数一覧は、DXRuby 1.4.5 リファレンスマニュアル から)
module Input
○□●■ x
□●■ y
●■ key_down?
○△●■ key_push?
■ key_release?
● pad_down?
● pad_push?
pad_release?
● set_repeat
set_key_repeat
set_pad_repeat
set_config
■ mouse_x
■ mouse_y
○△□●■ mouse_pos_x
○△□●■ mouse_pos_y
set_mouse_pos
○●■ mouse_down?
○△●■ mouse_push?
○■ mouse_release?
mouse_wheel_pos
mouse_wheel_pos=
mouse_enable=
● keys
pads
requested_close?
■ update
pad_num
pad_axis
pad_lstick
pad_rstick
pad_pov
pad_lx
pad_ly
pad_rx
pad_ry
pad_pov_x
pad_pov_y
set_cursor
module Window
○△□●■ loop
close
created?
closed?
○△□●■ draw
○△● draw_scale
draw_rot
draw_alpha
draw_add
draw_sub
■ draw_shader
●■ draw_ex
○●■ draw_font
draw_font_ex
draw_morph
draw_tile
draw_pixel
draw_line
draw_box
■ draw_box_fill
draw_circle
draw_circle_fill
ox
ox=
oy
oy=
get_screen_shot
get_load
● open_filename
save_filename
folder_dialog
create
sync
○ update
load_icon
hWnd
x
x=
y
y=
●■ width
○△■ width=
●■ height
○△■ height=
●■ caption
○△●■ caption=
● scale
scale=
windowed?
windowed=
full_screen?
full_screen=
■ real_fps
fps
●■ fps=
frameskip?
frameskip=
●■ bgcolor
●■ bgcolor=
min_filter
min_filter=
mag_filter
mag_filter=
resize
active?
running_time
get_screen_modes
get_current_modes
discard
decide
before_call
after_call
class Font
○△●■ new
■ install
default
default=
dispose
disposed?
● get_width
size
fontname
name
italic
weight
auto_fitting
info
class Image
○△□●■ new
○△●■ load
●■ load_tiles
create_from_array
load_from_file_in_memory
perlin_noise
octave_perlin_noise
custom_perlin_noise
perlin_seed
dispose
delayed_dispose
disposed?
■ []
■ []=
● compare
○●■ line
△●■ box
○△●■ box_fill
●■ circle
○△□●■ circle_fill
triangle
triangle_fill
fill
■ clear
copy_rect
△● draw
△● draw_font
draw_font_ex
save
● slice
slice_tiles
dup
clone
○△● set_color_key
△□●■ width
○△□●■ height
flush
effect_image_font
change_hls
class RenderTarget
●■ new
dispose
disposed?
●■ draw
draw_scale
draw_rot
draw_alpha
draw_add
draw_sub
■ draw_shader
■ draw_ex
●■ draw_font
draw_font_ex
draw_morph
draw_tile
draw_pixel
draw_line
draw_box
draw_box_fill
draw_circle
draw_circle_fill
■ update
■ width
■ height
■ bgcolor
■ bgcolor=
min_filter
min_filter=
mag_filter
mag_filter=
to_image
discard
decide
resize
ox
ox=
oy
oy=
class Shader
■ new
technique
technique=
setter/getter
class Shader::Core
■ new
dispose
class Sound
○● new
load_from_memory
dispose
disposed?
○● play
start=
loop_start=
loop_end=
loop_count=
● stop
● set_volume
pan
pan=
frequency
frequency=
class SoundEffect
SoundEffect
● new
● WAVE_SIN
● WAVE_SAW
● WAVE_TRI
● WAVE_RECT
disposed?
● add
● play
● stop
save
class Sprite
□●■ new
□● check
●■ update
□●■ draw
□●■ clean
□● draw
□● ===
□● check
□■ x
□■ x=
□■ y
□■ y=
■ z
■ z=
angle
angle=
scale_x
scale_x=
scale_y
scale_y=
center_x
center_x=
center_y
center_y=
alpha
alpha=
blend
blend=
■ shader
■ shader=
□■ image
●■ image=
■ target
■ target=
■ collision
■ collision=
collision_enable
collision_enable=
collision_sync
collision_sync=
visible
visible=
□●■ vanish
●■ vanished?
param_hash
offset_sync
offset_sync=
キーコード定数
マウス
△●■ M_LBUTTON 左ボタン
●■ M_MBUTTON 中ボタン
●■ M_RBUTTON 右ボタン
パッド定数
● P_UP
● P_LEFT
● P_RIGHT
● P_DOWN
● P_BUTTON0(ボタン15まで)
● P_L_UP(アナログ左スティックのデジタル入力)
● P_L_LEFT
● P_L_RIGHT
● P_L_DOWN
● P_R_UP(アナログ右スティックのデジタル入力)
● P_R_LEFT
● P_R_RIGHT
● P_R_DOWN
● P_D_UP(アナログPOVのデジタル入力)
● P_D_LEFT
● P_D_RIGHT
● P_D_DOWN
キーボード
○△●■ K_ESCAPE Esc
● K_1 1
● K_2 2
● K_3 3
● K_4 4
● K_5 5
● K_6 6
● K_7 7
● K_8 8
● K_9 9
● K_0 0
● K_MINUS -
● K_EQUALS =
● K_BACK Backspace
● K_TAB Tab
● K_Q Q
● K_W W
● K_E E
● K_R R
● K_T T
● K_Y Y
● K_U U
● K_I I
● K_O O
● K_P P
● K_LBRACKET [
● K_RBRACKET ]
● K_RETURN Enter
●■ K_LCONTROL 左Ctrl
● K_A A
● K_S S
● K_D D
● K_F F
● K_G G
● K_H H
● K_J J
● K_K K
● K_L L
● K_SEMICOLON ;
● K_APOSTROPHE '
● K_GRAVE `
●■ K_LSHIFT 左Shift
● K_BACKSLASH \
●■ K_Z Z
●■ K_X X
●■ K_C C
● K_V V
● K_B B
● K_N N
● K_M M
● K_COMMA ,
● K_PERIOD .
● K_SLASH /
●■ K_RSHIFT 右Shift
● K_MULTIPLY *
● K_LMENU 左Alt
● △■ K_SPACE Space
● K_CAPITAL Caps Lock
● K_F1 F1
● K_F2 F2
● K_F3 F3
● K_F4 F4
● K_F5 F5
● K_F6 F6
● K_F7 F7
● K_F8 F8
● K_F9 F9
● K_F10 F10
● K_NUMLOCK NumLock
● K_SCROLL ScrollLock
● K_NUMPAD7 7
● K_NUMPAD8 8
● K_NUMPAD9 9
● K_SUBTRACT -
● K_NUMPAD4 4
● K_NUMPAD5 5
● K_NUMPAD6 6
● K_ADD + *3
● K_NUMPAD1 1
● K_NUMPAD2 2
● K_NUMPAD3 3
● K_NUMPAD0 0
● K_DECIMAL .
● K_OEM_102 不明
● K_F11 F11
● K_F12 F12
● K_F13 F13
● K_F14 F14
● K_F15 F15
● K_KANA カタカナひらがな
● K_ABNT_C1 不明
● K_CONVERT 変換
● K_NOCONVERT 無変換
● K_YEN ¥
● K_ABNT_C2 不明
● K_NUMPADEQUALS =
● K_PREVTRACK ^
● K_AT @
● K_COLON :
● K_UNDERLINE _
● K_KANJI 半角/全角
● K_STOP 不明
● K_AX 不明
● K_UNLABELED 不明
● K_NEXTTRACK 不明
● K_NUMPADENTER Enter
●■ K_RCONTROL 右Ctrl
● K_MUTE 不明
● K_CALCULATOR 不明
● K_PLAYPAUSE 不明
● K_MEDIASTOP 不明
● K_VOLUMEDOWN 不明
● K_VOLUMEUP 不明
● K_WEBHOME 不明
● K_NUMPADCOMMA ,
● K_DIVIDE /
● K_SYSRQ 不明
● K_RMENU 右Alt
● K_PAUSE PauseBreak
● K_HOME Home
●■ K_UP ↑
● K_PRIOR 不明
●■ K_LEFT ←
●■ K_RIGHT →
● K_END End
●■ K_DOWN ↓
● K_NEXT 不明
● K_INSERT Insert
● K_DELETE Delete
● K_LWIN 左Windows
● K_RWIN 右Windows
● K_APPS アプリケーション
● K_POWER 不明
● K_SLEEP 不明
● K_WAKE 不明
● K_WEBSEARCH 不明
● K_WEBFAVORITES 不明
● K_WEBREFRESH 不明
● K_WEBSTOP 不明
● K_WEBFORWARD 不明
● K_WEBBACK 不明
● K_MYCOMPUTER 不明
● K_MAIL 不明
● K_MEDIASELECT 不明
● K_BACKSPACE Backspace
● K_NUMPADSTAR *
K_LALT 左Alt
K_CAPSLOCK CapsLock
K_NUMPADMINUS -
K_NUMPADPLUS +
K_NUMPADPERIOD .
K_NUMPADSLASH /
K_RALT 右Alt
△ K_UPARROW ↑
K_PGUP PageUp
△ K_LEFTARROW ←
△ K_RIGHTARROW →
△ K_DOWNARROW ↓
K_PGDN PageDown
色定数
C_BLACK [255, 0, 0, 0]
□■ C_RED [255, 255, 0, 0]
C_GREEN [255, 0, 255, 0]
C_BLUE [255, 0, 0, 255]
C_YELLOW [255, 255, 255, 0]
C_CYAN [255, 0, 255, 255]
C_MAGENTA [255, 255, 0, 255]
○□■ C_WHITE [255, 255, 255, 255]
C_DEFAULT [0, 0, 0, 0]