Archiv für December, 2009

Isometrische Kacheln

Wednesday, 30. December 2009

Auch wenn die Landkarte fix ist, bilden zahlreiche Kacheln die Basis für die Darstellung einer vielfältigen Welt. Kacheln sind wiederholbare Elemente, die zu einem einheitlichen Bild zusammengesetzt werden können. Ähnlich wie bei einem Puzzle müssen dafür bestimmte Voraussetzungen erfüllt werden. Eine Kachel muss nahtlos in eine andere überlaufen, ohne preiszugeben, dass es sich bei ihr um eine Kachel handelt. In diesem Artikel möchte ich die Kacheln von Second Home 2 näher erläutern.

(more…)

Frohe Weihnachten !!!

Wednesday, 23. December 2009

Zu Weihnachten stehe ich immer wieder vor der gleichen Aufgabe. Eine Weihnachtskarte muss her. Und diese sollte möglichst besser ausfallen, als die vom Vorjahr. Da grübelt man schon eine Weile, fertigt tausend Skizzen an und versucht was schönes auf die Beine zu stellen. Der Prozess ist im Grunde ähnlich mit der Erstellung von Grafiken für Second Home, daher schreibe ich hier darüber.

(more…)

Das neue Aramoon

Monday, 14. December 2009

Bei Second Home 2 wird es viele Neuerungen geben. Eines, was davon nicht betroffen sein wird, ist die Karte von Aramoon. Denn die behalten wir bei. Die Kontinente, Inseln und das Meer Aramoons werden 1:1 übernommen. Natürlich wird an der Grafik gefeilt, um die Oberfläche von Aramoon noch schöner und prachtvoller zu machen. Besser noch, wir gehen ins Detail und gestalten die Karte markanter. Damit sind Bereiche gemeint, die das Bild von Aramoon entscheidend prägen. Ein riesiger Berg etwas oder ein Graben, aber auch ein düsterer Wald oder eine endlose Prärie.

(more…)

Eine Karte “draggen”

Monday, 14. December 2009

Spätestens seit GoogleMaps wissen wir, dass es extrem schick ist, Landkarten im Browser mit der Maus hin und her ziehen zu können. Auch die ersten Browserspiele setzen nun die neuen Techniken ein und werden dadurch immer schicker. Am letzten Wochenende habe ich mich dementsprechend einmal mit “draggable maps” (ziehbare Karten) beschäftigt. Dank Prototype und script.aculo.us ist die Umsetzung einer draggabkle Map kein großes Problem. Der einzige große Knoten den ich hatte lag darin, dass die neue Karte von Aramoon deutlich größer als das Sichtfenster ist und ich daher sicherstellen musste, dass die Karte nicht aus dem Sichtfenster heraus gezogen werden kann. Dank der schönen Eigenschaft :snap kann man das aber bewerkstelligen, das Ergebnis seht ihr hier an der neuen Sektorkarte. Eine kleine Funktion, die fast genau das erledigt ist, ist unten dargestellt. Da bei mir die Karte größer ist, als der Sichtbereich, müssen die Parameter upper und lower gedreht werden, fertig :)

:type und :column als Spaltenname – die Suche nach der Nadel

Saturday, 12. December 2009

Kennt ihr das auch? Ihr seid euch 10000% sicher, dass euer Code stimmt. Ihr habt Buchstabe für Buchstabe verglichen. Und dann denkt ihr einmal um die Ecke und auf einmal macht es zoooosch und das Problem ist klar. Heute hatte ich wieder so ein Problem. Beim Anlegen meiner Provinzenrelation stand folgender Code im File:


class CreateProvinces < ActiveRecord::Migration
def self.up
create_table :provinces, :options => "ENGINE=MyISAM" do |t|
t.string :name
t.integer :type, :default => 0
t.integer :column, :default => 0
t.timestamps
end
end

Dumm nur, dass Rails :type als Parameter kennt, d.h. :type als Spaltenname nehmen zu wollen ist…. ;) Daher einfach xzy_type nehmen und der Käse ist gegessen. Alternativ könnte man vielleicht die getter und setter umschreiben, aber warum, wenns auch einfach geht :D Gleiches gilt für :column, hier rennt man in eine Standard-SQL-Funktion… :)

