ich bin gerade dabei, ein sehr komplexes Projekt mit dem Namen "Demandion" umzusetzen. Es handelt sich um ein 2D-Strategiespiel, welches in FreePascal geschrieben wird und die SDL-Library verwendet (im Moment lediglich für das Laden und Ausgeben von Grafiken/Surfaces). Somit ist es auch für fast jedes Betriebssystem (hauptsächlich Linux, Windows) compilierbar. Später soll es auch einen Multiplayer-Modus fürs Netzwerk geben. Ich kam auf die Idee für dieses Projekt, als ich gesehen habe, dass das meiner Meinung nach sehr gute Spiel "FreeCraft" (ein freier WarCraft-Klon) schon seit langem nicht mehr weiterentwickelt wird und verbesserungswürdig ist. Allerdings soll Demandion kein Remake sondern etwas mit eigenen Konzepten werden (schon alleine im Quellcode werden keinerlei Fremdanteile verwendet - mit Ausnahme der SDL-Library und Standard-Units). Dazu kommen noch einige Algorithmen, die zur Optimierung beitragen. Unter anderem werden alle Objekte auch in einer dynamischen, sortierten Liste hinterlegt, wobei jedes Objekt eine eindeutige ID besitzt. Somit können auch Netzwerk-Kommandos (z.B. dass die Figur sich bei anderen Spielern auch bewegt) mit Hilfe dieser ID an einzelne Objekte gesendet werden.
Im Moment funktionieren die "selbstgebastelten" Grafik-Klassen (einfache Bilderlisten, Spritesets (für Bildausschnitte/Tiles), Sprite-Objekte inkl. Animationen), Weltobjekt-Klassen (TWorldObject, TWorldTile, TWorld, TPlayer und TUnitBase - davon können später die anderen Einheiten - beispielsweise Gebäude, Schiffe, Drachen, Ritter, Soldaten, Arbeiter - abgeleitet werden) und Unterstützung für Layer (Ebenen) soweit ganz gut (ist aber noch an einigen Stellen verbesserungswürdig denke ich

Als Grafiken verwende ich hauptsächlich die von Reiners-Tileset (http://reinerstileset.4players.de/deutsch.html" onclick="window.open(this.href);return false;). Die Ausgabe des Weltausschnittes auf dem Bildschirm mit Tiles- und den darauf befindlichen Objekten funktioniert auch soweit (konnte es allerdings nicht auf mehr als ca. 25 Frames die Sekunde optimieren - auch bei sehr vielen Objekten auf dem Bildausschnitt läuft es jedoch noch relativ flüssig). Allerdings reagiert es sehr empfindlich auf hohe Systemauslastung (siehe Screenshot). Im "Hardcore"-Teil kommen jetzt noch die Trigger dazu. Jedes TWorldTile kann somit als Trigger für andere TWorldObjects benutzt werden (z.B. wenn eine feindliche Figur ein Tile betritt, welches durch die Reichweite eigener Objekte als Trigger vorgemerkt wurde, wird diesen eine Art "Event" mit dem auslösenden Objekt als Parameter weitergereicht). Ich habe hierbei fast ausschließlich dynamische Arrays für Listen (anstelle von Pointern) verwendet, welche ziemlich viel Spielraum lassen.
Hier ein Screenshot vom aktuellen Stand (ich weiß, ist noch nicht sehr viel zu sehen):