Rubyでゲーム作り!! Miyako vs StarRuby

Slides:



Advertisements
Similar presentations
© 2007 Autodesk1 ProjectPoint API 概要 AEC ソリューション CPM オートデスク株式会社.
Advertisements

専門教科「情報」(2) 6/1/07. 各科目(続き) 課題研究 課題研究(1) 目標 情報に関する課題を設定し,その課題の解決 を図る学習を通して,専門的な知識と技術の 深化,総合化を図るとともに,問題解決の能 力や自発的,創造的な学習態度を育てる.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作 第4回 マルチスレッドとネットワーク. 今日の内容 マルチスレッド – ローディングの進捗表示とか – 処理高速化も見込めます ネットワーク通信 – 必然的にマルチスレッドを扱います.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
専門ゼミⅠ 南ゼミ 特別授業 2002年5月24日 金曜日 4限目 今泉 裕隆.
初年次セミナー 第13回 2次元グラフィックス(1).
(実はアイコンは単なる飾りで、この縦書きの部分のどこをクリックしても次のページに移動します。)
関西Ruby会議01 Lightning Talk
ペルソナウェア2002 キャラクターメーカーで キャラクターを作ろう
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
Flashプレイヤーを使った動画配信 情報工学科 宮本 崇也.
「携帯待ち受けギャラリー」 環境情報学部3年 深澤 洋介.
HTMLの基礎知識.
QRコード作って使ってみる 作成者: 川瀬 智美 川瀬智美ですよろしくお願いします ここにあるマークご覧になったことありますでしょうか?
3DCGコンテンツの基礎 第5回授業:最終課題制作
Rubyでゲーム作り!! Miyako vs StarRuby
HSPでのミニゲーム作成 早稲田実業学校PC班 Y氏.
Java言語による シューティングゲーム作成
第6回 Flashによるゲームの作成 04A2029           古賀慎也.
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
アプレット (Applet)について.
Handel-Cによる       エアホッケー.
RAD Studio 14/09/27 TEffectを使った綺麗なForm
情報科学1(G1) 2016年度.
さとりすと Satori Ghost Editor 里々ゴーストの統合開発環境を作ったよ page: 1/25
SWAT I18N 概要 付け足した機能(実行時に言語の切り替え-i18nの範囲で) 問題点(細かい技術的問題、根本的問題) 今後
プロジェクト演習Ⅱ インタラクティブゲーム制作
HTTPプロトコルとJSP (1) データベース論 第3回.
クラシック音楽普及プロジェクト KG:mao B3 wakutin.
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
Webを使ったナレッジマネジメントとビジネス展開*
第四回 ゲーム                 05A1054         前田嵩公.
プログラミング 設計資料 メンバー:.
ホームページ作成・更新講座 夏のコンピュータ学習会 画像
2003年度 データベース論 安藤 友晴.
迷宮師 コードレビュー チームカテキン.
C言語を用いたシューティング ゲームの作成
XNA Framework 2.0 SESSION 01.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
Office IME 2010 を使う.
XNA Framework 2.0 SESSION 01.
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
はぐれたメルでプログラムを 担当した一人の仁藤が 授業開始前の2時間くらいで作成
第6回:ラケットを動かそう! (キーボードによる物体の操作)
タグを使ったウェブページ作成 兵庫県立伊丹北高等学校 佐藤 勝彦.
ゲーム開発モデルの基礎.
情報機器と情報社会のしくみ Web素材利用
2次元と3次元,ゲームエンジンの構成要素, ゲームの構成物,ゲームエンジンの例
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
プロジェクト演習Ⅱ インタラクティブゲーム制作
一歩進んだ Views の使い方 スタジオ・ウミ 山中.
基礎プログラミング演習 第12回.
とにかくゲーム作ってみよう (0からのゲームプログラミング)
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
プログラミング入門 電卓を作ろう・パートI!!.
某有名落ちものゲーム っぽいものを作ってみる
某有名落ちものゲーム っぽいものを作ってみる
第6回:得点を表示しよう! (文字の表示、乱数)
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
モグラたたき.
第2回 開発環境とゲーム 05A1030 佐々木 和也.
標準入出力、変数、演算子、エスケープシーケンス
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
C言語を用いたゲームの作成 種田研究室 05A2055 松井和幸.
ソフトウェア工学 知能情報学部 新田直也.
VB6.0でグラフを書こう(とりあえず2次元)
2次元のオブジェクト ◆ 種類 2次元のグラフィックス ポイント(点) ライン(線分,折れ線) エリア(多角形など) 文字列(テキスト)
プロジェクト演習Ⅱ インタラクティブゲーム制作
Presentation transcript:

Rubyでゲーム作り!! Miyako vs StarRuby TANIGUCHI Hikaru (id:tanigon @twitter @hatena) (tanigon2001@gmail.com)

