Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Levando sua aplicação a outro nível

Levando sua aplicação a outro nível

usando bigdoor e outras gems de gamificação

Rodrigo Franco

November 03, 2011
Tweet

More Decks by Rodrigo Franco

Other Decks in Programming

Transcript

  1. 'When you play a game of thrones you win or

    you die. There is no middle ground.' George R.R. Martin
  2. 'When you play a game of rubies you win or

    you die. There is no middle ground.' Caffo
  3. “Eu quero ajudar o @akita a encontrar o ruby gigante

    no final da palestra do @caffo na #rubyconfbr”
  4. 2x

  5. Gamificação? A aplicação de elementos de jogos e game design

    para resolver problemas e aumentar o engajamento dos seus usuários.
  6. 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.
  7. Porque fazer algo do tipo? Quando executada corretamente, a gamificação

    amplifica a motivação dos seus usuários a continuarem usando seu produto.
  8. BigDoor - Mecânicas ✓ Ranking de usuários ✓ Níveis (noob,

    pro, veterano, elite) ✓ Badges com ‘milestones' ✓ Goods (items de valor econômico)
  9. BigDoor - Prós • GPL, com suporte premium • Configuração

    de interações simplificada • API (em Ruby) ou JS • Vários relatórios prontos
  10. BigDoor - Contras • Gem com pouca documentação • Lógica

    fica distribuida • Dependencia externa
  11. 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' => 'Moedas', 'end_user_title' => 'Moeda', 'end_user_description' => 'compradas com XP', 'currency_type_id' => '1', 'currency_type_title' => 'Purchase', 'exchange_rate' => 100.00, 'relative_weight' => 2, }) currency.save( client )
  12. UserInfuser - Prós • Sua própria cópia da plataforma •

    Configuração de interações simplificada • Documentação relativamente boa
  13. UserInfuser - Contras • UI baseada em Widgets • Plataforma

    não pode ser customizada usando Ruby • Dependência externa • Fragmentacão da base de código
  14. 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
  15. Badgeable - Contras • Muito simples • Compatível apenas com

    Mongoid and ActiveRecord • Extremamente customizável
  16. 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")