Open jonathanolson opened 5 years ago
@jonathanolson lets limit shape piece stacks to less than or equal to 10. (a quick sampling of the Java version seems to keep the piece stacks to 10 or under, and that seems still like a reasonable UX).
For the horizontal overflow issue (with number cards), something about your screenshot appears a bit odd. On the "mixed numbers" game, it appears we always kept the number cards to the numbers 1-9. Given that you are using a "mixed number" container, we should probably enforce that rule on the mixed numbers game (which should prevent any horizontal overflow).
The improper fractions game (in Java just labelled "Build a Fraction") appears to limit the number of "whole shapes" to a maximum of two, and never appears to have overflow issues.
Happy to discuss over a call.
On the "mixed numbers" game, it appears we always kept the number cards to the numbers 1-9. Given that you are using a "mixed number" container, we should probably enforce that rule on the mixed numbers game (which should prevent any horizontal overflow).
Mixed numbers level 5 notes in the design doc:
All representations possible, but each target is only one type of representation 1, 2, or 3, as whole number Fractional portion from the set {1/2, 1/3, 2/3, ¼, ¾, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 2/7, 3/7, 4/7, 5/7, 6/7, 1/8, 3/8, 5/8, 7/8, 1/9, 2/9, 4/9, 5/9, 7/9, 8/9} 2 of the representations match cards exactly, 1 of the representations requires simplifying to a solution
So say it picks (1 2/5, 2 5/6, 1 4/7). It seems impossible to force one that requires a "simplification" since e.g. 2/5 could be represented as 4/10 but that would require a 10 digit (not allowed). So presumably in generation I would need to pick at least one of the fractions with a denominator <=4 (and that one would get a multiplier, e.g. 2/3 2 => 4/6 or 2/3 3 => 6/9)?
So for e.g. shapes (unmixed) level 2, it's essentially pick 3 from (1/2, 1/3, 1/4, 1/5, 2/3, 2/4, 2/5, 3/4, 3/5, 4/5), but also "2 possible ways to make at least one of the targets".
Design doc
Level 2: -- Choosing from a distribution of fractions ranging from 1/2 to 4/5. The numerator can be 1, 2, 3, or 4 and the denominator could be 2, 3, 4, or 5 with the stipulation that the fraction is always less than 1. --No "wholes" in the shapes piles. --2 possible ways to make at least one of the targets
Given that it WAS doing searches only up to denominators of 8 for that level, things get tricky if it picks e.g. 2/5, 3/5, 4/5. Thus we already have 9 1/5ths for the generation, and the "find another way to make one of the targets" can only use 1/5ths since 1/10ths aren't allowed.
For this type of challenge, should it be constrained to pick a sampling of denominators?
Additionally, for "2 possible ways to make at least one of the targets", it should presumably avoid larger denominators? Or can we allow 1/10ths in cases like this? (The Java implementation was limited in searches up to 1/8ths, but the HTML implementation can handle arbitrary denominators)
For shapes unmixed level 2, make sure at least target has denominator <=4, and generate interesting fractions from denominator <=4 that is NOT identical to the straightforward fractions.
Only allow up to denominator 8 in shape levels (for pieces)
I believe the specified limits should be in place.
Both of the game screens should be in https://phet-dev.colorado.edu/html/build-a-fraction/1.0.0-dev.12/phet/build-a-fraction_en_phet.html so I only published one dev version for testing.
Also level 3 (unmixed) shapes doesn't seem fully compatible with the given instructions. It includes taking a sample of fractions up to a denominator of 6, but then says that there should be multiple solutions for ALL fractions (which seems impossible for, e.g. 1/6).
Will use :computer: for implemented items (AP will erase comments noting implemented) Will use :heavy_check_mark: to note if tested and checked on master
(Shapes as targets, number cards as answers)
(Numbers as targets, shape pieces for constructing answers)
All else looking correct for Unmixed "Shapes" Challenges and matching design doc
Will use :computer: for implemented items (AP will erase comments noting implemented) Will use :heavy_check_mark: to note if tested and checked on master
(Shapes as targets, number cards as answers)
(Numbers as targets, shape pieces for constructing answers)
All challenge types -- after I complete a level I get the "cheering", in Java we use sort of a "bahh-bahmm" sound. The cheering seems associated with reward node (when we rain down fractions), and the Java level complete sound seems nicer, more succinct, and more appropriate for simply finishing a level -- if it is easy to use.
Is that https://github.com/phetsims/vegas/blob/master/sounds/trumpet.mp3? (It is marked in VEGAS code as the sound for "imperfect score"; should we look into those names internally?)
To get alignment to be consistent, I'm planning on padding out less-wide shapes to take up as much room as the widest shapes we use. Thus for example, the two following screenshots have the exact same collection box locations:
Does that look ok?
(Level 4 mixed numbers is useful for comparisons, since it uses pyramids).
All numbers levels: Target shapes should be larger when possible (even if on other screens shapes need to be smaller to fit two shapes) Target box shapes are shifting in size, they should be a constant size and position ideally (looks odd when refreshing a game level)
This should be done. Each shape should take up the same "layout space", so there shouldn't be minor shifting due to that. In addition, the scale is now adaptive based on "mixed / unmixed 2wholes / unmixed 1whole" (0.6, 0.9 and 1.0 scales respectively).
This ends up scaling up the stroke width of the shapes, which doesn't look great to me. Should the lines stay the same width?
Level 3 Design doc stipulates that there "could" be multiple ways to construct targets, I interpret this stipulation as not every target needs multiple ways, but there are a few that could be done multiple ways. However, not necessarily seeing a major downside, except some of the numbers get big quickly for this low of a level, Java seems to limit the highest card value to 9. Will discuss
Does this mean that things could be potentially simplified as 2/6 => 1/3, 3/6 => 1/2, 4/6 => 2/3? Will wait for more input on that level in particular.
It's not the trumpet sound, but instead in Java trunk/simulations-java/common/games/data/games/audio/gameOver-perfectScore.wav.
Looks like 7/8 was not included in the selection pool (stipulated in design doc, and does appear in Java)
Interesting. It looks like the "ignore levels with 10+ in a stack and regenerate" condition is definitely changing the distribution here.
I've changed the implementation of the piece generation to better match the spec: for each of the two fractions, it gives one set of "straightforward" pieces (e.g. 7/8 => 7x 1/8), and it also gives one set of "difficult" pieces (an interesting mix of fractions usually used for level 9/10).
Due to the chance of the difficult mix for each having 4x+ 1/8 pieces, 7/8 isn't quite as common, but it will definitely occur now.
Mixed Shape level 8:
The "2 targets should require some nontrivial pieces" requirement doesn't seem to be quite holding. The main focus for "nontrivial" should be on the fractional portions. We might need to discuss, since for {1/5, 2/5, 3/5, 4/5} you are always going to be building with 1/5 pieces. We could remove 1/5's or stipulate that for when 1/5's appear there is some limit on the number of whole pieces.
I've changed the selection of fractions so that there are at least 2 ones with "splittable" denominators (<=4). It definitely still is splitting the whole pieces, and that would make it difficult to not use nontrivial pieces. Are there particular examples of how we want things to behave?
Looks like all issues have been addressed! Nice work @jonathanolson :tada: :tada: :tada:
Closing
There are still TODOs marked for this issue, discovered during https://github.com/phetsims/chipper/issues/946
The TODO is:
// TODO: see decision on https://github.com/phetsims/fractions-common/issues/8, what to do if we lack the
// number of breakable bits?
// assert && assert( breakable.length >= quantity );
Unassigning until we return focus to this issue.
Currently challenges can be generated that are cumbersome and cause layout issues:
It looks like limiting things to 20 shape pieces per stack should avoid layout issues, but presumably we'd want to limit things a bit more (for the user experience).
Additionally, limiting the number of number pieces in total quantity should prevent the horizontal overflow case.
Are there specific limits that are desired?