TheoTown - The 2D Iso Cityprojekt

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite 1, 2, 3, 4  Weiter

Worklogs TheoTown - The 2D Iso Cityprojekt

TheoTown für Android

Sonntag, 15. November 2015 von Lobby
Hi, seit einigen Monaten gibt es eine Implementierung für Android.

user posted image

Das Spielprinzip hat sich von den ursprünglichen Konzepten stark abgewandelt, und ist eher wie bei Spielen der SimCity-Reihe gehalten. Für die Programmierung kommt Java zum Einsatz, gezeichnet wird mittels den blit-Funktionen der jPCT-AE-Engine. Gebäude werden nach wie vor mittels textueller Beschreibung, dieses Mal mit json, definiert. Im Gegensatz zu den Versionen für den PC wird ein Texturatlas verwendet, der alle Grafiken enthält. Dies bringt den Geschwindigkeitsvorteil, der für die mobile Plattform erforderlich ist.
user posted image
Der Texturatlas hat eine Auflösung von 2048x2048. Aufgrund des Speicherverbrauchs ist es schwierig diese Textur noch größer zu machen, sodass es scheint, als müssen wir auch in Zukunft mit diesem Platz auskommen (ist ja noch was frei).

Weitere Informationen zum Spiel gibt es auf der offiziellen Seite www.theotown.com.
Das Spiel kann das dem Play Store heruntergeladen werden:
user posted image

R.I.P.?

Montag, 15. August 2011 von Lobby
Der Titel sagt ja schon fast das Meiste. Ist das Projekt TheoTown tot? Die kurze und knappe Antwort darauf kann meinerseits eigentlich nur 'vielleicht?' lauten.

Das Hauptproblem dürfte wohl in dem fehlenden Wissen über die Umsetzung des Einwohnersystems liegen. Mit Spieleerfindung hatte ich leider noch nie all zu viel am Hut, sodass ich einige Versuche gestartet habe, von denen mir allerdings dann keiner so wirklich gefallen wollte. Kurzum: TheoTown steckt derzeit in der Entwicklung fest. Ich weiß nicht, wie ich das Einwohnersystem umsetzen sollte.

Ich werde an dieser Stelle der Einfachheit halber auf eine genaue Aufzählung der Dinge, die TheoTown schon kann, oder auch nicht kann, verzichten. Genaueres könnt Ihr schließlich jederzeit hier als auch im offiziellen TheoTown-Forum auf www.theotown.de nachlesen.
Da ich es so versprochen habe, veröffentliche ich hiermit den derzeitigen Stand von TheoTown als OpenSource. Bitte vergesst nicht, dass dadurch nicht auch automatisch die von theotheoderich und mir erstellten Grafiken frei werden (was diese betrifft, so könnt Ihr im Zweifelsfalle gerne nocheinmal beim jeweiligen Ersteller nachfragen).

Der Download wäre nun hier zu finden (mit vorkompilierter Anwendung für Windows)(die Version entspricht der aktuellsten, die es zum Datum dieses Posts gab):
user posted image
Bitte beachtet, dass zum Kompilieren meine Modulsammlung (am besten auf dem neusten Stand) benötigt wird.
Ich stehe gerne zu Fragen bezüglich dem Programmiercode zur Verfügung, möchte allerdings darauf hinweisen, dass ich darauf verzichten werden, den ganzen Code zu erklären.

Viel Spaß damit.

Hm, nennen wir es einmal eine Pause über einen längeren Zeitraum. Ich bin gespannt, ob aus diesem als Spiel geplanten Projekt noch etwas wird.

Viele Grüße
Lobby

Wenige Einwohner aber eine menge Tools

Freitag, 24. Dezember 2010 von Lobby
Nachdem mich ein freundliches, ständig Kaffee oder Tee trinkendes und irgendetwas lesendes Smiley auf die Idee brachte, ausgerechnet heute einen Worklogeintrag zu Weihnachten, sozusagen als zusätzliches Geschenk, zu verfassen und zu veröffentlichen, habt Ihr nun diesen Worklogeintrag davon Twisted Evil .
Ich fühle mich allerdings dazu genötigt, bevor es losgeht noch folgende Warnung auszusprechen:user posted image
Da ich mich, wieder einmal, nicht ganz zurückhalten konnte, erreicht dieser Eintrag offenbar im Vergleich zu anderen Überlänge und sollte daher wirklich nur dann gelesen werden, wenn sichergestellt ist, dass der Leser die dazu notwendige Zeit auch aufbringen kann. Danke für Ihre Aufmerksamkeit.



Was machen die Einwohner denn so?
Wer sich noch an an meinen letzten Worklogeintrag hier zu TheoTown erinnert, welcher den Titel "Hilfe, die Hausbesitzer kommen!" trägt, sollte wissen, dass derzeit die Implementierung des Einwohnersystems vor der Türe steht. Noch ist dieses zwar nicht vollständig integriert, insbesondere, da es noch an Feinheiten in der Planung fehlt, aber dennoch kann ich zu folgenden Punkten schon jetzt mehr dazu verraten:
Arrow Arbeiterbilder
Da später jeder Einwohner auch einmal ein nettes kleines Bildchen bekommen soll, festgelegt durch den Ort seiner Arbeit, müssen den Gebäuden die Arbeit anbieten, auch irgendwie solche Grafiken zugewiesen werden. Wie funktioniert so etwas? Ganz einfach, da in TheoTown alle Gebäude über Plugindateien eingelesen werden, also Dateien, die Gebäuden bestimmte Attribute zuweisen, muss man diese nur um folgende zwei kleinen Parameter erweitern, und schon kann man Arbeitern ein passendes Bild und eine passende Berufsbezeichnung zuordnen:
Code: [AUSKLAPPEN]
-worker name
-worker pic

Später einmal sollen diese Bilder und Bezeichnungen in der Einwohnerübersicht und den Gebäudeinformationsfenstern Verwendung finden, da diese aber quasi noch nicht vorhanden sind, habe ich mir einmal testweise die eingelesenen Arbeiterbilder frei über den Gebäuden einblenden lassen. Das Ganze sah dann in etwa so aus (Zuweisungen ebenfalls bisher nur testweise):
user posted image
Die für die Berufe benötigten Grafiken hat Theo bereits größtenteils gepixelt und sehen wie folgt aus:
user posted image

Arrow Konzept
Wie bereits erwähnt ist das Konzept zum Einwohnersystem noch nicht ganz ausgereift, aber wie so oft habe ich auch hierzu eine grafische Darstellung erstellt, um das Ganze etwas besser zu verdeutlichen:
user posted image
Offen stehen noch Details zum Steuersystem sowie die genauen Algorithmen für die Regelungstechnik des Einwohnerpools.



Wer zahlt den ganzen Spaß?
Diese Frage bezieht sich selbstverständlich auf das, was der Spieler in TheoTown errichtet, irgendwo muss das Geld ja schließlich herkommen, doch woher nur? Es gibt auch hier, wie in so vielen anderen, ähnlichen Spielen auch, eine Art Geldkonto für die errichtete Stadt. Es wird ein Startkapital vergeben und sobald der Spieler etwas baut, wird entsprechendes Geld einfach vom Geldkonto der Stadt abgezogen. Ob es laufende Kosten für gebaute Gebäude geben soll ist noch unklar, aber da auch irgendwo her wieder Geld 'verdient' werden muss, kann man von den Einwohnern TheoTowns techlevelabhängig Steuern verlangen. Steuern haben selbstverständlich einen Einfluss auf die Attraktivität der Stadt sowie auf die Zufriedenheit der Einwohner (wobei zu unzufriedene Einwohner wie im Konzept erwähnt die Stadt logischerweise verlassen). Abgerechnet wird immer Monatsweise, wobei 'Sofortausgaben', wie etwa das Bauen, selbstverständlich sofort abgerechnet werden.
Wie viel es kostet ein Gebäude zu errichten wird in den entsprechenden Plugins über den Parameter
Code: [AUSKLAPPEN]
- price
festgelegt. Ähnliches gilt auch für Straßen, allerdings wird dort zwischen Brückentiles und Straßentiles auf Bodenhöhe unterschieden. Verwendet werden hierbei die folgenden Parameter:
Code: [AUSKLAPPEN]
- price
- bridge price

Die Preise beziehen sich auf einzelne Tiles, sodass der Gesamtpreis einer zu bauenden Straße einfach die Summe aller Einzelpreise ist. Wenn ein zu bauendes Straßentile eine bereits existierende Straße gleicher Art überkreuzt, so werden für dieses nicht erneut Baukosten erhoben.

