Dizeez for Facebook // Idea #2 Topics

75 Aufrufe
Direkt zur ersten ungelesenen Nachricht

Max Nanis

ungelesen,
17.04.2013, 07:01:2417.04.13
an crow...@googlegroups.com

Hi everyone! We've been receiving a ton of great feedback and interest in Idea 2:: Develop a new version of the game Dizeez as a Facebook application I wanted to post a little FAQ and details section to help you think about what we're looking for when you're putting together your proposals. I know this is long but it's intended to invoke your imagination on how we'd like to see this idea come to fruition. If there are any other points that you'd like to have answered or questions that come up please make sure to let me know in the thread

Entity–relationship model ::

This is a very critical part of the game and we've already started to think about how the reincarnated form would use a database that can be given new entries (disease or conditions) with tags or some amount of filtering capability to provide tailored gameplay to a specific user (to allow playback categories, levels or sections). It should be noted that the first iteration of Dizeez does not currently use a database. Part of this project will be building the schema for a MySQL or PostgreSQL database. Please familiarize yourself with the model/collection concepts used in Backbone.js as it will provide the communication between the front end and this database. Using this synchronization method allows us to inherit a clean RESTful design pattern.

This aspect of the project is also essential to get correct as we'll need to perform detailed logging of gaming parameters. You should think in terms of not just being able to determine if the question was answered correctly, but what might influence the answer like other options to choice from, how were the other options generated, has the user seen some of the other options before in previous answers, et cetera. Only by leveraging this extensive logging are we able to draw informative conclusions about the effectiveness of the game. Think of this as an extremely quantifiable experiment. How can we take advantage of this?

Javascript Framework ::

The project will be using a mix of RequireJS and Backbone.JS with Marionette. This is a development stack that we use extensively in the lab and find it extremely efficient and productive. Most importantly, it allows us to develop front-end javascript code that isn't a messy blob of jQuery selectors and unreadable callbacks. We're open to other design patterns or front-end view composite systems that you may be familiar with or have used in the past -- please note, it will require an extensive and thorough case to consider a different design pattern. Using an AMD system with Marionette allows us to build deployable compiled source. Remember, we need to be able to extend, improve and add features to this project after GSoC completes!

Facebook :: 

Using Facebook breaks down into a few critical components -- detailed articulation on how you'd plan on implementing each of these in the context of Dizeez will be critical for the proposal. These sections need to be heavily expanded in your proposals. We fully understand there are thousands of ways to implement each of these! We don't want to reinvent the wheel and should leverage as many of the Facebook apis as possible so that they can perform the heavy graph based analytics and community competition aspect of network based gameplay. How do these apis affect game mechanics and incentives? We want your imagination to go wild here -- there is no one right way to do this and want to explore leveraging these mechanics. We've used these APIs in the past and know how to implement them, we're not looking a proposal telling us you can get the Scores API to work but for a proposal explaining a novel way to leverage these APIs in the context of Dizeez.

1. Score API -- Familiarize yourself with this api as it is how the game will be able to quickly leverage the user's social graph. It provides the graph aware scope to provide friend score comparisons in addition to game-wide scoring metrics. This was a big interest in starting to think about porting Dizeez to Facebook. By allowing us to keep track of the current score while making incentives and graph based competition is a huge potential that we'd like to see used to the fullest!

2. Achievements API -  One thing we want to focus on with this project is how can achievements be leveraged to provide level, and game incentives to keep the user interested in participating. Using this endpoint provides the potential for very rich and deeply integrated incentives in the Facebook platform. We'd like to step away from simply saying, "Congrats! You won the level!" and really think about what is meaningful to the player, this is the perfect opportunity to think on that level.

3. Notifications API -  This api opens up the potential for some very interesting ideas on allowing help on questions on which the player may be stumped. Lifelines, phone-a-friend, removing question choices -- we're open to all sorts of potential models on how this idea that can be explored further in the Facebook context. These notifications should also promote game awareness and inviting other people from your graph (it's not fun to simply bug friends for answers, we want them to join!)

Server-side Component ::

We've received a lot of requests about if you can use this or that for the server-side component, many of which are fully capable and would be feasible (anything is possible to build with any language) but because we'll have to manage this after GSoC we've broken down our selection of server-side components into two groups:

