• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

シェア "Rubyでゲーム作り!! Miyako vs StarRuby"

Copied!
30
0
0

読み込み中.... (全文を見る)

全文

(1)

わんくま同盟 大阪勉強会 #25 Game Day

Rubyでゲーム作り!!

Miyako vs StarRuby

TANIGUCHI Hikaru

(id:tanigon @twitter @hatena) ([email protected])

(2)

わんくま同盟 大阪勉強会 #25 Game Day 自己紹介

• 谷口 光 (TANIGUCHI Hikaru)

• Twitterに出没 id:tanigon

• プリクラ機とか携帯電話向けコンテンツの会

社でエンジニアしてます

• ゲーム大好き 弾幕STGとか

• 趣味でゲーム・メガデモもどき作ったり 学生

時代エロゲの会社でバイトしていた

• ピアノ・手品・ルービックキューブ・車 etc…

(3)

わんくま同盟 大阪勉強会 #25 Game Day アジェンダ

• 本題の前に

– Rubyでゲーム作り、って? – Miyakoとは? – StarRubyとは?

• 様々な観点でMiyako vs Star Ruby

• まとめ

(4)

わんくま同盟 大阪勉強会 #25 Game Day Rubyでゲーム作り

• Rubyでゲームを作るのは

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

(5)

わんくま同盟 大阪勉強会 #25 Game Day ゲーム作りに(ライブラリに)要求されること

• フルスクリーン描写のサポート

• スプライト

• 音声・音楽の再生

• FPSと垂直同期の管理

• ゲーム的な入力処理

– ゲームパッドへの対応 – リアルタイムなキー押下状況の取得

• 文字描写

(6)

わんくま同盟 大阪勉強会 #25 Game Day ゲーム作りに(ライブラリに)要求されること

• 3Dシーン・オブジェクトの管理

– ただし、今回は扱いません! – なぜなら、MiyakoもStar Rubyも3Dに特別な対応 をしていないため – Rubyで3Dゲーム作り、はもうひとつハードルが高 いのかも?

(7)

わんくま同盟 大阪勉強会 #25 Game Day Miyakoとは?

• Ruby/SDL というライブラリのラッパ

• Rubyのゲーム制作環境として製作されてきた

• 作者はサイロス誠さん

• とにかく多機能!!

• 「シーン」と呼ばれる単位でゲームの状態遷移

をクラスとして実装する

• 速度に不安あり (最近改善された)

http://www.twin.ne.jp/~cyross/Miyako/

(8)

わんくま同盟 大阪勉強会 #25 Game Day StarRubyとは?

• SDL のラッパ(Ruby/SDLのラッパではない)

• 作者は星一さん

• とにかくシンプル

• スクリーンも画像もオフスクリーンバッファも、

とにかく

”Texture”というインタフェースでアクセ

スするので理解しやすい

• 速度に自信あり?

http://www.starruby.info/ja/

(9)

わんくま同盟 大阪勉強会 #25 Game Day

(10)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:インストール

• Miyako

– まずRuby/SDLをインストールする – 次にMiyakoをインストール

• Star Ruby

– Star Rubyをダウンロードしてインストール どちらも簡単! 比較するなら Star Rubyに軍配が上がる?

(11)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:とりあえずサンプル

• Miyako

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

(12)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:とりあえずサンプル

• Star Ruby

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

(13)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:ドキュメント類

• Miyako

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

(14)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:ドキュメント類

• Star Ruby

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

(15)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:ゲームループを書こう

• ゲームループ(とかなんとか色々言い方)

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

(16)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:ゲームループを書こう

• Miyako編

– 何か処理を書いてループを回すまでの道のり – チュートリアルに従って「シーン」を理解する – Miyako::Story::Scene をmix-inしたクラスを作成 する

• init, setup, update, final, dispose というメソッドを実装 する

• Updateがフレームごとに繰り返し呼ばれる (main_loopなどもあるがあえてシーンを使った)

(17)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:ゲームループを書こう

• Star Ruby編

– Gameクラスのrunにクロージャを渡す – めちゃめちゃシンプル – 画面をクリアするなどすべて自分で実施

Game.run(..) do …. end

(18)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:文字を描こう

• 文字を描く

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

(19)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:文字を描こう

• Miyako編

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

(20)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:文字を描こう

• Star Ruby編

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

(21)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:X,Y入力してみよう

• ゲーム的なXY入力

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

(22)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:X,Y入力してみよう

• Miyako編

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

(23)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:X,Y入力してみよう

• Star Ruby編

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

(24)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:音をならす

• BGMやSEの扱いについて

• MiyakoもStar Rubyも大差ない

– wav, ogg – Miyakoは MP3 などの再生もサポート – 再生制御などもややMiyakoのほうが融通が利く

(25)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:画像の扱い

• RPG, STG, アクションなどジャンルを問わず

キャラクターは画像を使うことが多い

• 画像ファイルを読み込んで表示するまでの流

れを確認

• シンプルなコマアニメについても確認

(26)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:画像の扱い

• Miyako編

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

(27)

わんくま同盟 大阪勉強会 #25 Game Day 比較編:画像の扱い

• Star Ruby編

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

(28)

わんくま同盟 大阪勉強会 #25 Game Day まとめ

• その他、Miyakoには衝突判定や選択肢ボック

スを出すなど多彩な機能が提供されているが、

今回はStar Rubyとのスタイルの比較というこ

とで省略

• Star RubyにもSFC(SNES)的な透視変換用

のメソッドが提供されている(ユニーク)

– マリオカートとか作っちゃえるかもしれない

(29)

わんくま同盟 大阪勉強会 #25 Game Day まとめ

• シンプルさ、理解しやすさではStar Rubyのほ

うが上

• 多機能さではMiyakoのほうが上

• ゲームプログラミングの基礎知識があるなら

Star Rubyのほうがパフォーマンス有利?

(30)

わんくま同盟 大阪勉強会 #25 Game Day まとめ

• プレゼン資料、いわゆるアドベンチャーゲーム

(ギャルゲ含む)やノベルタイプのゲームなど、

パフォーマンスに対してシビアでないなら

Miyakoがかなり有効な選択肢となる

• シューティング、アクションゲームなどパフォー

マンスが重要なら Star Rubyのほうが比較優

位と思われる

参照

関連したドキュメント

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

最も偏相関が高い要因は年齢である。生活の 中で健康を大切とする意識は、 3 0 歳代までは強 くないが、 40 歳代になると強まり始め、

されていない「裏マンガ」なるものがやり玉にあげられました。それ以来、同人誌などへ

「社会人基礎力」とは、 「職場や地域社会で多様な人々と仕事をしていくために必要な基礎的な 力」として、経済産業省が 2006

大阪府では、これまで大切にしてきた、子ども一人ひとりが違いを認め合いそれぞれの力

父親が入会されることも多くなっています。月に 1 回の頻度で、交流会を SEED テラスに

 医療的ケアが必要な子どもやそのきょうだいたちは、いろんな

森林には、木材資源としてだけでなく、防災機能や水源かん養