Arrow Ausnahmen
Wie so oft gibt es auch im Finanzsystem von TheoTown Ausnahmen, beispielsweise, weil es einmal einen Tutorial sowie einen Cheatmodus geben soll:
user posted image
In diesem Falle wird das Geldsystem einfach ausgehebelt, bzw. um etwas zu der dazu verwendeten Technik im Sourcecode zu verraten: Die Funktionen zur Kontrolle ob genügend Geld vorhanden ist sowie die zur Abrechnung eines Geldbetrages werden einfach durch andere Funktionen ersetzt (auf dieses Prinzip mit Funktionspointern greife ich übrigens relativ häufig in TheoTown zurück, da es einerseits modulare Arbeitsschritte ermöglicht und andererseits leichte Manipulationen durch die Zuweisung anderer Funktionen, wie etwa in diesem Falle, zulässt).



Welcher Tag ist heute?
Um monatlich die Finanzen aktualisieren zu können, oder aber auch nur schon, damit die Gebäude in der richtigen Geschwindigkeit errichtet werden können, wird ein Zeitsystem benötigt. Bisher galt einfach nur, dass ein Tag in TT einer Sekunde entspricht, wobei dem System Monate, Wochentage oder gar Jahre dabei noch gänzlich unbekannt waren. Nun habe ich ein Zeitsystem implementiert, welches sich um den Verlauf der Zeit im Spiel kümmert und dabei ganz nebenbei auch mit Wochentagen, Monaten, Jahren und Schaltjahren umgehen kann. Da die Spielgeschwindigkeit vom Spieler verändert werden kann, ist dies aber kein starres System, sodass die Dauer eines Tages innerhalb des Spiels relativ bequem angepasst werden kann. Die derzeitige Normalzeit sieht vor, dass ein Tag in TheoTown in der Wirklichkeit in genau vier Sekunden verstreicht.



Neue Tools mit Folgen
Ich habe auch schon beim vergangenen Eintrag Einiges über die Benutzeroberfläche des Spiels offenbart. Dies soll sich nun nicht ändern, ich habe nämlich einige neue Tools in TheoTown eingebaut, insbesondere, um die bereits beschriebenen, neuen Funktionen auch nutzbar zu machen:
Arrow Das MainTool
Als erstes wäre da das Maintool zu nennen, welches, wie der Name schon vermuten lässt, recht wichtig für die Benutzeroberfläche des Spiels ist. Ich beginne mit einem Bild:
user posted image
Wie zu erkennen sein sollte, besteht dieses Tool aus mehreren Elementen, zu welchen ich nun im Einzelnen Erklärungen abgeben werde:
-Die Speedbuttons
Die fünf linken Buttons mit farbigen Icons sind die so genannten Speedbuttons, über sie lässt sich die Spielgeschwindigkeit von TheoTown anpassen.
-Der Verschiebebutton
Dieser sollte bereits bekannt sein, bei diesem Tool ist er relativ mittig angebracht und erlaubt auch hier das Verschieben des kompletten Tools.
-Der Bürgermeisterbutton
Das ist der oberste, längliche Button, er zeigt sowohl den Namen der derzeitigen Stadt (hier z.B. TheoTown City), als auch den des derzeitigen Bürgermeisters an (in diesem Falle mich).
Mit einem Klick darauf könnte irgendein weiteres Fenster (zum Bearbeiten?) erscheinen, dies ist allerdings noch nicht ganz aus-geplant.
-Der Geld&Datum-Button
Dies ist der mittlere der länglichen Buttons, er gibt Informationen über das derzeitige Datum (für welches das bereits genauer erklärte Zeitsystem zur Verwendung kommt), die Uhrzeit (über diese Miniuhr) sowie den derzeitigen Geldbestand an. Für Letzteres Steht noch offen, welche Währung (bisher 'T' wie Theo) verwendet werden soll, jedenfalls soll später einmal mit einem Klick auf diesen Button ein Geld-Datum-Informationsfenster erscheinen.
-Der Einwohnerbutton
Das ist der unterste, längliche Button, er zeigt die derzeitige Einwohneranzahl sowie deren Zufriedenheit an. Mit einem Klick auf diesen Button sollte eine Einwohnerübersicht erscheinen oder Ähnliches.
-Der Show/Hide-Multifunktionstool-Button
Das ist der ganz rechte Button, welcher bisher noch kein Icon besitzt. Mit seiner Hilfe lässt sich das Multifunktionstool (das Runde große Ding) ein-/ bzw. ausblenden.

Arrow Das HideTool
Das nächste Tool wäre nun das HideTool welches dazu verwendet werden kann, spezifische Objektarten auszublenden. Hier beginne ich auch mit einem Bildchen um eine Referenz zu haben, an der ich das Ganze erklären kann:
user posted image
Wie über diesen kleinen, völlig unauffälligen, weißen Pfeil angedeutet werden soll, kann dieses Tool über keinen entsprechenden Knopf des Multifunktions-Tools ein-/ bzw. ausgeblendet werden. In diesem Beispielbild lasse ich gerade Wohn- sowie Industriegebäude ausblenden.
Von oben nach unten und links nach rechts die Ausblende-Wirkung der Buttons dieses Tools (ohne den Verschiebebutton, der wie immer die gleiche Funktion des Verschiebens hat):
-Wohngebäude
-Geschäftsgebäude
-Industriegebäude
-Parkanlagen
-Öffentliche Gebäude
-Geschenkte Einrichtungen/Preise
-Wald/naturbelassene Bäume
-Straßenverkehr (d.h. Autos)
-Rauchwolken (wie etwa die von Fabriken)
Diese einzelnen Buttons funktionieren dabei wie Checkboxes, ändern also ihren Status beim Darauf-klicken. Die zum Ausblenden gewählten Gruppen werden auch nach Ausblenden des HideTools weiterhin ausgeblendet.

Arrow Das BridgeTool
Wenn man bisher eine Brücke gebaut hat, das heißt, eine Straße beim Bau einen Fluss kreuzte und die Straße Brücken unterstützt, so wurde einfach zwischen den verschiedenen Brücken die für die Straße zur Verfügung stehen eine ausgewählt (per Plugin kann man einer Straße beliebig viele Brücken zuordnen) und verwendet. Nun, da davon auszugehen ist, dass der Spieler da etwas mehr mit zu bestimmen haben möchte, wo er das doch beim Gebäude-bauen ebenfalls kann, steht die Frage nach einer Auswahl für die zu bauende Brücke offen. Diesen Wunsch möchte ich mit dem BridgeTool erfüllen, es erscheint, nachdem eine Brücke errichtet wurde und sieht wie folgt aus:
user posted image
Der Preis der Brücke ist unabhängig von ihrer Art, sodass durch der Ändern des Brückentyps keine Probleme auftreten. Wenn man im BridgeTool die Art der Brücke verändert, so wird dazu nicht nur die Vorschau im dazugehörigen Fenster aktualisiert, nein, auch die bereits errichtete Brücke wird dementsprechend angepasst. Wird mit dem Straßenbau fortgefahren, ohne das BridgeTool manuell zu schließen, so wird automatisch beendet (wobei die derzeit ausgewählte Brücke übernommen wird). Gleiches gilt für das Tool natürlich, wenn man während es angezeigt wird die Brücke wieder abreißt.
Diese grüne Brücke habe ich als Platzhalter eingebaut, da mit nur zwei verschiedenen Brücken, die sich wirklich nur in ihrer Farbe unterscheiden, das Ganze dann doch noch etwas langweilig aussah.

Arrow Tooltipps über der Stadt
Für die Zukunft ist ein so genannter Infomodus eingeplant, in dem die Maus über allen möglichen Objekten auf dem Spielfeld über Tooltipps nähere Informationen dazu ausgibt, und bei einem Klick darauf ein passendes Informationsfenster öffnet. Wie man sieht bisher noch testweise, auch lasse ich die Orte der Arbeit/die Wohnung entsprechend einfärben sowie die Verkehrswege visualisieren (in Zukunft hoffentlich auch noch mit Farbe):
user posted image
Die unglücklichen Gesichter über den beiden Gebäuden links unten bedeuten, dass dort eine recht geringe Gebäudezufriedenheit herrscht (<50%), vermutlich aufgrund des starken Verkehrs.

Arrow Die Schnappschuss-Funktion
Wie sagt man doch so schön, die kleinen Dinge machen den Unterschied. Aus diesem Grund habe ich auch wieder einen Screenshot-Button in TheoTown eingebaut, welcher auf Mausklick das derzeit Sichtbare als .png-Datei abspeichert:
user posted image

Arrow Verschieben und gespeichert
Wie inzwischen bekannt sein sollte, kann man alle Tools in TheoTown verschieben. Schön und gut, so kann sich jeder das Interface so zurecht klicken, wie es ihm gefällt, doch wenn das dann nicht gespeichert wird, ist es auch ein bisschen sinnlos, nicht? Aus diesem Grund werden nun die Positionen sowie der Sichtbarkeitsstatus der einzelnen Tools erfasst und in einer gadgets.cfg-Datei gespeichert. Beim erneuten Starten des Spiels kann so ermöglicht werden, dass alle Gadgets wieder dort sind, wo man sie letztens hin geschoben hat. Löscht man die Datei gadgets.cfg, so werden die Tools wieder so wie standardmäßig eingestellt Verschoben.



