always_ff @(posedge clk) begin
This week, one of my tasks was to a come up with a high level gameplay flow for, what’s going to be, our team’s virtual bartender simulation. Thinking about it, initially it seems quite straightforward. How hard is to make a drink? But, isn’t this the problem we are facing in general with how a human works vs a computer? Humans are able to quickly understand and interpret so many things that need to be broken down into detailed bits for a computer.
So, how do we structure it? There are various parts to think about in architecting this flow:
- How much freedom are we going to give the user?
- Will we structure the flow so that the user is forced to complete a certain task in a certain sequence?
- If we decide not to force the user to follow specific order of steps, how do we also know exactly when to begin keeping track of the drink being made (in order to know if it is being made properly)? In other words, since we aren’t restricting the order for the user (ex: first gather tools, then move on to adding ingredients, only then shake or stir, then add garnish), the user is free to start doing anything.
- How many recipes are we planning to have? How many of these recipes will follow a similar flow or movements?
- What if an action is made, that we didn’t think of, which basically causes the simulation to hang? We would need a priority interrupt that can force quit the simulation.
These initial thoughts and decisions that need to be made are barely scratching the surface. I have been going back and forth, back and forth, countless times within one hour just going with one structure only to scratch and start over with a new idea. Some thoughts or actions constantly makes me realize that we need to account for a possible case in which 1) the user could circumvent the simulation of creating a drink properly OR 2) making a mistake that technically could be made with little problem in reality, but causing major problems in simulation. So, how hard is it to tell a computer to make a simple drink? Apparently, quite hard.
end