Du bist nicht angemeldet.
Die KI agiert allerdings total unterschiedlich. Beim Terror gegen die VR wurden die Raumschilder ab erreichen der Stufe 2 gewechselt, wohingegen bei FR überhaupt kein Schildchenspiel stattfand.
Das hat mich verwundert - und baem, kleiner Fehler den Du da aufgespuert hast ;-)
Ich habe eine Funktion, gibt man ihr keinen Parameter mit, so wuerde der hoechste Wert ("Terrorlevel") beider Gruppen zurueckgegeben werden ... nur ist es mit "Lua" (der Skriptsprache fuer die KI) so, dass ein "kein Parameter" mit "0" ersetzt wird. Sprich unser TVTower-Spiel bekommt statt "nix" einfach mal die "0" uebermittelt. Und 0... das ist die VR ;-)
Bei der eigentlichen KI-Taetigkeit im Raumplan-"zimmer" wird aber korrekt fuer beide getrennt die Aggression ausgewertet (die sich die KI im Nachrichtenstudio geholt hat - die ist da dann fuer die "aktuell").
Das kann dann aber ja eh auf das "Warten auf Nachricht XYZ" umgestellt werden. Also erst mit einer Nachricht die ein Keyword/Flag/... enthaelt ("Terrorist") reagiert die KI dann mit erhoehter Raumschildtauschprioritaet (vorher ists nur zufaellig - "aus Spass heraus").
bye
Ron
Neue Version 0.1.4:
- Bugfixes
- neue Level
- automatisches Minipowerup fuer produktive "Slots"
Download: http://www.gamezworld.de/files/TrickOrSweets_v0.1.4.7z
(Linux 32bit / Windows 32bit).
Zu Beginn von Tag 2:
bye
Ron
@ Guthabenzinsen
Nein, man kann auch Schulden anhaeufen und bekommt fuer dieses Bargeld Guthabenzinsen - nur fallen die niedriger aus, als die Kreditzinsen ;-)
bye
Ron
Die KI hat eine Reaktionszeit...sie probiert aller X Minuten/Echtsekunden wieder in den Raum zu kommen. Sie "klickert" sozusagen so wie Du.
bye
Ron
Indirekt...aber soviele Downloads warens noch nicht, und auf der Website des Wettbewerbs (syntaxbomb.com) bekommt ein anderes Spiel weit mehr Stimmen. Vielleicht ists an Spielern vorbeientwickelt und verdient keine weitere Aufmerksamkeit?
bye
Ron
Ja in dem Fall "-50 bis +50", aber laut Codekommentar -50 bis 100.
bye
Ron
Ich weiss, es braeuchte eigentlich einen Dev-Screen mit Buttons und Auswahllisten ... hatte ich schon ewig vor, aber bisher einfach noch nicht umgesetzt. Kann gerne einen "Vorlagebildschirm" machen - und Du die Fleissarbeit :-)
Genre 17 hat den Trend (aus deinem Savegame rausgeholt):
<TGenrePopularity ref="9JOEC8">
<field name="referenceGUID" type="string">genredefinition-base-17</field>
<field name="LongTermPopularity" type="float">31.7768402</field>
<field name="Popularity" type="float">38.5319023</field>
<field name="Trend" type="float">-1.35101247</field>
<field name="Surfeit" type="int">0</field>
<field name="SurfeitCounter" type="int">0</field>
<field name="LongTermPopularityLowerBound" type="int">-50</field>
<field name="LongTermPopularityUpperBound" type="int">50</field>
<field name="SurfeitLowerBoundAdd" type="int">-30</field>
<field name="SurfeitUpperBoundAdd" type="int">35</field>
<field name="SurfeitTrendMalus" type="int">5</field>
<field name="SurfeitCounterUpperBoundAdd" type="int">3</field>
<field name="TrendLowerBound" type="int">-10</field>
<field name="TrendUpperBound" type="int">10</field>
<field name="TrendAdjustDivider" type="int">5</field>
<field name="TrendRandRangLower" type="int">-15</field>
<field name="TrendRandRangUpper" type="int">15</field>
<field name="ChanceToChangeCompletely" type="int">2</field>
<field name="ChanceToChange" type="int">15</field>
<field name="ChanceToAdjustLongTermPopularity" type="int">25</field>
<field name="ChangeLowerBound" type="int">-35</field>
<field name="ChangeUpperBound" type="int">35</field>
</TGenrePopularity>
(ich poste den Code, da die Variablennamen von Dir sind und Du sicher relativ schnell rauslesen kannst, was Sache ist)
Der Mod berechnet sich aus:
'Popularity ranges from -50 to 100 (no absolute "unpopular for
'everyone" possible)
'add 1 to get a value between 0 - 2
Return 1.0 + MathHelper.Clamp(definition.GetPopularity().Popularity / 100.0, -1.0, 1.0 )
Heisst hier: 1.0 + 0.38 => 1.38
Heisst aber auch: Im Besten Fall kann ein Genre den Modifikator "2.0" bereitstellen.
bye
Ron
Ich habe jetzt zwei Moeglichkeiten rausgekramt - beide in Grundzuegen umgesetzt (noch nicht fertig).
1) Effekte/Trigger koennen zeitversetzt werden
Statt sofort ausgefuehrt zu werden (bei Ausstrahlung, "Geschehen" ,...) kann eine Zeit dem Effekt mitgeteilt werden, wann er ausgefuehrt werden soll.
Der Effekt "Schicke Terrorist los" wuerde also mit X Minuten Verzoegerung nach der "Spur verloren"-Nachricht ausgefuehrt und der Terrorist losgeschickt werden.
Andere praktische Anwendungsbeispiele sind Nachrichten wie "Um Mitternacht wird das Analogfernsehen abgeschalten" oder "Vandalen wueten im Keller des TVTower-Gebaeudes" (und 1h spaeter gibt es Sendeausfall ;-))...
2) Dem Terroristen "TODOs/Plaene" mitgeben
Man koennte den Terroristen (und Beamten und anderen "Postboten") Raeume und Zeiten mitgeben (zu denen sie fruehstens loslaufen duerfen).
Ist natuerlich schneller umgesetzt, aber im Hinblick auf Nachrichten weniger flexibel.
bye
Ron
@ Botschaften als Studios
Wenn man es so möchte, kann man sich darum bemühen. Andernfalls besteht aktuell kaum Gefahr das dieses Szenario ohne Mithilfe eintritt.
Du willst sagen, die KI bemueht sich nicht um freie Studios.
Japp, momentan ist dem auch so - sie vertauscht die Schilder einfach nur mit Zimmern der Gegnerspieler. Wird gleich mal auf die TODO gesetzt...
@ Nachricht
Hmm, dir reicht der Vorlauf durch "VR Duban droht mit Vergeltung" nicht aus? Was waere denn eine gute Zeit?
Momentan wird direkt mit Erreichen der Aggressionsstufe die News rausgeschickt - und der Terrorist ebenfalls.
Man koennte hier eine zufaellige Verzoegerung einbauen (45-120 Spielminuten oder so)... ?
@ "Impact"
TAB im Nachrichtenstudio.
bye
Ron
Koennte man auf zwei Arten umsetzen:
Bei Tastendruck wird einfach der Befehl "gehe zu Raum X" ausgeloest und die Zeit auf "vorspulen" gestellt. Beim Erreichen des Zielraums geht die Geschwindigkeit wieder auf den alten Wert.
---
Bei Tastendruck wird das Rendern deaktiviert (spart Zeit ;-) und so lange die Zeit vorgespult, bis man am Raum ankommt. Hier kann die Zeit "schneller" ablaufen, der Wechsel waere also schneller erledigt. Einen "Sofort-Wechsel" wird man nicht so ohne weiteres hinbekommen, dafuer hat das Spiel (bei mir) eine zu hohe CPU-Last. Die KI und Co fordern halt ihren Tribut.
bye
Ron
Dann wird der Textbereich aber langsam voll...
Oder beim Ausstrahlungshinweis "Morgen XX:YY Uhr (3/12 live)" ?
bye
Ron
@ STARSCrazy
Also der Zielgruppenwert "1.7" bei Jugendliche basiert auf mehreren Werten:
Local _effectiveGenreTargetGroupMod:TAudience = GenreTargetGroupMod.Copy()
_effectiveGenreTargetGroupMod.MultiplyFloat(GenrePopularityMod * GenreMod)
_effectiveGenreTargetGroupMod.SubtractFloat(1)
_effectiveGenreTargetGroupMod.MultiplyFloat(MODINFLUENCE_GENRETARGETGROUP)
_effectiveGenreTargetGroupMod.AddFloat(1)
Local _effectiveFlagsTargetGroupMod:TAudience = FlagsTargetGroupMod.Copy()
_effectiveFlagsTargetGroupMod.MultiplyFloat(FlagsPopularityMod * FlagsMod)
_effectiveFlagsTargetGroupMod.SubtractFloat(1)
_effectiveFlagsTargetGroupMod.MultiplyFloat(MODINFLUENCE_FLAGTARGETGROUP)
_effectiveFlagsTargetGroupMod.AddFloat(1)
Local result:TAudience = New TAudience.InitValue(1, 1)
result.Multiply( _effectiveGenreTargetGroupMod )
result.Multiply( _effectiveFlagsTargetGroupMod )
result.Multiply( targetGroupAttractivityMod )
'0 = no attractivity, 1 = no adjustment, 2 = totally like it
result.CutBordersFloat(0, 2.0)
Nehme ich die Popularitaet des Genres raus, sinkt er von 1.7 auf 1.24. Wir haben da wohl gerade ein sehr populaeres Genre erwischt ;-)
Bei den Managern ("+0.2") wird aus "x1,5" dann "x1,1".
Eventuell ist die Popularitaet zu stark (~35% Bonus) ?
Gast2s Fehlerberichten widme ich mich im naechsten Forenbeitrag.
bye
Ron
Mein kleiner Beitrag zur Halloween-Compo auf syntaxbomb.com.
Youtube gameplay: https://youtu.be/w258ILGtPjQ
Titelbildschirm:
http://abload.de/image.php?img=screenshot_001u1jby.png
Hilfsbildschirmhttp://abload.de/image.php?img=screenshot_002tgkty.png
Ingame:
http://abload.de/image.php?img=screenshot_0030tjq3.png
Download: http://www.gamezworld.de/files/TrickOrSweets_v0.1.1.7z
(Linux 32bit / Windows 32bit / MacOS 32bit).
Download: http://www.gamezworld.de/files/TrickOrSweets_v0.1.4.7z
(Linux 32bit / Windows 32bit).
Details auf Anfrage.
bye
Ron
Mit neueren Sollte das aber nicht passieren oder?
Muesste mit den Fixes dahingehend zusammenhaengen (Rabatte bei Nichtgeboten).
Kannst mir gerne als Erinnerungsstuetze n Speicherstand zumailen. Ich habs doch gerne bequem ;-)
bye
Ron
@ nicht ganz aufgefrischt
Hmm, das ist ganz "okay" so ... die dort eingesetzten Programmfilter erlauben eine relative Aktualitaet von >35%, bei den billigen sogar schon ab >25%.
@ Live
Auch das ist "gewollt" bzw. "moeglich". Bei all den verschiedenen "Optionen" ist es aber schwer, fuer alles einen "aufdringlichen Indikator" hinzubekommen. Mancher wird sicher auch das "FSK18"-Schild uebersehen.
Nicht-Live-Sendungen sollten aber die LIVE-Banderole nicht mehr auf der Kassettenhuelle haben und auch im Hinweis-Block des Datenblatts steht nix von den Ausstrahlungen.
Bei Sportlizenzen (in neuen Spielen mit DevPatch) sollte entsprechend auch der textliche Hinweise in der Beschreibung mit drin sein - und die Sendezeitentexte entfallen.
bye
Ron
@ Botschaften als Studios
Dann gibt es das ganze Spiel ueber aber keine weiteren Studios (evtl. Groesse 2 und 3 ...)
@ Stufe 3
Ja, sie interessiert sich erst ab Stufe 3. Und auch nur, wenn sie es per Nachrichtenstudiobesuch mitbekommen hat.
@ Nachricht
es gibt im Nachrichtenstudio doch eine Nachricht?
bye
Ron
Hmm, da muesste ich ja nun noch ALT links und ALT rechts unterscheiden - und das anzeigen.
Hmmmmpf... da wird die "Doppelklick auf Quotenbereich des Interfaces"-Idee ja immer praktikabler. Natuerlich doof, wenn zum Wegklicken der Tooltip zu breit ist - benoetigt also wieder einen Schliessen-Button der vertikalen Platz wegnimmt.
Ideen?
Nur auf "ALT" reagieren, wenn die Maus sich innerhalb des Tooltip-Fensters befindet?
bye
Ron
Danke fuer Deine "einige Stunden in Excel"-Herumspielerei.
An manchen Stellen muss es halt auch mal "unrealistisch" zugehen. Denn in der Wirklichkeit sind es doch nicht nur die Arbeitslosen die sich nicht fuer Kultur/Politik interessieren :-p
bye
Ron
Hallo Mirko,
schoen dass es nun klappt - und Du mir fein mit dem Zaunspfahl gewunken hast, doch mal im Code abzufangen, wenn ein Speicherstand nicht angelegt werden konnte.
Frohes Zocken.
bye
Ron
In welchem Ordner hast du TVTower entpackt?
Das ist ein Schreibrechtproblem von Windows 10 ...
TVTower ist "portabel" ausgelegt, speichert also alles im eigenen Verzeichnis. Kann aber gerne schauen, dass bei Fehlschlaegen auf Windows das NutzerXYZ-Eigene-Dateien-Verzeichnis genutzt wird.
Ich denke, wenn Du das Spiel in ein anderes Verzeichnis packst, sollte es klappen. Zumindest ist das die MacOS-Variante (dort gibt es Probleme, wenn man es im "Download"-Verzeichnis belaesst).
Auch kann es helfen den TVTower-Ordner mit rechts anzuklicken und bei Eigenschaften einen eventuellen "Schreibschutz" rauszunehmen.
Edit: Gerade auf meinem Windows10-Testnotebook runtergeladen, im Downloadverzeichnis entpackt, ins Verzeichnis rein und Spiel gestartet. Neues Spiel... und F5 fuer Schnellspeichern. Hat funktioniert. Wird also ein Schreibrechtsproblem auf deinem Computer sein. Muss ich mal nur im Spiel "abfangen" (um den Error loszubekommen).
bye
Ron
@ Nachtwerbung
FSK18 Werbung!!! (Bitte FSK18 + Bitte Erotik)
Damit gibt es auch nachts n Grund schaebige Softpornos zu bringen, statt Dauerwerbesendungen.
Generell: Man koennte fuer Werbung auch die Flags nutzen und so zum fuer "FSK18-Werbung" sorgen (kann erst ab 22 Uhr gesendet werden). Oder, dass deren DW ab 18 waere (denke der Einfachheit halber reichts, wenn DW und Werbung als FSK18 eingestuft wuerde).
@ Imagebezogene Senderkosten
Ja, irgendwo haben wir das auch mal diskutiert (die Preise). Ich finde neben "imagebezogen" (Behoerden sind einem gesonnen ...) faende ich auch den Ansatz gut: jeder Sendemast in einem Bundesland senkt den Preis fuer einen weiteren Sendemast im gleichen Bundesland (bis hin zu X Prozent) - oder man macht "nach 1 gibts 10%, nach 5 dann 20%, nach 10 25%, nach 25 gibts 50%" - da sollte es aber eh voll sein).
@ guenstige Gegenden
finde auch das einen praktikablen Weg. Entweder man legt es beim Spielstart fest (dynamisch) oder in der Senderkarte (konstant bei jedem Spielstart). Auch koennen die Marktpreise sich aendern ... also Brandenburg wird teurer, usw.
Auch kann man hier die generelle Anzahl Sendemasten einbeziehen: je mehr _generell_ im Bundesland stehen, um so guenstiger wird es fuer Neubauten ("Technik bereits vor Ort"). Damit wuerde die Konzentration auf Standorte gefoerdert werden.
Ein anderer Ansatz: Kabelstrecken sparen: Baut man einen Sendemast der sich mit einem bestehendem (eigenen) Sendemast schneidet, so bekommt man dafuer auch X-Y% Rabatt auf Kaufpreis und Unterhaltskosten (die wuerden bei jedem Kauf eines Mastes fuer alle neuberechnet werden - ein Verkauf kann also die Kosten anderer wieder anheben).
bye
Ron
Werbung wird per Zufall rausgenommen - aus dem Pool verfuegbarer. Die sind natuerlich immer dann nicht verfuegbar, wenn ihr Spieler sie hortet.
Es waere wohl praktikabler, wenn wir den "Modus" ueberarbeiten - sprich das Angebot etwas mehr auf alle 4 Spieler zuschneiden oder aber die Spieler dazu auffordern, haeufiger den Makler zu besuchen (haeufigere Rotation/Austausch der Werbeangebote)
Die generelle Anzahl angebotener Vertraege "zur gleichen Zeit" (auf Tisch, Boden etc) wuerde ich beibehalten. Die Anzahl gleichzeitig beim Spieler verweilender Vertraege koennte man erhoehen, aber auch da gibt es keinen Grund, sie auf 20 auszudehnen. Denke 12 (yapp!) bis 15 (naja) waeren gangbar. Sonst herrscht vor allem fuer Anfaenger der Nachteil, dass sie sich alles mit Vertraegen vollkrachen (15*4 Spots = 60 Stunden! plus etwaige Verlaengerung durch Erfuellen und Neuvertragsholung) und sie dann am Tag 3 merken: upps, die bekomm ich heute gar nicht mehr alle gesendet....Konventionalstrafen ahoi.
Die Limitierung sorgt ja auch dafuer, dass man mit dem vorhandenen arbeiten muss. Man kann nun mal nicht immer jede Situation aufs perfekte hin optimieren.
bye
Ron
Du kannst der Nachricht einen Mod fuer die Zielgruppenattraktivitaet mitgeben. Damit koennte es Politiknachrichten geben, die Arbeitslose extrem interessieren ("Arbeitslosengeld soll um 500% steigen").
Dazu muss die DB-News den Eintrag enthalten:
<targetgroupattractivity children="1.0" teenager="-1.0" unemployed_male="0.5" .../>
Gleiches geht uebrigens auch fuer Programme/Serien. Damit kann abweichend von der "Erotik"-Zielgruppendefinition auch ein schwules Nackedeifilmchen entstehen ('etwas' geringes Interesse bei Maennern) oder der Politiktalk fuer Kinder kann umgesetzt werden.
Muesste ich irgendwo mal beschrieben haben. Enthalten ist es seit v0.3.5 vom 11.11.2016
Licences/Programmes could define a fine-grained targetgroup-attractivity via database
Programmedata could now define an individual target group attractivity (eg. "drama for female teenagers")
Was wir aber auch machen koennten - aehnlich der "Nebengenre" bei Programmen auch bei Nachrichten verschiedene Nebenkategorien erlauben ("Politik / Showbiz" wenn Obama mal wieder waehrend der Amtszeit singt).
bye
Ron
Die Mindestprioritaet ist in Teilen schon integriert...
AIEngine.lua: function AIPlayer:TickProcessTask()
...
Es wird solange gegammelt, bis die naechste Aufgabe eine Prio von > 35 hat.
Gleichzeitig habe ich aber im Fruehjahr noch hinzugefuegt, dass Aufgaben/Tasks den Status "IDLE" (mit X Ticks) bekommen koennen - neben dem von Dir bekannten SetWait().
Bei der "Schedule"/Programmplan-"Task"/Aufgabe habe noch einen IdleJob hinzugefuegt, der mit einem Zufall ebenso herumgammelt (mit "SetWait()" hatte ich irgendwelche Probleme).
Kurzum: Die KI _wartet_ schon wenn nix dringendes ansteht. Das Problem wird sein, die "Wichtigkeit" genauer zu beobachten, Dinge werden vielleicht zu schnell wichtig?
Druecke im Spiel mal "StrgLinks + TAB", damit kommst Du in den Programmplan-Debug-Ansichtsmodus des ausgewaehlten Fernsehkanals (umschalten am TV...). Du kannst da dann rechts unten ein paar Debugausgaben der KI sehen: derzeitiges Ziel und auch die Prioritaetenliste der derzeitigen Aufgaben.
@ Strecke
Das ist auch in Grundlagen schon im Code vorbereitet. (game.building.bmx: GetTravelDuration(...) ).
Muss ich nur mal noch fertigstellen
Der Teil "Fahrstuhlzeit" ist denke ich mit einem "Schaetzer" (nicht der aus der Empirie...) zu versehen: "im Groben braucht er pro Etage X Sekunden" +- einen kleinen Zufallswert.
Die KI kann intern ja protokollieren, wie gut sie im Schaetzen war und entsprechend die zurueckgegebenen Werte anpassen.
bye
Ron