Neue Gebäude
Leider ist theotheoderich (der Schöpfer dieses Spiels, für den Fall, dass das schon jemand vergessen haben sollte) sehr sehr sehr beschäftigt, sodass ich dieses Mal leider keines seiner kleinen Pixelwunder präsentieren kann. Derzeit liegt der Schwerpunkt bei der Arbeit an TheoTown sicherlich in der Programmierung, aber dennoch kann es nicht schaden, wenn doch noch hin und wieder die Sammlung von Gebäuden um das ein oder andere Exemplar erweitert wird. Lange Rede, kurzer Sinn, ich habe mich selbst wieder einmal an einem Gebäude versucht, es handelt sich dabei um Folgendes:
Arrow Moderner Büroturm
Wenn ich etwas 'pixle', so habe ich zumeist anfangs weder ein klares Bild dessen, was ich erschaffen werde, noch wenn es fertig ist eine Ahnung davon, wie ich es am besten einordne. Dieses Gebäude beispielsweise könnte ebenso gut ein Wohngebäude sein, aber das ist es jetzt eben nun einmal nicht, sondern ein Geschäftsgebäude.
Das Gebäude in Normalgröße, Techlevel 4, Größe 4x4:
user posted image
Nun noch ein bisschen vergrößert:
user posted image
Ich hoffe es gefällt, mehr gibt es dazu eigentlich nicht zu äußern (außer natürlich vielleicht noch, dass ich für Kritik stets offen bin).



Mehr Information
Wie so oft, nenne ich hier die Homepage von TheoTown, da ich dort zumeist, wohlgemerkt aber nicht immer, ein bisschen mehr ins Detail gehen kann, da ich dort einzelne Themen separater handhaben kann.
www.theotown.de



Besinnliche Feiertage
Wenn ich doch so auf den Kalender schaue, so denke ich, ist dieses Weihnachtsgeschenk auch gleich eine gute Gelegenheit, um euch da draußen besinnliche und fröhliche Weihnachtsfeiertage und einen schönen heilig Abend zu wünschen.


Nun bin ich bereits wieder einmal am Ende eines Worklogeintrags angelangt und möchte mich damit, wieder einmal, von euch, werte Leser, verabschieden. Bis zum nächsten Mal
Lobby

Achtung, die Hausbesitzer kommen!

Mittwoch, 10. November 2010 von Lobby
Lange ist es still gewesen, doch genau das vermag nicht fehlinterpretiert werden! An dieser Stelle zu Anfang gleich einmal die Warnung, dass dieser Worklogeintrag wieder einmal einer der etwas längeren Sorte zu werden vermag, aber seht selbst.


Arrow Pluginisierung, die Macht der Plugins
Ein Plugin besteht aus einer Plugindatei im ini-Dateiformat sowie den dazugehörigen Ressourcen, diese werden der Übersichtlichkeit wegen in einen Ordner gepackt, welcher sich wiederum im Plugin-Ordner von TheoTown befindet. Die ini-Datei enthält in interpretierbarer Textform alle zu den Ressourcen nötigen Informationen. Der Sinn des Ganzen besteht darin, dass Bestandteile des Spiel, wie etwa die Gebäude, ohne Codeänderung manipuliert werden können.
Bisher wurden tatsächlich nur die Gebäude über solche Plugins eingeladen, wohingegen die Autos und Straßen eher 'hardcoded' eingelesen wurden. Nun, genau das hat sich nun geändert, sowohl Autos als auch Straßen werden nun ebenfalls über Plugins eingelesen. Worin liegen denn da die Vorteile? Na, hierin:
+Straßen und Autos können nun leichter hinzugefügt werden
+Autos besitzen nun auch eine ID, können also identifiziert und daher sowohl mitgespeichert und geladen, als auch von mehreren Gebäuden verwendet werden
+Brücken können Straßen nun bequem zugeordnet und benannt werden (es sind mehrere Brückenarten pro Straße möglich, im Spiel wird in diesem Falle einfach ein Auswahlfenster erscheinen)
+Der Code ist schöner, davon profitiere zumindest ich und daher in gewisser Weise auch der Endanwender
+Autos könnten in Zukunft individuelle Einflüsse erzeugen
+Autobahnen werden realistischer, allerdings ist diesbezüglich dennoch noch Einiges zu tun

Arrow Achtung, hier wird gebaut!
Es geht, wie könnte es auch anders sein, um Baustellen. Um einen kleinen Vergleich zu den ehemaligen Baustellen zu machen welche von theotheoderich zeitweise verwendet wurden:
user posted image user posted image user posted image
user posted image

Soweit das "alte" TheoTown, bei dem "neuen" sind Gebäude bisher immer sofort erschienen, nach dem man den Befehl zum Bau mit einem Mausklick gegeben hat. Nun besitzen Gebäude eine individuelle Bauzeit und werden während dieser mehr oder weniger Schritt für Schritt errichtet:
Schritt 1:
Der Spieler gibt den Befehl zum Bau, selbstverständlich muss er dazu ein Gebäude ausgewählt haben, anschließend wird auf den zu bebauenden Feldern eines der folgenden Tiles sichtbar:
user posted image
Die Farbe passt sich der Art des Gebäudes an, so besitzen Baustellen von Geschäftsgebäuden beispielsweise immer nur Baustellenbodengrafiken mit blauem Kasten. Im Spiel sieht das dann folgendermaßen aus, der Kran zu dessen Erklärung ich gleich noch komme ist ebenfalls schon zu sehen:
user posted image

Schritt 2:
Jetzt wird richtig gebaut, die individuell gefärbten Baugerüste werden hochgezogen und der individuell gefärbte Kran, welcher im Übrigen nur an Gebäuden mit der Grundfläche von mindestens 2x2 erscheint, wächst mit den Gerüsten mit. Das endgültige Gebäude wird dabei, je weiter der Bau ist, immer sichtbarer.
user posted image

Schritt 3:
Nun ist das Gebäude schon fast fertig, die Baugerüste haben bereits in etwa die Höhe des endgültigen Gebäudes erreicht und werden nun nach und nach wieder abgebaut während das Gebäude dabei noch sichtbarer wird. Der Kran folgt erneut dem Gerüst und wird ebenfalls kleiner.
user posted image

Schritt 4:
Das Gerüst ist abgebaut, der Kran ist weg, das Gebäude ist fertig! Was gibt es Schöneres?
user posted image

Arrow Grafiken werden sinnlos
Das mag sich zwar etwas seltsam anhören, aber man sollte diese Aussage auch nicht auf alle in TheoTown verwendeten Grafiken beziehen, es handelt sich hierbei nämlich nur um die YesNo-Grafiken. Beim Bau von Gebäuden erscheint unter der Maus (oder unter der virtuellen Maus) ein nicht existentielles Phantomgebäude das einerseits zeigen soll, wie das Gebäude hier gebaut einmal in etwa aussehen könnte und andererseits, über seine Farbe, ob es hier überhaupt gebaut werden kann. Falls der bau möglich ist, so erscheint das Phantomgebäude grün, anderenfalls rot. Zu der Zeit, in der TheoTown noch in Blitz3D programmiert worden war, wurde jedem Gebäude per Plugin eine Grafik zugeordnet die die beiden Phantomgrafiken enthielt (also das Gebäude einmal grün und einmal rot eingefärbt), das sind die YesNo-Grafiken. Warum waren diese notwendig? Weil es ohne die Verwendung von 3D-Befehlen in Blitz3D nicht möglich ist Bilder ohne langsame Pixelbefehle einzufärben.
In BlitzMax nun jedoch wurden diese Grafiken überflüssig, da man diese ebenso gut ohne Geschwindigkeitsverlust in Echtzeit eingefärbt einzeichnen lassen kann. Hier der grafische Vergleich:
Phantomgebäude mit antiken YesNo-Grafiken:
user posted image user posted image
Phantomgebäude jetzt:
user posted image user posted image
Der Unterschied zwischen Alt und Neu fällt wie so oft größer aus als erwartet, auf dieses Thema werde ich allerdings etwas weiter unten noch genauer eingehen.
Es bleibt zu erwähnen, dass ohne die YesNo-Grafiken ungefähr 10 MB des Arbeisspeichers eingespart werden können. Das mag zwar in Zeiten der 16 GB RAM Rechner nicht besonders viel sein, aber ich halte das dennoch, wie zu sehen, durchaus für erwähnenswert.

Nachtrag:
Aufgrund von Protesten gegen die neue Darstellung von Phantomgebäuden habe ich noch einmal etwas an deren Darstellungsweise herumgespielt, dabei kam folgendes Ergebnis heraus:
user posted image user posted image
Ich werde diese Darstellung nun vorerst so belassen, denn wie bereits richtig festgestellt worden ist, handelt es sich hierbei tatsächlich nur um eine Kleinigkeit welche sich jederzeit ändern lässt. Über Pixmaps 'richtig' eingefärbte Bilder bzw. Graustufen selbst zu erzeugen halte ich bei der Menge an Gebäuden für zu zeitaufwändig.
Auf ChaosCoders Rat hin werden nun die Phantombilder nahezu unsichtbar, sobald die Maus sich über einem Gadget befindet welches ein Bauen/Abreißen an dieser Stelle unmöglich macht (damit der Spieler weiß, wann er unbesorgt klicken kann).

