Text
Page: 1
ゲーム vs. Sinatra
Masafumi Yokoyama
Sinatra/Padrino勉強会
2014/12/20
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 2
自己紹介
@myokoym
Sinatra札幌
将棋アマ三段
ヌルゲーマー
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 3
札幌の将棋事情
北海道将棋会館
札幌市中央区南4西9
北海道将棋連盟のブログ
http://doshoren.blog.fc2.com/
札幌将棋情報のブログ
http://blogs.yahoo.co.jp/sapporoshogijoho
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 4
Ruby Kaja 2013
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 5
よろしくお願いします。
m(_ _)m
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 6
話すこと
第一部
2013年から2014年にかけての
Sinatra札幌での活動について
第二部
表題の件
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 7
第一
部
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 8
年表(序盤)
2013/11/24
最初の勉強会
Sinatraと見せかけてRabbitの話
2014/02/08
札幌市中央区Ruby会議01
RubyでGUIする話
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 9
札幌市中央区Ruby会議01
札幌市中央区Ruby会議01
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 10
年表(中盤)
2014/05/10
二回目の勉強会
Sinatraと見せかけてGosu(ゲーム用
ライブラリ)の話
2014/06/14
OSC 2014 Hokkaido
Sinatraの帽子を使ったゲームを展示
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 11
OSC
OSC 2014
2014 Hokkaido
Hokkaido
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 12
年表(終盤)
2014/08/17
SinatraSapporoSuturday#01
ArduinoでLEDをチカチカして納涼
2014/10/11、2014/11/16
SinatraSapporoSaturday#02
SinatraSapporoSunday#03
Padrinoを使い始めた
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 13
ちょっとwait
events.count |event|
event.Sinatraメイン?
end
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 14
#=> 0
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 15
理由
何かと組み合わせて使っていた
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 16
何か
1. Rabbit
http://slide.rabbit-shocker.org/authors/myokoym/
sinatrasapporo01/
2. Gosu
http://slide.rabbit-shocker.org/authors/myokoym/
sinatrasapporo02/
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 17
何か
1. Rabbit
http://slide.rabbit-shocker.org/authors/myokoym/
sinatrasapporo01/
2. Gosu
http://slide.rabbit-shocker.org/authors/myokoym/
sinatrasapporo02/
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 18
Rabbit
Rubyist用プレゼンツール
http://rabbit-shocker.org/
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 19
Lavieさん
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 20
Rabbit
文章はテキストで記述
RD、Wiki、Markdownなど
装飾(テーマ)はRubyで記述
RubyGemsで簡単に追加
バージョン管理しやすい
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 21
Ruby-GNOME2
http://ruby-gnome2.sourceforge.jp/ja/
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 22
Ruby-GNOME2
Ruby-GNOME2はGNOME
で使用されるGTK+などの主要
なライブラリのRubyバインディン
グ集です。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/
ruby-list/49734
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 23
Ruby-GNOME2
GTK+はマルチプラットフォー
ム対 応のG U Iツ ー ル キ ッ トな の
で、マルチプラットフォーム対応
のGUIアプリケーションをRubyで
書くことができます。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/
ruby-list/49734
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 24
バージョンについて
Ruby/GTK2
Ruby/GTK3
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 25
Ruby/GTK2
GTK+ 2のRubyバインディング
gem install gtk2
旧バージョン
GTK+ 2の開発はほぼ終了
採用実績が多く、安定性は高い
Rabbit(プレゼンツール)
mikutter(Twitterクライアント)
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 26
Ruby/GTK3
GTK+ 3のRubyバインディング
gem install gtk3
新バージョン
GTK+ 3に対応
GObject Introspection
新機能(CSS対応の強化など)
新ウィジェット
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 27
迷ったら
Twitterやメーリングリストなどで
ご相談ください
日本語MLあります
ruby-gnome2-devel-ja
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 28
何か
1. Rabbit
http://slide.rabbit-shocker.org/authors/myokoym/
sinatrasapporo01/
2. Gosu
http://slide.rabbit-shocker.org/authors/myokoym/
sinatrasapporo02/
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 29
Gosu
Gosu is a 2D game
development library for the
Ruby and C++ programming
languages, available for Mac
OS X, Windows, and Linux.
http://www.libgosu.org/
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 30
Gosu
2Dゲーム開発ライブラリ
RubyとC++向け
マルチプラットフォーム
OS X、Windows、Linux、Raspbian
iOS(C++)、Android(WIP)
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 31
Gosu 0.8.6
現時点での最新リリース版
gem install gosu
SDL2ベース
Ruby 2.1対応
RubyInstaller for Windowsも
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 32
SDL
https://www.libsdl.org/
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 33
SDL
Simple DirectMedia Layer
マルチメディアライブラリ
主にゲーム用途
C言語で記述
マルチプラットフォーム
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 34
SDL2
zlib License
MITより緩い
iOS、Android対応
などなど
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 35
第一部まとめ
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 36
Sinatra最高
Sinatra最高
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 37
第二
部
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 38
テーマ
vs.
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 39
vs.(versus)
【前置詞】
1. (訴訟・競技などで)…対,…
に対する
2. …と対比して、比較して
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 40
対比させてみる
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 41
粒度を合わせる
GUIアプリケーション
Ruby/GTK2、GTK+
ゲーム
Gosu、SDL
Webアプリケーション
Sinatra、Rack
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 42
ポイント
動作環境
画面構成
更新方法
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 43
ポイント
動作環境
画面構成
更新方法
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 44
動作環境
GTK+
デスクトッ
プ(ネイテ
ィブ)アプ
リ
ゲーム vs. Sinatra
SDL
デスクトッ
プ(ネイテ
ィブ)アプ
リ
Rack
Webサー
バー、Web
ブラウザー
Powered by Rabbit 2.1.4
Page: 45
構図
ネイティブアプリ
vs.
Webアプリ
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 46
ネイティブアプリ
動作速度が速い
デバイスの機能を活かせる
push通知など
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 47
Webアプリ
リリース、インストールが楽
他のサービスと連携しやすい
使われる技術が限られる
HTTP、JavaScript
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 48
適材
適所
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 49
ポイント
動作環境
画面構成
更新方法
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 50
画面構成
GUIアプリ ゲーム系
(OSと紐
一から形
付いた)パ を決めて
ーツを組
描画する
み合わせ
る
ゲーム vs. Sinatra
Webアプ
リ
(ブラウザ
の)パーツ
を組み合
わせる
Powered by Rabbit 2.1.4
Page: 51
誰もがデザイナー
∧ ∧
(,,゚Д゚)
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 52
ポイント
動作環境
画面構成
更新方法
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 53
更新方法
GTK+
SDL
イベント駆 フレームレ
動
ート×イベ
ント
ゲーム vs. Sinatra
Rack
HTTP、
JavaScrip
t
Powered by Rabbit 2.1.4
Page: 54
更新方法
イベント駆動
フレームレート
HTTP
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 55
更新方法
イベント駆動
フレームレート
HTTP
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 56
イベント駆動
起動すると共にイベントを待機
し、起こったイベントにしたがって
処理を行う
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 57
イベント駆動
イベントを待機
イベントハンドラ
イベント
マウス、キーボードなど
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 58
イベントハンドラ
(コールバック関数)
イベントが起こったときの処理を
記述
クリックやアクティブ化など
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 59
Ruby/GTK2の
イベントハンドラ
window.signal_connect("destroy") do
# ウィンドウが閉じられた時の処理
end
button.signal_connect("clicked") do
# ボタンがクリックされた時の処理
end
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 60
イベント駆動
CPUに優しい(当社比)
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 61
更新方法
イベント駆動
フレームレート
HTTP
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 62
フレームレート
1秒間に一定回数の処理を行う
1秒間に60回の場合、60fps
frame per second
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 63
1フレームの主な処理
状態の更新
イベントや時間経過による
画面への描画
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 64
Gosu
class Game < Gosu::Window
def update
# 1秒間に約60回呼ばれる
end
def draw
# updateとセットで呼ばれる
end
end
Game.new(640, 480, false).show
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 65
ゲーム系
自由度が高い
常にCPU使ってる感ある
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 66
更新方法
イベント駆動
フレームレート
HTTP
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 67
HTTP
「何を」「どう」したいか
リクエスト-レスポンス型
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 68
「何を」
URL
http://<ホスト名>/[パス]...
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 69
「どう」
メソッド
GET
POST
...
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 70
Sinatra
get "/" do
# http://host.name/ の処理
end
post "/new"
# フォーム等の /new の処理
end
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 71
リクエスト-レスポンス型
いわゆるクラサバ
サーバーがレスポンスを返したら
一区切り
基本的に状態を保存しない
セッションやDBなどを使えば可能
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 72
JavaScript
プログラミング言語
何でもできる
マルチメディアな使い方も
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 73
結論
やっぱり
適材適所
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4
Page: 74
おわりに
Sinatra楽しいょ!
ゲームやGUIも楽しいょ!
組み合わせても○
ゲームのデータやハイスコアをWebで
管理するとか
コミュニティでチーム開発?
ゲーム vs. Sinatra
Powered by Rabbit 2.1.4