Preferable --

If you're a Python person, we'll be sticking with Flask and if you're a Ruby person then we'll be using Sinatra. These are two light-weight frameworks developed with simple APIs in mind and they'll provide a perfect compliment to the Backbone REST interface. Both of these libraries provide the critical components of the server-side requirements: detailed GET/POST/PUT/DELETE routes and a clean ORM to work with the database type of choice. 

Okay --

If you're a Python person, we're open to Django and if you're a Ruby person then we'll be open to Ruby on Rails. Both of these frameworks will work equally as well and just fine, however, they'll provide far more than what is required to actually implement the API endpoint of the game. We're simply trying to prevent excess time and investment into learning, setting up, and working with one of these libraries just to provide a simple API.

Vijeenrosh PW Vijeen

ungelesen,
18.04.2013, 03:29:4618.04.13
an crow...@googlegroups.com
 Thanks for the post , it cleared many of the doubts .

Enitity-Relationship model
----------------------------------------
a) Current disease/condition data in  datafiles can be loaded to MySQL using simple python script using json and MySQLdb modules
b) The concept of filtering / tag was not clear , does that mean to provide field say (question_type) in relation_schema to identify the disease or protien family to which a particular question is associated ?

c) I have just devised a method for generating options ,
        
           1. overlaping parameter :         olap
                                     This paramter has a integer values , which dertemines rate at which previously seen options appear in new questions. option generating
              routine will be a function of olap. Olap concept is again interwined with concept of Levels . Olap value will be reduced as the level progresses

           2. Rate  :    acc_rate           
                                      For each question a parameter called acc_rate will be associated with. It hold the  accuracy with which that questions have been answered by players. One with low acc_rate can be considered to be a Difficult / Less popular question and can be swiftly drifted to hight levels

By logging overlaping factor , acc_rate of questions that have been corrcted , wrong , and number of questions answred quite a wealth of info can be inferred.

Javascript Framework :

    In a prevous thread I have made a model break down approach form Backbone.js  , Here I post it again , Please verify it.

 Backbone models
              c.1)     Player Model
                            This models stores data about player , it has fields to store username , FbId , OldScore and currentScore and other relevant fields.     currentScore is initalized to zero throug default() method , rest fields are set using set() method.        
                           The methods include default() , set() .
                            save() -- once game is over , then  playerInstance.save()   call will update database , if currentScore > oldScore.
                            show(css_handle)  -- used to display userInfo and currentScore  in screen . It takes a input a css handle like #playerInfo    , and displayes player related infromation there.

             c.2)      Question Model
                             This models a  typical question . This contains fields for question id , a list of choices and a field for storing index of right choice. The methods contain typical initialisation methods , set() ,       show(css_handle) shows the question at the element pointed by css_handle ( eg #questionDiv)
             c.3 )   Timer model
                           Simple model manages time . Can set the start time and internal . (default start time is now())
                           it has then start() method that kicks of the timer
             c.4) Controller 
                            This is the meet of the app . All the above models objects are managed by controller object.
                            It models the traditional GameLoop .
                            controller  = new Controller({ //initialisation data} ) ;
                            controller.startGameloop();              //kicks of the whole game


             I have attached a pdf showing the models ( models can be modified to add new fields as required like , acc_rate etc).


Facebook Stragegies
---------------------------------

               Scoring Methodology
               ------------------------------
                            Two common strategies are
                                     a) Keeping Maximum scores
                                                   Here the method is simple , for each question corrected a single point is awarded and wrong (zero or deduct a point).
                                      after the game update the score iff current score > users prevous score . In during update sent FBNotification
                                     b) Progressive Score
                                                    Here user score gets updated each game. it can increace or decreace based on performance .
                                     For this one option is to encode the score , to have  info on score , accuracy , say , first four digits represents the
                                     score  and last two the accuracy ( in percent).
                                     After the current game if accuracy of this game is < accuracy for previous , the deduct the score. The deduct value will depend on levels . for smaller levels , that value will be 1  ,progress from levels to levels