Arrow Noch mehr Abgase braucht wie Welt
Nein, natürlich nicht, zumindest nicht die reale Welt! In TheoTown jedoch konnten Fabriken noch die Möglichkeit, mehrere Rauchemitter zu besitzen, gut vertragen. Damit können nun Fabriken endlich aus mehreren Schloten gleichzeitig Qualmen, das macht das Spiel nun gleich ein wenig lebhafter. Die Positionen und Arten der Rauchemitter können dabei über das entsprechende Plugin festgelegt werden, außerdem können, rein theoretisch, alle Gebäude Rauch emittieren (ob das sinnvoll ist wäre die andere Frage). Hier ein kleines Standbild um solche Fabriken einmal zu zeigen:
user posted image

Arrow Die Einwohner und Ihre Ziele
Jetzt komme ich zu einem derzeit recht aktuellen Aspekt des Spiels, nämlich Einwohner welche inzwischen auch schon mehr oder weniger implementiert sind. Das Einwohnersystem ist noch nicht ganz aus der Planungs- und Experimentierphase heraus, aber das Ganze sollte sich in etwa folgendermaßen abspielen:
-Neuankömmlinge in der Stadt haben in der Regel kaum oder gar kein Geld, daher suchen sie sich ein möglichst billiges Haus (Techlevel I) mit freier Wohnung und ziehen dort nur unter der Voraussetzung eines in der Nähe liegenden, geeigneten Arbeitsplatzes ein. (Dabei gilt es auch noch weitere Faktoren zu berücksichtigen, aber dazu mehr sobald die Planung dazu abgeschlossen ist)
-Haben sich solche Menschen einmal eingefunden und auch schon etwas Geld angespart (nur bei entsprechenden Steuern und Mieten möglich), so fangen sie an sich nach Wohnungen und dazugehörigen Jobs des nächstens Levels umzusehen
-Verliert ein Einwohner einen Job, etwa, weil es vom Spieler abgerissen wurde, so sucht er sich einen neuen gleichen Levels und muss, falls er keinen neuen Job findet, wieder einen Level nach unten oder gar ganz aus der Stadt auswandern
-Hat ein Einwohner trotz Arbeit nicht genügend Geld um sowohl Steuern als auch Miete zu bezahlen, so muss er ebenfalls entweder einen Level absteigen oder aus der Stadt auswandern
Jeder Einwohner ist dabei ein Individuum und kann daher separat über ein Informationsfenster, so ist es zumindest eingeplant, abgerufen werden. Zur Visualisierung könnte man beispielsweise alle von Einwohnern eines Gebäudes genutzten Verkehrswege und Ziele grafisch darstellen, in etwa so:
user posted image

Nachtrag:
Ursprünglich wollte ich mir die Details zu den Einwohnern sparen, aber da es offenbar dringenden Bedarf um Aufklärung in diese Richtung gibt nun Folgendes:
1. Pro Wohngebäude gibt es eine maximale Anzahl möglicher Einwohner, diese ist der Übersicht zuliebe meistens deutlich kleiner als sie es in der Realität wäre. Es können also mehrere Einwohner ein Haus bewohnen.
2. Pro Einwohner werden, so zumindest geplant, nur relativ wenige Informationen gespeichert, also nicht mehr als Wohnort, Arbeitsplatz und der Weg zum Arbeitsplatz. Der Speicherverbrauch ist folglich sehr gering und normalerweise nicht spürbar.
3. Jedes Gebäude wird im Durchschnitt nur einmal pro Sekunde geupdated und damit ebenso dessen Einwohner ( Arrow es kommt zu keiner spürbaren Verlangsamung des Spiels).

Arrow Dem Benutzer sei das Interface gewidmet
Die Benutzeroberfläche ist ein wichtiger Teil des Spiels, im Falle von TheoTown kann man ihre Elemente verschieben und auch sonst recht viel mit ihnen machen. Bisher, das heißt seit dem letzten öffentlichen Post meinerseits hier, lief die Benutzeroberfläche größtenteils unabhängig vom eigentlichen Spiel, doch genau das hat sich nun, neben einigen anderen Programmierinternen Dingen, geändert!
In TheoTown gibt es ein paar sehr wichtige Haupttools, auf die ich nun näher eingehen werde:

Das Multifunktionstool
Dieses Menü, bestehend aus einem Kreis mit drei Knöpfen sowie einer Fläche in der Mitte um das Ganze zu verschieben, bildet das Kernstück der Bedienung des Spiels. Jeder der drei Knöpfe fasst einige Aktionen zusammen, die als Buttons um den Kreis herum erscheinen, sobald man einen der drei Knöpfe betätigt (Man kann sie auf gleiche Art und Weise wieder verschwinden lassen). Mit Hilfe dieser neu erschienen Buttons kann man alles tun und lassen was man will, das bedeutet Dinge ein-/ ausblenden, das Baumenü starten, das Spiel speichern oder gar beenden usw.
Ihr habt es vermutlich bereits auf dem ein oder anderen Bild begutachten können, aber dennoch hier noch einmal ein Bild von dem Ganzen:
user posted image

Die Minimap
Auch dieses Tool konnte bereits hier und da begutachtet werden. Man kann es, wie alle Bedienelemente in TheoTown, herumschieben und es sogar vergrößern/verkleinern. Es dient insbesondere der Orientierung, über die Tasten um die Minimap herum kann man zusätzlich auch hinein- bzw. herauszoomen. Hier habe ich ebenfalls ein Bildchen gemacht, die Symbole auf den Buttons sollten selbsterklärend sein (das '+' und das '-' werden dabei übrigens noch Farbe bekommen):
user posted image

Das Bautool
Davon habe ich bisher nichts veröffentlicht, warum nicht? Ganz einfach, es existierte bisher nur als Konzept, und Konzepte veröffentliche ich eben nur ungern Wink .
Um mir etwas Erklärungsarbeit zu sparen, aber auch, um den Vergleich zwischen Konzept und Umsetzung zu zeigen, gibt es hier, ausnahmsweise, die Planung für das Aussehen des Bautools zu sehen:
user posted image
Und nun die fertige Umsetzung, wobei der Rand jeweils verschiedene Farben, ja, sogar Muster, je nach gewählter Kategorie, annehmen kann. Diese Kategorien reichen dabei von Straßen und Gebäuden bis hin zum Abreißen, es handelt sich also auch um ein Bulldozertool Wink . Aufgerufen mit den jeweiligen Kategorien wird das Baumenü über die entsprechenden Buttons des Multifunktionskreises. Nun aber wirklich das Bild der Umsetzung:
user posted image
Man möge erkennen, dass ich einen Techlevel zu viel eingeplant habe, aber Hauptsache die Umsetzung stimmt, nicht? Smile

Die Touchscreen-Bau-Maus/Die Bauhilfe
Dieses Tool kann vom Baumenü aus aufgerufen werden, es dient in erster Linie um das Präzise Bauen auch für TouchPCs zu ermöglichen, bei denen man nicht immer in der Lage ist durch Drücken den richtigen Bauort zu erwischen... Unter Verwendung der Maus kann es aber dennoch durchaus auch nützlich sein, aber das werdet Ihr dann beim Release irgendwann selbst herausfinden können:
user posted image

Die Schriftart
Ich habe, bisher provisorisch, das Spiel einmal von der BlitzMax-Standardfont befreit, welche nicht nur unschön war, sondern auch Umlaute nicht darstellen konnte. Ich weiß noch nicht, ob die nun verwendete auch weiterhin drinn bleiben wird, aber bisher scheint sie doch ganz gut zum Spiel zu passen.

Die Aktionsbuttons
Alle Knöfpe mit farbigem Icon, auch die, die eines bekommen sollen, führen nun beim Betätigen eine kleine Animation aus um dem Benutzer ein Feedback über den erkannten Klick zu geben 8) .

Die Multitoucherkennung
Wo es sich hier doch um ein Spiel handelt, das vollständig mit nur einer Maus bedient werden kann, ist auch eine Multitoucherkennung integriert die insbesondere beim Interface zur Verwendung kommen kann (z.B. verschieben mehrerer Gadgets zur gleichen Zeit). Um dem User auch hier besseres Feedback zu geben, werden Berührpunkt mit dem Bildschirm mit einem leicht leuchtenden Schleifer hervorgehoben, auf die Verwendung mit der Maus hat diese Neuerung keinen Einfluss (etwas, das ich möglicherweise noch ändern werde). Mehr Infos zum Multitouch sind in diesem Post zu finden.

