[ZFX-Action] FSDSD
Verfasst: 30.05.2010, 22:03
Hiermit möchte ich mein ZFX-Action Spielewettbewerb-Projekt mit dem Namen FSDSD vorstellen. Dabei steuert ihr einen Kandidaten durch zahlreiche Castingshows und müsst die Jury durch Arroganz und Idiotie von euch überzeugen. Wer hier jetzt aufhören möchte mit lesen: war nur Spaß.
Hintergrund:
Ich wollte ein Asteroids-ähnliches Spiel machen da Weltall einfach und größtenteils schwarz ist (Grafiken). Aber da man riesige Asteroiden von mehreren 100 m oder km Durchmesser nicht einfach zerbröselt ist der Sinn dieses Spiels eher das Ausweichen. Als Ansporn hab ich wie üblich das Geld gewählt das man mit "Handel" unter Zeitdruck verdienen muss. Um ein wenig Tiefe reinzubringen kann man sein Schiff auch Pimpen was natürlich Geld kostet.
Bedienung:
Siehe Code:
Ich hoffe dass das Spiel alle Kriterien und Bedingungen (Richtlinien) erfüllt. War mir bei einigen Punkten nicht sicher.
Basis ist das XNA-Framework für den Client und eine .Net Konsolenanwendung für den Server (C#). Die Multiplayerfunktionalität ist über .Net-Remoting realisiert. Die Sprache für GUI und Code ist englisch meine Kommentare im Code meist deutsch.
Ich weiß es ist weder ein besonderer Augenschmaus noch besonders bedienfreundlich (Configdateien) aber ich wollte mich nicht mit GUI rumschlagen sondern ein paar elementare Konzepte probieren die ich bei meinem nächsten Projekt verwenden will. Außerdem ist vieles nicht besonders elegant programmiert (Server Interface) aber ich bin auch nur Hobby-Entwickler (nicht ausgebildet) und hier musste es "schnell" gehen und das ganze ist ja überschaubar.
Die Input-Klasse habe ich aus einem alten Projekt von mir genommen.
Es sind noch ein paar Todos im Code (gekennzeichnet durch //#) aber nichts wahnsinnig dringendes. Also wenn jemand Lust hat ... ;). Open Source soll sich ja für alle lohnen.
Der Client hat laut http://richnewman.wordpress.com/2007/07 ... t-utility/ etwa 900 Zeilen (ohne Leer + Comments) und das Server-Interface etwa 1550 also zusammen fast 2500 Zeilen.
Lizenz:
Das Spiel, die Resourcen (Bilder, Sounds usw) und der Sourcecode wurden komplett von mir allein erstellt und stehen unter der "The MIT License" (http://www.opensource.org/licenses/mit-license.php).
Ich übernehme keine Gewähr für eventuelle Schäden, ihr nutzt die Software also auf eigenes Risiko. Falls ihr anfällig für Epilepsie sein solltet fragt euren Arzt bevor ihr spielt. Und legt jede Stunde eine Pause von 15 Minuten ein. ;)
verwendete Software + Resourcen:
-IDE: Microsoft Visual C# 2008 Express mit XNA Game Studio 3.1 (XNA Runtime erforderlich, gibts hier http://www.microsoft.com/downloads/deta ... laylang=en und MS.Net Framework hier http://msdn.microsoft.com/en-us/netfram ... 78097.aspx)
-Grafiken: Gimp 2.6.2
-Schrift: http://www.urbanfonts.com/fonts/Crystal.htm
-Sounds: DarkWaveStudio 3 (Antriebs und Kollisionssound), Audacity 1.2.6 für die Konvertierung des Wav-Formates damit XNA es leiden kann
-Readme: Open Office 3.1
XBox360:
Ich überlege das Spiel ohne Multiplayer auch auf XBox360 zu verkaufen. Müsste mir dafür aber noch die Hardware und die Mitgliedschaft zulegen. Was haltet ihr davon? Wie sind die Verkaufszahlen solcher Spiele? Hat jemand Erfahrungen oder Tipps?
Issues + Bugs:
Aufgrund der Struktur als Client/Server kann es zu "Sprüngen" kommen wenn die Abfragerate niedrig ist (desynch) da der Client mit den letzten Daten eine Extrapolation macht (weiterlaufen lassen ;)). Wenn dann die neuen Daten vom Server
kommen und der was anderes berechnet hat (z.B. Kollision) ändern sich die Anzeigen im Client sehr schnell (sprungartig). Das kann man weitestgehend vermeiden indem man die Abfragerate hoch stellt in der Configfile (sofern es die
Hardware/Leitung zulässt).
Die Kollision erfolgt nicht pixelgenau (da die Grafikdaten auf dem Server der Kollision berechnet auch nicht vorliegen) sondern nach Entfernung der Zentren der Objekte also nicht wundern wenn es komisch aussieht. Die Objekte behalten
ihre Geschwindigkeit bei und ändern nur die Richtung (unelastischer Stoß) wobei die Masse von allen als gleich angesehen wird.
Nachdem die Zeit abgelaufen oder der Spieler zerstört ist hört das Spiel einfach auf. Man könnte noch die Highscores irgendwo uploaden oder eine email schreiben und in eine Datenbank eintragen. Aber da ich keinen Server zur Verfügung
habe und das auch nicht direkt eine große Herausforderung im Spieldesign darstellt hab ich vorerst darauf verzichtet. Die Highscores müssten zur Vergleichbarkeit auf jeden Fall an eine (runterladbare) Configfile gekoppelt werden (zu
viele Varianten).
Ich weiß die Configfile ist nicht thematisch sortiert und sehr unübersichtlich. Hatte keine Lust das noch zu machen und zu testen. Wenn Bedarf besteht reiche ich das nach der Bewertung noch nach (mit anderen Feature Requests). Die
Max/Min Angaben in den Kommentaren der Configfile sind nur Richtlinien und werden nicht erzwungen/geprüft.
Todo, Ideen, Verbesserung + Balancing:
Auch die Frachter bewegen sich kreisförmig um das Spielfeld herum (alle in selbe Richtung mit gleicher niedriger Geschwindigkeit).
Die verschiedenen Spieler verschieden einfärben (Nutzen?).
Wenn man dockt werden kleine zufällige Missionen angeboten z.B "Bringe Päckchen für 1000 Money in 2 Minuten nach Station 1" und ein Timer zeigt die Restzeit an.
Jedenfalls gibt es noch viele kleine Baustellen und Todos und ich würde das ganze nicht als "fertig" bezeichnen. Eher als Beta-Release.
Fazit, Erfahrungen + Gelerntes:
Auf jeden Fall war es interessant mal den gesamten Prozess vom Design über Resourcen (Bilder), Code, QA zum fertigen Produkt für einen "Auftrag" durchzumachen. Also wo man nicht unbedingt seine persönliche Erfüllung darin sieht und unter Zeitdruck steht. Die meiste Zeit (mindestens die Hälfte) ging aber für den Multiplayer Teil (und seine Implikationen) drauf. Ich schätze ohne diesen wäre es in zwei Wochen möglich gewesen.
Zum einen war es dank .Net Remoting einfacher als ich mir vorgestellt hatte Multiplayer hinzuzufügen aber im Nachhinein führte es doch zu einigen "Problemen" die eine Anpassung erforderlich machten. Zum Beispiel bekommt jeder Client
seinen eigenen Thread auf dem Server was statische Variablen unbrauchbar macht. An sich nicht schlimm aber bis ich das alles rausgefunden und angepasst hatte ...
Schlusswort:
Über Feedback jeglicher Art würde ich mich freuen. Sollten noch Bugreports, Feature Requests oder sonstige Vorschläge kommen würde ich diese noch versuchen umzusetzen und nach der Urteilsverkündung eine neue Version posten (diesen Beitrag editieren) oder ist das nicht erlaubt/erwünscht?
Ist auch ne ganze Menge Text geworden aber jeder der mitmacht ist das sicher gewohnt so viel auf Text zu starren ;).
Viel Spass.
offtopic:
Und auf jeden Fall vielen Dank an die Community für die tolle Aktion besonders die Organisatoren, die Spender und die Teilnehmer. Ich habe viel gelernt und es hat Spaß gemacht.
Sollte es wieder so eine Aktion geben bin ich sofern die Zeit es zulässt wieder dabei. Falls das Theme "Strategie" ist (Runde/Echtzeit) hab ich schon eine Idee im Kopf. Und falls erlaubt würde ich dann gern einen Teil der hierfür entwickelten Infrastruktur verwenden (Client/Server) um Zeit zu sparen und damit die bitteren Lerneffekte nicht umsonst waren ;).
Dann wünsche ich allen Teilnehmern viel Erfolg und ich freue mich schon auf die Beiträge.
Henry
Hintergrund:
Ich wollte ein Asteroids-ähnliches Spiel machen da Weltall einfach und größtenteils schwarz ist (Grafiken). Aber da man riesige Asteroiden von mehreren 100 m oder km Durchmesser nicht einfach zerbröselt ist der Sinn dieses Spiels eher das Ausweichen. Als Ansporn hab ich wie üblich das Geld gewählt das man mit "Handel" unter Zeitdruck verdienen muss. Um ein wenig Tiefe reinzubringen kann man sein Schiff auch Pimpen was natürlich Geld kostet.
Bedienung:
Siehe Code:
Ich hoffe dass das Spiel alle Kriterien und Bedingungen (Richtlinien) erfüllt. War mir bei einigen Punkten nicht sicher.
Basis ist das XNA-Framework für den Client und eine .Net Konsolenanwendung für den Server (C#). Die Multiplayerfunktionalität ist über .Net-Remoting realisiert. Die Sprache für GUI und Code ist englisch meine Kommentare im Code meist deutsch.
Ich weiß es ist weder ein besonderer Augenschmaus noch besonders bedienfreundlich (Configdateien) aber ich wollte mich nicht mit GUI rumschlagen sondern ein paar elementare Konzepte probieren die ich bei meinem nächsten Projekt verwenden will. Außerdem ist vieles nicht besonders elegant programmiert (Server Interface) aber ich bin auch nur Hobby-Entwickler (nicht ausgebildet) und hier musste es "schnell" gehen und das ganze ist ja überschaubar.
Die Input-Klasse habe ich aus einem alten Projekt von mir genommen.
Es sind noch ein paar Todos im Code (gekennzeichnet durch //#) aber nichts wahnsinnig dringendes. Also wenn jemand Lust hat ... ;). Open Source soll sich ja für alle lohnen.
Der Client hat laut http://richnewman.wordpress.com/2007/07 ... t-utility/ etwa 900 Zeilen (ohne Leer + Comments) und das Server-Interface etwa 1550 also zusammen fast 2500 Zeilen.
Lizenz:
Das Spiel, die Resourcen (Bilder, Sounds usw) und der Sourcecode wurden komplett von mir allein erstellt und stehen unter der "The MIT License" (http://www.opensource.org/licenses/mit-license.php).
Ich übernehme keine Gewähr für eventuelle Schäden, ihr nutzt die Software also auf eigenes Risiko. Falls ihr anfällig für Epilepsie sein solltet fragt euren Arzt bevor ihr spielt. Und legt jede Stunde eine Pause von 15 Minuten ein. ;)
verwendete Software + Resourcen:
-IDE: Microsoft Visual C# 2008 Express mit XNA Game Studio 3.1 (XNA Runtime erforderlich, gibts hier http://www.microsoft.com/downloads/deta ... laylang=en und MS.Net Framework hier http://msdn.microsoft.com/en-us/netfram ... 78097.aspx)
-Grafiken: Gimp 2.6.2
-Schrift: http://www.urbanfonts.com/fonts/Crystal.htm
-Sounds: DarkWaveStudio 3 (Antriebs und Kollisionssound), Audacity 1.2.6 für die Konvertierung des Wav-Formates damit XNA es leiden kann
-Readme: Open Office 3.1
XBox360:
Ich überlege das Spiel ohne Multiplayer auch auf XBox360 zu verkaufen. Müsste mir dafür aber noch die Hardware und die Mitgliedschaft zulegen. Was haltet ihr davon? Wie sind die Verkaufszahlen solcher Spiele? Hat jemand Erfahrungen oder Tipps?
Issues + Bugs:
Aufgrund der Struktur als Client/Server kann es zu "Sprüngen" kommen wenn die Abfragerate niedrig ist (desynch) da der Client mit den letzten Daten eine Extrapolation macht (weiterlaufen lassen ;)). Wenn dann die neuen Daten vom Server
kommen und der was anderes berechnet hat (z.B. Kollision) ändern sich die Anzeigen im Client sehr schnell (sprungartig). Das kann man weitestgehend vermeiden indem man die Abfragerate hoch stellt in der Configfile (sofern es die
Hardware/Leitung zulässt).
Die Kollision erfolgt nicht pixelgenau (da die Grafikdaten auf dem Server der Kollision berechnet auch nicht vorliegen) sondern nach Entfernung der Zentren der Objekte also nicht wundern wenn es komisch aussieht. Die Objekte behalten
ihre Geschwindigkeit bei und ändern nur die Richtung (unelastischer Stoß) wobei die Masse von allen als gleich angesehen wird.
Nachdem die Zeit abgelaufen oder der Spieler zerstört ist hört das Spiel einfach auf. Man könnte noch die Highscores irgendwo uploaden oder eine email schreiben und in eine Datenbank eintragen. Aber da ich keinen Server zur Verfügung
habe und das auch nicht direkt eine große Herausforderung im Spieldesign darstellt hab ich vorerst darauf verzichtet. Die Highscores müssten zur Vergleichbarkeit auf jeden Fall an eine (runterladbare) Configfile gekoppelt werden (zu
viele Varianten).
Ich weiß die Configfile ist nicht thematisch sortiert und sehr unübersichtlich. Hatte keine Lust das noch zu machen und zu testen. Wenn Bedarf besteht reiche ich das nach der Bewertung noch nach (mit anderen Feature Requests). Die
Max/Min Angaben in den Kommentaren der Configfile sind nur Richtlinien und werden nicht erzwungen/geprüft.
Todo, Ideen, Verbesserung + Balancing:
Auch die Frachter bewegen sich kreisförmig um das Spielfeld herum (alle in selbe Richtung mit gleicher niedriger Geschwindigkeit).
Die verschiedenen Spieler verschieden einfärben (Nutzen?).
Wenn man dockt werden kleine zufällige Missionen angeboten z.B "Bringe Päckchen für 1000 Money in 2 Minuten nach Station 1" und ein Timer zeigt die Restzeit an.
Jedenfalls gibt es noch viele kleine Baustellen und Todos und ich würde das ganze nicht als "fertig" bezeichnen. Eher als Beta-Release.
Fazit, Erfahrungen + Gelerntes:
Auf jeden Fall war es interessant mal den gesamten Prozess vom Design über Resourcen (Bilder), Code, QA zum fertigen Produkt für einen "Auftrag" durchzumachen. Also wo man nicht unbedingt seine persönliche Erfüllung darin sieht und unter Zeitdruck steht. Die meiste Zeit (mindestens die Hälfte) ging aber für den Multiplayer Teil (und seine Implikationen) drauf. Ich schätze ohne diesen wäre es in zwei Wochen möglich gewesen.
Zum einen war es dank .Net Remoting einfacher als ich mir vorgestellt hatte Multiplayer hinzuzufügen aber im Nachhinein führte es doch zu einigen "Problemen" die eine Anpassung erforderlich machten. Zum Beispiel bekommt jeder Client
seinen eigenen Thread auf dem Server was statische Variablen unbrauchbar macht. An sich nicht schlimm aber bis ich das alles rausgefunden und angepasst hatte ...
Schlusswort:
Über Feedback jeglicher Art würde ich mich freuen. Sollten noch Bugreports, Feature Requests oder sonstige Vorschläge kommen würde ich diese noch versuchen umzusetzen und nach der Urteilsverkündung eine neue Version posten (diesen Beitrag editieren) oder ist das nicht erlaubt/erwünscht?
Ist auch ne ganze Menge Text geworden aber jeder der mitmacht ist das sicher gewohnt so viel auf Text zu starren ;).
Viel Spass.
offtopic:
Und auf jeden Fall vielen Dank an die Community für die tolle Aktion besonders die Organisatoren, die Spender und die Teilnehmer. Ich habe viel gelernt und es hat Spaß gemacht.
Sollte es wieder so eine Aktion geben bin ich sofern die Zeit es zulässt wieder dabei. Falls das Theme "Strategie" ist (Runde/Echtzeit) hab ich schon eine Idee im Kopf. Und falls erlaubt würde ich dann gern einen Teil der hierfür entwickelten Infrastruktur verwenden (Client/Server) um Zeit zu sparen und damit die bitteren Lerneffekte nicht umsonst waren ;).
Dann wünsche ich allen Teilnehmern viel Erfolg und ich freue mich schon auf die Beiträge.
Henry