32
Ruby/SDLとその周辺 大林一平 (ohai) (yhara)

Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDLとその周辺

大林一平 (ohai)原 悠 (yhara)

Page 2: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

発表内容

自己紹介

Ruby/SDLとは何かRuby/SDLでできること、できないこと利用例

Ruby/SDLの周辺Ruby/SDLスターターキット

Page 3: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

自己紹介

大林一平

京都大学理学研究科数学数理解析専攻数学系

専門は力学系

Ruby/SDL, SDLSKK, RRSE,Ruby Refactoring Browser

Page 4: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

京大マイコンクラブ(KMC)

京大のコンピュータサークル

発表者は両方ともKMC部員歴史は結構長い

Linux/98Anthy/uim

http://www.kmc.gr.jp/

Page 5: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDLとは何か

RubyでゲームをつくるためのライブラリSDL (Simple DirectMedia Layer)のラッパ

様々な環境で動作

Windows, Linux, FreeBSD, Mac OS X…http://www.kmc.gr.jp/~ohai/rubysdl.html

Page 6: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDLの歴史

2000年から開発2001年にversion 0.1を公開2005年10月にversion 1.0を公開最新版はversion 1.3.0

Page 7: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

そもそもSDLって?

クロスプラットフォームマルチメディアライブラリLinux, Windows, BeOS, MacOS (X), *BSD…様々なバックエンド

DirectX、GDI、X…ゲーム、エミュレータ、動画再生ソフトなど基本はC言語用→様々な言語バインディング

Perl, Python, Ada, Erlang, ML, Scheme, Java, C#, Ruby, Haskell…

http://www.libsdl.org/

Page 8: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDLで何ができるのか

グラフィック2D高速描画BMP、PNG、JPEGなどの読み込みOpenGLと組み合わせて3D描画文字列の描画

音声出力

キーボード、マウス、ジョイパッド

リアルタイムなものに強い

Page 9: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDLで何ができないのか

×高水準なGUI×音声入力

×高度な画像加工やPNGの出力SDLの守備範囲外自前で実装すれば可能

Page 10: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDLの特徴

SDLのAPIに比較的忠実高速なAPIと便利だけど遅いAPI危険な機能は使えないように

ThreadやCallBack関連

それ以外はできるだけ機能を網羅

高いPortability1行も変更せずにWinでもLinuxでも動く!

Page 11: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

利用例

ゲームや簡単なデモなどに使われている

Ruby/SDL Users –作品リンクhttp://mono.kmc.gr.jp/proj/rubysdl/?Works

Page 12: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

周辺のはなし

OpenGLOpenGL Interface、Riko高レベルAPI

MiyakoMyGameその他

sgl、librend

Page 13: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDLの今後

半年に1度はバージョンアップSDLの開発に追随内部構造の改良

英語のドキュメント

Page 14: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDLスターターキット

原 悠(yhara)

Page 15: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

自己紹介

原悠 (yhara)滋賀在住

Ruby歴6年るびま記事「Ruby/SDL で始めるゲームプログラミング」

Ruby勉強会@関西での発表「Plagger meets Ruby」「30分でわかる継続の使い方」 (来週)

Page 16: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

○○P

matzがあまり好きではない^^;言語といえば?

Page 17: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

PHP

matzがあまり好きではない^^;言語といえば?

HSP

Page 18: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

HSPとは

ゲームやGUIアプリを簡単に作れる趣味プログラマに広く使われている

本が7冊以上(言語としてはともかく)ツールとしてとても優れているからこそ普及した

Page 19: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

HSPはなぜ普及したか

(1) インストールが簡単(2) 作品の配布が容易(3) 解説サイトがたくさんある

Page 20: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

HSPはなぜ普及したか

(1) インストールが簡単(2) 作品の配布が容易(3) 解説サイトがたくさんある

Ruby/SDLでもなんとかできないか?↓

Ruby/SDLスターターキット

Page 21: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

(1) インストールが簡単

ダウンロードして解凍するだけ!

RubyのインストールがいらないPATHの設定がいらないMS-DOSプロンプトがいらない

Page 22: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

使い方

(1) main.rbを編集(2) game.exeをダブルクリック

Page 23: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

内部の仕組み

Exerb

Rubyスクリプトをexeにまとめてくれるツール

ruby.exe start.rb

game.exe

main.rb

task.rb

player.rb

items.rb

画像

音声

Page 24: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

内部の仕組み

部分Exerb

main.rbより先をexeの外に出すスクリプト部分は自由に書き換え可能に

ruby.exe start.rb

game.exe

main.rb

task.rb

player.rb

items.rb

画像

音声

↓動的にrequireされる

Page 25: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

応用

VisualuRubyスターターキットRMagickスターターキットdRubyスターターキット… etcインストールが要らない

→学校のコンピュータ室で使える

→中高生のクラブ活動で使ってもらえる

Page 26: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

(2) 作品の配布が簡単

必要なファイルをzip圧縮するだけランタイム一切不要

友達のPCにRubyが入ってなくてもOK

Page 27: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

(3) 解説サイトがたくさんある

公式サイト

充実したリファレンスマニュアル

簡単なチュートリアル

サンプルプログラムRuby/SDLのパッケージに付属(sample/*.rb)

Rubyist Magazine(るびま)記事18号 Ruby/SDL で始めるゲームプログラミング【前編】19号 Ruby/SDL で始めるゲームプログラミング【後編】

Page 28: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDL Users (Wiki)

http://mono.kmc.gr.jp/proj/rubysdl/

Page 29: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

Ruby/SDL Users (Wiki)

http://mono.kmc.gr.jp/proj/rubysdl/

Page 30: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

まとめ

人間、使い慣れた言語を使い続けるもの

例:最初にPerlを学ぶ→Perl使いに

Page 31: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

まとめ

人間、使い慣れた言語を使い続けるもの

例:最初にPerlを学ぶ→Perl使いに→先手必勝

→中高生重要

→スターターキット重要

→応援してください (^^;

Page 32: Ruby/SDLとその周辺 - KMCohai/RubyKaigi2007/presentation.pdf · 2014-04-13 · Ruby/SDLの特徴 zSDLのAPIに比較的忠実 z高速なAPIと便利だけど遅いAPI z危険な機能は使えないように

ご清聴ありがとうございました