[DSA Manager] =?ISO-8859-1?Q?Re=3A_=5BDSA_Manager=5D_Re=3A_=5BDSA_Ma?= =?ISO-8859-1?Q?nager=5D_Modi
Status: Planning
Brought to you by:
alexnofftz
From: Tilmann K. <ds...@tk...> - 2002-05-07 21:35:19
|
Hi Oliver! Oliver Schulz wrote: > Ah, jetzt hab ich verstanden, warum Du dieses Problem nicht hast. > Ok, auf die Weise gibt's keine Reihenfolgeprobleme, aber dafür > wird ein Haufen Werte mehrfach, evtl. sogar sehr oft berechnet. > Berechnet ja, siehe andere Mail. >>>Nein, je nach Implementierung entweder >>> Modifikatoren-im-Regelwerk-Anzahl x 1 >> >>So hab ichs im Moment. > > > Das ist mir jetzt nicht ganz klar. Du kannst doch erst parsen, > wenn Du konkateniert hast? Und das kannst mußt Du doch für > jeden Char einzeln machen, oder? Ja, die Anzahl der Modifikatoren ist aber die obige, da es im Moment keine Personenwrapper gibt. Baue ich aber noch Personenwrapper ein, so habe ich die andere von dir genannte Anzahl und ich muss jeden Modifikator nur einmal parsen. Das werde ich bei gelegenheit einbauen aendert aber an der Funktion nichts, nur an der Geschwindigkeit und Uebersichtlichketi. > Ich will verhindern, daß viel hart gecodet wird (womit Du ja schon > angefangen hast). Ursprünglich war vorgesehen, daß DSAMan mit möglichst > wenig Hardcoding auskommen soll, und meines Erachtens nach ist diese > diese Anforderung nach wie vor aktuell. Hinzu kommt, daß es nicht > wirklich aufwendig ist, neben den ganzen mathematischen Op's noch > einen Zuweisungsoperator zu implementieren, der einem dann aber > eine Menge Möglichkeiten eröffnet. Das er das tut moechte ich nicht leugnen die Frage ist nur ob wir das wollen. Auch ich moechte auch moeglichst viel von der Programmierung her offen lassen. Ich finde aber auch dass zuweisungsorientiertes Scripting zu Undurchsichtigkeit fuehrt und es hat noch weitere Nachteile: - es ist extrem schwer zu debuggen - es koennen durch Fehleranfaelligkeit wirklich chaotische Effekte auftreten > >>Geht bei meiner doch auch: >>1. Modifikator: Ziel: MU Wirkung: [a<b ? 5 : 0] >>2. Modifikator: Ziel: GE Wirkung: [a<b ? 0 : 5] > > > Ja, ist mir schon klar. Aber dann sind's halt zwei Modis, wo > einer vielleicht von der Regellogik her eine Einheit gebildet > hätte. Finde ich nicht es gibt entweder einen Modifikator auf MU oder einen anderen auf GE nicht einen auf beides. Aber darueber koennten wir warscheinlich noch ewig diskutieren ;-) Ausserdem muss man da arg aufpassen ein Modifikator auf eine Eigenschaft ist z.B. nicht wirklich trivial mit "MU.effektiv = MU.effektiv + 3" ist's da nicht getan. Warum kann sich mal jeder selbst ueberlegen. > Was heißt komplette Programmiersprache? Schleifen kommen meines > Erachtens nicht in Frage, desgl. Funktionsdefinitionen, etc. > Aber: Arithmetik, Boolarithmetik, Schachtelung und bedingte > Ausdrücke sind eh schon eine nette Grundlage, und die hast Du doch > auch vorgesehen. > Wenn man da lediglich Zuweisungen und die Möglichkeit mehrer Anweisungen > (Script) hinzufügt, gewinnt man sehr "kostengünstig" die Möglichkeit, > so manches Regelproblem elegant lösen zu können. Ok ich mach mal ein beispiel fuer die Berechnung der Steigerungskosten am Talent schwimmen. Schwimmen.SteigerungsKosten = (Schwimmen.effektiv < 0 ? skt(Stufe.effektiv,Schwimmen.sktSpalte) : (Schwimmen.effektiv == 0 ? (Schwimmen.kategorie == "Basis-Talent" ? skt(Schwimmen.effektiv + 1,Schwimmen.sktSpalte) : (Charakter.inGenerierung ? Schwimmen.sktSpalte : skt(Stufe.effektiv,Schwimmen.sktSpalte)))) : skt(Schwimmen.effektiv + 1,Schwimmen.sktSpalte)) Zugegebenermassen kann man das auch beim Scripting in mehrere Zeilen aufspalten um die Uebersichtlichkeit zu erhoehen. Dann hab ich das aber nochmal fuer das Talent Schleichen, wobei ich jeweils Schwimmen durch Schleichen ersetzen muss, dann noch fuer Klettern, Etikette,.... (Moechte gar nicht wissen wie lange man den Fehler suchen muss, wenn einmal irgendwo Schwimmen nicht ersetzt wurde, vorrausgesetzt es wurde ueberhaupt bemerkt, dass irgendwo ein Fehler vorliegt) > In solchen Fällen hart zu coden, und erst mal wieder eine neue Programmversion > unter die Leute bringen zu müssen, ist keine akzeptable Alternative. > Und sicherzustellen, daß in Java und C++ hart gecodete Regeln das Gleiche tun, > ist auch ein Riesenproblem. Code ich das hart habe ich es genau einmal fuer alle Talente. Werden die Regeln geaendert (gilt nicht fuer Aenderung der Skt) muss ichs halt im Code aendern. Aber hier sollten die Regeln eigenltich festgelegt sein, kommt also beim einen Programm was anderes raus als beim anderen, so ist eines schlicht und ergreifend falsch. Bis dann, tilmann |