Die Tooltips
Wie in meinen vorherigen Bildchen schon relativ gut zu sehen, gibt es für alle Buttons auch entsprechende Tooltipps die dem Benutzer dabei helfen sollen sich im Spiel zu Recht zu finden. Sie erscheinen, sobald die Maus sich über mehrere Sekunden auf demselben Gadget befindet und werden dabei sanft eingeblendet.

Arrow Wie sieht das Ganze denn in Aktion aus?
Es möge dem ein oder anderen schon aufgefallen sein, dass es wieder einmal Zeit für ein Video wäre. Aber bevor ich zu diesem komme, erst noch einmal die Diskussion zu Alt und Neu.
Mir ist es zugegebenermaßen sehr wichtig, nachher nicht zu viele Stimmen à la "was hat der nur aus diesem einst grandiosen Spiel gemacht? Evil or Very Mad " zu hören, welche ich insbesondere deswegen fürchte, weil ich bei der Benutzeroberfläche so sehr vom ursprünglichen Konzept abweiche. Auch mag es dem ein oder anderen sauer aufstoßen, dass ich die pixeligen Grafiken von theotheoderich mit diesem neumodischen Alphazeugs mische. Nun gut, das sind durchaus nachvollziehbare Meinungen, aber irgendjemand muss das Aussehen eben nun einmal entscheiden und ich habe mich eben für etwas Neues und vor allem Innovatives entschieden, etwas, mit dem - so hoffe ich - alle leben können.
So, nachdem das nun geklärt wäre zum Video, aufgenommen vom User ich:
Auf Youtube
Zum Vergleich habe ich auch noch ein älteres Video bereitgestellt, aufgenommen von theotheoderich im November 2007:
Auf Youtube
(Die Direktlinks zu downloadbaren Videodateien musste ich leider serverbedingt herausnehmen)

Arrow Der Pluginmanager, er lebt noch
Ein größeres Thema des letzten Eintrags hier war der so genannte PluginManager, ein Programm, mit dessen Hilfe das Editieren von Plugins erleichtert werden sollte. Da es einige Neuerungen gab, gibt es inzwischen auch eine Neue Version, nämlich v0.0.2!
Download für Windows (RAR-Archiv, Größe: ~388KB)
Download für MacOS X (Intel) (ZIP-Archiv, Größe: ~372KB)
Wie immer liegt der BlitzMax-Source jeweils aus diversen Gründen bei, verwendet wurde das inzwischen öffentliche MaxGUI-Modul.
Unter Windows sieht das Ganze nun so aus:
user posted image
Neue Features sind neue Plugintypen, ein Dateiexplorer für die Ressourcenauswahl und das manuelle setzen einer neuen ZufallsID.

Arrow Neue Bauten
Auch der Gebäudekatalog hat sich wieder einmal vergrößert, folgende neue Pixeleien hat theotheoderich für TheoTown gepixelt:
Ein 2x2 großes Stadthaus
user posted image user posted image

Ein 5x5 großes, modernes Kohlekraftwerk
user posted image user posted image

Ein 2x2 großes Wohnhaus aus den 50er Jahren
user posted image user posted image

Eine 6x6 große Fabrik als Überarbeitung eines zu kleinen Gebäudes gleicher Art
user posted image user posted image



Arrow Mehr Infos
Wie immer gibt es noch mehr Lesestoff zum Thema auf der Homepage von TheoTown, diese findet Ihr unter der folgenden Adresse:
www.TheoTown.de


Das war es auch schon wieder, viele Grüße und falls vorhanden, viel Glück bei euren eigenen Projekten
Lobby

Einflüsse, Einflüsse und nochmals Einflüsse

Donnerstag, 26. August 2010 von Lobby
Der Titel dieses Worklogeintrags gibt es, denke ich, recht gut wieder. Diesmal geht es unter Anderem tatsächlich um Einflüsse Smile .

Arrow Worum geht es bei den Einflüssen?
Ich habe im letzten Worklogeintrag hier bereits erklärt worum es geht, allerdings werde ich nun etwas weiter ausholen...
Fange ich noch einmal ganz von vorne an. In TheoTown baut der Spieler alle Gebäude selbst, setzt also, nicht wie in diversen anderen Städteaufbauspielen, keine Grundflächen bestimmter Arten auf denen von alleine gebaut wird. Nun ist TheoTown aber kein Stadteditor, sondern ein Städteaufbauspiel (außer vielleicht im Cheatmodus), was nun bedeutet, dass der Spiel auch irgendwie gefordert werden muss.
Soweit so gut, eine Sache unter vielen ist nun das Einflusssystem, es beeinfluss mit seinen Einflüssen sowohl was man baut, wo man baut und ob Einwohner kommen und/oder gehen.

Arrow Wie viele Einflüsse gibt es?
Insgesamt gibt es für jedes einzelne Feld ganze 15 Einflüsse (früher waren es sogar einmal 16 Shocked ). Im Folgenden eine kleine Auflistung aller Einflüsse:
Positive Einflüsse (Werte die für den Bau eines Gebäudes mindestens erfüllt sein müssen):
-Wasserverfügbarkeit
-Energieverfügbarkeit
-Medizinerreichbarkeit
-Religionsausübungsmöglichkeiten
-Sportmöglichkeiten
-Polizeiverfügbarkeit
-Feuerwehrverfügbarkeit
-Kulturgüter
-Freizeitmöglichkeiten
-Bildungsmöglichkeiten
-Radiovielfalt
-Fernsehvielfalt
Negative Einflüsse (Werte, die für den bau eines Gebäudes höchstens vorhanden sein dürfen):
-Luftverschmutzung
-Wasserverschmutzung
-Lärm/Störende Geräusche

Jeder dieser Einflüsse wird nun also für jedes einzelne Feld verwaltet und hat dabei einen Wertebereich von 0 bis 100 (Angabe daher in Prozent). Jegliche Gebäude können, definiert durch ihre Plugindatei, Einflüsse emittieren. Rechnerisch wird hierbei, zumindest bisher, so vorgegangen, dass Einflüsse höherer Wertigkeit Einflüsse mit geringerem Wert überschreiben (Ausnahmen wären dabei gegebenenfalls sinnvoll).
Berechnet werden die Einflüsse stehts nur einmal pro Sekunde, das schont den Rechner und ist, wie wenige Tests schnell zeigten, vollkommen ausreichend (es muss hin und wieder neu berechnet werden, da sich stetig ändernde Dinge, wie etwa die Straßenbelastung, ebenfalls auf die Einflüsse auswirken).

Was das Bauen betrifft, so benötigt jedes Gebäude für den Bau bestimmte Einflüsse. Sind diese Einflüsse, nach dem das Gebäude errichtet wurde, nun nicht mehr erfüllt, so gibt es eine "Gebäudeunzufriedenheit" die die Einwohner irgendwann bis hin zum Ausziehen zwingt. Die für ein Gebäude benötigten Einflüsse werden ebenfalls per Plugin festgelegt, mit Außernahme der Wohn-, Geschäfts- und Industriegebäude, für diese gibt es jweils je Techlevel festgelegt Werte (hier muss unter Anderem eine gewisse Balance gefunden werden).

Arrow Wie stellt man Einflüsse grafisch dar?
Ich habe mir hierzu so genannte Einflussmasken entwickelt, diese geben für jeden Einfluss einen minimal angeforderten Wert an und können daraus den Wert, wie sehr ein Feld diese Einflüsse erfüllt, errechnen. Anhand dieses Wertes kann dem Feld anschließend eine Farbe zugeordnet werden. Um dadurch nicht die Anzahl einzuzeichnender Bilder zu erhöhen (das wäre sehr rechenintensiv), zeichne ich anschließend die Bodentiles mit entsprechend gesetzter Farbe ein (ein Hoch auf BlitzMax).
user posted image
(Im Baumodus wird mit Hilfe von Farben von/bis/zwichen rot und gelb angezeigt, wie viel noch zu einem möglichen Bau fehlt. Grün zeigt an, "hier kann das gebaut werden" (zumindest den Einflüssen nach). Damit ein Gebäude auch wirklich errichtet werden kann, müssen alle Tiles auf denen das Gebäude einmal stehen soll grün markiert sein. Bitte beachten, dass die genauen Einflusswerte vorerst größtenteils nur provisorisch gesetzt wurden.)

Doch jetzt kommt natürlich die Frage auf, ob man da nicht möglicherweise auch gleich die Minimap mit einfärben könnte, aber dazu komme ich jetzt:

Arrow Einflüsse auf der Minimap
Die Minimap besteht aus einer Pixmap/einem Image das normalerweise nur beim Bauen/Abreißen neu bezeichnet wird. Grund hierfür ist vorallem die Zeit, die insbesondere größere Pixmaps beim Locken und zurück-Locken benötigten.
Jetzt besteht die Minimap aus zwei Pixmaps/Images die übereinander gezeichnet werden. Erstaunlicherweise wäre das Neuzeichnen auf die Pixmaps bei einer Map der Größe 128*128 sogar echtzeittauglich, allerdings wird auch diese Aufgabe, da es eben nicht häufiger von Nöten ist, nun auch immer nur einmal pro Sekunde erledigt. Ich frage mich, ob Maps von Größen wie 1024*1024 da jetzt überhaupt noch sinnvoll wären, denn da werden Pixmaps dann doch sehr langsam (Tests zeigen leider ein klares "ja, es ist zu langsam").
Ich habe mich dazu entschieden das Bild der Einflussminimap mit LighBlend über das "echtfarben"-Minimapbild zu zeichnen, das Ergebnis sieht dann nämlich in etwa so aus (Kontrast zwischen Minimap und "realer" Map ist mir wichtig):
user posted image
(Hier ist nun lediglich die Luftverschmutzung dargestellt, rot=hohe Verschmutzung, grün=niedrige Verschmutzung)

Arrow Wie bearbeitet man die Plugindateien?
Möglichkeit 1: Man schnappt sich einen simplen Texteditor, kennt alle für ein TheoTown-Plugin möglichen Parameter und verwendet diese richtig.
Möglichkeit 2: Ich habe vor kurzem einen Editor zur leichteren Handhabung der Plugin-Inis von theoTown geschrieben, den PluginManager!

Um das einmal wiederholt zu haben: Ein Plugin besteht in TheoTown im Idealfall aus einem Ordner im TheoTown Unterordner data/plugins, der eine .ini-Datei mit den Kofigurationen enthält, sowie alle benötigten/verwendeten (Grafik)Ressourcen. In dieser .ini-Datei sind nun schön untereinander alle Parameter aufgelistet und können daher relativ bequem bearbeitet werden.

Der PluginManager übernimmt nun lediglich den Part diese Parameter einzulesen und in einer fast noch übersichtlicheren Zusammenstellung anzuzeigen. Hier kurz zwei Screens zum Zeigen des Managers:
user posted image user posted image
(Nur ein Klick von der Vergrößerung entfernt!)
Wie zu sehen ist, ist das Tool auch MacOS tauglich (danke an den User ich für den Screen unter OS X) da ich zu dessen Entwicklung BlitzMax+MaxGUI verwendet habe. Hier der/die Download(s):
Download für Windows (Größe: ~268 KB)
Download für OS X Intel (Größe: ~477 KB, für den Download ebenfalls nocheinmal ein Dankeschön an den User ich)
Der Sourcecode liegt in beiden Paketen bei, Leute mit Linux oder PPC können es sich also, unter gegebenen Umständen, selbst zurecht compilen.

Achja, weshalb ich das Ding hier anbiete? Es war schon immer ein Grundkonzept von TheoTown, dass auch Außenstehende an dem Projekt auf irgend eine Art und Weise mithelfen können. Aus diesem Grund habe ich mich auch um eine recht umfangreiche Dokumentation des PluginManagers bemüht (man möge mir die Verwendung von Baukastentools dabei doch bitte verzeihen) und denke, dass mir das auch, zumindest im Ansatz, schon ganz gut gelungen ist. Also einfach einmal hereinschnuppern Wink .

Das Tool ist eigentlich fertig, allerdings wird es hin und wieder um neue Parameter erweitert werden... Aber auf das Thema werde ich noch in zukünftigen Worklogeinträgen kommen Smile .

Arrow Neue Gebäude
Es tut sich leider in letzter Zeit recht wenig bei mir was das Pixeln betrifft, aber theotheoderich war wie immer, soweit es seine Zeit zuließ, sehr fleißig:
Ein Wohnhaus für Stufe/Techlevel 2 oder 3 auf 2x2 Feldern:
user posted imageuser posted image

Ein Museum auf 5x5 Feldern:
user posted imageuser posted image
(theo, alias theotheoderich, behält es sich selbstverständlich vor, noch Änderungen an den Gebäuden vorzunehmen Exclamation )
Ich hoffe, dass ich auch bald wieder einmal zum Pixeln komme, aber mit dem Programm selbst muss es eben doch auch weitergehen Rolling Eyes .

Arrow Weitere Infos
Wie immer gibt es noch mehr Lesestoff auf www.theotown.de, der offiziellen Homepage von TheoTown!
Zu Fragen, Anregungen oder Ähnlichem bin ich wie immer offen, schreibt mir hier einfach in die Kommentare oder Ähnliches Wink .



So leid es mir auch tut, aber jeder Worklogeintrag hat irgendwo ein Ende und das Ende von diesem hier ist eben nuneinmal hier. Bleibt nichts, außer auf den nächsten zu warten, bis dann Wink ,
Lobby

Es war einmal... und ist noch immer!

Freitag, 13. August 2010 von Lobby
Und es geht weiter, wobei ich dabei nicht vergesse mich für die lange "Ruhepause" dieses Worklogs zu entschuldigen, manchmal kommt man vor lauter Motivation für das Projekt selbst mit der öffentlichen Vorführung einfach nicht mehr richtig hinterher (manche wissen sicherlich was ich damit meine) Rolling Eyes .
Wie dem auch sei, dann mache ich diesen Eintrag eben einfach etwas umfangreicher Very Happy .


Arrow Dinge, die sich die letzten Monate so getan haben
- Wenn Straße nachträglich von einem Gebäude, das diese jedoch benötigt, entfernt wird, so erscheint das "no street" Symbol über dem Gebäude und die "Arbeit" des Gebäudes wird eingestellt.
user posted image

- Die Minimap funktioniert nun einwandfrei und auch nicht quadratische Maps, falls es diese jemals geben sollte, funktionieren problemlos. Hier die Standardmap einfach etwas verzerrt:
user posted image

- Straßenbelastung wird nun für alle Straßentiles aufgezeichnet und kann auf Wunsch grafisch dargestellt werden, zum Sinn des Ganzen komme ich gleich bei den Einflüssen.
user posted image

- Man kann inzwischen auf Wunsch alle möglichen Arten von Gebäuden ausblenden lassen, sowie auch Bäume oder Autos, wozu das sinnvoll ist sollte klar sein. Hier werden Wohngebäude, Industrieanlagen sowie Parks ausgeblendet:
user posted image

- Das Interface nimmt nun endlich Form an, zumindest vorerst grafisch. Wie inoffiziell bereits angekündigt ist es auch für (Multi-)Touchscreens optimiert und dementsprechend etwas untypisch, vielleicht auch etwas futuristischer, gestaltet. Die Icons sind bisher eher noch nicht ganz angepasst:
user posted image

- FPS-Unabhängigkeit ist oberstes Gebot bei diesem Projekt, das gilt selbstverständlich auch für die Autos und die vorerst integrierten Animationen der Tooltipps.
user posted image

- Es gibt einen neuen Animationstyp, Decoanimationen, sie liegen über den Gebäudeanimationen und zeichnen sich durch ihre Unabhängigkeit zum Rest des Gebäudes aus. Inzwischen kann man mit Hilfe der Plugins nun auch die Animationsgeschwindikeiten für die beiden Animationstypen festlegen.
user posted image user posted imageuser posted imageuser posted imageuser posted imageuser posted image

- Das Straßensystem wurde überarbeitet, ähnlich dem in SimCity4 (von EA-Games, vielleicht kennt ja jemand dieses Spiel) verwendeten System, bei welchem Straßen sich beim Bau nicht automatisch mit anderen Straßen verbinden, es sei denn sie kreuzen diese.
user posted image

- Es sind nun programmintern Vorbereitungen für die Speichern- und Ladenfunktionen vorhanden, mit deren Ausbauung werde ich allerdings noch etwas warten aufgrund der vielen Dinge die noch nicht im Spiel integriert sind aber später auch einmal gezeichnet werden sollen.
[Was für ein Bild sollte ich denn hier bitteschön zeigen?]

- Die maximale Gebäudegröße wurde nun erheblich vergrößert, dennoch empfehle ich Gebäude nicht größer als 10*10 Felder groß zu machen damit der Spieler nachher nicht plötzlich Platzmangel bekommt Wink .
Grund für diese Veränderung ist ein neues Gebäude von theotheoderich, welches allerdings, da es noch nicht fertiggestellt wurde, noch nicht veröffentlicht wird (tja, was könnte das wohl sein?).
user posted image

- Pathfinding für Einwhoner und ihren Arbeitsplatz. Sicherlich, ich habe nicht vor, dass jeder Einwohner mit seinem Auto (hat ja noch nicht einmal jeder eines) die Strecke seines Wohnsitzes zu seinem Arbeitsplatz und umgedreht hin und wieder einmal abfährt, stattdessen geht es vielmehr darum, dass der Ort eines Arbeitsplatzes für einen Einwohner auch Sinn ergibt und nicht zu weit entfernt liegt. Das heißt nun, dass ich mir den kürzesten Weg, falls vorhanden, zwischen zwei angegebenen Gebäuden heraussuchen lassen kann, eine sehr praktische und auch erstaunlich schnelle Angelegenheit (0 bis 4 Millisekunden die vergleichsweise selten angewandt werden müssen ist nicht viel). Wie man sieht werden auch Straßen die sich nur "berühren" richtig mit einbezogen:
user posted image
Die komischen, gefärbten Quadrate überall dienen lediglich Testzwecken zu dem gleich erwähnten Einflusssystem.


