Hallo.
Also ich melde mich hier nur, weil Micha hier schon so viel diskutiert hat und ich möchte, für diejenigen die es interessiert, ein paar Dinge vielleiecht klarer stellen.
Ich bin Herbie, der Programmierer der für Micha seinen "Wrapper" angepasst hat damit er damit Peoples General spielen kann. "Wrapper" ist hier nicht ganz der richtige Begriff. Ich benutze zwar auch einen Wrapper, um DirectDraw Spiele mitzuloggen aber eben nur für diesen Zweck. Meine DLL, die Micha benutzt, ist eine Neuimplementierung der DirectDraw-DLL. Natürlich nicht vollständig, sondern nur die Dinge, die von den Spielen die ich laufen lassen will, auch benutzt werden. Da Micha kein Programmierer ist haben wir es der Einfachheit halber bei dem Begriff Wrapper belassen.
Ursprünglich habe ich meine DLL für das Spiel Panzer General 3D geschrieben, weil das auf modernen Rechnern ohne Hilfsmittel nicht spielbar ist, ich jemanden kenne der das Spiel sehr gerne spielt und alle mir bekannten Lösungen für das Spiel irgendwelche Fehler bzw. Mängel aufweisen. Ich selbst bin kein großer Spieler und interessiere mich eigentlich auch nicht für Spieleprogrammierung
. Ich habe aber Spaß daran Dinge zu verstehen und DirectDraw schien mir so einfach zu sein das es sich lohnt das ganze auseinander zu nehmen und die Funktionalität nachzubilden.
Die Implementierung verwendet ausschließlich GDI für die Grafikaufgaben. So wie ich das verstehe macht DirectDraw auch nichts anderes.
Das ich Antialiasing in das Spiel eingebaut habe, ist vielleicht etwas übertrieben. Zumindest bin ich mir nicht sicher ob ich es so bezeichnen würde. Ich habe mir lediglich einen Algorithmus zur einfachen Kantenglättung der Außenkanten der Spielgrafiken ausgedacht und implementiert. Das Spiel arbeitet ja mit entweder 100% transparenten Pixeln und oder 0% transparenten Pixeln. An den Übergängen zwischen den Spielgrafiken und dem Hintergrundbild führt meine DLL eine Glättung durch, indem sie Pixel einfügt die sich aus den Farben der umliegenden Pixel und der Farbe des darunter liegenden Hintergrundpixels zusammensetzt. Das Ganze war nur eine Spielerei, weil ich nicht wirklich verstanden habe, was sich Micha unter Antialiasing bei einem 2D-Spiel vorstellt, aber da es Micha gefallen hat habe ich es drinnen gelassen.
Tja und nebenbei spricht er immer von höherer Auflösung und ich versuche ihm immer wieder klar zu machen, dass das nicht wirklich geht ohne die Grafik auszutauschen und extrem viel Arbeit in die Programmierung zu stecken, weil ich nichts habe außer die normalen DirectDraw-Funktionsaufrufe des Spiels.
Die letzte Idee war dann das einfache hochskalieren über HQ2X oder etwas Ähnliches. Das Spiel benutzt übrigens kein DirectInput und wenn ich mich recht erinnere kann ich über die WndProc Funktion in meiner DLL die Click-Events der Maus abfangen oder auch manipuliern. Ich könnte also die Mauszeigerposition in den entsprechenden Nachrichten einfach "runterskalieren". Bis jetzt habe ich mich damit noch nicht allzu intensiv beschäftigt, weil mein Ziel eigentlich nur ist DirectDraw möglichst gut und fehlerfrei nachzubilden, damit möglichst viele Spiele unter Windows 7 und co. so laufen wie auf alten Rechnern. Wenn ich Zeit finde, werde ich für Micha vielleicht erst mal EPX einbauen. Das sollte nicht allzu viel Zeit in Anspruch nehmen und er gewinnt einen ersten Eindruck was so eine Skalierung für das Spiel bedeutet. Ich bevorzuge die Originalgrafik.
Danke für die Anregungen und Antworten, die ihr Micha gegeben habt. Wenn ich Fragen haben sollte, werde ich mich in diesem Forum nochmal melden.
Gruß Herbie