mwageringel / everest

A mathematical puzzle game
https://mwageringel.github.io/everest/
GNU General Public License v3.0
71 stars 10 forks source link

Suggestions for Increasing the Game's Scope #12

Open Hypoon opened 2 years ago

Hypoon commented 2 years ago

I have no idea what plans you might have for this game, but I wanted to offer my experience playing it along with a suggestion to help make the game longer and more replayable. Markdown doesn't have spoiler tags, so I'm carefully watching my words. I'll try to indicate what concepts I mean by explaining when I figured them out and perhaps sneaking in some keywords.

I have a relatively strong background in mathematics, and I was already familiar with the material which formed the basis of the game, although I did not realize this is what the game was going to be. I had two "Aha!" moments where I figured out a major secret.

What I'd suggest is to add extra sets of levels where you change the secrets. There is the most obvious, trivial, variation on Secret 1, but you could perhaps explore a "balanced" variation, or a "bijective" variation. If you know what "Secret 1" is, you should be able to google it in combination with either of the keywords "balanced" or "bijective" to see what I mean, but I don't think either of those words are sufficient on their own to figure it out. Let me know if my clues are not clear enough.

For Secret 2, there are straightforward extensions that can you could use. The next level up in complexity is generally represented with the letter H. You could maybe even extend it to infinity, which is valid mathematically, but I'm not sure how it would work in the game. When you take the concept to infinity, the term for that also begins with the letter H, somewhat confusingly. There's not much more I can say without spoiling anything.

For Secret 3, you could base variations on changing Secret 1 and Secret 2 (as described), but as you probably already know, there are also alternative choices for Secret 3 that CANNOT be decomposed into a Secret-1-ish concept and a Secret-2-ish concept. There are options beyond addition, subtraction, multiplication, division, and exponents.

Writing that was more difficult than I expected. Hopefully it made sense.

Hypoon commented 2 years ago

I forgot to mention, and I'm replying to my own post because I think this is important and it shouldn't get lost in an edit...

I thoroughly enjoyed the puzzle, even though it was pretty short-lived for me. I've already sent it (the demo webpage, specifically) to several people who I expect will also enjoy it. Thank you!

mwageringel commented 2 years ago

Thank your for sharing your thoughts and experience in such detail. I'm definitely open to the idea of adding more levels, so I appreciate your suggestions a lot.

So far, I am not yet sure which direction to take in order to accomplish a good user experience. In my opinion, what makes the game interesting are the Aha moments. Once you have discovered all the rules, the rest of the game feels maybe more like Sudoku – some of the levels near the end are still a bit challenging, depending on how you decide to solve them, but it is clear how to solve them. This also means there is not much replay value, but that's fine, I'd say.

For someone with a strong background in mathematics, it is very likely that there will be fewer opportunities for those Aha moments, as it is easier to make the correct guesses early on due to prior experience and intuition. However, the aim of the game is to make some of the underlying mathematical concepts approachable to non-mathematicians. That's why the levels have a very granular increase in difficulty, as fully figuring out Secret 2, for example, can be very difficult for someone who hasn't seen anything similar before. Their initial guesses for the rules might also not be very efficient, especially if new to Secret 1.

As for additional levels, you make some good suggestions. The variations of Secret 1 might be the most straight-forward to incorporate, although this might feel a bit like altering the laws of the universe. With a suitable notation this could work though. (Incidentally, I did not consider it important initially, but it turned out to be extremely important to not use an equality sign as relational symbol, but instead something most people are not familiar with.)

The generalization of Secret 2 also has some potential. I haven't experimented with it yet, but am a bit worried this variation might just have too many variables. The computations will be complicated, or rather tedious, not so much fun, so I am not sure how well it would work. (I'm not familiar with the infinity flavor of H, and my quick search did not reveal much about it, but I know the next iterations of Secret 2.)

Varying Secret 3 quickly leads to more variables, too, but also has the problem of requiring some arbitrary choices. I'm afraid that discovering such seemingly arbitrary rules might not feel as rewarding. Mathematically, this all makes sense and there are interesting things going on, but I don't know how to put these interesting bits into the context of the game. It would require a more abstract point of view, less centered around conrecte numerics, I imagine.

Rather than adding too many abstractions and generalizations that make the levels more complicated, I think it would also be a good option to switch to an entirely different topic instead. That way, one gets introduced to a wider variety of concepts, which might feel more rewarding in the end. I don't have anything particular in mind yet, though.

