Du bist nicht angemeldet.
Die KI holt sich Zielgruppenwerbung ... und kommt damit nicht klar.
- sie sollte solche Werbung einfach noch nicht holen
- oder sie sollte die Anforderungen entsprechend auf die Zielgruppen skalieren
Bei mir war das uebrigens "Plörre-Bier" und "Plöpp-Bier".
Im Schnellvorlauf hatten die Spieler am Ende des 8. Spieltages 800-1.2Mio auf den Konten.
@ Abnutzung
Strg+Tab und mit Strg+1-4 die Spieler durchwaehlen. Der rote Balken unterhalb der Programme ist die Aktualitaet. An Tag 8 waren die noch "okay".
Ich werde erstmal reinnehmen, dass die KI nur Werbung ohne "sonstige Anforderungen" nimmt.
Als naechsten Schritt muss die KI bei ihrer Quotenschaetzung noch die "Zuschauerzusammensetzung" (Audience) protokollieren. Dann bei der Werbeauswahl dies beruecksichtigen.
bye
Ron
So, in meinem neuen Testspiel ist gerade die erste KI pleite gegangen. Wie wir das behoben kriegen und woran es liegt ... seh ich mir auch noch irgendwann an. Aber was ich bisher gesehen hab:
- vor Tag 8-10 vergeigt die KI fast gar keine Spots, danach
- hat sie Probleme mit den hohen Spots und vor allem mit den Spots für spezielle Zielgruppen
Player 2 hat einige Tage lang jeden Tag 4, 5 mal Mödie Markt gesendet - jedes mal rot
- die KI hat auch arg miese Quoten, auch weil sie kaum neue Filme kauft sondern die alten
selbst mit Aktualität nahe 0 oder gleich null weiter sendet
evtl. braucht die Programmplanung auch einen Schwellenwert unter dem nichts mehr ins
Programm kommt
- verkaufen klappt nicht, den "fix" für die verbugte Parameterübergabe muss ich jetzt erst
wieder ändern, der ist seit devpatch von gestern jetzt falsch
- Selbst wenn die KI über 1M Euro hat kauft sie fast nichts. An den meisten Tagen hat
keine der KI einen Film gekauft, Sender hat Player 4 3 Stück gekauft, die anderen keinen
Evtl kann man da auch an der Budget Planung noch was tunen, müsst ich mir mal ansehen.
Die KI sollte Programme nur setzen koennen, wenn sie im Buero ist.
Die Hilfsfunktionen (TVT.of***) ueberpruefen, ob die Figur im Raum ist.
Anhand deiner Speicherstaende habe ich gesehen,dass du mit der 0.3.4.3 gespielt hast, und nicht mit den DevPatches. Diese enthalten aber einige Fixes.
Ich habe nun deine Dateien umgeaendert:
sellmovies.lua -> TaskArchive.lua
JobSellatMD.lua -> TaskMovieDistributor.lua ("JobSellSuitcaseLicences")
@ Raum verlassen
Da war ein moeglicher Bug im Code.
Ich baue jetzt noch ein, dass der Archive-Task den Filmhaendler-Task hochsetzt (damit dieser als Folge kommt). Wenn wir das dann "funktionstuechtig" haben, kommen wir spaeter zu den "Pause/Continue"...-Taskfunktionen um dererlei Dinge "zwischenschalten" zu koennen.
DevPatch kommt gleich.
Edit 13:42:
Hier gehts zum Beitrag mit dem neuen DevPatch.
Code entspricht "nahezu" dem aus deinem "3.10."-Download.
bye
Ron
ok, nochmal ein kleiner bugreport - kommt nicht drauf an wann du Zeit hast dir den anzusehen, mir bloss jetzt gerade aufgefallen.
Die Ki ist im Archiv stecken geblieben und ich habe länger nicht dran gedacht sie da wieder rauszuholen. Als ich das dann gemacht habe sind beim nächsten Mal in der Filmagentur mehrere Filmverkäufe fehlgeschlagen. Errorcode 0, einfach Failed bzw. False. Ist auch vorher schon passiert aber jetzt weiss ich glaub Ich endlich warum.
Im Archiv wurden 4 Filme die nicht im Programm waren in den Koffer gelegt
danach blieb die KI stecken, setzte aber immer noch Filme und Werbung, auch 3 der 4 im Koffer
In der Filmagentur waren die wahrscheinlich nicht mehr tradeable weil im Programm, jedenfalls errorcode 0
Ich denk mal es ist Absicht das die KI Programme setzt ohne das office zu betreten ("Betrete Raum stand jedenfalls nicht im log") aber sollte die Filme aus dem Koffer setzen können? Das kann der menschliche Spieler nicht und es kann das Verkaufen verhindern.
2. das Spiel ist etwas später eingefroren und lies sich nur noch per xkill beenden.
Gibt es ein logfile für das Hauptprogramm oder so was wo man sehen kann was es letztes gemacht wurde? Dann könnte ich das vllt. beim nächsten Mal sichern.
Ich integriere jetzt deinen aktuellen Download "tvtki_mzc.3.10.16.tar.gz"
Dann stelle ich einen neuen DevPatch bereit - und mit dem kannst Du ja dann "weitermachen" (damit wir wieder die gleiche Basis haben).
Ich werde eventuell ein wenig von deinem Code umarbeiten (Dateien umbenennen usw.).
bye
Ron
Ja mit den "nil" kaempfe ich auch immer ... heute gelernt:
classname:function = eine Methode
classname.function = eine Funktion
ruft man eine "Methode" als "Funktion" auf, so wird der erste Parameter als "self" angesehen. Dadurch verrutschen die ganzen "eigentlichen" Parameter der Methode.
Wenn Du also auf Variablen einer Klasse zugreifen willst, solltest Du die Methode mittels "xyz:Funktionsname(params)" aufrufen (Doppelpunkt).
Lua ist da ziemlich "biestig", da es stillschweigend ueber vieles hinwegsieht (kein Parameter uebergeben? bedeutet einfach "Parameter = nil" ... und erst wenn der Parameter wirklich benutzt werden soll, kommt eine Fehlermeldung).
Edit 00:23 Uhr:
Kam immer noch nicht dazu, deinen Code zu testen, da ich hier den Abend mit der "Quotenvorhersage" zu tun hatte (Speicherstand hingegen: macht hier auch das Fehlverhalten, Ursache lokal behoben. Lag nicht am Script sondern an "mir"). Die KI speichert nun ihre Schaetzer zusammen mit "echten" Werten. Auch nimmt sie alte Nachrichtensendungen "teilweise" mit in ihre Schaetzungen mit rein.
In meinen 4-KI-Spielen machen nun alle plus (gibt sicher auch Ausnahmen ...wie bescheidene Startwerbung, aber das aendern wir ja noch). Nach vier Tagen waren die Spieler bei 600-800.000 im Plus - oder hatten weniger auf dem Konto, dafuer einiges mehr an Programmlizenzen.
Nun aber erstmal ins Bett, morgen frueh geht's um 7 in die Pilze.
bye
Ron
ja, wenn's funktioniert...
ich bin jetzt eh wieder mit den Gedanken woanders.
Ich hab heute nur minimal Sachen verändert und kriege hunderte von nil errors, zuneist in Klassen die ich nicht angefasst habe. Solange ich nicht kapiert habe wo die herkommen komm eh nicht oder nur im Schneckentempo weiter.
Ich denke, wir koennten jedem Task folgende Methoden mitgeben:
Abort() - Abbrechen des Tasks
Pause() - Pausieren
Resume() - Fortfuehren
Es liegt dann an jedem Task selbst, etwaige Jobs zurueckzusetzen / zu sichern / ...
Ein "Anti-Pleite-Task" koennte beim Pausieren die derzeitige Hauptaufgabe (Lizenzverkauf, Sendemastverkauf - jeweils mit eigenen Unteraufgaben wie "Archivbesuch und Analyse", "Haendlerbesuch und Lizenzen verkaufen")) zuruecksetzen. Beim Fortfuehren dann ueberpruefen ob noch notwendig (wenn nicht -> "Done") und wenn dies der Fall ist, mit der aktuellen Hauptaufgaben fortfahren.
bye
Ron
Die quotenvorhersage funktioniert uebergreifend.
Man kann auf TaskX-Variablen auch aus anderen Tasks zugreifen (den Task ueber die globale Playervariable ranholen).
Tasks sind an sich nicht raumgebunden. Was noch nicht ganz funktioniert bzw ausgetestet ist: Raum/Ziel-Ketten.
Ein jeder Task hat Jobs...und jedem Job kann ein Raum zugewiesen werden. Raumwechsel sollten da also automatisch stattfinden. Jobwechsel finden statt, wenn ein Job seinen Status auf "done" gesetzt hat.
Dementsprechend lassen sich auch Jobs ueberspringen oder Tasks mittendrin beenden (Sendemastverkauf gar ne erst probieren, wenn Filmverkauf schon ausreichend gewesen).
Ich kann versuchen heute abend (wenn ich am PC bin) mal so eine "Rundreise"-Task zu basteln... die kann ja dann als Vorlage fuer anderes herhalten.
Ein anderer Ansatz ist eine Art "Zusatzjob"... ein Task koennte dann anderen Task Extrajobs voran- der hintenranstellen ... sinn waere es hier...bestimmte Ueberlegungen nicht in "Tick()" der KI stattfinden zu lassen, sondern dies per Taskbaustein erledigen zu lassen (prio-abhaengig, statt eventabhaengig).
Fuer geldabhaengige Dinge ist eine eventbasierende Loesung (Taskprio erhoehen) aber ausreichend...sprich so, wie es gerade gemacht wird.
Fuer mich als Todo: Tasks sollten als "nicht ueberspringbar" definierbar sein (ein Sendeausfall sollte dann nicht einen aktiven "Pleitevermeiden"-Task ersetzen koennen). Eventuell eine Task-chain anlegen. Oder einfach alles ueber die PrioListe abarbeiten und ist die oberste dann die aktuelle, braucht keine neue gestartet werden...
Meinung dazu?
Bye
Ron
Savegames nehmen gezippt nur ein ~20tel Platz weg :-)
Äh, ja richtig, xml komprimiert ja wie text. Hätt ich eigentlich dran denken können.
@neue Tasks
sind die Tasks nicht daran gebunden in welchem Raum man ist, also quasi auf einen Raum beschränkt?
Ich würde da lieber so eine Art aufräum Toolkit machen, das Jobs oder Daten an verschiedene Räume geben kann. Dadrin liesse sich z.B. auch eine Liste für zu verhökernde Filme speichern. Oder halt alles was raumübergreifend ist. Muss ich Bücher zuerst aus dem Studio abholen um die zu verkaufen? wäre ja quasi dann auch in mehreren Räumen.
Und ja, ein subprogramm das zusammenhängend eine Sequenz in verschiedenen Räumen einplanen kann (Sender und Bücher und Filme verkloppen und vielleicht noch nach nem Kredit fragen) fänd ich auch gut. Wobei ich Sender wirklich erst als letztes Mittel verkaufen würde. Käme dann quasi ganz hinten in die Sequenz.
Was aber auch cool wäre wäre ein Quotenvorhersage Tk das man im Büro, in der Werbe- und der Filmagentur benutzen könnte
Man koennte aber auch ueberlegen, generell einen Task "Aufraeumen" oder "unnuetzes entfernen" zu erstellen.
Dieser wuerde alte Programme entfernen oder andere solche Aufraeumarbeiten erledigen (und alte Mehrfach-Drehbuecher verkaufen ..).
Dann koennte es eine "Pleite-abwenden-Task" geben - die dann Sendemasten und Lizenzen vertickt ...
Was denkst Du (oder ihr anderen) darueber?
bye
Ron
Ich schau mir das mal an (Steckenbleiben und neue Jobs/Tasks).
Savegames nehmen gezippt nur ein ~20tel Platz weg :-)
@ SellMoviesTask
Man koennte auch ueberlegen, dass dies in einer "ArchiveTask" erledigt wird (falls noch mehr Dinge "dort" zu erledigen waeren). Die schubst dann einfach "fachuebergreifend" als naechst wichtige "Task" den des Filmhaendlers an. Und der beinhaltet dann einfach noch das Verkaufen von "abgelegten" Filmen. Um ein "Verkaufen gerade gekaufter Filme bei Wiederbesuch innerhalb von 15 Sekunden" (da waere der Koffer noch befuellt...zwecks "Irrtumskauf") zu verhindern, muesste die KI einfach die "zu verkaufenden Filme" auf einer Extraliste fuehren.
@ Thresholds
Ja, die kann man ja dann extern anpassen (Strategie/KI-Charakter usw. - bzw Langfristigkeit/lange Spieldauer und deren Erfahrungswerte)
bye
Ron
ok, hab meinen sourcecode gestern so weit aufgeräumt das es zumindest kein so völliges Durcheinander mehr ist.
liegt jetzt https://sourceforge.net/projects/tvtki/files/?source=navbar
neu sind der sellmovies Task (im Archiv Filme in den Koffer legen) und der SellatMD Job (beim Filmhändler verkaufen). Letzterer verkauft alles was im Koffer liegt und muss beim Händler deshalb als erstes ausgeführt werden. Beide Sachen sind in DefaultPlayer und letztere auch beim Filmhändler noch eingetragen, ansonsten ist alles die unveränderte Version aus dem 3.4.3 Patch. (jetzt ohne das ganze rumgewurschtel das ich da vorher angestellt hatte)
@savegames
Die beiden anderen Dateien sind Savegames bei denen die KI im Archiv stecken bleibt.
Vor dem save hatten die jeweils Filme im Koffer, nach dem Laden aber nicht mehr.
In der Log Datei hatte ich nichts besonderes gesehen: Ein neues Ziel wird gesetzt (1x) aber
die KI geht nicht hin. Wenn ich selbst rechts klicke damit die das Archiv verlässt geht das Spiel normal weiter.
@Aktualität
Ich hatte die Schwelle fürs Filme behalten mit Absicht so hoch gelegt. Dadurch filtere ich die Filme die schnell wieder aktuell sind raus, behalte die und habe nach ein paar Tagen ein Archiv mit Filmen die alle Nase lang aktuell sind. Dann muss ich eigentlich gar nichts mehr kaufen und kann mein Geld für Sender oder wenige richtige gute Programme ausgeben.
Aber falls Du eine andere Strategie spielen willst hab ich jetzt eine eigene Variable dafür angelegt. JobSellMovies.FreshnessTreshold. Wenn die geändert wird verkauft er halt entsprechend mehr oder weniger schnell.
Der emerngyTreshold da drunter ist für Notverkäufe aus Geldmangel - die werden halt bisher nur noch nicht ausgelöst. Im Prinzip könnte man die Variablen auch im Laufe des Spiels verändern um später im Spiel z.b. langfristiger zu denken und auch mal auf das aktuell werden länger zu warten. Und die ganz teuren (über 100000 zum aktuellen Zeitpunkt) verkauft er auch jetzt nicht.
Kindlicher Schreiattacke sei Dank ..eine naechtliche Replik.
Wenn die Figur nicht aua dem Raum will: entweder ist mein "Raumwechselcode" buggy oder du laesst die Figur nichr korrekt das andere Ziel ansteuern. Hast du durch Zufall einen Savegame mit einer solchen steckengebliebenen KI?
In den Logs/Konsole steht eigentlich, wenn ein Task abgeschlossen ist uns ein neuer gestartet wird...evtl gibt es da eine Dauerschleife (Prioritaet setzt Aufgabe X immer nach oben).
Ich kann morgen ja mal einen neuen Devpatch bereitstellen...da sind ja die aktuellsten Anpassungen enthalten...vlt hilft das ja schon ein wwnig.
@verkaufen
Momentan wuerde ich abgenudelte Filme verkaufen. Filme, deren maximale Aktualitaet unter hmmm 20% gefallen ist, also sehr oft gelaufen und aelter ist.
(momentan ...weil gerade diskutiert wied, die maximale Aktualitaet gaanz langsam wieder ansteigen zu lassen...wenn lange nicht ausgestrahlt).
@wenn not am Mann/Pleite droht
Dazu einen neuen "Job" in der "ArchiveTask" integrieren...und dann an entsprechendee Stelle die "SituationPriority" anpassen/erhoehen. Eventuell bei Geldaenderung. Eventuell sollte ich vom Spiel aus auch die KI ueber einen neuen Pleite-Vorwarn-Level informieren (statt nur Tageswechsel bzw Geldaenderung).
Du kannst die KI-Scripte uebrigens im Spiel mit rechter Shifttaste plus 1-4 neuladen (oder quicksave-load gaenge auch..is aber langsamer).
Bye
Ron
Hast Du die Aenderungen fuer die KI irgendwo fuer mich herumliegen?
Willst Du sowas wirklich lesen? Im Moment ist das alles ein ziemlich improvisierter Hack. Was aber viel schlimmer ist: der neue Task fürs Archiv integriert sich nicht korrekt in das vorhandene Job/Task Management. Früher oder später bleibt die KI in einem Raum hängen und geht nicht mehr raus, obwohl ein neues Target gesetzt ist. Hab bisher noch nicht ausgetüftelt warum aber ich hab wohl indirekt irgendwas in der Task oder Player Steuerung zerschossen woran ich gar nichts direkt geändert hatte. Naja das muss ich mir morgen nochmal genauer ansehen.
Gibt es von Deiner Seite schon Ueberlegungen, wann die KI einen Film wieder verkauft?
Im Moment wenn
--der Film nicht aktuell ist (Topicality < 80% vom Max)
--der Film nicht im Programm ist
--und es wird nur einmal am Tag verkauft, normalerweise also kurz nach Mitternacht wenn die Filme grad wieder aktuell geworden sind
--die ganz teuren Filme sollte man wohl am besten gar nicht verkaufen, die verlieren mit der Aktualität zuviel an Wert. Das ist aber noch todo.
--aus akuter Geldnot Filme verkaufen wird im Moment gar nicht gemacht, aber Kombinationen wie "Ich brauche x Euro in y Tagen um nich gefeuert zu werden und kriege die nur zusammen wenn ich Film z aus dem Programm nehme und dann verkaufe" spielt die KI (bisher) ja auch nicht.
Zwecks Bugs - ich hab den Anschlag der VR (oder FR? ;-)) Duban hoffentlich behoben:
Danke. Ging ja schnell wie die Feuerwehr.
Ansonsten: Ich habe die KI jetzt erstmal soweit, dass sie mit relativ wenigen Fehleinschaetzungen durch den Tag kommt (im 4-KIs-Spiel - mit echtem Spieler werden die Quoten wohl nicht zu doll aussehen).
Gut. Solange Du die Werbespots im Prinzip im Griff hast hab ich ja Zeit zum debuggen
Das dauert im Moment noch alles ewig.
Aber früher oder später würde/werde ich mir die Filmkäufe und Werbevertragsabschlüsse noch mal ansehen. Je genauer die Quotenvorhersage ist desto besser müsste man einschätzen können welcher Film sein Geld wert ist und welcher Werbespot zu hoch ist um ihn auch durchzukriegen.
Aber erstmal... ist es auch wieder spät.
n8 allerseits