Levando sua
aplicação a outro
nível
usando bigdoor e outras
gems de gamificação
@caffo
rails-br
Tópicos
1. Gamificação?
2. No mundo real
3. Em aplicações web
4. Utilizando Ruby
'When you play a game of thrones you
win or you die. There is no middle
ground.'
George R.R. Martin
'When you play a game of rubies you win
or you die. There is no middle ground.'
Caffo
akita em busca do
ruby gigante 1
-- press start --
Manual
do
Jogo
Tópicos
1. Gamificação?
2. No mundo real
3. Em aplicações web
4. Utilizando Ruby
Tópicos
1. Gamificação?
2. No mundo real
3. Em aplicações web
4. Utilizando Ruby
Tópicos
1. Gamificação?
2. No mundo real
3. Em aplicações web
4. Utilizando Ruby
Tópicos
1. Gamificação?
2. No mundo real
3. Em aplicações web
4. Utilizando Ruby
Hora da
Porta!!!1
1
2
???
3
:(
self.happy=false
Tatuagem
grátis!
“Eu quero ajudar o @akita a
encontrar o ruby gigante no
final da palestra do @caffo na
#rubyconfbr”
@caffo + #rubyconfbr
:)
self.happy=true
Testes
passaram!
recompensa
pela
AJUDA
w00t
ou
ou
2x
Gamificação?
Gamificação?
A aplicação de elementos de jogos e
game design para resolver problemas
e aumentar o engajamento dos seus
usuários.
Na prática...
Transformando a experiência do
usuário em um jogo, podemos
produzir grandes mudanças em como
o usuário visualiza internamente a
aplicação.
No mundo real
Hora da
Porta!!!1
Programas de
Milhagem
Fidelidade no café
Na Web
Porque fazer algo do tipo?
Quando executada corretamente, a
gamificação amplifica a motivação
dos seus usuários a continuarem
usando seu produto.
Funciona mesmo?
Funciona. A gamificação ‘hackeia’ o
seu cérebro.
Hora da
Porta!!!1
Em Ruby
http://bigdoor.com/
BigDoor - Mecânicas
✓ Ranking de usuários
✓ Níveis (noob, pro, veterano, elite)
✓ Badges com ‘milestones'
✓ Goods (items de valor econômico)
BigDoor - Prós
•
GPL, com suporte premium
•
Configuração de interações simplificada
•
API (em Ruby) ou JS
•
Vários relatórios prontos
BigDoor - Contras
•
Gem com pouca documentação
•
Lógica fica distribuida
•
Dependencia externa
BigDoor - Exemplo
require 'rubygems'
require 'bigdoor'
APP_KEY
= '28d3da80bf36fad415ab57b3130c6cb6'
APP_SECRET = 'B66F956ED83AE218612CB0FBAC2EF01C'
client = BigDoor::Client.new( APP_SECRET, APP_KEY )
currency = BigDoor::Currency.new({
'pub_title'
'end_user_title'
'end_user_description'
'currency_type_id'
'currency_type_title'
'exchange_rate'
'relative_weight'
})
currency.save( client )
=>
=>
=>
=>
=>
=>
=>
'Moedas',
'Moeda',
'compradas com XP',
'1',
'Purchase',
100.00,
2,
Hora da
Porta!!!1
UserInfuser
http://code.google.com/p/userinfuser
UserInfuser - Mecânicas
✓ Sistema básico de pontuação
✓ Ranking de usuários
✓ Badges com ‘milestones’
UserInfuser - Prós
•
Sua própria cópia da plataforma
•
Configuração de interações simplificada
•
Documentação relativamente boa
UserInfuser - Contras
•
UI baseada em Widgets
•
Plataforma não pode ser customizada
usando Ruby
•
Dependência externa
•
Fragmentacão da base de código
UserInfuser - Widgets
UserInfuser - Exemplo
require 'rubygems'
require 'userinfuser'
ui = UserInfuser.new("[email protected]", "123-456-789")
ui.award_badge(current_user_email, "assistiu-palestra-caffo")
ui.award_points(current_user_email, 10)
# Mostra o widget de pontos
points_widget = ui.get_widget(current_user_email, "points", 100, 100)
puts points_widget
# Mostra o widget de ranking
rank_widget = ui.get_widget(current_user_email, "rank", 100, 100)
puts rank_widget
# Mostra o widget de badges (trophys no userinfuser)
trophy_case_widget = ui.get_widget(current_user_email, "trophy_case")
puts trophy_case_widget
Hora da
Porta!!!1
Badgeable
https://github.com/scottburton11/Badgeable
Badgeable - Mecânicas
✓ Sistema básico de pontuação
✓ Badges
✓ O que voce quiser
Badgeable - Prós
•
Muito simples
•
Nenhuma dependência externa
•
Extremamente customizável
Badgeable - Contras
•
Muito simples
•
Compatível apenas com Mongoid and
ActiveRecord
•
Extremamente customizável
Badgeable - Exemplo
require 'rubygems'
require 'badgeable'
require 'mongoid'
class Person
include Mongoid::Document
include Badgeable::Subject
embeds_many :nachos
end
badge "Nacho Nacho Man" do
thing Nacho
count 40
subject :person
conditions do |nacho|
nacho.spicy?
end
end
# Ou ainda
jose = Person.create(:name => "Jose da Silva")
jose.award_badge("Total Badass")
FINAL
Hora da
Porta!!!1
Obrigado!
(^o^)b
Download

Levando sua aplicação a outro nível