Sinatra風nマルチメディアnプログラミング

# : subtitle # Sinatraっぽい文法でゲームを書こう : author

@myokoym

# : institution # Sinatra札幌 : content-source

勉強会@Sinatra札幌

: date

2014/05/10

: allotted-time

5m

: theme

nyankosakana

自己紹介

* 横山昌史(@myokoym)
* Rabbitショッカー
* Ruby-GNOME2 Project Team
* Groonga勉強会@札幌

よろしくお願いします。nnm(_ _)m

ここでクイズです。

Q. Sinatraは好きですか?nnA. 好きです

Q. ゲームは好きですか?nnA. 好きです

Q. プログラミングは?nnA. 好きです

そんなあなたに

((‘tag:center’)) Sinatraっぽい文法でゲームを書けるライブラリのご紹介です。

その名は…nnGosu::Zen

その名は…nn((Gosu))::Zen

Gosu is 何

# blockquote
# title = http://www.libgosu.org/
Gosu is a 2D game development library for the Ruby and 
C++ programming languages, available for Mac OS X, 
Windows, and Linux.

Gosu is 何

* 2Dゲーム開発ライブラリ
* RubyとC++向け
* マルチプラットフォーム
  * Mac OS X
  * Windows
  * Linux

Gosu 0.7.x

* 現時点での最新リリース版
* SDLベース
* C++版はiOSに対応

インストール

gem install gosu

((‘note:・WindowsはRuby1.9のみ対応’))n ((‘note:・Linuxでは事前にSDLなどをインストールしておく(See github.com/jlnr/gosu/wiki/Getting-Started-on-Linux)’))n ((‘note:・OS Xは?(試してみてください!)’))

こんな感じで書きます

# coderay ruby
require "gosu"

# 1フレームごとにupdateとdrawが呼ばれる
class Window < Gosu::Window
  def update
    # 主要ロジック(移動、衝突判定など)
  end

  def draw
    # 描画コード(ロジックは含めない)
  end
end

実行例

# coderay ruby

width  = 800
height = 600
fullscreen = false

window = Window.new(width,
                    height,
                    fullscreen)

# メインループ開始(デフォルトは60fps)
window.show

Gosu 0.8

* 次期リリース版
  * gem install gosu --pre
* SDL((*2*))ベース
  * Raspbian(Raspberry Pi)対応
  * Android対応予定

以下本題。

Gosu::((Zen))

Gosu::Zen is 何

* GosuのSinatra風ラッパー
* Zen was inspired by:
  * http://www.sinatrarb.com/configuration.html
* まだ実験段階(仕様変更あり)

こんな感じで書きます

# coderay ruby
require "gosu/zen"
include Gosu::Zen

update do
  # 主要ロジック(移動、衝突判定など)
end

draw do
  # 描画コード(ロジックは含めない)
end

デモ

property

:as_large_as_possible

true

次回予告

* OSC 2014 Hokkaido
  * http://www.ospn.jp/osc2014-do/
  * Sinatra札幌も出展します
    * 6/14(土) 10:00〜16:00
    * 札幌市産業振興センター
    * Please remember it!