Arrow Was ist derzeit in Arbeit? -Einflüsse
Das Einflusssystem, das hört um Einiges weniger komplexer an als es ist. Um aus TheoTown nicht eines dieser simplen Stadt-Bau-Tools zu machen muss es auch Herausforderungen geben, diese werden in TheoTown in erster Linie durch das Einflusssystem gegeben.
In TheoTown läuft es so, dass der Spieler auswählt, was er wo bauen will. Zusätzlich gibt es für jede Gebäudeart sechs Techlevel. Wenn man nun ein Gebäude bauen will kommen die Einflüsse ins Spiel (das sind immerhin ganze 15 Stück), denn je nach Techlevel und Gebäudeart werden bestimmte Ansprüche an die Umgebung gestellt und sind diese nicht erfüllt, so kann nicht gebaut werden.
Selbstverständlich fallen auch Dinge wie Straßenbelastung ins Gewicht, da diese etwa die Einflüsse von Luftverschmutzung und Lärm beeinflussen welche wiederum von wohlhabenderen Einwohnern eher ungern geduldet werden.

Die größte Schwierigkeit bei den Einflüssen wird es werden, eine gewisse Balance zwischen ihnen zu finden, sodass im Endeffekt dann auch der gewünschte Spielspaß aufkommen kann. Programmtechnisch sind die Einflüsse bereits größtenteils integriert.


Arrow Welche neuen Gebäude gibt es?
Auch wenn theotheoderich leider zeitlich nicht mehr so intensiv für dieses Projekt arbeiten kann, so hat er es dennoch geschafft wieder einmal einige tolle neue Gebäude für TheoTown zu pixeln:

- Zwei Stadthäuser Stufe 2:
user posted imageuser posted imageuser posted imageuser posted image

- Ein kleines Wohnhaus Stufe 2 oder 3:
user posted imageuser posted image

- Ein 3x3 Wohnblock/Hochhaus Stufe 3:
user posted imageuser posted image

Dagegen habe ich lediglich dieses hier als neu vorzuweisen, wobei es super geeignet war um den neuen Animationstypen zu testen (der Brunnen ist nämlich, wie weiter oben zu sehen, animiert Smile ):

- Ein Wohnhaus mit Animation (hier noch in Rohform, das Endprodukt ist wie die Animation oben zu sehen):
user posted imageuser posted image


Arrow Wo gibt es mehr zum Thema TheoTown?
Selbstverständlich auf www.theotown.de, der offiziellen Homepage von TheoTown welche ich im Übrigen wieder primär (natürlich neben diesem Worklog hier) für die Präsentation der Fortschritte in TheoTown nutzen werde Wink .


Das war es leider auch schon wieder soweit von mir und TheoTown, bis zum nächsten Eintrag
Lobby

Und weiter gehts

Samstag, 20. März 2010 von Lobby
Und weiter geht es mit meinem "Fanprojekt". Hierbei nochmals vielen Dank an die netten Kommentare zu diesem Worklog die immer wieder zeigen wie wichtig es ist, dieses Projekt nicht fallen zu lassen Wink .

Diesmal erst einmal noch einmal ein kleiner Rückgriff auf die bestehende Zeichenroutine die bei diesem TheoTown leider etwas anderst ausfallen muss als beim Original. Das Original von theotheoderich wurde bekanntlich in Blitz3D geschrieben, das heißt einerseits windowsonly, andererseits aber auch relativ schnelle Buffer die sich super zum Optimieren eignen. So wurde jedes mal nur das neu eingezeichnet, was auch wirklich von Nöten war, und der Rest mit Hilfe von zuvor entsprechend vorbereiteten Buffern erledigt. Nun, da ich BlitzMax verwende stehen mir solche Buffer leider nicht zur Verfügung und die Benutzung von Pixmaps (eine Art Pendant zu den Buffern) stellte sich aufgrund der Iso-Form der Tiles (Transparenzen in Schreibprozessen werden bei Pixmaps ignoriert und einzelnes Einzeichnen würde den Rahmen sprengen Arrow man bräuchte mehrere Pixmaps Arrow mehr Rechenzeit beim un-/ und locken) als recht aufwändig und vor allem als zu langsam heraus. Wer will schon beim Scrollen jedes mal ein paar Sekunden, oder bei Spielstart ein paar Minuten, warten müssen?!
Aus diesen Gründen wird bei mir mit jedem Frame die komplette sichtbare Szene neu eingezeichnet, das ist in BlitzMax im Gegensatz zu Blitz3D zwar allemal schnell genug, andererseits aber keinesfalls eine Ideallösung. Wie dem auch sei, vielleicht finde ich hier noch eine bessere Lösung.


Und nun, was hat sich seit letzter Woche geändert?

-Käfer bekämpfen
Ja, es hat sich doch tatsächlich hier und dort noch ein Käfer hin verirrt, aber soweit ich sie gefunden habe sind sie nun alle vernichtet Twisted Evil .

-Rauch/Qualm
Ich habe mich nun schon an die Implementation der sichtbaren Abgase, die so manche Fabriken ausstoßen, gemacht. Hierbei gehe ich nach theotheoderichs ursprünglichem Plan vor, die einzelnen Qualmwolken dynamisch verwalten zu lassen. Bei ihm verursachte das leider enormen Rechen- und Speicheraufwand auf Grund der vielen einzelnen Types, weshalb er dann auf statische Animationen umgestiegen ist. So, warum sollte das bei mir nun nicht auch passieren? Es ist bekannt, dass BlitzMax bei Types nicht so verschwenderisch mit den Ressourcen umgeht wie Blitz3D, von daher gab es wie erwartet da bisher keine Probleme. Die Vorteile von solchem dynamischem Qualm bestehen vor allem darin, dass man auf ihn wechselnden Wind anwenden kann und er sehr viel lebhafter wirkt, was er ja auch ist Smile :
user posted image
Die Tatsache, dass der Qualm auf einem Standbild etwas leblos scheint, sollte nachvollziehbar sein. Ich habe mich dafür entschieden, dem Rauch hier auch Transparenzen zu geben um sein Auflösen etwas sanfter zu machen und damit er nicht mehr so viel von dem dahinter verdeckt.

-Wasseranimation
Schön war das Wasser des "alten" TheoTowns, doch beim Neuen wird es wohl fast genauso aussehen. So wechseln die Wassertiles in bestimmten, individuellen Zeiträumen, ihr Wassertile-Bild. Im Folgenden die einzelnen Wassertile-Bildchen:
user posted image
Wie unschwer zu erkennen sein sollte, haben einige von ihnen transparente Pixel. Sähe doch die Animation recht lieblos aus, wenn sich einfach nur die Bildchen der Wassertiles ändern würden, so kommt noch ein entsprechender Hintergrund hinzu, der für "Glanzpunkte" mit Hilfe eben dieser durchsichtigen Pixel sorgt. Dieser Hintergrund wird durch zwei, sich in entgegengesetzter Richtung bewegende, Bilder erzeugt. Nun würden hier nur noch "fließende Glanzpunkte" fehlen, die entsprechende Strömungen andeuten könnten.
Die beiden für den Hintergrund verwendeten Bilder sehen, etwas verkleinert, wie folgt aus:
user posted image

Zu guter Letzt noch das Ganze in Kombination, so könnte eine Stadt also bereits aussehen:
user posted image
Auf Nachfrage hat ich freundlicherweise ein Video von TheoTown gemacht das die neuen Effekte und auch das Spiel überhaupt einmal in Aktion zeigt. Ihr könnt auf YouTube anschauen. Das Video zeigt außerdem auch die Plattformunabhängigkeit durch BlitzMax Razz .

Ich hoffe wie immer, dass euch meine kleine Vorstellung gefallen hat Wink
Lobby.

Neustart...

Samstag, 13. März 2010 von Lobby
Es hat hier leider schon länger keine Neuerungen mehr gegeben, der Grund hierfür liegt darin, dass theotheoderich, der Schöpfer von TheoTown, durch seinen beruflichen Werdegang nun kaum noch die nötige Zeit und Lust findet, an diesem Projekt weiterzuarbeiten. Nachvollziehbar, auch wegen der mehreren bekannten Probleme die durch die Verwendung von Blitz3D auftraten, dennoch aber auch etwas schade Rolling Eyes .
Das liegt nun schon mehr als einen Monat zurück und während dieser Zeit kam ich auf die Idee, selbst zumindest einmal einen Pluginloader, wie er in TheoTown Verwendung fand, in BlitzMax selbst nach zu programmieren.
Im Laufe der Zeit entwickelte sich aus diesem einst mal kleinen Ladeprogramm eine kleine, abgespeckte, aber funktionsfähige Kopie des ursprünglichen TheoTowns.