(By the way, let me recommend the video game The Witness. Personally, I enjoyed solving its puzzles a lot, and it inspired me to make this app. The rules you discover in that game don't have any meaning outside of the game – something I wanted to do differently in my app. To be fair, the rules that can be discovered in my app have little use for anyone, but maybe they can spark some interest.)

Hypoon commented 2 years ago

the rest of the game feels maybe more like Sudoku

I understand what you mean, and I partially agree. Many Sudoku mobile apps use algorithms to generate the puzzles, and as a result, a relatively small set of strategies can be used to solve every puzzle in the app. However, there's also an art to designing Sudoku puzzles (using only the standard rules) which require some relatively advanced strategies in order to solve them. I find working on these hand-crafted Sudoku puzzles to be much more rewarding than plowing through a set of a thousand computer-generated Sudoku puzzles.

However, the aim of the game is to make some of the underlying mathematical concepts approachable to non-mathematicians.

I think this is why I loved it so much. I love introducing people to mathematical concepts that they've never seen.

fully figuring out Secret 2, for example, can be very difficult for someone who hasn't seen anything similar before

Not only had I seen it, but I've used that concept extensively, and I still didn't recognize it at first! I found a set of rules that worked, but it felt irritatingly arbitrary until it finally clicked and I realized that I've seen those rules before. It would be interesting if the concept was taught the way these puzzles introduce it.

The variations of Secret 1 might be the most straight-forward to incorporate, although this might feel a bit like altering the laws of the universe.

Were you able to identify the "balanced" and "bijective" options I suggested? I think that would be more interesting than just changing the hidden magic number. If you're concerned about changing the rules once people have finally figured them out, you could release the new set of problems in a separate app.

The computations will be complicated, or rather tedious, not so much fun

That's a very good point.

I'm not familiar with the infinity flavor of H

This would practically be a boss level. It's not a direct extension of Secret 2... technically it's a bit different. I encountered it in the context of quantum mechanics. I can email you if you'd like to speak more freely about it.

I'm afraid that discovering such seemingly arbitrary rules might not feel as rewarding

I think that's a design challenge.

It would require a more abstract point of view, less centered around conrecte numerics, I imagine.

Maybe. Probably. It depends on which variation of Secret 3 you might choose. One of the things I find most fascinating is how so many different, unrelated, sets of rules can end up resulting in the same variant of Secret 3. It means one player's "discovery" of the secret might not match another player's "discovery", and yet both would be equally valid.

I think it would also be a good option to switch to an entirely different topic instead.

That could be very exciting, depending on the topic. I wouldn't suggest straying too far. Players might lose interest if the second stage is the history of East Jabip. I'd probably stick to mathematics, or at least science / technology / engineering / mathematics.

By the way, let me recommend the video game The Witness.

I saw you mention that as a source of inspiration, and having played it, I didn't understand the connection until you explained the connection about discovering rules. I did enjoy The Witness, although I never went back to try for 100% completion.

mwageringel commented 2 years ago

Were you able to identify the "balanced" and "bijective" options I suggested?

Spoiler
I think you were talking about complete residue systems that are different from the least. I really like that idea as it would require changing the keypad, which brings something new to the game. For the bijective variant, I wonder how to display numbers with more than 1 digit, which the game currently avoids. On the one hand, higher numbers would be an additional challenge. On the other hand, everything larger than X could be represented by additional letters, so one would have to figure the bijection – if that's not too irritating. I might try both options.

This would practically be a boss level. It's not a direct extension of Secret 2... technically it's a bit different. I encountered it in the context of quantum mechanics.

I'd be interested in this. You can add spoiler tags like this

<summary>Spoiler
<details>

text after blank line
</details>
</summary>

I'm afraid that discovering such seemingly arbitrary rules might not feel as rewarding

I think that's a design challenge.

Yeah, it is indeed.

That could be very exciting, depending on the topic. I wouldn't suggest straying too far. Players might lose interest if the second stage is the history of East Jabip. I'd probably stick to mathematics, or at least science / technology / engineering / mathematics.

Yes, I was thinking of mathematics only.

Hypoon commented 2 years ago

You're on the right track. I'll spell it out in the spoiler tag.

For "balanced"... (SPOILER!)
To spell it out as simply as possible, balanced base-5 has five symbols (just like normal base-5), but two have negative values, one is zero, and two have positive values, so the values of the five symbols are {-2, -1, 0, 1, 2}. This has some really interesting consequences, since negative quantities no longer need an external minus sign, but instead would use the same number of characters as positive quantities. If we use the symbols {B, A, 0, 1, 2}, the quantity 47 would be 2A2 (i.e., `2*5^2 + (-1)*5^1 + 2*5^0`), and the quantity -47 would be B1B (i.e., `(-2)*5^2 + 1*5^1 + (-2)*5^0`). In my opinion, it's most elegant when using an odd radix, which is very compatible with the extra features that a prime radix grants you grants you anyway. More information [here](https://en.wikipedia.org/wiki/Signed-digit_representation) and [here](https://en.wikipedia.org/wiki/Balanced_ternary).
For "bijective"... (SPOILER!)
Positional numeral systems don't actually need to have a symbol for zero to cover all the natural numbers. In a bijective base _n_ numeral system, you have a symbol for _n_, but you do not have a symbol for zero. Counting in bijective base 10 might look like this, if we use _X_ to represent 10: 1, 2, 3, 4, 5, 6, 7, 8, 9, X, 11, 12, 13, 14, 15, 16, 17, 18, 19 1X, 21, 22, 23, ... , 97, 98, 99, 9X, X1, X2, X3, ... Common spreadsheet applications use bijective base-26 to label their columns. More information [here](https://en.wikipedia.org/wiki/Bijective_numeration).
For the "H" variation of Secret 2... (SPOILER!)
I was thinking about Hilbert spaces. If you think of the real and imaginary parts as components of a two-dimensional vector, you can imagine extending the idea to any arbitrary number of dimensions you might want. If you choose an appropriate notation, the number of dimensions doesn't necessarily even need to be finite. For example, instead of `8+3i+5j+k`, you could express the same quantity as `8 i_0 + 3 i_1 + 5 i_2 + i_3` (where I'm using '_' for subscripts), and since the interactions are defined arbitrarily, maybe `i_1 * i_2 = i_4000 - i_7`. More information [here](https://en.wikipedia.org/wiki/Hilbert_space). There may be parts of the proper definition of a Hilbert space that differ from how I remember it, but it's still a starting point for the idea. This concept could be abused to make _extremely_ unfair levels, but it doesn't have to be that way. In quantum mechanics, the most convenient vector spaces are usually orthonormal, meaning that products of differing dimensions are zero and products of the same dimension are 1, but then the product of two vectors (basically just a dot product) does not exist in the same vector space as the original vectors. If the rules are changed so that the products of dimensions result in another dimension, this is similar to a three-dimensional cross-product, where the product any two dimensions is the third dimension, with the sign dependent upon the order of the product (`a*b = - b*a = c`). Under those rules, the product DOES exist in the same vector space as the original vectors. Hilbert spaces basically give you free reign to make things as complicated or as simple as you want: With one dimension and the rule `i_0 * i_0 = i_0`, it's standard real-number arithmetic. With two dimensions and the rules `i_0 * i_0 = i_0 ; i_1 * i_1 = - i_0 ; i_0 * i_1 = i_1 * i_0`, it's standard complex-number arithmetic. The options are endless, but anything too crazy would be inappropriate for a game where players are expected to figure out the rules on their own.
mwageringel commented 2 years ago

These variations are quite a bit different than what I initially thought they would be, so thanks for the detailed explanation. These ideas have some potential. There is one more follow-up question I have.

Spoiler
In, let's say, the balanced case, do you envision the questions to be still in the context of Secret 1 (e.g. base 5, char 11), so that answers are single digits? Or would you switch to char 0 and focus mainly on the numeral system, in which case the answers can have multiple digits?
Hypoon commented 2 years ago

I'm happy to elaborate, but I encourage you to consider the ideas as inspiration rather than specific requests. What I envision doesn't really matter! :-)