Achievements & Levels
------------------------------------
The idea that I have for levels is fairly simple  .  Starting from level 0.
A player can reach level 1 if he makes atleast 5 questions correct in 5 continues games.
Level 2 can be reached of at level 1 , a player corrects atleaset 6 question in 6 continues games.
and soo on. The levels can be named appropriatly  say Rookie  to Vetran . Advancing each level will be a marked achievement

Notification
-------------------
           Can generated if score increaces , achieves a new level etc

Framework
-----------------
The above mail have been talking about highend(django) and lowend(flask) frameworks . How about using a Middle End framework like Google Appengine . Infact I have been playing around with this for a while ( it would not be a problem at all to port it to flask). Google Data store will provide effecient storage, and
also it will be easy to demonstrate the progress of the app .

http://apps.facebook.com/dizeezgame/

http://apps.facebook.com/infolinksgec/ 

https://bitbucket.org/vijeenroshpw/dizeezfb/src/

Please provide the opinons on the above thoughts on variuos concepts of game.









Vijeenrosh P.W
Govt Engineering College , Thrissur, kerala, India
http://www.github.com/vijeenroshpw
http://www.BlackJackVijeen.blogspot.com
Happy Hacking!!!
model.pdf

Max Nanis

ungelesen,
22.04.2013, 14:54:3922.04.13
an crow...@googlegroups.com
Hi Vijeenrosh -- great to have to start thinking about this. Before you start to define theoretical working models, what ways could you imagine storing questions in a dynamic fashion so that a question may never appear the same way twice? Or ensuring that a question will have at least 1-2 reasonably close choices,1-2 totally random or far out choices in addition to the 1 correct answer? How might this affect the gameplay and how could it be leveraged for scientific research?

Also to follow the Backbone RESTful storage mechanism it might help to start thinking about the use of models and collections :: http://backbonejs.org/

Cheers,
M

Vijeenrosh PW Vijeen

ungelesen,
23.04.2013, 00:38:3023.04.13
an crow...@googlegroups.com
Hi , Max

I was unable to determine a precise  mathematical model to determine 'closeness' of a  answer(disease) with a question as such from the start onwards. But have deviced a dynamic method to learn closeness from games played by the users.

1) A choice 'c' is reasonably close to a question 'q' , if it so happened that atleast one player 'p' , have wrongly choosen choice 'c' as answer to question 'q'.( the real answer of question 'q' may be different).
Player  will click that particular wrong choice iff he might have felt some connection / closeness to the question that was displayed. so we can note that event

To implement above method :

              1) We add a unique field 'question_id'  to questions relation(table) in the database to uniquely identify each question .
              2) We add a field 'wrong_question_list' to  options relation in database to store a queue of question_id's for which this option was wrongly marked.

              The queue can be implemented :
                                            suppose for a option was wrongly answered for question_id's 1 ,5 6,7,9
              we store in that particular options 'wrong_question_list' a value   "1|5|6|7|9|"
              While forming a question we check to see if there is some options reasonably close . If found , one or two
              of such option will be added to current questions wrong option to be dispayed. Also one or two of those options               whose 'wrong_question_list' donot contain current_questions ID can be choosen as far choice .
    
             The wrong_question_list can be updated using a variety of policy , so as not to lose question_id for which that option was answered wrong multiple times.The size of list can be limited too.This could ensure, quality choices for questions along wtih realChoice.


Following Free Online Book on Backbone.js have prooven extremly helpful to me :
                  
http://addyosmani.github.io/backbone-fundamentals/ , It contains a example that use RESTapi ( .save() , .persist()) to save the model on the server. It also has a demo on Marionette.js at the end .








--
--
You received this message because you are subscribed to the Google
Groups "Crowdsourcing Biology" group.
To post to this group, send email to crow...@googlegroups.com
To unsubscribe from this group, send email to
crowdbio+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/crowdbio?hl=en?hl=en
 
2012 GSoC Organization page: http://www.google-melange.com/gsoc/org/google/gsoc2012/scripps_crowdbio
GSoC Ideas page: http://sulab.org/gsoc/
---
You received this message because you are subscribed to a topic in the Google Groups "Crowdsourcing Biology" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/crowdbio/pRCJtjpMv-M/unsubscribe?hl=en.
To unsubscribe from this group and all its topics, send an email to crowdbio+u...@googlegroups.com.
To post to this group, send email to crow...@googlegroups.com.
Visit this group at http://groups.google.com/group/crowdbio?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
Vijeenrosh P.W
CSE S3
blog :  www.BlackJackVijeen.blogspot.com