Da vorerst nicht abzusehen ist, wie, wann und wo an dem bisherigen TheoTown Projekt von theotheoderich weitergearbeitet werden kann/wird, falls überhaupt, werde ich vorerst diesen Worklog für mein "Fanprojekt" verwenden, ebenfalls unter dem Namen TheoTown soweit möglich.
Wie oben bereits beschrieben verwende ich BlitzMax anstatt Blitz3D, wobei Letzteres bisher in diesem Projekt Verwendung fand. Das bedeutet unter anderem, dass dieses Projekt nun auch nicht mehr nur auf Windows begrenzt ist, sondern auch unter MacOS und Linux laufen sollte, und, dass bisher aufgetretene Probleme mit neuerer Grafikhard- und Software gelöst sein sollten.


Der derzeitige Stand des "Nachbaus" ist nun schon recht weit fortgeschritten, hier nun ein paar Einzelheiten:

-Der Pluginloader
Dieser lädt Plugins wie etwa Gebäude und Bodentiles aus einem dafür vorgesehenen Ordner und stellt diese zur weiteren Verwendung, wie etwa dem Bau, zur Verfügung.

-Das Layersystem
Genauso ähnlich wie bisher gibt es mehrere Layer die sich um die verschiedensten Dinge kümmern. Zu unterst wäre da der sogenannte Bodenlayer, der alle Bodentiles einer Karte verwaltet und einzeichnet. Dann wäre da noch der Straßenlayer der sich um die Straßen und Brücken kümmert, bzw. um die einzelnen Straßentiles welche dann sich, zumindest fürs Zeichen, auch um die Autos kümmern. Zu Oberst käme, zumindest bisher (ein Effektlayer ist in Planung) der Gebäudelayer. Hier werden alle Gebäude verwaltet und eingezeichnet, ggf. dabei auch animiert. Hier gehe ich allerdings anders vor als bisher, denn bisher wurden die Gebäudegrafiken zerschnitten und einzeln eingezeichnet um falsche Überlappungen zu vermeiden. Das mag sinnvoll erscheinen solange die Gebäudegrundflächen nicht immer quadratisch sind, da sie aber, zumindest derzeit, immer quadratisch sind, verwalte ich die Gebäudegrafiken immer noch als Ganzes und zeichne deren Grafiken vom linken Punkt aus ausgehend ein. Dazu hier noch ein paar Illustrationen:

user posted image
An dem roten Tile befindet sich der Bezugspunkt dieses Gebäudes.

user posted image
Die Tiles werden (grafisch) von oben nach unten durchgegangen, und dabei an den hier roten Tiles die Gebäudegrafiken eingezeichnet.

user posted image
Warum dieses System nur bei quadratischen Tiles funktioniert sollte hiermit ganz gut zu beantworten sein. Gezeichnet wird immer von links nach rechts, die Bezugspunkte sind nach wie vor auch hier mit den roten Tiles dargestellt. Danke an D2006 für seine Nachfrage diesbezüglich.

Um eben Überlappungen zu vermeiden, werden fürs Zeichnen grundsätzlich die Tiles von hinten nach vorne durchgegangen. Im Kleinen gilt dies natürlich auch für die Autos, für welche die Straßentiles in vier Einzelteiles eingeteilt wurden. Auf jedem Straßenstück dürfen zwei Autos nie in die gleiche Richtung fahren, so vermeide ich einerseits das grafische ineinander fahren der Autos, andererseits aber werden auch Staus vermieden, welche den Verkehr komplett lahmlegen indem an z.B. einer Kreuzung mehrere Autos sich gegenseitig blockieren. So sieht dann so ein Straßenstück mit seinen Einteilungen aus:
user posted image
Die Pfeile zeigen hier mögliche Fahrtrichtungen für potentielle Autos pro Einzeltile, solche Richtungsdaten liegen für jedes einzelne Straßentile vor und können pro Einzeltile mehrere Richtungen beinhalten.

-Das Interface
Die bisher beschriebenen Abschnitte liegen mir in recht ähnlicher Form als Codeabschnitte vor, wobei die einzelnen Teile recht abgegrenzt voneinander funktionieren. So verwendet zwar beispielsweise das Layersystem den Pluginloader, dieser jedoch hat selbst keinen eigenen Zugriff auf das Layersystem. Durch diese recht unabhängige Programmierweise werden Zugriffe des Interfaces dann in etwa wie folgt aussehen,
BlitzMax: [AUSKLAPPEN]
Local layer:TLayer=TLayer.LoadMap(MapPath:String)
...
If blub Then layer.BeginBuildMode(p:TPlugin)
layer.Update()
layer.Draw()
...
layer.EndBuildMode()
Das Interface ist wie folgend noch zu sehen noch nicht so wie geplant vorhanden, hauptsächlich deswegen, weil ich noch an einer dafür geeigneten GUI bastle. Allerdings, wie der gerade gezeigte Code bereits andeuten sollte, sähe die Integration selbst eher simpel aus.


Abschließend hier nun auch noch ein paar Bilder um das bisherige Ergebnis zu präsentieren:
user posted image

user posted image
Und bitte daran denken, dass die Grafik zu nahezu 100% von theotheoderich stammt Wink .


Von neuen Gebäuden gibt es derzeit eigentlich nichts zu berichten, aber das wird sich schon wieder ändern.
Das war es soweit jetzt hier von mir, Lobby, Weiteres wird sich zeigen Smile .

Brücken und Wasser

Montag, 20. April 2009 von theotheoderich
Brücken lassen sich zwar immer noch nur in eine Richtung bauen, aber die Grafiken für die andere Richtung sind fast fertig.

Das Wasser ist jetzt fast so, wie ich es mir vorgestellt habe und natürlich animiert (lässt sich aber abschalten)
Es hat auch eine leichte Strömung in der Flussmitte, damit man auch erkennen kann, dass dort Wasser fliesst. Ist aber eher simpel gemacht.

user posted image

user posted image

user posted image

Mit der Metallbrücke bin ich noch nicht glücklich, die ist noch etwas zu hell.

Die "Wasserkarte" wurde etwas erweitert und enthält nun auch Infos über Strömungen und Bäume.

user posted image

Wasserflächen und Brücken

Freitag, 17. April 2009 von theotheoderich
Lange hat es gedauert, aber TheoTown wird weiterentwickelt.

Leider lässt mir meine Arbeit nicht viel Zeit, aber Wasserflächen wollte ich in TheoTown immer schon einmal haben.

Für das Wasser wurde ein neuer Plugintyp "Wasser" erstellt.
Die Wasserflächen werden nicht beim Start berechnet (wie bei SimCity) sondern aus einer "Wasserkarte" entsprechend der jeweiligen Kartengröße ausgelesen.
Das hat den Vorteil, dass man quasi im Malprogramm ein Level gestalten kann.

Test-"Wassserkarte" für eine 128x128er Karte
user posted image


Beim Spielstart werden dann den Tiles um die Wasserflächen herum Ufergrafiken zugewiesen.

user posted image
user posted image

Die Wasser- und Ufergrafiken sind nicht animiert, was im Moment noch dazu führt, dass das Wasser etwas leblos aussieht.
Demnächst werde ich noch per Zufall erstellte "Glanzpunkte" auf die Wasseroberflächen zeichnen.

user posted image


Um Brücken über das Wasser zu bekommen, musste ich etwas "tricksen".
Auf dem Wasser kann nicht gebaut werden, aber es gibt bei Strassen und Wasser zwei gemeinsamme Variablen. Eine für eine Grafik und eine für die entsprechende Framenummer.

Die ganze Brückengrafik ist bisher nur WIP, geplant sind aber mehrere Brückenarten.

user posted image
user posted image

Im Prinzip bleibt das Wasser Wasser und wird nicht zur Strasse, aber es werden Brückengrafiken über das Wasser gezeichnet. Solange eine solche Brückengrafik existiert, wird sie von Fahrzeugen wie eine Strasse behandelt.
Im Grunde sollten damit auch Brücken an Land z. B. über bereits existierende Strassen möglich sein.

user posted image


Die ganze Brückenbaufunktion ist bisher aber ein (übler) Programmhack mit dem ich ausprobieren wollte, ob es überhaupt so möglich ist, wie ich es mir vorstelle.
Die Brücken werden automatisch gesetzt, sobald man eine Strasse zum Ufer hin baut. Die Länge der Brücke wird auch automatisch bestimmt und am anderen Ufer eine Brückenabfahrt hingesetzt.
Das ganze ist noch längst nicht ausgereift und Brücken sind bisher nur in eine Richtung möglich....aber ich arbeite daran.
Autos können sich auch noch nicht über Brücken bewegen, aber vorgesehen ist schon alles dafür.

Mal schauen, wie es weitergeht....es gibt ja im Augenblick noch nicht mal eine vernünftige Strassenbaufunktion Rolling Eyes

user posted image

Gehe zu Seite 1, 2, 3, 4  Weiter