Skip to content

lzbk/QuestsRCodes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

QuestsRCodes

This app was designed and implemented at the LIRIS lab (http://liris.cnrs.fr) in the course of the Janus project, sponsored by the IMU Labex (http://imu.universite-lyon.fr/).

QuestsRCodes is a system to create and run a QR code based treasure hunt.

The current version is mostly based on external QR code readers and uses extensively localstorage.

The game allows to specify the whole hunt in a JSON file.

Requirements

To run, QuestsRCodes requires :

  • a server with php
  • a database system here TODO

Coding conventions and tags

Many functionalities will not be developed in the first versions. When modifications are necessary for a given anticipated functionality, a tag will be added in the code. Existing tags are the following:

  • #BQ → to interface with BrowserQuest
  • #security → test data types, entry values and such
  • #message → message handling (through a message class for instance)

Order in which the javascript files call each other

  • home calls class / jquery and then main
  • main calls ??
  • card calls position

Configuration

###client ####client/config.json: { "server_type":"php", //the server type only php here "path":"../server" //path to the server (optional), see Constants.DEFAULT_SERVER_PATH }

####Game data To this point the game data is only text based, but is to be put in a folder (in case we include media later). The folder is to have an explicit name and the file containing the quest is ALWAYS called game_data.json. It contains:

  • a game Id;
  • a game title;
  • the default feedback when a QR code is not scanned at the appropriate moment;
  • the feedback to be displayed when the quest is completed;
  • the list of physical clues (QR codes), each of which has:
    • an Id (used in the generation of the QR code);
    • the color of the code (hexa);
    • an indication of where the code is to be put in the physical world;
  • the list of riddles that will allow the player to find the clues they are associated to a id (the first riddle will be called "/"). Each riddle has:
    • a text;
    • a textual aid;
    • some riddles need a few riddles to be answered before they appear, that's what the trigger array stands for;
    • a list of clues which have a special feedback in the context of the riddle. Each clue is referenced by its identifier and its effect in the current context:
      • feedback;
      • the next riddle to be given to the player (nextQuestion → when next question is true it is the end of the quest / when the value is false it's not an accepted answer / otherwise one should use the id of a riddle).

Setting up a quest

When a quest is configured in a game_data.json file, the system can generate the QRcodes, to do so one should load ~/client/qrcodelist.html?game=NAMEOFYOURGAME (the name of your game being the name of the folder containing the information).

###server See config.inc.sample.php

Install Server

Server installation is done by loading page server/install/install.php

Client js side files

  • home calls the libs and patterns (strings that are used) and the main;
  • the game folder should be indicated in the main.js file, which calls game.js;
  • game.js calls:
    • storage → to store game data in localstorage (to be modified to store game state online);
    • client → connect to the server;
    • player → create and update player;
    • overlay → to display an overlay;
    • path → calls storage and handles the path of the player;
    • map → to interpret the game_data;

the shared folder contains message constants (to be exchanged with the server) but I'm not sure whether it is used…

Backlog and known bugs

  • In the admin interface, rewrite game_data.json on first load to put the content in the database (for the admin), so that the users cannot access the locations.
  • The server should handle
    • score board;
    • cooperation (for instance for triggers).
  • Riddles could include media;
  • Feedback could include media;
  • The ideal would be an HTML5 QR code reader to remain in the app.

About

QR code treasure hunt

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published