Online Service for Easy Level Sharing #92

Open
opened 2023-12-09 23:14:46 +00:00 by kirsle · 0 comments

A feature that may be very important for the game to take off is an easy built-in way to share levels and custom content with others.

Minimum Feature Set

These are some ideas for a minimum viable product of adding an online service to Sketchy Maze.

Website

  • Have the primary user interface for uploading and browsing levels be a regular old website you access through a browser.
  • Users can sign up an account with a username, log in, and upload levels to their profile page.
  • Have a screen to browse and discover levels uploaded by others.
    • Ordered by most recent, to be expanded later (with play count, rating, etc. sort options)
    • Levels should show their in-game screenshot and have a details page with larger screenshot.
    • Details show the level title and author.
    • Can click on an author to see all the levels they've uploaded.
  • Level pages could offer options to download it to your game:
    • By a Level Code that you can enter in-game to bring up this level.
    • Download the .level file directly to place in your game folder.

On the back-end, the site would need to parse uploaded level files to extract the screenshots or validate things. The safest route is to rely on the doodad program's command-line interface for these operations.

  • Extract screenshot from the uploaded level
  • Verify the level contains no embedded custom doodad (to be expanded upon later: paid accounts)
  • Be able to sign the level file, so when embedded custom doodads are supported, players of the free game could play these levels uploaded by paid players.

In-game UI

The MVP for the in-game UI should simply allow looking up a level by its Level Code and downloading it easily.

  • On the Main Menu: add a "Go Online" button.
  • It would open a popup window that:
    • Briefly explains the online service as it exists so far.
    • Includes a Level Code entry widget where users can type or paste a level code (found on the website) to bring up a level.
    • Includes buttons that will open the website in the user's browser (encourage them to sign up an account to share their levels).

JSON API Endpoints

To support in-game UIs the web server should expose a couple of API endpoints:

  • Look up a drawing by its Level Code (e.g. GET /v1/drawing/<code>)

Ideas for Later Expansion

  • Game registration: with your free account on the website, have it possible to buy a license for the full game there or otherwise associate it to your account. (Upload your JWT token file for verification?)
  • Expanded in-game UI and API endpoints:
    • Log into the game with your username/password.
    • Be able to directly upload your levels from the in-game UI.
    • Add in-game UI to browse and search levels, view artist pages, etc.
  • High scores/level completions.
    • When playing a level downloaded from the site, it could be helpful if the game reports back that the level was beatable (and show count of distinct players who've cleared the level).
    • To support this the client might send the level UUID + md5 sum of the level to the server. So if a player has modified the level and then completes it, it doesn't count.
A feature that may be very important for the game to take off is an easy built-in way to share levels and custom content with others. # Minimum Feature Set These are some ideas for a **minimum viable product** of adding an online service to Sketchy Maze. ## Website * Have the primary user interface for uploading and browsing levels be a regular old website you access through a browser. * Users can sign up an account with a username, log in, and upload levels to their profile page. * Have a screen to browse and discover levels uploaded by others. * Ordered by most recent, to be expanded later (with play count, rating, etc. sort options) * Levels should show their in-game screenshot and have a details page with larger screenshot. * Details show the level title and author. * Can click on an author to see all the levels they've uploaded. * Level pages could offer options to download it to your game: * By a **Level Code** that you can enter in-game to bring up this level. * Download the .level file directly to place in your game folder. On the back-end, the site would need to parse uploaded level files to extract the screenshots or validate things. The safest route is to rely on the `doodad` program's command-line interface for these operations. * Extract screenshot from the uploaded level * Verify the level contains no embedded custom doodad (to be expanded upon later: paid accounts) * Be able to sign the level file, so when embedded custom doodads _are_ supported, players of the free game could play these levels uploaded by paid players. ## In-game UI The MVP for the in-game UI should simply allow looking up a level by its Level Code and downloading it easily. * On the Main Menu: add a "Go Online" button. * It would open a popup window that: * Briefly explains the online service as it exists so far. * Includes a **Level Code** entry widget where users can type or paste a level code (found on the website) to bring up a level. * Includes buttons that will open the website in the user's browser (encourage them to sign up an account to share their levels). ## JSON API Endpoints To support in-game UIs the web server should expose a couple of API endpoints: * Look up a drawing by its Level Code (e.g. `GET /v1/drawing/<code>`) # Ideas for Later Expansion * Game registration: with your free account on the website, have it possible to buy a license for the full game there or otherwise associate it to your account. (Upload your JWT token file for verification?) * Expanded in-game UI and API endpoints: * Log into the game with your username/password. * Be able to directly upload your levels from the in-game UI. * Add in-game UI to browse and search levels, view artist pages, etc. * High scores/level completions. * When playing a level downloaded from the site, it could be helpful if the game reports back that the level was beatable (and show count of distinct players who've cleared the level). * To support this the client might send the level UUID + md5 sum of the level to the server. So if a player has modified the level and then completes it, it doesn't count.
kirsle added the
enhancement
label 2023-12-09 23:14:46 +00:00
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: SketchyMaze/doodle#92
There is no content yet.