Robotouille's benchmarks are defined with Planning Domain Definition
Language (PDDL). Practically, this means users must write code to
build levels and tasks.
Foods are represented as groups of qualities (called predicates).
For instance, raw beef is
[is_beef, is_cookable]
, and steak is
[is_beef, is_cooked]
.
After building a couple maps by hand, I found that a constraint most
food items had was an identity predicate; something like
is_chicken
is present in recipies like chicken nuggets, cooked chicken, and
grilled chicken.
My first prototype just had every valid food combo as a searchable
'tile' you could click to draw onto the map.
However, after building a couple maps by hand, I found that a
constraint most food items had was an identity predicate; something
like
is_chicken
is present in recipies like chicken nuggets, cooked chicken, and
grilled chicken.
What if we grouped all food items under their 'identity' predicate,
and let users click on the desired 'variaton' of that food? Semantic
groupings might make the search results more glancable. I validated
this with a couple interviews, and people seemed to agree.
The map also needed structure. My first instinct was to let the user
select items and 'paint' arbitrary layers. Geometry Dash, Aseprite,
and other tile-based editors have already set the standard for this
type of interaction.
Here, manual work revelated another constraint; in the exception of
stacked recipies like hamburgers, we never exceeded two layers; the
station food was placed on, and the food item itself.
I split the editor into 3 fixed layers: floor, stations, and food.
Stacks would just be a special food object.
This also extended nicely to more complex representations of food we
added later, such as 'bundles' made from multiple combined identity
predicates.