Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Gitcoin Quest Game Mechanic #5339

Closed
owocki opened this issue Oct 19, 2019 · 79 comments
Closed

New Gitcoin Quest Game Mechanic #5339

owocki opened this issue Oct 19, 2019 · 79 comments

Comments

@owocki
Copy link
Contributor

owocki commented Oct 19, 2019

Other Quests Threads

This Topic

The objective of this ticket is to create a Gitcoin Quest Game Mechanic

Got a retro game dynamic or game experience that you love? Want to build it into web-based educational experience? Want to earn some rewards (Quest Points, ETH) while doing so?

Whats the ROI?

Well..

About 45.7 Quests are played per day for a play count of 1188 total; There are Gitcoin Quests, which are played by a community of 136 active users of 27208 total; residing in 87 countries. The average quest has 169.71 plays. (stats updated on 10/18; updated stats available on gitcoin.co/quests)

How

State Machine

The state machine of a Quest Attempt is

  1. Started
  2. Done; success=False or success=True
  3. If success=False; then user may be in a cooldown period

Data Model

Gitcoin Quests Uses the following information as the basis of a quest

  1. Title
  2. Description
  3. Reading Material Title/URL
  4. Enemy Kudos & Reward KUdos
  5. Reward Points Value (usually 1)
  6. Multiple Choice Q&A list

Each quest has its own instansiation of these attributes. They are stored in the quest.models.Quest object

here is a backup of the production database for one example quest; so u can see what the data structures for this looks like.

This model; along with

  1. the QuestAttempt model (what it sounds like - an attempt at beating a quest)
  2. and QuestPointAward; a point award for beating it...
  3. and the dashboard.models.Profile object (the users login information)

basically make up the data model for these games.

the following functions from quest.helpers offer easy access to these models in a way that encapsulates common this a Gitcoin Quest needs to do:

  • record_quest_activity
  • record_award_helper
  • get_base_quest_view_params
  • get_active_attempt_if_any
  • process_start
  • process_win

game architecture

Gitcoin Quests Uses a modular architecture to allow different game dynamics to exist within the constraints of a quest.

An example of the addition of the barebones 'example Quest' type is contained in the following commit: ef9dfea#diff-ca1e4f8cc0f93c989bee11a8a3b08498

You will see that this commit modifies

  • example.html (the DOM structure for this quest game mechanic)
  • quests.example.css (the styles for this quest game mechanic)
  • quests.example.js (the js for this quest game mechanic)
  • quest_types/example.py (the backend for this quest game mechanic)

These files exist for every game dynamic type in the codebase (just example and quiz_style right now)

Quests are toggled between different game dynamics in the DB; by the quiz_style field:
Screen Shot 2019-10-18 at 8 14 08 PM

There are only two styles available right now:

As you can see; the example style is an extremly barebones skeleton that can/should be copied/filled out by YOU as you perform this bounty!

success criteria

your objective will be to build a compelling game dynamic for the presentation / processing of the quests information (the reference material; then a Q&A engagement)

compelling =

  1. engaging / fun to play
  2. fair - if u get the right answers; then u win
  3. clear - UX should be intuitive
  4. device compatible (ipad; iphone) or if mobile devices has a degraded performance; it's managed correctly.

