Tease or Please - Einfache Emotion programmiert

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Tease or Please - Einfache Emotion programmiert

Beitrag von Kaeru Gaman »

ich hab den thread mal unter 'games' gepackt, weil das wohl letztendlich
die anwendung für so ne AI sein wird.

Tease or Please simuliert die einstellung eines charakters dem player gegenüber,
aufgrund eines positiven bzw. negativen reizes, also verhalten seitens des players.

download

das ganze ist noch sehr simpel gehalten.
komplexere modelle sind denkbar,
ein ausbau als LIB wäre da wohl ratsam.

ich denke da an verwendung von linked lists für die elemente.


anmerkung:
die AI hiess schon Fred, bevor ich ins forum kam.
das ist kein joke über unseren Fred!


EDIT:
link update - wieder downloadbar
Zuletzt geändert von Kaeru Gaman am 10.08.2006 22:02, insgesamt 1-mal geändert.
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Ich verstehe nur nicht, wozu das gut ist...
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
RaVeN99
Beiträge: 310
Registriert: 29.08.2004 15:26
Wohnort: Weiden i.d.OPF
Kontaktdaten:

Beitrag von RaVeN99 »

@Kaeru Gaman:
Meine Meinung zu dem Teil kennste ja, aber ich schreibs hier gern nochmal rein dass ich des durchaus für nen ziemlich guten Ansatz halte :allright:


@vonTurnundTaxis:
Ganz einfach, stell dir zum Beispiel ein Echtzeitstrategiespiel vor. Der menschliche Player greift den Computer Gegner dauernd nur mit einer Sorte von Einheiten an. Mit einer AI die auf diesem System basiert "merkt" der Computer das, und folgert daraus dass er die passende Abwehreinheit produzieren sollte um nicht niedergemacht zu werden.
Für systeme die nach dem Stein-Schere-Papier Prinzip arbeiten ist das ganze geradezu prädestiniert, wäre vielleicht auch n passendes minigame um das ganze besser zu demonstrieren...

In dieser Form ist natürlich noch einiges an Arbeit nötig um es für das jeweilige Spiel anzupassen, was natürlich auch wieder von der komplexität abhängig ist... Aber sollte Kaeru Gaman das ganze wirklich als Library anbieten, hat man bereits ein sehr mächtiges werkzeug um eine KI zu gestalten die sich dem Verhalten des Spielers anpasst. :)



Mfg
RaVeN
AMD Athlon64 3000+, 1024MB DDR-RAM, Geforce 8600GT, WinXP SP2, DirectX 9.0c, PureBasic 3.94
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ganz genau.

die grundidee war die programmierung eines neuronalen netzwerkes,
allerdings hatte ich kein internet und keine literatur zur verfügung,
ausser einem biologie-fachbuch mit ein paar infos zu biologischen
neuronalen netzen.

mir geht es in erster linie darum, das eine KI auch emotional reagieren kann.
ich fände es halt sehr reizvoll, wenn ein computergegner 'blind vor wut' werden könnte :wink:

das plus-minus system ohne schwellenwert werde ich beibehalten,
ich nenne das ganze mal PNN * (Pseudo-Neuronal-Network)

(* I claim copyright for this term)

die LIB wird bestimmt noch ne weile auf sich warten lassen, zumal ich natürlich
nicht die nackte LIB veröffentlichen werde, sondern zusammen mit nem prog das
sie benutzt.

vielleicht wäre es ne sache, damit ne AI für c-evo zu proggen,
da stehe ich aber noch vor dem interface problem, da das prog in DELPHI
geschrieben wurde, und PASCAL kompatibel ist.

mit pascal hab ich mich nur kurz in INFO in der 10ten beschäftigt,
damals in den 80ern auf den damaligen mini-äpfeln.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

der link oben ist aktualisiert, der download funktioniert wieder.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

in pb3.3 kein elapsedmillimilli() oder was ähnliches ? muß(te) man da immer api verwenden, um das prog überhaupt zeitlich in einen "realitätskontext" zu bringen? (ich weiß gar nich wie der api-befehl aussieht) <edit: ah, TimeGetTime_()>
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

hm?

