Ruby で簡単なゲームを作ってみよう

Created by Patrick Huesler, @phuesler & Floor Drees, @floordrees for Rails Girls The Hague / 翻訳者: maimu, @maimux2x

このガイドは2014年当時のものです。リポジトリで使用されているgemのバージョンが最新ではないため動作しない可能性があります。

gosuは 2D ゲーム開発ライブラリです。Gosu は 2D グラフィックスやテキスト(3D ハードウェアによる高速化)、音源のサンプルや音楽だけでなく、キーボード、マウス、ゲームパッド/ジョイスティックの入力に対して、使いやすくゲームに適したインタフェースを提供しているという特徴があります。また、RMagick、Chipmunk、OpenGL と一体化したデモも含まれています。

実際のソースコード、wiki や issue tracker はGitHub 上に公開されています。Gosu のドキュメントはwiki のホームページを参照することが最適です。 インストール方法はこちらです。

gem install gosu

もしくは、 gem "gosu", "~> 0.7.48" を Gemfile に追加して bundle を実行してください。 サンプルゲームを試してみましょう。

cd $GEM_HOME/gems/gosu-0.7.48/examples

続いて ruby CptnRuby.rb

または ruby RMagickIntegration.rb

または ruby Tutorial.rb

を実行します。

例はもう十分です!

ターミナルで新しいタブを開いてリポジトリをコピーします。 もしもその間に Rails Girls アプリで作業していた場合は、cdを実行してホームディレクトリにいることを確認しましょう。

さあ、実行しましょう。

git clone https://github.com/FloorD/gosu_tutorial_RG_TH.git

そして以下を実行して適切なディレクトリに移動しましょう。

cd gosu_tutorial_RG_TH/jumpingem

実行します!

私たちの小さなゲームで遊ぶために、ターミナルを使ってファイルを実行します。

ruby game.rb

それでは、このゲームはどのように動いているか分かりますか?

いくつかコードを見てみましょう。 game.rb をテキストエディタで開きます。

!/usr/bin/env ruby -w
require 'rubygems'
require 'gosu'
include Gosu

こちらと同じものがファイルの一番上にありますか? ここで必要な gem を「呼び出している」のです。そうすることで、クラス(または複数のクラス) に進むことができます。 ここでは以下のように

class Game < Window
end

… という具体的な内容が書かれています。 Game クラスに含まれるdefはメソッドです。 ここでは、プログラムがどの命令に従うかを定義します。以下のスニペットをご覧ください。

def draw
  draw_quad 0, 400, Color::WHITE, 640, 400, Color::WHITE, 640, 500, Color::WHITE, 0, 500, Color::WHITE
  if @dir == :left then
    offs_x = -25
    factor = 1.0
  else
    offs_x = 25
    factor = -1.0
  end
  @cur_image.draw(@x + offs_x, @y - 49, 0, factor, 1.0)
end

少し遊んでみませんか? game.rb の内容を新しい .rb ファイルにコピーしてください。 好みの名前で保存しましょう。 そして、ゲーム内のいくつかの要素を変更して、ターミナルで実行して変更内容を確認してみてください。

Patrick よりもグラフィックスのスキルがあると思いますか(多分そうでしょう)? それなら、新しい sprites.png を作成してみてください! こちらで呼び出すのを忘れないでください。

def initialize
  super(640, 480, false)
  self.caption = "Jump 'n Run"
  @standing, @walk1, @walk2, @jump = \*Image.load_tiles(self, "sprites.png", 100, 160, false)
  @x, @y = 400, 0
  @vy = 0
  @dir = :left
  @cur_image = @standing
end

そしてGame.new.showを見てください。これは新しいインスタンスを作成します。保存はしていないため、ゲームで詰まったときには新しいゲームを始めることができます。楽しんでください!

クレジット

Vim Adventures で使用されているアセットはこちらで見つけることができます。 使用されている音源は Matthew Klingensmith (www.matthewklingensmith.com)で入手できます。