Wednesday 15 August 2012

backbone.js - Redis in rails, backbone -



backbone.js - Redis in rails, backbone -

im learning redis , trying run rails , backbone. need get/set 50 values every 66ms on front-end. need have objects (@monsters) redis , did them way. dont know or becouse computer slow or code weak, or backbone's beginners code slowing calculations, after 3 seconds put/get database pending , working slower , slower. i'm debugging localhost, maybe when force heroku fast plenty update info becouse of heroku servers? or not? how improve dataset/dataget?

my random redis key , value in console looks like:

2.1.2 :002 > $redis.get('1001') => "[452,305,452,316,3]" # (x position, y position, targets x position, targets y position, level)

i have 50 keys named '1001' 1050' values of each monster xpos, ypos, xposdest, yposdest positions gonna on canvas map. these parsed objects rails , fetched backbone.

# getting values redis database , sending backbone. class maincontroller < applicationcontroller def index m = [] key in $redis.keys value = json.parse($redis.get(key)) m.push id: key.to_i, xpos: value[0], ypos: value[1], xposdest: value[2], yposdest: value[3], level: value[4] end @monsters = m end # getting values backbone , updating redis database. class monsterscontroller < applicationcontroller def update id = monster_params[:id] xpos = monster_params[:xpos] ypos = monster_params[:ypos] xposdest = monster_params[:xposdest] yposdest = monster_params[:yposdest] level = monster_params[:level] $redis.set id, [xpos,ypos,xposdest,yposdest,level].to_json respond_to |format| format.html render nothing: true end end end private def monster_params params.require(:monster) end end

here goes backbone of import part

sprint.views.maps ||= {} class sprint.views.maps.indexview extends backbone.view initialize: -> if move_on_count 0 @addall() @game_init_function() mob_x_post = [] mob_y_post = [] mob_x_posdest = [] mob_y_posdest = [] move_on_count = 0 game_init_function: -> @receiving_attributes_from_database() @move_on() move_on: -> move_on_count++ self = timer 66, ()-> self.fetch_mobs_from_redis_db() fetch_mobs_from_redis_db: -> self = @addall @save_mobs_position() @receiving_attributes_from_database() addall: () => @options.monsters.each(@addone) addone: (monster) => monstersas.push monster mobbys.push monster.attributes.level save_mobs_position: -> alfa in [0..(monstersas.length-1)] @options.monsters.models[alfa].save((level: alfa+1, yposdest: parseint(mob_y_posdest[alfa]), xposdest: parseint(mob_x_posdest[alfa]), ypos: parseint(mob_y_post[alfa]), xpos: parseint(mob_x_post[alfa]))) receiving_attributes_from_database: -> cnt in [0..(monstersas.length-1)] mob_y_post[cnt] = monstersas[cnt].attributes.ypos mob_x_post[cnt] = monstersas[cnt].attributes.xpos mob_y_posdest[cnt] = monstersas[cnt].attributes.yposdest mob_x_posdest[cnt] = monstersas[cnt].attributes.xposdest # here goes big canvas code..

im still learning rails, backbone, coffeescript, redis.. here believe many things create game running slow..

ruby-on-rails backbone.js redis

No comments:

Post a Comment