谷口 光 (TANIGUCHI Hikaru) Twitterに出没 id:tanigon 自己紹介 谷口 光 (TANIGUCHI Hikaru) Twitterに出没 id:tanigon プリクラ機とか携帯電話向けコンテンツの会社でエンジニアしてます ゲーム大好き 弾幕STGとか 趣味でゲーム・メガデモもどき作ったり 学生時代エロゲの会社でバイトしていた ピアノ・手品・ルービックキューブ・車 etc…

様々な観点でMiyako vs Star Ruby まとめ アジェンダ 本題の前に Rubyでゲーム作り、って? Miyakoとは? StarRubyとは? 様々な観点でMiyako vs Star Ruby まとめ

Rubyでゲームを作るのは シンプルにかけそう (Rubyという言語のおかげ) 速度を要求するものには弱いかも? PythonにはPygameとかあるのに! Rubyには? 実はめちゃめちゃたくさんある 参照 : Rubyゲーム開発のハブサイト (http://ruby-game-dev.org/)

ゲーム作りに(ライブラリに)要求されること フルスクリーン描写のサポート スプライト 音声・音楽の再生 FPSと垂直同期の管理 ゲーム的な入力処理 ゲームパッドへの対応 リアルタイムなキー押下状況の取得 文字描写

ゲーム作りに(ライブラリに)要求されること 3Dシーン・オブジェクトの管理 ただし、今回は扱いません! なぜなら、MiyakoもStar Rubyも3Dに特別な対応をしていないため Rubyで3Dゲーム作り、はもうひとつハードルが高いのかも?

Ruby/SDL というライブラリのラッパ Rubyのゲーム制作環境として製作されてきた 作者はサイロス誠さん とにかく多機能!! Miyakoとは? Ruby/SDL というライブラリのラッパ Rubyのゲーム制作環境として製作されてきた 作者はサイロス誠さん とにかく多機能!! 「シーン」と呼ばれる単位でゲームの状態遷移をクラスとして実装する 速度に不安あり (最近改善された) http://www.twin.ne.jp/~cyross/Miyako/

SDL のラッパ(Ruby/SDLのラッパではない) 作者は星一さん とにかくシンプル StarRubyとは? SDL のラッパ(Ruby/SDLのラッパではない) 作者は星一さん とにかくシンプル スクリーンも画像もオフスクリーンバッファも、とにかく”Texture”というインタフェースでアクセスするので理解しやすい 速度に自信あり? http://www.starruby.info/ja/

比較編

Miyako Star Ruby まずRuby/SDLをインストールする 次にMiyakoをインストール 比較編:インストール Miyako まずRuby/SDLをインストールする 次にMiyakoをインストール Star Ruby Star Rubyをダウンロードしてインストール どちらも簡単! 比較するなら Star Rubyに軍配が上がる?

Miyako 数こそ少ないものの Miyakoの豊富な機能のウォークスルー おお、いろいろ出来そう! と感じさせる何かがある 比較編:とりあえずサンプル Miyako 数こそ少ないものの Miyakoの豊富な機能のウォークスルー おお、いろいろ出来そう!  と感じさせる何かがある Miyakoが多機能なこともあり、サンプルは網羅的とはいえないものの実例として素晴らしい

Star Ruby 網羅的なサンプル ライブラリそのものがシンプルなので、ひととおりサンプルを見るだけで分かりそう 比較編:とりあえずサンプル Star Ruby 網羅的なサンプル ライブラリそのものがシンプルなので、ひととおりサンプルを見るだけで分かりそう ライブラリの方向性が違うなか、サンプルにもクセが出ていて甲乙つけがたい?

Miyako 幅は狭いがチュートリアルPDFも配布 Zipにも APIドキュメントがついてくる 説明はほとんど書かれていないが…? 比較編:ドキュメント類 Miyako 幅は狭いがチュートリアルPDFも配布 Zipにも APIドキュメントがついてくる 説明はほとんど書かれていないが…? 将来に期待! 何分多機能なので・・・

Star Ruby サイト上に網羅されたドキュメントあり 元がシンプルなだけにとてもわかりやすい サンプルと合わせればほぼ完璧 比較編:ドキュメント類 Star Ruby サイト上に網羅されたドキュメントあり 元がシンプルなだけにとてもわかりやすい サンプルと合わせればほぼ完璧 ただ、配布ZIPには含まれていない様子 機能の差があるため単純に比較はできないが 開発をする上での快適度は Star Rubyが上か?

ゲームループ(とかなんとか色々言い方) FPSで指定したフレームごとにメソッドやイテレータ(クロージャ)を呼んでくれるようにする 比較編:ゲームループを書こう ゲームループ(とかなんとか色々言い方) FPSで指定したフレームごとにメソッドやイテレータ(クロージャ)を呼んでくれるようにする 何か処理を書いてループを回すまでの道のり

Miyako編 何か処理を書いてループを回すまでの道のり チュートリアルに従って「シーン」を理解する 比較編:ゲームループを書こう Miyako編 何か処理を書いてループを回すまでの道のり チュートリアルに従って「シーン」を理解する Miyako::Story::Scene をmix-inしたクラスを作成する init, setup, update, final, dispose というメソッドを実装する Updateがフレームごとに繰り返し呼ばれる (main_loopなどもあるがあえてシーンを使った)

Star Ruby編 Game.run(..) do …. end Gameクラスのrunにクロージャを渡す めちゃめちゃシンプル 比較編:ゲームループを書こう Star Ruby編 Gameクラスのrunにクロージャを渡す めちゃめちゃシンプル 画面をクリアするなどすべて自分で実施 Game.run(..) do …. end

比較編:文字を描こう 文字を描く 既存のフォントを使って文字を描く 画面に適当なサイズでテキストを出す で、これが動くとかそこまで

Miyako編 なんでもいいからFontの取得 Font.serif() とか Shape.text を使って「スプライト」にする 比較編:文字を描こう Miyako編 なんでもいいからFontの取得 Font.serif() とか Shape.text を使って「スプライト」にする スプライトは自律して描写処理(スプライトだし) スプライトに変換しているところが面白い 理解してしまうと楽

Star Ruby編 Fontを作成 Colorも必要に応じて準備しておく 比較編:文字を描こう Star Ruby編 Fontを作成 Colorも必要に応じて準備しておく ループ内で取れるスクリーンバッファのTextureに対してrender_textする 各フレーム自前で描写するので座標の管理などは自前。必要に応じてスプライトクラスは作成。 画面も画像データもなんでもTexture

ゲーム的なXY入力 カーソルキーやゲームパッドなどによる 4方向入力を取得する それに応じて何か動かす さきほどのテキストをキャラに見立てて動かす

Miyako編 Input.trigger_amount から XY成分の配列が取れる スプライトを動かす スプライトを動かす  Sprite#move(dx, dy) 絶対座標を必ずしも管理しておかなくていい スプライトだから

Star Ruby編 Input.keysで入力されているキーの集合が取れる Left が押されていれば X -= 1 といった感じ 比較編:X,Y入力してみよう Star Ruby編 Input.keysで入力されているキーの集合が取れる X,Y成分に特化したものではない キーボードとパッドは別々に集合を取得できる Left が押されていれば X -= 1 といった感じ シンプルだが基本的に自前で管理する

MiyakoもStar Rubyも大差ない 比較編:音をならす BGMやSEの扱いについて MiyakoもStar Rubyも大差ない wav, ogg Miyakoは MP3 などの再生もサポート 再生制御などもややMiyakoのほうが融通が利く

RPG, STG, アクションなどジャンルを問わずキャラクターは画像を使うことが多い 画像ファイルを読み込んで表示するまでの流れを確認 比較編:画像の扱い RPG, STG, アクションなどジャンルを問わずキャラクターは画像を使うことが多い 画像ファイルを読み込んで表示するまでの流れを確認 シンプルなコマアニメについても確認

Miyako編 単体なら Sprite.new で読み込むだけ アニメーションもスプライト側で自律させることができる 比較編:画像の扱い Miyako編 単体なら Sprite.new で読み込むだけ アニメーションもスプライト側で自律させることができる SpriteAnimation クラス 複数のスプライトを束ねて指定した順番でスプライトを変更してくれる 単純なアニメーションだとメチャメチャ簡単

Star Ruby編 画像はTexture.loadで読み込む アニメーションは自前実装の必要がある 比較編:画像の扱い Star Ruby編 画像はTexture.loadで読み込む アニメーションは自前実装の必要がある クラス化することになるだろうが記述量は少ない 描写は Texture#render_texture を使う 各フレームごとの描写も自前 この点は Miyako のスプライトのスタイルとは大きく異なる

Star RubyにもSFC(SNES)的な透視変換用のメソッドが提供されている(ユニーク) まとめ その他、Miyakoには衝突判定や選択肢ボックスを出すなど多彩な機能が提供されているが、今回はStar Rubyとのスタイルの比較ということで省略 Star RubyにもSFC(SNES)的な透視変換用のメソッドが提供されている(ユニーク) マリオカートとか作っちゃえるかもしれない

シンプルさ、理解しやすさではStar Rubyのほうが上 多機能さではMiyakoのほうが上 まとめ シンプルさ、理解しやすさではStar Rubyのほうが上 多機能さではMiyakoのほうが上 ゲームプログラミングの基礎知識があるならStar Rubyのほうがパフォーマンス有利?

シューティング、アクションゲームなどパフォーマンスが重要なら Star Rubyのほうが比較優位と思われる まとめ プレゼン資料、いわゆるアドベンチャーゲーム(ギャルゲ含む)やノベルタイプのゲームなど、パフォーマンスに対してシビアでないなら Miyakoがかなり有効な選択肢となる シューティング、アクションゲームなどパフォーマンスが重要なら Star Rubyのほうが比較優位と思われる