joe7575 / techage_feature_requests

For the open discussion of new features for the techage mod
2 stars 0 forks source link

[Signs Bot] Neue AI Kommandos zum Ernten, Sähen, Bäume fällen,... #16

Open joe7575 opened 3 years ago

joe7575 commented 3 years ago

Dabei soll der Bot einfach loslaufen und ab und zu zufällig die Richtung wechseln und dabei seinen Job machen. Erst wenn der Akku leer ist, oder der Speicher voll/leer, geht er wieder zurück. An einem Hindernis dreht er einfach um. Kommt er nicht mehr vom Fleck (festgefahren), geht er zurück in die Kiste

acmgit commented 3 years ago

Ich finde, wenn es ein programmierbarer Roboter sein soll, der auch ein wenig "intelligent" arbeiten soll, ist zufällig falsch.

Wie hast du gedacht, daß er sich bewegen soll? Mit einem Tiefensuch- oder Breitensuchalgorithmus? Hilfreich dabei ist auch, wenn der Bot einen Teil der Karte um sich im Speicher haltet, wie ein lokales Radar, dann bewegt er sich auch nicht mehr "zufällig", sondern hat seine Umgebung buchstäblich im Visier.

Das wären meine Optionen, wie ich es in Lösen würde.

joe7575 commented 3 years ago

Alles was in Richtung "intelligent" geht, kannste in Lua vergessen. Oberste Anforderung bei allem ist minimale Server Last. Mobs und AI Libraries, die den Server ausbremsen, gibt es schon genug. Machbar ist:

pos = minetest.find_node_near(pos, radius, nodename)
path = minetest.find_path(mypos, pos, radius*2, max_jump, max_drop, algorithm)
....

"radius" sind vlt. 5 Blöcke. Wenn in dem Bereich nichts ist, wechselt er zufällig die Richtung und geht dann zufällig bis zu 10 Blöcke weiter und beginnt die Suche nach den gesuchten Blöcken erneut.

acmgit commented 3 years ago

Genau so arbeitet auch dieser Algorithmus. Ich kannte auch die Funktion minetest.find_path noch nicht, dahinter scheint aber dieser oder ähnlicher Algorithmus zu sein. Natürlich gebe ich dir wegen der Serverlast recht, ich wollte auch nur darauf hinweisen, weil diese Algorithmen auch schon auf dem C64 eingesetzt wurden ;-).