Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Anzeige der Abdeckung pro Station
#11
Ich habe das Gefühl, wir reden teilweise ein wenig aneinander vorbei. Smile
Mir ist nicht ganz klar, wie die von mir angedachten Veränderungen nun auf einmal die Wegsuche beschleunigen könnte? ?(
Ich will doch nur eine optische Lösung für den EB einer Station haben, nicht Interna der Passagiererzeugung ändern. Kann natürlich sein, daß ich mal wieder die Komplexität der ganzen Thematik nicht überblicke und diese Änderungen daher nötig sind. Oder du bist hier schon wieder 2 Schritte weiter, naja, du wirst schon wissen, was du tun mußt...

Das hier die Datenstrukturen erweitert werden müssen, ist auch mir klar. Ich denke aber, daß müßte sich doch noch in Grenzen halten.

"Und es müsste auch noch ne Menge Logik dazukommen, wenn man die Station entfernt."
Das ist richtig, aber wie du schon sagtest, es ist "nur" Logik - also lösbar. Wir sollten uns überlegen, ob wir die Daten in einer internen DB sammeln, wo sie dann auch gelöscht werden müssen, wenn eine Station entfernt wird oder ob wir erst bei Aufruf der Funktion die Daten berechnen lassen. <- damit würden wir das Problem, entfernte Station, umgehen, wenn ich das richtig überblicke. Rolleyes Smile

"Das zweite Problem besteht darin, wie man das Markieren will. Man könnte alles abdunkeln inklusive Fahrzeuge etc. Oder nur den Boden, aber dann würde man nichts sehen, wenn dort ein Haus stünde."

Liest du meine Beiträge eigentlich auch vollständig oder liest du sie nur quer? ?( Tongue
Einen möglichen Lösungsansatz habe ich doch schon in meinem ersten Beitrag vorgestellt:

"Jetzt könnte man die Funktion "UMSCHALT+2" dahingehend erweitern, daß nicht nur (fast) alle Gebäude mit dem Baustellensymbol ausgetauscht werden, sondern hier jetzt auch alle Felder, die in der DB mit einem bestimmten ´flag´ versehen sind, mit einer einfarbigen Fläche (in Spielerfarben) ausgetauscht/überlagert werden."

Habe ich mich hier so unglücklich ausgedrückt, daß der Sinn nicht mehr rüberkommt?
Wenn wir also alle Felder, die in einem EB einer Station liegen, intern sammeln oder vielleicht auch nur bei Aufruf der Funktion (wie UMSCHALT+2 z.B.) berechnen lassen, dann könnte man auf diesen Feldern doch die gleiche Funktion anwenden, wie wir das mit UMSCHALt+2 doch auch schon tun.
Nur das hier eben nicht überall Baustellensymbole erscheinen, sondern wir für die Felder eine simple, unifarbene Fläche einblenden (eine der 7 Spielerfarben würde sich hier anbieten). Also ich sehe hier kein Problem drin - du etwa?
(Man könnte hier noch überlegen, ob man Straßen/Gleise generell davon ausschließt)

Und da die Funktion ja mit einem kurzen Tastendruck aktivierbar und deaktivierbar ist, gibts auch kein Problem mit dem Sehen, ob da ein Haus stünde oder nicht.
Oder siehst du das anders?

"Und das Problem neuer Stationen ist noch völlig ungelöst."
Meinst du hier mit neuen Stationen die, die man gerade platzieren will (noch "schweben")? Dafür hätte ich auch schon einen Vorschlag, aber alles der Reihe nach. Smile
Simutrans braucht mehr Dynamik...
Zitieren
#12
Das Markieren ist das kleinste Problem, denke ich.

In der Datenbank gibt es keine Flags. Es gibt ein Array das Objekte enthält. Diesem Array sage ich pos(xy)->zeichne_boden() und wenig später pos(xy)->zeichne_rest(). An keiner Stelle würden da Flags abgefragt werden, dank Objektorientierung. Jedes Objekt weiß selbst, wie es sich zeichnet. Eine einfarbige Fläche ist da kein Problem, nur fände es vermutlich keiner toll, wenn die Städte nur noch aus einfarbigen Flächen bestehen.

Wenn sich nur bestimmte Objekte ändern sollen, dann kann man das diesen natürlich sagen. So wie z.B. Häuser zu Baustellen und Bäumchen klein werden.

Was ist also zu tun:
Der Boden nicht weißt, dass er zu einer oder mehren Stationen gehört. Das muss man ihm beibringen.

Dann muss beim Bau, Laden und Entfernen einer Station die Zugehörigkeiten entsprechend gesetzt werden.

Dann muss man den Boden und Gebäuderoutinen die stationsabhängige Abfrage vor der Grafikwahl hinzufügen. Macht die Grafikdarstellung sicher wieder etwas langsamer.

Eine ganze Menge Arbeit für etwas Augenschlecken und Simutransverlangsamen und Fehleranfälligmachen. Wenn es also nicht hier einen großen Vorteil gibt, dann werde ich das nicht so schnell tun. Wenn man so aber die Bahnhoffindung bei der Wegsuche und Passagiererzeugung deutlich beschleunigen könnte, dann wäre es wert, darüber nachzudenken.

Außerdem führt das Vorhandensein einer solchen Funktion ganz schnell zu der Nachfrage, warum man das nicht auch mit zu bauenden Stationen macht und das Spielchen geht von vorne los.

Ich hoffe, ich deutlich gemacht, warum das nichts mal eben ist.
Zitieren
#13
Ok, das hinzufügen ging einfacher als geplant. Mal sehen, wie stabil das ist ...

Was haltet ihr von dieser Anzeige:


Angehängte Dateien Thumbnail(s)
   
Zitieren
#14
Hey super, "Kleinigkeiten" wie diese erleichtern das Spielen enorm! Smile

Den Vorschlag finde ich ganz gut, aber die Farben könnten vielleicht etwas herausstechender sein.
Dirk Burkholz

"Geschäftsführer" (Forum-Administrator / Webmaster)

Simutrans bei MyMiniCity
Zitieren
#15
Schön, daß du dich doch dazu durchringen konntest, die Sache anzugehen. Smile

Ich hatte allerdings eine etwas andere optische Lösung im Sinn (etwa so ähnlich, wie im Anhang zu sehen). Will mich hier aber nicht ständig in den Vordergrund drängeln. Wenn die anderen Spieler (ich hoffe, es gibt hier noch ein paar mehr, wie die 2, 3, die hier ab und zu mal was zu einem Thema beisteuern Wink ) mit deiner Version zufrieden sind, beuge ich mich gerne der Mehrheit. Smile

Wie hast du die Sache jetzt umgesetzt? Könntest du mal darauf kurz eingehen, ohne zu viele technische Begriffe/Dteails zu verwenden? Würde ich interessieren. Danke.


Angehängte Dateien Thumbnail(s)
   
Simutrans braucht mehr Dynamik...
Zitieren
#16
Jedes Grundobjekt verwaltet eine Liste mit Stationen für die Passagierstationssuche. Bei Zeichnen wird nachgesehen, ob die Liste leer ist und wenn nicht, das Kästchen in einer helleren Spielerfarbe gezeichnet, nach allen Vorder- und Hintergründen auf der Kachel.

Das scheint auch tatsächlich die Passagiererzeugung stark zu beschleunigen, mit Faktor 16 konnte ich tatsächlich noch ein recht gut ausgebautes Spiel mit Simloops >2 laufen lassen (meine eigentliche Motivation).

Allerdings braucht das Array ca. 132 Bytes pro Kachel, also vermutlich insgesamt 8MB zusätzlich für 256x256 bzw. 132 MB zusätzlich für eine 1024*1024 Karte. Eventuell sind diese Werte zu hoch und ich könnte auch nur 16 Stationen darin speichern, was den Verbrauch halbieren würde.

Übrigens bekommt immer die zuerst gebaute Station die Passagiere. Evt. sollte also noch eine Abfrage dazukommen, ob die Station überhaupt Passagiertransport anbietet.
Zitieren
#17
Wie wär's wenn man nur die Umrandungslinien der Felder Zeichnen würde (wie die # Funktion, nur etwas dicker und in der Spielerfarbe) ?
1890-1936 Kleinbahn Karlsruhe - Durmersheim ("Lobberle")
Zitieren
#18
Die Umrandungslininen wenn du # drückst sind einfacher andere Grafiken des untergrundes, welches diese linien am rand haben, die werden nicht vom programm gemalt.
Mysterium Simutransum
Zitieren
#19
Ich bekam eine längere Mail von Gotthardlok. Ich denke, das ist interessant genung, deshalb stelle ich sie in Ausschnitten hier hin:
Zitat:1. Zeigt das Quadrat nur an, welchem Spieler die erste Station in der Liste eines Gebäudes gehört. Wenn ich aber allein spiele, möchte ich vielleicht wissen, welche Station die Passagiere dann wirklich bekommt.

2. Wird nicht jeder Spieler alle Gebiete mit Passagierzielen abdecken. Generiert ein Gebäude Passagiere, die über einen zweiten oder dritten Eintrag für die Haltestelle eines anderen Spielers erreichbar sind, verfallen dann diese, d. h. hat der Spieler mit dem ersten Eintrag ein Monopol über dieses Gebäude?

Tatsächlich bekommt auch bisher schon die erste gefundenen Station alle Passagiere. Ich baue das gerade so um, das die nächste Passagierverladestelle Vorrang bekommt.

Das ist noch ein zweiter Grund für die Liste. Ich bin nur gerade dabei, das ganze Kapazitätsschonender zu machen. Außerdem brauche ich jetzt nur noch 22 Bytes pro Quadrat (also 1.3 MB for 256² bzw. 22MB für 1024²). Damit kann man wohl leben.
Zitieren
#20
Ich habe mal getestet, mit einen von Ches' savegames aus dem Forum. Ich konnte mit 85.04.1 bi 4,8 gehen, dann war kein idle mehr. Mit der 86 und der lokalen Liste war das erst bei 7.5 der Fall. Die Simloop=2 grenze war bei 85.04 bei 7,5 und mit der neuen Version bei 12-13. Gute Nachrichten also für die Performanceherausgeforderten.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste