isuru89 / oasis Goto Github PK
View Code? Open in Web Editor NEWOpen-source PBML (Points, Badges, Milestones, Leaderboards) Gamification Platform inspiring Stackoveflow
License: Apache License 2.0
Open-source PBML (Points, Badges, Milestones, Leaderboards) Gamification Platform inspiring Stackoveflow
License: Apache License 2.0
A Challenge is a rule which will be executed within a limited amount of time, and if not, gets expired.
Badge module should provide methods to query badge details for external parties.
Currently injector insert records into the database one by one, which is very inefficient.
And should use batch queries to insert buffered records as a batch, so the network overhead will be minimized.
It is better to support supplementary durable databases like MySQL or MariaDB to store admin data, rather than only in Reids.
To have API documentation, integrate swagger to the Oasis.
Ratings indicate the current KPI state of a user.
Unlike milestones, which are accumulating, a rating can fluctuate to any direction (increasing or decreasing).
Point rule can be specified to mark as gold or not, so that whenever a balance is calculated only rules specified will be taken into account.
Point Rule may have a boolean field called isCurrency. Default value is true.
Users should be awarded points.
Point Rules:
When specifying element definitions, there should be a property to specify the revision
attribute so that engine can identify whether the element should be replaced or not
Integrate the project with TravisCI and Code-Coverage online services to monitor projects build status.
Users can spend achieved points to buy somethings from shop.
When a redis cluster is used, we need to use hash tags to support intelligent distribution of keys across all shards.
It is better to store same game data in a single shard rather than across several shard to support lua script execution too.
Currently when an application needs to get the feeds, it has to crawl through several tables.
It is better for performance that to have a separate notification table to search from it.
Later this gives ability to integrate easily with external notification mediums.
When user is first time logged-in, allow user to choose his/her favourite character for playing game.
There are predefined set of characters which user can select which is defined by admin at the deployment time.
User cannot change his/her character once chosen, but the admin can modify by the request of the user again only once in a lifetime. In such change, user will lose all his/her character purchases.
Such change of character should not affect to leaderboards, points, badges or any other game scoring mechanics.
We should not query database everytime we want to get a leaderboard ranking, but we can cache it for a considerable time when no points or states are updated.
Players in the game are users.
User can have only one role at any time. Anyone can play a game at anytime.
It is better to introduce an attribute to a badge as a feature identification.
Such as a badge can be marked as platinum, gold, silver, bronze based on levels.
So leaderboards can show badges based on these attributes.
To minimize the failures in the engine, the definition add service must have strict validations on adding elements.
Races are based on leaderboards and awards points according to the top ranking at a particular time.
Currently all points are referred by rule id. However, there is a case where some rule to produce same kind of points, so the engine needs to support this point grouping. This is useful in Milestones where it needs to accumulate points which will be generated from several rules. Having one common id is easier.
For ex, if there are two points rules having ids: point-rule-1
and point-rule-2
but user need to generate same point type out of those two rules, then user should be able to specify it like common-point-id
.
Implementation: With every point rule, there will be a mandatory pointId
field indicating point id.
Currently all db functions are stored with db module itself. But there can be moments where modules needs to deploy their own functions with db.
Hi, is there any documentation about this project? For example, the endpoints details/parameters, authentication, etc...?
Currently leaderboard considers only total points. Therefore, in case of a tie breaker, there is no other parameter to be used.
Leaderboard could also consider total event count (for total points) as a tie breaker.
Provide a capability to award badges from race wins, such as,
Ratings module should provide query methods to retrieve rating related information to external parties.
Points module should provide query methods to retrieve point related information to external parties.
When a user is defining a leaderboard, the user should be able to define the display unit for aggregated points along with dashboard.
By default, when unspecified, the word 'points' will be used.
User should be able to change the label accordingly. Eg: Gold, XP, etc.
When a user is added, that user should belong to the global default team.
Currently if we insert a gamification element to the db and delete it, later we can't insert by the same name again.
Users can play along milestones.
Leaderboards can be two types.
Characteristics:
Hi,
Is there a guide to know how to deploy the solution? I am using windows environement.
thanks,
Some fields of element definitions are not easily identifiable with their field names.
Challenges module should provide query methods to retrieve challenges related information to external parties.
An admin/curator should be able to configure a rule with restriction of maximum earned elements within a defined period, so that preventing users collecting too much elements.
This is inspired from Stackoverflow where a user can only earn maximum of 200 reputations for a day.
An admin should be able to define rules which automatically activate/deactivate only for a specific season/time period.
For example, the admin/curator may want to define a particular rule which active only for the summer. (1st of July to 30th of September).
This time range can take several forms:
Users should be awarded badges based on points or patterns.
Badge Patterns:
Time Constraints:
Currently there is no way of knowing progress of achieving a badge which needs to complete a streak to get it.
It is better if user can see the current progress of achieving next badge.
Milestone module should provide query methods to retrieve milestone related information to external parties.
Other than to points and rank, leaderboard may show the rank change relative to the previous day/week.
The rule is,
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.