Code Monkey home page Code Monkey logo

cookedup's Introduction

๐Ÿ‘‹ Ciao, I'm Farfi.


  • ๐ŸŽ“ Artificial Intelligence student at UNICAL
  • ๐ŸŒฑ Learning: svelte, godot, rust and german ๐Ÿ‡ฉ๐Ÿ‡ช
  • โญ Intrested in: Game dev ๐ŸŽฎ, Web dev ๐ŸŒ, Artificial Intelligence ๐Ÿค–
  • ๐Ÿ“ซ Reach out: alessio.farfaglia[at]gmail.com
  • ๐ŸŒ Find out more on my website

cookedup's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cookedup's Issues

MeatPatty left to burn after Bot's recipe expires

A possible solution is to add a new state to remove burning ingredients from stoveCounter, which should have a higher priority compared to the other states.

This would also means creating a priority system for player states.

Bot won't use its best plate for a recipe, keeping the last used instead

Strategic AI assigns recipes to bots based on the estimated time it takes to complete the recipe, which is calculated using the 'best' plate owned by the bot (if it has any).

But the bot currently has no way to change its 'current' plate to the best one.

We could create a new state (or extend an existing one) to pick up a better owned plate if he has any.

Some Brain scripts actions have multiple values

Example:

we create a target(TargetID) predicate, expecting only one value inside it, and using it like:

a_PickUp(0, TargetID) :- target(TargetID).

in the case where there are multiple values inside target then multiple actions will be created.

So we need to make sure every predicate passed to a action contains only a single value.
One (dumb and simple) way to do this is:

target_single(TargetID) :- TargetID = #max{ TargetID1 : target(TargetID1) }, target(_).
a_PickUp(0, TargetID) :- target_single(TargetID).

Here we are taking the target with the max ID, which doesn't do anything smart, it just ensures there's only one value inside target_single, note the target(_) inside target_single rule body, that ensures that we have at least one target to chose from, as taking the #max or #min of nothing gives either positive or negative infinity, not really what we are looking for most of the time.

Rework Bots Get Ingredient flow

  1. select final ingredient to add to plate
    1. if final ingredient is directly available then skip to step 7
  2. get base ingredient to transform into final ingredient
  3. select an available work counter to work on base ingredient
    1. if no work counter is available then trash base ingredient and restart
  4. place base ingredient on work counter
    1. if work counter is occupied then go to step 3
  5. work on base ingredient
    1. if base ingredient is not available then restart
  6. pick up final ingredient
    1. if final ingredient is not available then restart
  7. place final ingredient on plate
    1. if plate is occupied then place final ingredient on a clear counter
    2. else if no clear counter is available then thrash final ingredient
  8. repeat from step 1 until plate has all final ingredients required

Player Bot should re-utilize plates of expired recipes

Right now, when a Bot Player Fails a delivery it puts the plate away, but when a new recipe is assigned, if any of the Bot's plates are valid for the new recipe, then the bot should use that one, preferably the one with the most ingredients added to it and still valid, or another metric.

Create new Action to `SetPlate`

create a_SetPlate(ActionIndex, PlateID)

where this action will apply on the current player, setting his current plate to PlateID or null if PlateID == 0

Bots without RecipeRequest assigned remain idle

  • Solution 1:
    Allow multiple Bots to work on a single recipe request.
    When a new recipe request pops up, move one bot to the new one.

  • Solution 2:
    Allow multiple Bots to work on a single recipe request but with different responsabilities.
    Example Alice and Bob (both bots) work on a Mega burger

    • Alice gets assigned half of the ingredients (Bread, MeatPatty, Cheese)
    • Bob gets assigned the other half (Tomato, Cabbage)
    • They both put ingredients in the same plate
  • Solution 3:
    Implement a temporary Recipe request or complete recipe to make the bot work towards something maybe useful later.

Multiple Levels and Level selection system

It would be nice to have multiple kitchen environments.
So it doesn't feel as crowded when there are more players, and to see how the Bots behavior differs when playing in different environments

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.