Vijeenrosh PW Vijeen

ungelesen,
27.04.2013, 14:38:2027.04.13
an crow...@googlegroups.com
I have pumped the data currently in file-json format to  MySQL with the ER-Version2  . I have Attached backup file.
 Python Script . The trick was to rename data.js file to data.py  , so by default the games , diseases variables in that file is in Pythons list-of-dict , and dict form respectively .

fullbackup.sql

Max Nanis

ungelesen,
02.05.2013, 14:36:0202.05.13
an crow...@googlegroups.com
Hi everyone, the deadline for submissions are quickly approaching -- if you have any things that need to be clarified or want to bounce some game ideas back and forth please post away!

“The difference between design and research seems to be a question of new versus good. Design doesn't have to be new, but it has to be good. Research doesn't have to be good, but it has to be new. I think these two paths converge at the top: the best design surpasses its predecessors by using new ideas, and the best research solves problems that are not only new, but worth solving. So ultimately design and research are aiming for the same destination, just approaching it from different directions.” 
― Paul GrahamHackers & Painters: Big Ideas from the Computer Age

Cheers,
M

Vijeenrosh PW Vijeen

ungelesen,
03.05.2013, 10:31:1103.05.13
an crow...@googlegroups.com
Hi, Max , Please provide opinion on the following  ideas

#2 Impoving Choice Selection :
                
                          A choice 'c' is reasonably close to a question 'q' , if it so happened that atleast one player 'p' , have wrongly choosen choice 'c' as answer to question 'q'.( the real answer of question 'q' may be different).Player  will click that particular wrong choice iff he might have felt some connection / closeness to the question that was displayed. so we can note that event.

                            1) We add a unique field 'question_id'  to questions    relation(table) in the database to uniquely identfiy each question .

                            2) We add a field 'wrong_question_list' to  options relation in database to store a queue of question_id's for which this options was wrongly answered.This queue can be implemented very easily by following format. Suppose questions 1,9,8,6,7 was wrongly answered for a option  'o'. The wrong_question_list will contain following value 1|9|8|6|7| . The size of the queue can be fixed.While forming a choices for a question , its checked to see if there is some options reasonably close. One or two of such options will be added as a reasonable options.Options whose,wrong_choice_list does not contain question_id can be considered as a far choice.

#3 Achievements :
      

I was planning following method for achievements. Rather than game awarding achievements for the players at some points , Players have to claim their achievement . In the ER-Diagram above , with each question , I have kept a field named 'success_rate' ,which stores accuracy with which that question was answered . We will keep a minimum score after which a player can claim achievements. Each claim of achievement will result in a Achievement round , with a minimum passing score , attached . The question in the round will be ones with low success rate. This ensures that only quality players (one who have played and learned much) can beat achievement levels. Failure to beat achievement levels may cause score penality.
       
Achievement levels can have varying difficulty, requiring to answer progressivly increacing number of question to achieve. I have not yet named the achievements .

 

I have named two achievement levels Explorer , Sustainer . A explorer , is a one who earns a reputation of > 10 . A Sustainer is one who keeps his plays around or equal to his maximum score for say not less than 5 games. There is a work of appropriately naming other achievements remain.




--
--
You received this message because you are subscribed to the Google
Groups "Crowdsourcing Biology" group.
To post to this group, send email to crow...@googlegroups.com
To unsubscribe from this group, send email to
crowdbio+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/crowdbio?hl=en?hl=en
 
2012 GSoC Organization page: http://www.google-melange.com/gsoc/org/google/gsoc2012/scripps_crowdbio
GSoC Ideas page: http://sulab.org/gsoc/
---
You received this message because you are subscribed to the Google Groups "Crowdsourcing Biology" group.
To unsubscribe from this group and stop receiving emails from it, send an email to crowdbio+u...@googlegroups.com.

To post to this group, send email to crow...@googlegroups.com.
Visit this group at http://groups.google.com/group/crowdbio?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 
Allen antworten
Antwort an Autor
Weiterleiten
0 neue Nachrichten