some insprational game mechaanics you might copy:

  • anything from mario party
  • mario kart or similar racing game (road rash, excite bike) (maybe when u answer a question correctly u pull ahead; when u answer wrong u fall behind)
  • monkey island style insult fighting
  • zelda style fishing game (https://www.youtube.com/watch?v=ZBtaTqoeDyo)
  • really any zelda side game/mini game
  • mortal kombat style fighting game (maybe if u get a question right it is a kombo that damages enemy..)
  • Quarter pushing game
  • Pokemon
  • image design/painting game where u design Kudos (and can submit it to end the quest)
    from austin griffith: making a burner with a short seed phrase and sending some eth to it would be a good one
    -gitcoin intro video video game Take the Gitcoin Product Video and make it into an HTML5 game #716

i would also be interesting in seeing a a game that abandons the educational component of the existing Gitcoin Quests... but is still crypto skinned in some fun/playful way... i'm less confident in this; but i think any of the following COULD work if the game mechanics are sufficiently engaging that it makes up for the lack of educational component.

  1. Flappy Bird
  2. Racer Game
  3. Sidescroller
  4. any puzzle game
  5. bar games (oregon trail; big buck hunter; pac man; fighter games)
    6 Pokémon - use kudos, they all have special powers

from @octavioamu : would be nice to add code validation and let people complete it to validate their knowledge in some language.

assets

Please leverage any of the assets in the gitcoin creative assets repo!
https://github.com/gitcoinco/creative
esp the wallpapers https://github.com/gitcoinco/creative/tree/master/Brand/Wallpaper
and the robot artwork https://github.com/gitcoinco/creative/tree/master/Marketing/Art/Robots/robot_kudos
or this wallpaper artwork from my devcon preso https://drive.google.com/drive/folders/141PYBwos3e0pZx6nHb2eeB8I8pgg8IF5

rewards

I have 20 ETH to drop on 3 quests. Please follow the following path to work on this.

  1. Start work on Gitcoin - Pitch your quest idea to me there!
  2. Clone the repo using the README instructions + get a local instance u8p.
  3. Actually start coding -- Do not code more than 2-3 hours without having a WIP PR and a demo video or demo URL that you can show off!
  4. If ur trending negatively Ill give u some ETH for your time and send u on your way. If ur trending positively, Ill greenlight more work
  5. Iterate until you have a great game mechanic

PLEASE OVERCOMMUNICATE! Lets avoid a situation where you've poured a TON of work into something that won't be usable at the end of the day.

Ill pay the following for your work:

  1. 9 ETH
  2. 6 ETH
  3. 4 ETH

Below that; I'll pay out honorable mention prizes at my discretion.

@gitcoinbot
Copy link
Member

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 20.0 ETH (3456.56 USD @ $172.83/ETH) attached to it.

@gitcoinbot
Copy link
Member

gitcoinbot commented Oct 20, 2019

Issue Status: 1. Open 2. Cancelled


Work has been started.

These users each claimed they can complete the work by 2 years, 3 months ago.
Please review their action plans below:

1) blockchainunchained has been approved to start work.

A space invaders style game might be fun, rather than just scrolling up through endless space I think you should start at Ethereum block 0 and fly your Ethereum space ship towards the current day (block 8774672 as of now). As you fly through the days and weeks you should encounter various hard forks, attacks (Shanghai!) and community events. If there is time and the game proves popular we could pull some sound effects from various presentations with the speakers consent.
2) ryan-foo has been approved to start work.

Hi! I’m interested to help to implement the Mario Kart answering correctly moves you ahead, answering wrongly crashes your car mechanic. It’ll be at the bottom of the screen, simple animation with the intention to help clearly signal their progress. It might be running robot, etc depending on the assets available. Will try my best!
3) merwane has been approved to start work.

I expressed the general idea on GitHub:
#5339 (comment)
4) jezsmith720 has been approved to start work.

I would love to work on this. I am well versed in game-theory mechanics and have good experience making games and web apps in general. I am greatly enjoying Gitcoin and would love to contribute to any progression on the platform :) - my freelance website/portfolio @ https://bitwiseuk.com
My POA would be to first read any relevant documentation, then play a few existing quests for reference/inspiration, then I will propose my idea/prototype to you before continuing development.
Cheers, Jez
5) cervoneluca has been approved to start work.

Hi. I would like to know if this bounty is still open.

Thank you.
6) perpat84316 has been approved to start work.

Everything I need to complete the task.
7) bitsavage0202 has been approved to start work.

would love to see this develop
8) ivanmolto has been approved to start work.

I have experience developing gameplays and I would love to give it a try. Thank you!

Learn more on the Gitcoin Issue Details page.

@owocki
Copy link
Contributor Author

owocki commented Oct 21, 2019

@blockchainunchained sounds interesting! pls try to find a way to make it educational in some way :) looking forward to seeing what u come up with :)

@ryan-foo sounds cool! looking forward to seeing what u come up with!

hit me up with any questions

@merwane
Copy link
Contributor

merwane commented Oct 21, 2019

Does it have to be written on the Gitcoin/web codebase with a PR or can I just make it separate?

I thought of a game where users can stack Satoshis/Gwei as they stack squares on "Stack by Ketchapp", but by answering questions. They can later exchange them with Kudos. This can educate people about the way we can stack small units of cryptocurrency to eventually exchange them.

Another idea would be to create a word guessing game (like the Hangman game) for words around crypto/Blockchain. I'm already working on this one.

What do you think and which idea do you prefer?

@owocki
Copy link
Contributor Author

owocki commented Oct 21, 2019

i think each of the ideas is cool; go with whatever ur passionate about and think would create a great UX

yes its gotta be on gitcoin; otherwise theres no way to get the distribution from our platform or to tap kudos...

@merwane
Copy link
Contributor

merwane commented Oct 21, 2019

I am running Gitcoin locally using Docker, and when I try to access http://localhost:8000/quests/ the following error pops up:

AttributeError: 'NoneType' object has no attribute 'data'

Any idea on how to solve this?

@blockchainunchained
Copy link

Import the database dump from above or create a super user and make the models from the Django Admin page (usually localhost:8000/admin but they might have changed it).

@owocki
Copy link
Contributor Author

owocki commented Oct 22, 2019

@merwane can you post a stack trace?

admin is at http://localhost:8000/_administration @blockchainunchained

@owocki
Copy link
Contributor Author

owocki commented Oct 22, 2019

@merwane try commenting out the get_leaderboard() call or handling the exception there..

@merwane
Copy link
Contributor

merwane commented Oct 22, 2019

I did, but I don't want to break the normal workflow. Is it ok to keep it for testing later?

@owocki
Copy link
Contributor Author

owocki commented Oct 22, 2019

yes no problem; i just made a commit that'll fix the problem for you.. and when thats merged into master we'll be all good without commenting it out

@merwane
Copy link
Contributor

merwane commented Oct 22, 2019

Thanks for the help!

@merwane
Copy link
Contributor

merwane commented Oct 23, 2019

You asked for over-communication so here you go:
I am working on integrating the Hangman game as a quest and for now, it is still very basic and not even linked to the database, the interface is still awful, etc.

https://github.com/merwane/web

Also, here are two screenshots:
https://drive.google.com/file/d/1X62FNuyae0EZWq4AQ9cB9hkbKG_cAUd9/view?usp=sharing

https://drive.google.com/file/d/1SfnaOVyTzS2DeCa7oRc0miGpP7rYRS0Q/view?usp=sharing

I managed to solve the DB problem by handling the exception occurring with get_leaderboard().

You can reproduce it simply by creating a new quest via the admin interface with a style of "hangman".

What do you think in general?

@owocki
Copy link
Contributor Author

owocki commented Oct 24, 2019

i used to love hangman back in the day!

gfx are basic but we can have a designer take a pass later if thats not your skillset...

trying to brainstorm ways we can make it more educational for web3 users... instead of just a crapshoot to who can spell/remember words:

  • maybe we could add some educational value to the game by providing a hint of what the word is... so that the user has to think of the word definition and can win the game more consistently if they know their decentralization-fu?
  • any other ideas?

@merwane
Copy link
Contributor

merwane commented Oct 24, 2019

Yep, I'm already trying to implement hints when the user makes too many errors. Also, I've been thinking of a dynamic timer which can be increased when the user makes a good guess and decreased if not.

@merwane
Copy link
Contributor

merwane commented Oct 24, 2019

Also sorry for the delay, I'm quite busy these days and I'm doing my best to work on this bounty by night (CEST)

@owocki
Copy link
Contributor Author

owocki commented Oct 25, 2019

excited for the progress @merwane !

@ryan-foo @blockchainunchained how goes?

@micksabox
Copy link

micksabox commented Oct 25, 2019

Does it have to be written on the Gitcoin/web codebase with a PR or can I just make it separate?

Was thinking about a game to work on at ETHWaterloo but noticed this comment and answer.

yes its gotta be on gitcoin; otherwise theres no way to get the distribution from our platform or to tap kudos...

I didn't go through the whole spec, but I'm assuming the game could be built in a separate repo and hosted separately and then a "Gitcoin plugin" could be created used to link to it (iframe or other) from within a Gitcoin quest. It's probably going to have to be a react app. Please advise if I'm off base here.

@merwane
Copy link
Contributor

merwane commented Oct 25, 2019

I agree with @micksabox as React or other JS frameworks are best suited than JQuery for making dynamic interactive games. I would say the biggest downside is actually the ease of development. It would be cooler and much faster to develop it separately and find a way to "link" it with Gitcoin.

@micksabox
Copy link

My understanding is that in order to qualify for the ETH and tap the kudos then there needs to be a PR made in this repository. My question is more for the tech and deployment of the game, if it can be done elsewhere and then a Gitcoin Quest compatible-version could be made after the fact.

@merwane
Copy link
Contributor

merwane commented Oct 25, 2019

Creating a subdomain for quests can be an option too, with a whole different, more dynamic architecture. What do you think?

@owocki
Copy link
Contributor Author

owocki commented Oct 26, 2019

Was thinking about a game to work on at ETHWaterloo but noticed this comment and answer.

Nice; Ill be there most likely.. Lets jam there!

I agree with @micksabox as React or other JS frameworks are best suited than JQuery for making dynamic interactive games

Feel free to use React, even if it's added to this repository.

I didn't go through the whole spec, but I'm assuming the game could be built in a separate repo and hosted separately and then a "Gitcoin plugin" could be created used to link to it (iframe or other) from within a Gitcoin quest. It's probably going to have to be a react app. Please advise if I'm off base here.