To answer your question, though... (SPOILER!)
To start, "char 11" and "char 0" are unfamiliar to me, but I _think_ I understand them. Balanced base 5, char 11, (using the symbols, {B, A, 0, 1, 2}, where B has value -2, and A has value -1) might look like this:
A0, A1, A2,  B,  A,  0,  1,  2, 1B, 1A, 10, A0, A1, A2,  B,  A,  0, ...
                                           ^ breaks the counting pattern here
                                             (expected 11 -> found A0)
or like this:
 0,  1,  2, 1B, 1A, 10, 11, 12, 2B, 2A, 20,  0,  1,  2, 1B, 1A, 10, ...
                                           ^ breaks the counting pattern here
                                             (expected 21 -> found 0)
... but while those are technically well-defined, neither of those cases look elegant to me. Imagine how much more difficult your existing levels would be, if you kept everything the same, but carefully AVOIDED any question which involves the symbol "X" in the problem _or_ answer. It's still possible to figure it out from the clues, like 9 + 9 = 7, but it's much less intuitive, and I might even consider it unfair. In the examples above, a way of writing numbers is introduced, but many of the possible values (e.g., `BB`) are excluded by the restriction of char 11. Instead, you might consider perhaps using balanced base 5, char 5:
B, A, 0, 1, 2, B, A, 0, 1, 2, B, A, 0, ...
              ^ break        ^ break
                (1B -> B)      (1B -> B)
... or balanced base 11, char 11, where I'll assign the symbols C to -3, D to -4, and E to -5:
E, D, C, B, A, 0, 1, 2, 3, 4, 5, E, D, C, B, A, 0, 1, 2, 3, 4, 5, E, D, C, B, A, ...
                                ^ break                          ^ break
                                  (1E -> E)                        (1E -> E)
