Git Product home page Git Product logo

maxyph's Introduction

MAXYPH is a competitive turn-based moba war simulator game set in the late 1700s but with futuristic weapons and also AI generated realism/surrealism.

Not it isn't! It's a goddamned puzzle game!

image

The Rules/Ethos of The Game

  • six words enter, one score leaves
    • your score is based on the number of unique characters used in your six words. Max score is a theoretical 25 as the top row can have 5 unique characters, but each of the following 5 rows can only have a maximum of 4 due to 'orange box' inheritance.
  • words must be valid, English 5 letter words
  • the starting instance of the game will have the 'orange box' value populated for the first row, and the empty orange boxes in the other rows.
  • when you enter a valid word in the topmost clear row, the row below has its 'orange box' populated by the value directly above it.
  • 'orange box' values from previous rows may not be used again in the puzzle.
  • you may 'surrender' at any time and take your current score if you get stuck.

Prototype folder:

  • the maxyph_proto_gen.py will generate 100 initial puzzle states that are "valid" in a puzzles.json file.
  • validity is determined by if the first row can be solved with at least 5 valid words from the word bank.
  • the prototype also has a brute force alphabetical order solver
  • the prototype can also score the results
  • next intent is to append this to the json puzzle input states so that we can provide a players score vs a 'bot' score.

ko-fi

maxyph's People

Contributors

aaronlael avatar nhawdge avatar

Stargazers

 avatar

Watchers

 avatar  avatar

maxyph's Issues

Implement browser storage

Game state should be preserved on refresh.

If a user has any entered words, they should persist until the next day.
if the user completes the puzzle, the finish screen should persist until the next day.
Any partial words are abandoned when the page times out/refreshes.

Design logo/mascot/icon around XXV

XXV is roman numeral for 25 which is the theoretical max score for this game, so it feels like a good fit. This should be designed after choosing a color layout so that we can ensure that the logo sits well with the chosen font and color scheme.

Something about the sliding letters and locked letters should be represented in the logo as those are core differentiating elements to the game.

Change Ko-Fi logo to provided widget link.

<script src='https://storage.ko-fi.com/cdn/scripts/overlay-widget.js'></script> <script> kofiWidgetOverlay.draw('maxyph', { 'type': 'floating-chat', 'floating-chat.donateButton.text': 'Support me', 'floating-chat.donateButton.background-color': '#fcbf47', 'floating-chat.donateButton.text-color': '#323842' }); </script>

Implement results screen with sharing.

After the game is completed (victory or surrender) the game should provide a summary screen that shows the users score along with how much better (or worse) they did than the bot along with something fun like their most used letter(s).

Add the ability to tie into native sharing via mobile or just copy/paste via web.

Implement letter restriction

The game should not allow you to select an "orange-boxed" letter from a previous row. At the end of the puzzle, this means that there will be a maximum of 5 letters that are "locked" from the user for their last word choice. Clever players may be able to have less by using strategically placed duplicate letters in words.

These letters should visually and mechanically be locked out from the input keyboard.

As an example, where a user is populating the 3rd row:
image
The user may not use the letters "O" or "A" but they can use "N" multiple times if they desire to as it is the current row.

If a user manages to drop a locked value down a row due to strategic use of multiple instances of the same character in a word that causes it to drop down to the next row, it is locked and cannot be used in the current row aside from the orange box.

Develop/design keyboard input

QWERTY input buttons at the bottom of the gamespace that drive the input to the play space rather than actual key presses. This ensures that the active box is correct and helps make the game more platform agnostic (and familiar looking).

The keys should default to all starting as a single color aside from the initially placed letter in the initial game state, which should be a lighter/different shade to indicate that it has been used in the puzzle (this helps provide player feedback for scoring).

Once a letter is "locked out" and cannot be used further, it should be indicated on the keyboard. I would prefer to use a texture rather than a color for this so that it can be more accessible, like stripes, or an slash through it.

Determine appropriate color selection for app.

Determine a base color pattern/design that makes the core application accessible to those with visual imparements.

This feels like a good resource:

https://www.datylon.com/blog/data-visualization-for-colorblind-readers#:~:text=The%20first%20rule%20of%20making,out%20of%20these%20two%20hues.

I'd like to use 3 colors at a maximum with certain elements using hues of the colors for effect (shadows) (movement of letters between rows). Critical elements should focus on contrast via hues over color.

Move instructions to overlay that can be closed or reopened.

Remove the instructions from the header and add them to an overlay frame/container that can be closed or reopened from a "help" button/link.

The instructions should include the following:

How To Play MAXYPH
Enter 6 valid 5 letter English words to complete the puzzle. Earn a point for each unique character in your solution.

  • A character in an orange box cannot be changed. The first row value is provided, but further rows inherit the value from the word above them.
  • Orange-boxed letters from previous rows cannot be reused.
  • A maximum possible (theoretical) score is 25.
  • You can surrender at any time and take the score of your current valid words.
  • Have fun!

Change Puzzle Layout to Diamond Boxes

image

We talked about this on discord. This is a key differentiator from other puzzle games in the "space."

I think there will need to be a shadow to highlight the active row and some kind of helper color or something to show what letter will move to the next row.

Prototype Puzzle Generation

Generate a process to create initial puzzle states.

The initial puzzle state should be communicated/stored in the following format:

[(idx_row_0, "initial_box_val_row_0"), (idx_row_1, "initial_box_val_row_1"), (idx_row_2, "initial_box_val_row_2")..]

The only row with an initial letter value for "initial_box_val_row_x" is row 0. Row 0, with it's preset value should be able to fit at least 5 valid English language 5 letter words to be a valid initial puzzle state.

As far as orange box locations in rows, they can be random with the only rule that the next row below cannot have the orange box directly below the previous rows orange box.

This puzzle generator script will just produce an "initial_states.txt" file for the program to ingest during prototyping.

Score Calculation

Implement dynamic score calculation. As users are entering letters, append them to a set of unique characters used and always show the length of this set so that users can see how their score will be impacted by their word/character choices in every row.

Ideally this would be shown in the top right of the game space.

This will also be a core component of the "shareable" elements of the game once completed or surrendered.

Tech Stack/Documentation

  • Document appropriate contacts for all technologies and resources used, along with library versions for imported functions.
  • Document anything related to the domain registration and any pertinent dates.
  • Document anything related to costs (to be absorbed by @aaronlael )

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.