Viele, viele Daten – ein Fall für den Populator

Saturday, 12. December 2009

Irenia benötigt wie Second Home ebenfalls eine große Spielkarte. Irenias Karte verfügt über 86.400 Provinzen, die alle in die Datenbank wollen, sprich 86.400 Datensätze. Das ganze per Province.create zu machen und Active Record zu bemühen geht zwar, ist aber weder effizient noch schick. Eine viel effizientere Lösung stellt Ryan Bates zur Verfügung (der Verfasser der tollen Railscasts). Sein Populator Gem gestattet es, schnelle Massenqueries in die Datenbank abzusetzen. Damit ist das Einfügen von 86.400 Datensätzen auf meiner Testkiste in weniger als 10 Sekunden erledigt. Aber Achtung! Der Populator umgeht das Modell und nutzt keine Instanzen des Modells, d.h. es wird nicht validiert. Ihr solltet also sicherstellen, dass die Daten, die er mittels Pouplator in die Datenbank jagt, auch valide sind ;) Sourcen und Doku gibt es auf Github und wie so wunderbar üblich für Ryan gibt es auch einen tollen Railscast zum zurücklehnen und zuschauen :D Have fun populating!

Zufallszahlen in einem speziellen Bereich

Friday, 11. December 2009

Manches Mal kann es vorkommen, dass man Zufallszahlen zwischen sagen wir 1000 und 2000 benötigt, um z. B. dem Chef ein neues Gehalt vorzuschlagen :) Ruby kennt per default nur rand(int), rand(10) liefert beispielsweise Zufallszahlen zwischen 0 und 9. Um dennoch einen Bereich anzugeben kann man schlicht und einfach das Minimum als Basis und die Differenz zwischen Maximum und Minimum als Offset verwenden :)


def my_rand(minimum, maximum)
minimum + rand(maximum - minimum)
end

Einfach, wie immer :D

Konfigurationsparameter in Rails

Thursday, 10. December 2009

Obwohl Rails klar die Linie Convention over Configuration verfolgt lässt es sich nicht immer vermeiden, Konfigurationsparameter zu verwenden. Bei Irenia möchte ich z.B. die Maße der Gilden-Banner, welche über den einzelnen Provinzen schweben (siehe dazu den aktuellen Entwurf des Sektors) in eigene Konfigurationsparameter auslagern, um diese später überall nutzen zu können. Auch hierfür gibt es in Rails eine schöne, einfache und gelungene Lösung. Ryan Bates hat hierzu einen Railscast bereitgestellt, der dieses Thema perfekt aufarbeitet. Danke Ryan :)

Vor langer, langer Zeit …

Wednesday, 9. December 2009

… habe ich das community-based-game development ins Leben gerufen. Es haben sich viele Helfer gefunden, großartige Ideen sind geflossen und SH2 ist ein gewaltiges Stück näher an die Zielgerade geschritten. Doch leider kam uns das Schicksal in die Quere und forderte ein Opfer: Die Festplatte. Nach diesem verhängnisvollem Ereignis wurde es ruhiger um SH2. Zumindest an der Oberfläche, denn die Ideen köchelten an anderen Orten, in anderen Ecken weiter, um zu einem appetitlichen Spiel zu reifen.

(more…)

Nachfahren haben eigene Stapelkontexte! Bitte?

Tuesday, 8. December 2009

Nach ein paar Tagen Pause habe ich heute endlich mit der Karte von Irenia wieder weiterbauen können. Was ich immer wieder vergesse und es deswegen hier notiere ist, dass per z-index positionierte Elemente für sich und ihre Nachfahren einen eigenen Stapelkontext erzeugen :S Viel besser als wie das auf Selfhtml.org beschrieben ist, kann ich das sicher nicht, daher hier der Verweis auf die Hinweise unterhalb des Quellcodes auf Selfhtml.org :)