... but as you might notice, in both of these cases, starting the count at zero reveals that these numeral systems are identical to normal (not balanced) base 5, char 5 and base 11, char 11, just with some unusual symbols for the upper digits:
0, 1, 2, B, A, 0, 1, 2, B, A, 0, ...
0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, ...
... so I don't think that would be a particularly interesting way to do it. A lot of important properties come from 11 being a prime number. Some of your current levels would not work if you used base 12, char 12. However, if I remember correctly, powers of primes retain the same properties, so for example, I think base 121, char 121 would work mathematically, although it's a bit impractical. I haven't tested the math yet, but I'd consider perhaps taking advantage of powers to use something like balanced base 5, char 25:
BB, BA, B0, B1, B2, AB, AA, A0, A1, A2,  B,  A,  0,  1,  2, 1B, 1A, 10, 11, 12, 2B, 2A, 20, 21, 22, BB, BA, B0, ...
                                                                                                   ^ break
                                                                                                     (1BB -> BB)
... or perhaps balanced base 3, char 9, which only needs one extra symbol, so let A have the value of -1:
AA, A0, A1,  A,  0,  1, 1A, 10, 11, AA, A0, A1, ...
                                   ^ break
                                     (1AA -> AA)
... and in that particular case, since there are only three symbols, you could get more creative with them:
--, -z, -+,  -,  z,  +, +-, +z, ++, --, -z, -+, ...
                                   ^ break
                                     (+-- -> --)
... and for extra uniformity, you could require leading "zeros" so that every element is consistently two characters wide:
--, -z, -+, z-, zz, z+, +-, +z, ++, --, -z, -+, ...
                                   ^ break
                                     (+-- -> --)
... which might enable a simpler user experience. So, yes, char 0 is an option, but I don't think it's the only option. In balanced base 5, char 25 might be interesting. In balanced base 3, char 9 or char 27 might be interesting. It would require some testing to make sure that the math doesn't get too absurdly tedious. The fact that 25 is a factor of 100 might make base 5, char 25 easier for mental math. While leading zeros make sense for cases for finite fields, I do not personally encourage using leading zeros with char 0, since the number of required leading zeros would not be obvious. Of course, if power of primes do NOT work the way I think, then balanced numeral systems might only be interesting with char 0. It's worth noting that the concept of subtraction is somewhat redundant in balanced numeral systems, since `2 - 1` is directly equivalent to `2 + A`, even if using char 0.

That ended up being a lot longer than I expected. I hope you find it useful, inspiring, or interesting!

mbomb007 commented 1 year ago

I really enjoyed playing this game. I found out some tricks that helped with solving the problems in my head, such as that

Spoiler
finding a number modulo 11 can be found easily by subtracting the digits from each other. As an example, 8 * X: (8 * 10 = 80); 0-8 = -8 = 3. So 8 * X = 3.)

The hardest "Aha!" moment was definitely figuring out the first problem in the format a|b c|d = e|f. I had to brute force it, trying 80 or so answers, and then I had to figure out why* the result was what it was. Even then, generalizing the multiplication for when there are no zeros took a while to figure out. Division was even harder. I turned it into multiplication when I could, but eventually I had to

Spoiler
use linear equations and matrices to solve them.

I never figured out a "math" trick/method to easily solve Level 16.

However, the most fun part of this was programming a tool in Python to do each level as I went. I didn't create a way to do Level 13, as the question marks were in weird places, though I could create a separate class or function to take in an expression as a string. Here it is if you want to look at it in an online interpreter. Since it can find the answers to most problems, it's definitely a spoiler.

Everest in Python on Attempt This Online

mwageringel commented 1 year ago

@mbomb007 Thank you for sharing your experience and your Python code. It's nice to see the different approaches of solving the problems. I hadn't thought of the first math trick you mention – that's quite clever.

For level 16, I don't think there is any trick to discover. Mainly, what's interesting there is the fact that solutions to the given problems do exist (and how they look like), which is not true in general, but the game mechanics don't really allow to convey this.

mbomb007 commented 1 year ago

The one exception to the math trick is X * X, because it adds a digit, so I think you would have to alternate adding and subtracting digits of longer decimal numbers.

woklei commented 1 year ago

No exception for X*X

Spoiler
Just repeat always subtracting the first part from the last digit: X * X=10 * 10=100; 0-10=(-10): 0-(-1)=1
mbomb007 commented 1 year ago

@woklei I'm talking about a generalized solution to doing this.

Spoiler
Math mod 11. Because, for example, 1264 mod 11 == 10. And 4 - 6 + 2 - 1 == -1 == 10.