You should read the spec. I wrote it as thoughtfully as possible so that we could have an informed discussion, and even created an example 'game' that shows players how to interact with the Gitcoin interfaces of the repo.

If people feel strongly about creating seperate apps that are linked
I'll need to think about how to create an API bridge between Gitcoin and your apps... The primary things you'd need...

The list of Gitcoin codebase interfaces that you'd need to plug-in:

  • a listing on the quests index page, so you can tap our DAUs..
  • Login/Auth (which then gets you the user avatar + profile information & their quest history)
  • Report a win (which generates a prize for the user)
  • Report a loss (or an attempt that did not generate a win)
  • post win or post-loss handoff back to the quests page.

Creating a subdomain for quests can be an option too, with a whole different, more dynamic architecture. What do you think?

I'd be more than happy to host some quests on a subdomain... Provided they've been PR reviewed and look good. The only downside is that it introduces some security concerns WRT cookies, so we'd have to account for that in PR review.

@merwane
Copy link
Contributor

merwane commented Oct 26, 2019

Great! I'll start working on it using Nuxt.js. I can probably create a working concept tonight or tomorrow morning. I'll gradually start by creating the quest then we'll implement Kudos etc

@owocki
Copy link
Contributor Author

owocki commented Oct 28, 2019

kewl kewl

@merwane
Copy link
Contributor

merwane commented Oct 29, 2019

So I just finished creating a better-looking concept for the Hangman quest, adding hints, a better UI and a timer + lives system. Everything is very minimalistic and using vanilla JS but I thought it would be easier to implement it that way. The Nuxt.js idea was pretty dumb since there would have been a ton of work to do to re-implement everything.

Here's the repository: https://github.com/merwane/quest

@sirlupinwatson
Copy link

Hello guys, just to Say HELLO ! we still alive, i will have less trouble than i expected where i am and i will be able to keep working by tomorrow, so i will hop on here and develop as much i can.

I need to figure couple of issue i have on other projects but i keep going.

Cheer !

@owocki
Copy link
Contributor Author

owocki commented Nov 5, 2019

@merwane do u have the app running? i just PRed up your game as a quest! #5449

@merwane
Copy link
Contributor

merwane commented Nov 5, 2019 via email

@merwane
Copy link
Contributor

merwane commented Nov 5, 2019

Here it is: https://hangmanquest.netlify.com/

@owocki
Copy link
Contributor Author

owocki commented Nov 5, 2019

the gitcoin app https://github.com/gitcoinco/web

@merwane
Copy link
Contributor

merwane commented Nov 5, 2019

Yeah I have the image on Docker, I tested it a few days ago to understand how the DB schema works on quests

@owocki
Copy link
Contributor Author

owocki commented Nov 5, 2019

can u dev on the docker container, so we dont have to continually merge the apps?

@merwane
Copy link
Contributor

merwane commented Nov 5, 2019

Probably, but I would be very limited in time since I spend most of my time outside with a low-spec 2015 Macbook Air which doesn't have enough resources to run the containers while staying smooth etc

@sirlupinwatson
Copy link

@merwane @owocki ive made the first step. writing a brief road, maybe not good but wathever, and started up the project, where i should show you, i made it private just for now

@sirlupinwatson
Copy link

@merwane @owocki maybe it will be easyer than i tought lol.

https://github.com/Sirlupinwatson1/Adlez-A-Knil-Ot-Eht-Tsap

@owocki
Copy link
Contributor Author

owocki commented Nov 7, 2019 via email

@sirlupinwatson
Copy link

can u invite me to that repo

On Wed, Nov 6, 2019 at 7:33 PM SirLupinWatson @.> wrote: @merwane https://github.com/merwane @owocki https://github.com/owocki maybe it will be easyer than i tought lol. https://github.com/Sirlupinwatson1/Adlez-A-Knil-Ot-Eht-Tsap — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#5339?email_source=notifications&email_token=AAD5PCNOGAZ4TLD3ZPBWOGTQSN46DA5CNFSM4JCNXDD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDIWC2Q#issuecomment-550592874>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAD5PCJRX7YVMGCFK5JAGG3QSN46DANCNFSM4JCNXDDQ .
-- @owocki http://www.twitter.com/owocki
_________________________________________ check out what i'm building on github http://github.com/owocki or what i'm shooting on photoshelter http://photography.owocki.com/ or find me on twitter http://www.twitter.com/owocki, facebook http://www.facebook.com/kevinowocki, instagram http://instagram.com/owocki, linkedin http://www.linkedin.com/in/owocki, and owocki.com http://www.owocki.com/?utm_source=emailsig. see you around teh internets! PS -- Come to the next Boulder Blockchain https://www.meetup.com/Boulder-Blockchain/ meetup. Be there or be ^ 2. PPS -- Have I mentioned that *G
itcoin is live?
More @ https://gitcoin.co

