Blimp Tycoon

Kommentare anzeigen Worklog abonnieren

Worklogs Blimp Tycoon

Inselgeometrie

Freitag, 16. März 2012 von Propellator
Das generieren von 3D-Geometrie machte mir schon immer Angst, trotzdem wagte ich mich an die Aufgabe heran, einfache Inseln zu generieren.

Als erstes erstellte ich einen Prototypen, um meinen Fuss ins kalte Wasser zu halten.

user posted image

Im Bild erkennt man die ersten Gehversuche mit AddVertex und AddTriangle. Die Höhendaten werden noch pro Feld berechnet statt pro Vertex. Der Prototyp ist zwar sehr kläglich und generiert verschwenderisch Vertex-Duplikate an den Rändern jedes Feldes, jedoch lernte ich dabei, wie ich mit der Reihenfolge in AddTriangle umgehen muss.

Der weisse Block mit dem Kegel, der darin steckt, ist übrigens ein Zeppelin der an einer Anlegestelle hält. Für diesen Worklog-Eintrag ist er also noch irrelevant.

user posted image

Hier habe ich angefangen Vertex-Duplikate zu vermeiden, und benutze nun Per-Vertex Höhendaten für die Inseln. So entstehen auch "schöne" Hänge.

user posted image

Beim Hinzufügen einer Textur merkte ich jedoch, dass die U und V Koordinaten der Vertices komplett falsch waren.
Hier eine kleine Erklärung:
Die U und V Koordinaten sind Werte zwischen 0 und 1, welche angeben, welcher Bildpunkt einer Textur sich am Vertex befindet. Habe ich also ein Quadrat, soll die linke obere Ecke 0,0 haben, und die rechte untere 1,1.
Was hier das Problem ist, ist schlicht und einfach, dass ich für U und V immer feste Werte annahm, und somit jedes Quadrat als abgeschottet ansah. Jedoch teilen sich diese Quadrate ja ihre Vertices, folglich sahen die U-Koordinaten auf der X-Achse etwa so aus:
Code: [AUSKLAPPEN]
0.0->1.0->0.0->0.0->0.0->0.0...

da immer angenommen wurde, dass die linke obere Ecke die Koordinaten 0,0 hat.

Die Lösung des Problems erschien mir erst schwer, jedoch merkte ich dass durch eine einfache Abfrage und dem logischen Operator Not sich das ganze als ziemlich simpel erwies. Nach 5 Minuten fand ich auch noch den letzten Tippfehler (U und V sehen auch noch so ähnlich aus, grr.), und dies war folglich das Resultat heute morgen:

user posted image

Die nächste Herausforderung wird das Finden der Saumränder darstellen. Diese benötigen wir, um den Inseln auch eine gewisse Tiefe zu verleihen.

Blimp Tycoon - Einführung

Mittwoch, 14. März 2012 von Propellator
Hi.
Dieser Post leitet den Worklog meines neusten Projektes, Blimp Tycoon, ein.

Das Spielprinzip
Vielleicht kennt ihr schon das eine oder andere Tycoon-Spiel, und habt schon eine ungefähre Ahnung, was in Blimp-Tycoon das Ziel ist.
Kurz gesagt könnte man es so formulieren: Das Ziel des Spiels ist es, sich aus einem Startkapital ein wirtschaftliches Imperium aufzubauen. Sozusagen Baby's First Kapitalismustrainingscamp. Oder "Geld und Du.". Oder gar "Rein in die Schulden.".
...Einen hab ich noch! "Griechenland in 30 Sekunden!"

In Blimp-Tycoon macht man dies durch Waren- und Personentransporte, was vielleicht auch schon aus den einen oder anderen Tycoon-Spielen bekannt ist (Transport Tycoon, welches damals komplett in Assembler geschrieben wurde, und OpenTTD). Ein spezielles Gameplay-Element von Blimp-Tycoon ist jedoch, dass sich die Städte auf fliegenden Inseln befinden. Je nach Verbindungen zwischen den Inseln und den darauf hergestellten Gütern sowie die Entfernung der einzelnen Städten variiert somit das Angebot und die Nachfrage.

Um die Güter/Personen/Einhörner/Staubsaugervertreter nun zwischen den Inseln transportieren zu können, kommen allerlei lustige und gestörte Fluggeräte aus dem Steampunk-Universum zum Einsatz, darunter hauptsächlich Zeppeline.

Sonstiges
Die Programmiersprache ist BlitzMax, die 3D-Engine minib3d.
Im Moment arbeite ich alleine daran.

Bis dato habe ich mich beim Programmieren mehrmals über VLC livegestreamt, was, zu meiner Verwunderung, sich sehr positiv auf die Arbeitsmoral auswirkt. Da mein 5MBit/s upstream jedoch nur eine sehr begrenzte Anzahl an Leuten aushält, und ich nicht auf einen Drittservice fürs Streamen ausweichen will, werden diese Streams nicht öffentlich angekündigt sondern nur im Kreis einiger Illumina-- äh, Personen, bekannt sein. Dies vermag sich jedoch in der Zukunft ändern.

Die Regelmässigkeit der Worklogeinträge hängt von den Fortschritten am Projekt ab, und diese Hängen von meiner Zeit und geistigen Leistungsfähigkeiten ab, welche wiederum davon abhängen wie oft pro Tag ich mir Sachen in die Nase stecke. Folglich kann ich leider nicht für interessantes Lesematerial garantieren, so gerne ich auch würde!