doch, ElepsedMilli() gabs wohl schon,
aber ich hatte damals fauler weise die sync über die framerate gemacht.

das ist von der 3.3er ver von ToP auch dei der 3.9er so geblieben.

der source ist ursprünglich in 3.3 geschrieben und auf 3.92 angepasst.

heute würde ich das auch anders syncen als damals,
nämlich framerate und brain-takt unabhängig...
hey, das teil is von ende 2004, da war ich grad nen monat hier im forum...


EDIT: nein, ElapsedMilli gabs noch gar nicht...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Also ich finde es gut! :allright: Obwohl ich es noch nicht richtig verstanden habe...

Tip: die Farben würde ich etwas kräftiger/knalliger machen, denn für mich sieht das größtenteils gräulich-farblich aus.
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

also mir gefällt das auch sehr gut, und das design ist auch ziemlich witzig :allright:
die absortion ist also die einzige instanz, die den direkten stimuli empfängt..(?)
die jeweiligen decay-werte bleiben ja konstant oder? vielleicht könnte man bei häufig wechselnden stimuli, ein bisschen fred's selbstsicherheit schrumpfen lassen, indem der decay erhöht wird.
(-> verwirrtheit (->vergesslichkeit)).
der "stimuli-wechsel-faktor" könnte z.b. größer sein, je näher der durschnitt aller stimuli an 0 liegt, wenn dabei die summe der Abs() der einzelnen stimuli sehr groß ist:
SWF.f = summe_aller( abs(jeder_einzelne_stimuli) ) / abs(summe_aller_stimuli)
naja..egal <)

<edit>
..also
input: -3, 3, 3, -3, 3, -3
durchschnitt=0
summe der intensitäten=18
18/0 -> INF :roll: also sehr hoch :lol: (müßte man dann regeln, aber die proportionierung stimmt)

input: 1, 0, 2, -1, 0, 1, 3
durchschnitt=6
summe der intensitäten=8
8/6=1,3..
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

danke fürs positive feedback. :D


> vielleicht könnte man bei häufig wechselnden stimuli, ein bisschen fred's selbstsicherheit schrumpfen lassen, indem der decay erhöht wird.

so etwas ist eigentlich nicht vorgesehen.
die grundwerte der einzelnen zellen sollten zur erstellungszeit vorgegeben werden. sämtliche reaktionen müssen sich aus dem netz ergeben.

grundsätzlich war es ein experiment, wie man überhaupt so etwas ähnliches wie neuronen ohne komplizierte formeln und schwellenwerte programmieren kann.

auch die einzelnen werte und wertverhältnisse sind gewiss überarbeitbar.

und das beispiel ist ja auch super-simpel einfach. wenn man mehr Pseudo-Neuronen verwenden will, sollte das system schon als liste vorliegen mit standatisierten procedures.

das was du vorschlägst, würde man mit einer regelgruppe lösen müssen.
wie genau die aussehen müsste, müsste ich mir noch ausfutzeln, aber gehen müsste es (theoretisch)
und zwar müsste diese gruppe bei häufig wechselndem input an dem ausgangsneuron der gruppe ein starkes signal erzeugen, das dann wiederum auf die hauptgruppe dämmend wirkt.
also praktisch "desinteresse". wenn mich jemand zu veräppeln versucht, indem er abwechseln total lieb und total bös zu mir is, dann nehm ich ihn immer weniger ernst mit der zeit.

the Nameless hat geschrieben:Obwohl ich es noch nicht richtig verstanden habe...
nuja, so viel zu verstehen gibts da gar nicht.
das grund-verwendungsbeispiel ist folgendes:

fütter das PNN über einen längeren zeitraum (min 5min, besser 15-20) ziemlich regelmäßig mit mittelmäßig freundlichen impulsen.
in genügender zahl über genügenden zeitraum bekommt man auch mit mittelmäßiger freundlichkeit das langzeitgedächtnis auf freundlich.
wenn man jetzt einen einzigen richtig bösen impuls sendet, wird man sehen, dass das PNN nur relativ kurzzeitig bös wird, dass dann aber wieder greift, dass du ja lange lieb zu ihm warst.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten