Banner left   Banner center   Banner right

Germanenglish Home · News · Diary · Screenshots · Documentation (Wiki) · Downloads · Guestbook · Forum

Home · Benutzer registrieren · Suchen · Statistik · FAQ · Benutzerliste

Zur Zeit online: keiner ausser dir

 X-Force - Fight For Destiny - Forum —› Verbesserungsvorschläge/Ideen —› Arbeitsmarkt Wissenschaftler

Autor Mitteilung
verfasst am: 03.03.2007, 16:37 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Derzeit wird ja einmal am Tag der Arbeitsmarkt für die Wissenschaftler neu berechnet.
procedure TForschList.CreateKaufList;
var
  Dummy         : Integer;
begin
  { Aktualisiert die Liste von Forschern auf dem Arbeitsmarkt }
  { dabei werden zufällig neue erstellt oder gelöscht         }
  { Zuerst werden alle Forscher durchgangen und falls eine    }
  { Zufallszahl bis 100 kleiner als 15 ist wird er gelöscht   }
  Dummy:=0;
  while (Dummy<KaufCount) do
  begin
    if random(100)<=15 then
    begin
      DeleteArray(Addr(fKaufList),TypeInfo(TForscherArray),Dummy);
    end
    else
      inc(Dummy);
  end;
  { Es werden fünf Durchläufe getätigt, bei jedem Durchlauf   }
  { wird eine Zufallszahl erstellt. Wenn diese kleiner als    }
  { 15 ist wird ein neuer Forscher erstellt.Es können max. 20 }
  { Forscher auf dem Arbeitsmarkt sein                        }
  for Dummy:=1 to 5 do
  begin
    if not (KaufCount=20) then
    begin
      if Random(100)<=30 then
      begin
        SetLength(fKaufList,KaufCount+1);
        fKaufList[KaufCount-1]:=RandomForsch(false);
        CheckWatchForsch(high(fKaufList));
      end;
    end;
  end;

  Sort;
end;



function TForschList.RandomForsch(GeniusErlaubt: boolean): TForscher;
var
  Dummy: Integer;
begin
  if GeniusErlaubt then
    result.Strength:=random(60)+40
  else
  begin
    Result.Strength := random(50)+ 25; //25..74
    Dummy := Random(25);  //bis zu 24 mal Glück probieren
    while Dummy>0 do
    begin
      if Random(100)>95 then //wenn Glück gehabt, ein Punkt dazu
        Result.Strength := Result.Strength + 1;
      dec(Dummy);
    end;
  end;



Wie man sieht, gibt es also eine gewisse Chance, dass vorhandene Wissenschaftler gelöscht werden. Außerdem können bis zu 5 neue Wissenschaftler neu dazukommen (ist aber sehr unwahrscheinlich). Da ja die Anzahl der Forscher und deren Fähigkeit eine entscheidende Rolle für die Entwicklung des Spielers haben, ist dies aber eine etwas ungünstige Lösung, da der Spieler per Zufall in den ersten Tagen einen starken Vorteil, oder aber einen großen Nachteil erhalten kann. Langfristig wird man wohl Steuerungsmöglichkeiten über die Skriptsprache einbauen. Trotzdem ist es eine Überlegung wert, das automatische Angebot am Arbeitsmarkt etwas anders zu gestallten (schon weil das vielleicht nicht jeder skripten will). Die Frage ist aber, wie man das sinnvoll ändern kann.
verfasst am: 03.03.2007, 19:08
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
Zuerst einmal über die einfache Einführung von (im Spielsatz vllt. einstellbar) ca. 10 verfügbaren Wissenschaftlern/Technikern zum Spielstart, so wie bei den Soldaten.
Denn meist hapert es erst einmal an der Anzahl. Wenn man dann 10 hat, kann man sich ja die besten 5 raussuchen - wenn denn das Geld dazu da ist.
verfasst am: 03.03.2007, 19:51 · Edited by: sujin
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Eine änderung ist bestimmt sinnvoll, solange dadurch keine weiteren probleme aufgeworfen werden.

@Lennstar:Du hast zwar recht, aber durch die einstellung beim Schwierigkeitsgrad kannst du nicht ändern, das z.b. die beiden fähigkeit-99-wissenschaftler, die du in wenigen stunden kaufen willst, beim Tageswechsel durch einen Dorftrottel mit fähig. 10 getaucht wird...
verfasst am: 03.03.2007, 21:36
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Die Grundideen der Funktion halte ich für vernünftig, das Problem sind nur die Wertegrenzen.

In erster Linie würde ich vorschlagen das einige Schlüsselwerte vom Spielsatz gesetzt werden können, die momentan noch feste Konstanten sind - eventuell muss man dann zwar etwas ausprobieren bis die richtige Anzahl an richtigen Wissenschaftlern zustande kommt, aber das ist dann weniger das Problem.

1.) Wahrscheinlichkeit zum Verschwinden des Forschers.
Wenn die nicht mehr fest 15% ist sondern je nach Spielsatz gewählt werden kann ist schon die Gefahr den Superwissenschaftler zu verlieren gebannt.

2.) Wahrscheinlichkeit für einen neuen Forscher
Wenn bei den fünf durchläufen die Wahrscheinlichkeit eines neuen Forschers nicht mehr bei fest 30% liegt sondern als globale Variable von 0% bis 100% verändert werden kann, dann ist schon einiges möglich mit Skripten oder im Schwierigkeitsgrad.

3.) Genius erlaubt schaltbar machen
Momentan wird ja nie die Genius-Formel verwendet, immer nur die normale Zufallsformel mit einer sehr geringen Wahrscheinlichkeit, einen Wissenschaftler hoher werte zu erhalten. Wenn auch dies als globale Variable setzbar ist dann kann man auch einiges erreichen und skripten.

4.) Eventuell Anzahl der zu addierenden Forscher???
Diesen Wert würde ich ehrlich gesagt nur ungern variabel machen - besser würde ich es finden wenn das später mal durch einen Skriptbefehl gelöst wird, der einen vom Skript definierten Forscher zur Kaufliste hinzufügt.

Die Anzahl der verfügbaren Forscher im Arbeitsmarkt bei Spielstart muss man meiner Meinung nach auch nicht unbedingt setzen - man kann ja sowieso eintragen mit wieviel gekauften Wissenschaftlern man anfängt, und das wäre dann nur ein Tausch von Startcredits gegen Startwissenschaftler. Zumal man diese Zahl mit den Werten oben ja indirekt beeinflussen kann...

In einer späteren Stufe sollte natürlich die Liste komplett Skriptbar sein, d.h. man muss den automatischen Zufall ausschalten können (Wahrscheinlichkeit für neue Wissenschaftler von oben auf 0% setzen), bestehende Forscher aus der Liste entfernen und addieren können - das reicht, dann kann man über Startskripte jedes beliebige Verhalten einstellen, inklusive der Addition neuer Forscher zu anderen Zeiten als dem Tageswechsel.
verfasst am: 03.03.2007, 23:10
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Zitat: DirkF
1.) Wahrscheinlichkeit zum Verschwinden des Forschers.
Wenn die nicht mehr fest 15% ist sondern je nach Spielsatz gewählt werden kann ist schon die Gefahr den Superwissenschaftler zu verlieren gebannt.

Gute Lösung, so was ist garantiert nützlich.
Zitat: DirkF
2.) Wahrscheinlichkeit für einen neuen Forscher
Wenn bei den fünf durchläufen die Wahrscheinlichkeit eines neuen Forschers nicht mehr bei fest 30% liegt sondern als globale Variable von 0% bis 100% verändert werden kann, dann ist schon einiges möglich mit Skripten oder im Schwierigkeitsgrad.

s.o.
Zitat: DirkF
4.) Eventuell Anzahl der zu addierenden Forscher???
Diesen Wert würde ich ehrlich gesagt nur ungern variabel machen - besser würde ich es finden wenn das später mal durch einen Skriptbefehl gelöst wird, der einen vom Skript definierten Forscher zur Kaufliste hinzufügt.

Wenn ich bis zu der Version, in der das umgesetzt wird, gelernt habe, vernünftig mit dem X-Script umzugehen, habe ich nichts dagegen.
verfasst am: 02.04.2007, 11:08
Registrierdatum: 02.04.2007, 10:20

 Beiträge: 120
Ich finde es Doof das es keinen wissenschaftler mit 80 fähigkeitspunkten zu kaufen gibt Weil nur die sind Gut.
verfasst am: 02.04.2007, 11:30
Spielsatz Alliances

Registrierdatum: 14.07.2004, 14:47

 Beiträge: 1185
Ist halt alles eine balance-frage. Und wenn das auf editirbare scripte umgestellt wird, liegt es eh in der Hand des Spielsatztmachers ;)
verfasst am: 02.04.2007, 12:37
Spielsatz Darkage

Registrierdatum: 01.03.2005, 13:47

 Beiträge: 1846
Wissenschaftler und Techniker wahlweise per script könnte ich sehr gut in Dark Age gebrauchen - Rettungsmissionen ergeben dann nämlich richtig Sinn. Und das geht sogar schon ohne Zivis im Bodeneinsatz.
verfasst am: 20.06.2007, 21:27
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Ich habe mir nochmal ein paar Gedanken dazu gemacht.

Theoretisch könnte ich für die nächste Version alle in dem Skript oben gesetzten Konstanten aus globalen Variablen auslesen lassen.
Allerdings bin ich mir nicht sicher, ob das wirklich sinnvoll ist - denn die meisten Skripter werden eher direkten Zugriff haben wollen.

Eine Lösung wäre eine Umstellung des zweiten Teils der Routine auf eine Abfrage "wieviele sollen pro Tag hinzukommen".
Dann würde die Wahrscheinlichkeit zum verschwinden bei 15% bleiben, aber anstelle von 5 Durchläufen auf 15% Wahrscheinlichkeit wird dann ein Wert aus einer globalen Variable als Richtschnur genommen - wenn man dort dann z.B. 1,5 stehen hätte würde die Routine immer einen Wissenschaftler addieren und danach eine 50% Chance auf einen zweiten Wissenschaftler geben.
Das Problem ist hier, das mit hohen Zahlen der Arbeitsmarkt sehr schnell voll wird und man keine direkte Möglichkeit zum entfernen hätte (dafür bräuchte man einen neuen Befehl, das würde nicht so schnell gehen wie nur globale Variable einrichten)


Ein anderer Lösungsansatz wäre eine globale Variable "Wieviele sollen vorhanden sein" - dann wird der Arbeitsmarkt jeweils bis zu dieser Menge aufgefüllt.
Hier liegt das Problem, das man dann irgendwann nur noch die Schrott-Leute mit geringen Fertigkeiten im Angebot hat, weil die mehrere Tage drin bleiben und dann die Plätze blockieren.

Der Lösungsansatz von oben (alle Prozent- und Schleifenkonstanten aus globalen Variablen setzen) hat mir ein paar Variablen zuviel, das gibt unnötigen Balanceaufwand.

Sonstige Ideen?
verfasst am: 20.06.2007, 22:05
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Analog zu den UFOs - bei Bedarf deaktivieren der Automatik, und erzeugen/entfernen von Wissenschaftlern per Skript.
verfasst am: 20.06.2007, 22:44
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5596
Hast Recht, das wäre am besten. Dann lohnt es sich aber nicht die bisherigen Konstanten zu globalen Variablen zu machen, und die Skript-Befehle sind mehr Arbeit als ich momentan Zeit habe...



Du musst dich registrieren um auf dieses Thema zu antworten.
Login :: » Name » Passwort

Ladezeit (sec.): 0.005 · Powered by miniBB 1.6 with parts of 1.7 © 2001-2003