@owocki i made it public now

@sirlupinwatson
Copy link

but however @owocki i don't do this for the ethereum, but for fun, and to learn because that is always the case with me, i start something to make money but at the end i do it to learn and because i like it. hahaha,i mean that is funny

@sirlupinwatson
Copy link

you know i don't do this now i am concentrate on AI with microsoft deep learning, and a lot of other things ,stream chanel, customize it, also with intel dev zone on some stuff, crypto also. i might try want too much at the same time but they all came together , and i do renovations building house is my job. so i will do as much i can but i like the AI and the lesson they give.

@sirlupinwatson
Copy link

Hi all, hello @owocki and @merwane
Right now i dont have internet since yesterday, and thé time remaining Will not bé enough for me, i dont quit or say i abbandon, but as of today i only have m'y internet from m'y cellphone and its pretty Bad but i have very limited data.
I cant tell when i Will be able to have internet back in my appartement but i would love to finish this project.
Friday i did work all the night to créate m'y 2 first bot with m'y command etc they are up and running on discords. And its so fun honestly. So i was on a good way to suceed for this quest mechanics and i cant leave a project like this its just personall issue hère .
Christmas is coming also and i Will need some money to buy à gift for m'y Twins so thé internet Will have to wait unfortunatly.
In about 1 months, i did made huge progression i think on code side, but also on Ai knowledge and lot of things around it. Github and Bitcoin have been part of me since a month and because of these web site i did learn so much.
So i am sorry about this, but i Will do the project as soon i can have internet here.
The owner of thé modem decided that i cant bé on his internet anymore so life is life
Thanks you for your time and help . I Will be in tonight a little on m'y pc, i can do a share connections but not a lot otherwise i Will loose internet completly.
Again i am sorry about this, i would have loved to finish it on time, but m'y Twins are all i have now and they are m'y priorité.
Thanks to understand. I wish you à good evening all

@sirlupinwatson
Copy link

Here a preview, my idea was to use these bot for couple of project and make them a evolution over a year. and see where i will be in a year . Bot Sirlupin and Hackermanager are the one i created
botproject 1 2

@owocki
Copy link
Contributor Author

owocki commented Nov 18, 2019

@Sirlupinwatson1 got a github repo somewhere that describes the why/what/how of the bot? its hard to tell the use case from the screenshot

@sirlupinwatson
Copy link

hello @owocki , Well to be realist i did not do much, i did pass a lot of time to learn etc because i want a get over the coding and go to my next objective.

As of now, i would have like an image 2d so i could almost say i can implement my code that is already half done in the map area.

The bot are a special project that i want a do on the side, but keep one as a template for the entire quest, but also have another one and up to 5 bot.

In the quest beginning you will be able to choose up to 5 character.

Thas is what make it so funny.
These bot refer to Sirlupinwatson as of me, 1 for you kevin , and 3 more for people who participate in the project.

Also, another feature that would be great is to be able to import our own bot.
That way a rank and points system would be etablished and a leaderboard could be managed from that. I try to think big but also over time to developp something viable and playable with futur known update already on the way

@gitcoinbot
Copy link
Member

gitcoinbot commented Nov 19, 2019

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work for 20.0 ETH (5641.76 USD @ $282.09/ETH) has been submitted by:

  1. @sirlupinwatson1
  2. @cervoneluca

@owocki please take a look at the submitted work:


@owocki
Copy link
Contributor Author

owocki commented Jan 22, 2020

@cervoneluca yes it is still open

@cervoneluca

This comment has been minimized.

@Solexplorer
Copy link
Contributor

You can either join the gitcoin chat at: https://gitcoin.co/chat/ or post your ideas in this github issue

@owocki
Copy link
Contributor Author

owocki commented Mar 10, 2020

gonna close the bounty here... if anyone who started while it was open submits a finalized submission we should jam then

@gitcoinbot
Copy link
Member

Issue Status: 1. Open 2. Cancelled


The funding of 20.0 ETH (4003.05 USD @ $200.15/ETH) attached to this issue has been cancelled by the bounty submitter

@xunfa2019
Copy link

good project

@GayHubFire
Copy link

Incorporate into the game content, rather than simple multiple-choice questions.

@sssr1991rus
Copy link


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

15 participants