Giter VIP home page Giter VIP logo

seedquest's Introduction

SeedQuest: A 3D Mnemonic Game for Key Recovery

Logo

SeedQuest-V0.2.9 Platforms-MacOS-Windows-Web

You have just found SeedQuest

SeedQuest is 3D mnemonic game used for key recovery. It is designed to be simple and fun, and only require a few minutes to complete. Please try out the lastest prototype for SeedQuest, and complete a survey to give feedback on the game.

You can find the latest version of the SeedQuest here.

To report issues with the application or bugs, please use the Issues Page.

For help with SeedQuest or talk with developers about this project, visit our Slack Channel.

Lastest News

SeedQuest Beta is here! Checkout SeedQuest for the full recovery of a 128 bit seed!

How does SeedQuest work?

In SeedQuest, the player will visit a few different locations and perform various actions in a specific orfer. This order of actions is used to encode a key which will be used as a seed string. This seed is used to randomly generate the series of actions in the game that you'll need to remember. You have no control over that encoding, but you can select the seed string you would like to use. You can practice learning the order of actions in 'learn' mode, and then you can prove your memory in 'recover' mode. In 'recover' mode you can play the game to decode and recover your seed string by completeing the actions in the correct sequence.

SeedQuest Community

SeedQuest is an open source project and we want to grow a community of people working on and activately improving the SeedQuest game. We welcome feedback on the project. To facilitate this we have created a Slack channel (seedquest.slack.com) that anyone can join. Join the Slack channel here.

Collaboration

Currently SeedQuest is being developed in the SeedQuestAssets repo. Want to collaborate on the project? Please join the project slack and post a message.

Background

Human memory is often incapable of remembering long strings of random characters like those found in a cryptographic key. Often a mnemonic, a technique used to aid in memory retention, is used to improve the recall of complex information. SeedQuest is a 3D mnemonic game used for key recovery. It is designed to be simple and fun, and it only requires a few minutes to complete. In a virtual 3D game world, the player visits a number of locations and performs various actions in a specific order. This order is generated to encode a player supplied 128-bit seed for a one-time pad that encodes a cryptographic key. After rehearsing the generated quest (the series of actions performed at the different locations in the game), the seed can be recovered at any time by playing the game and completing the rehearsed actions in the correct sequence. A stored encoded cryptographic key can then be decoded using the recovered one-time pad seed. As a simple and effective method for key recovery, this mnemonic could be a useful feature for any cryptographic system where the user is required to generate and manage private keys.

Media

alt text

seedquest's People

Contributors

bradyhammond avatar michaelmendoza avatar ntelfer avatar westonb7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

seedquest's Issues

Unity demo - movement

  • Implement keyboard inputs controlling player movement

  • Implement collision detection for the player interacting with solid objects

Implement physics

  • Investigate rigidbody physics in unity

  • Implement physics for objects in unity mockup

  • Debug physics in unity mockup

Unity Demo - debug camera

  • Debug issues with the camera in unity

  • Debug the LOS (line of sight) issue

  • Debug the clipping issue

Investigate RNG

  • Read about how RNG is used to create seeds for one-time pads.

  • Investigate secure ways of producing RNG

  • Investigate CSPRNG specifically

Determine engine

  • Get feedback from the two demos for Kivy and Unity

  • Determine whether to use Kivy, Unity, or investigate another development engine

Sketchup -> Unity

  • Investigate how to import a Sketchup model into Unity

  • Investigate how to import textures from Sketchup into Unity

  • Determine if Sketchup is feasible to use for the project

UI for procedural seed

  • Implement UI for entering the seed for procedurally generated map

  • Generate new scene using the input seed

Action spot construction

  • create reusable object type for action spots

  • create index to keep list of action spots

  • create dialogue windows for interacting with action spots

  • create (or import) models for actionable objects

  • create log to record player's actions, which includes area index, site index, object index, and action

  • place action spots within sites on world map

OTP fine-tuning

  • Fine-tune OTP generation using entropy shards from the player's action

  • Final adjustments should be made after the game is nearing completion, and should address issues that arise when the game is more fully fleshed out.

Unity demo - graphics

  • implement a model for the player character

  • implement a model building

  • implement an area for the building to occupy

World building - layout

  • Implement a grid for the world map to occupy

  • implement an index for each tile of the grid (256)

  • program in coordinates for equally-sized tiles to occupy in order to not overlap with other tiles

Feedback

  • Deploy alpha version of the project

  • Find and contact potential play testers

  • Distribute executable to playtesters

  • Gather feedback from playtesters

Unity Demo - Update to 2018 version

  • Update Unity to the latest version

  • This is a large update, and may take some time to install

  • debug compatibility issues, and re-import assets if needed

UI/HUD

  • Create user interface / heads-up display

  • Create graphics for menus and other UI elements

Kivy Demo - graphics

  • Investigate how graphics are handled in Kivy

  • Create basic graphics for the world map

  • Create graphics for the player character

Implement OTP generation

  • Implement code to generate OTP from entropy seed

  • This will require the entropy seeds to be created from the game first.

Rehearse mode

  • Implement functionality for rehearse mode

  • Implement game start code for rehearse mode

  • Implement end-of-run script to end the game and generate seed phrase

  • Implement auto-playing code to have the game show the route needed for the input seed phrase

Site construction

  • Construct sites (buildings) for each of the map areas

  • Import building models from sketchup

  • place models on map tiles

  • create index for each site per tile

Investigate Kivy

  • Investigate Kivy as a potential development engine

  • go through a tutorial for Kivy

  • Test out the graphics generation engine for Kivy

Memorability

  • Add landmarks

  • Add visual quirks to locations to improve memorability for players

Investigate large file repo

Investigate possible solutions for large file repos for the unity files and assets.
Github only allows files of 100MB or less, and many files used for unity will be much larger.
Currently, the project's files and assets can't be pushed to the github repo, because their file size is too large.

Investigate Unity

  • Investigate Unity as a development engine

  • Create simple 3D models in Unity

Graphic polish

  • Add visual effects

  • Add animations

  • Add improvements on existing graphics

Investigate OTP

  • Investigate algorithms that could be used to generate OTP from seed

Recall mode

  • Implement functionality for recall mode

  • Implement game start code fro recall mode

  • Implement end-of-run script to end the game and generate seed phrase

Procedural generator tile map

  • Fine tune the procedural generator function to generate a "ground" tile map instead of a "wall" tile map

  • Look into object destruction for old tile maps

Unity demo - camera control

  • Implement code to have the camera follow the player

  • Implement code to prevent the camera from clipping into solid objects

Investigate seed phrase generation

  • Investigate seed phrase generation

  • Find out if there's a publicly available seed phrase word list for other ethereum account creation programs.

Kivy demo - movement

  • Implement basic player movement for the mockup

  • Program in keyboard input

  • Program in simple movement based on keyboard input

  • Program in hit detection for objects

Dev tool creation

  • Create dev tools needed for Area creation, site creation, or action spot creation

  • Create dev tools for in-engine debugging

  • Make separate Dev branch in repo

Update the Readme

Update the readme with other information from the project roadmap document.

Rework

  • Rework SeedQuest based on alpha tester feedback

  • fix any bugs reported by playtesters

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.