Beschreibung
YIANG ist ein kurzweiliges, actionbasiertes Jump'n'Run-Spiel in ASCII-Art. Level–basiert, aber trotzdem NonStop Aektschen :-). Sobald das Ziel eines Levels erreicht ist, geht es sofort mit dem naechsten bzw. ersten weiter. Mit jedem Level erhoeht sich auch die Spielgeschwindigkeit. Den mutigen Spieler erwarten verschiedene Typen von Gegnern, Fallen sowie spezielle Items fuer kurzfristige Boni, z.B. mehr Geschwindigkeit, Unverwundbarkeit oder erhoehte Sprungkraft.
Das Spiel soll einfach nur Spaß machen, etwas Konzentration ist aber erforderlich. Das Spielziel ist, moeglichst lange durchzuhalten und nebenher gaaaanz viel Geld zu sammeln. Auch wenn es nun doch ein eher klassisches Jump'n'Run-Game geworden ist, habe ich versucht den Spielablauf moeglichst abwechslungsreich zu gestalten :-)
‘YIANG’ ist ein rekursives Akronym, wer die Bedeutung erraet, darf sie behalten.
Screenshots
Spielablauf
Starten, „New Game”. Steuerung mit den Pfeiltasten – links, rechts, oben. Einige Debug–Features (aka „Cheats”) sind ueber die Tastatur erreichbar, u.a. "X" aktiviert den GodMode, "B" zeigt Umgebungsboxen, "D" Debug–Statistiken und "G" erlaubt beliebige Bewegungen im Raum. Oben links findet ihr euren Punktestand, das aktuelle Level (wobei die erste Zahl fuer die Wiederholung steht), oben rechts die verbleibenden Leben. Wenn ihr sterbt, werdet ihr am letzten vordefinierten Respawn–Punkt wiedergespawnt.
… Ach was erklaere ich euch eigentlich die Funktionsweise eines Jump'n'Runs :-) …
Technik
Das Projekt ist nahezu vollstaendig in Python 3 (v3.1) entstanden. Leider entstand somit eine Abhaengigkeit von der Python–Runtime, die in der erforderliche Version nur selten installiert ist. Als Framework kommt SFML, Release 1.5, zum Einsatz, das zwar veraltet ist, jedoch ueber funktionstuechtige Python–Wrapper verfuegt. Damit waere eigentlich die Notwendigkeit entstanden den End–User auch noch selbige Bindings einrichten zu lassen, fuer nicht-Python–„Kenner” eine eher unlustige Sache.
Daher habe ich mich dafuer entschieden, die Python Runtime komplett einzubetten, was gluecklicherweise nicht sonderlich muehsam ist. Der eher kurze C++–Teil des Programms dient als Bootstrapper, d.h. er initialisiert Python und startet das eigentliche Spiel, das, von der MSVC–Runtime abgesehen, somit keine wirklichen Abhaengigkeiten mehr besitzt. Es besteht aus ca. ~3.5kLOC, der Quellcode ist dokumentiert. Insgesamt habe ich stark auf Les– und Wartbarkeit geachtet.
Das Spiel war urspruenglich Tile-basiert, ist aber in der vorliegenden Version im Prinzip voellig frei konfigurierbar und nicht an bestimmte Groeßen oder Positionen gebunden – siehe die mitgelieferten Level. Das Leveldesign erfolgt, wie ueblich, in Form von ganz normalen Textdateien, die eine Art Minimap aller Elemente im jwlg. Level bilden. Ein Eintrag besteht aus einem Farbcode (z.B. faerbt ‘r’ ein Element rot) sowie einem aus zwei Zeichen bestehenden Typcode, der direkt einer gleichnamigen Datei entspricht. Diese definiert dann das Aussehen des entsprechenden Elementes und verweist auf eine dynamisch ladbare Klasse, die die Implementierung des gewuenschten Verhaltens - sofern das Standardverhalten nicht ausreichend ist - uebernimmt. Insgesamt eine nette Anwendung fuer eine dynamische Sprache wie Python, insofern bereue ich die Wahl trotz der geschilderten Probleme nicht.
Da alle verwendeten Komponenten portabel sind, steht einer Portierung auf Linux/Mac nichts entgegen. Aus Zeitmangel habe ich mich bislang aber dagegen entschieden, d.h. es gibt momentan nur eine Windows-Version :-)
Team
Programmierung:
Alexander Gessler
Leveldesign & Quality Assurance – dafuer vielen, vielen Dank :-)
Tizian Wieland
Tobias Rittig
Adrian Thebrath
Dank auch an alle, die so freundlich waren das Programm bei sich zu testen :-)
Downloads
Lizenz: 3–clause BSD HINWEIS: Weiter unten im Thread findet ihr eine aktualisierte Version. Diese ist nach dem offiziellen Ende der ZFX-Action entstanden, reprasentiert aber einen grossen Fortschritt in Bezug auf Spielbarkeit und Stabilitaet.
Bekannte Probleme
- Auf manchen Systemen kommt es beim Beenden des Spiels zu einem Absturz in den Tiefen von SFML. Bislang nur auf ATI/AMD-Hardware beobachtet, ein Zusammenhang ist nach bisherigem Kenntnisstand wahrscheinlich.
- Auf leistungsschwachen Systemen kann es zu Performanceproblemen in großen Levels kommen.
- Die Kollisionserkennung ist katastrophal. Schlussendlich hat die Zeit gefehlt es sauber zu machen. Ich erbitte mir etwas Frust–Toleranz, manchmal kommt sie euch dafuer auch etwas entgegen :-)
- Beim LevelUp verschwinden hin und wieder auf magische Art und Weise Leben …
- Auf einem Test-System (XpHome, x86, SP3) startete das Spiel nicht, mit einer mysterioesen CRT Fehlermeldung. Bislang noch auf keinem zweiten System reproduziert.
Startet nicht, ‘Anwendungskonfiguration nicht korrekt’, ‘msXXXXX.dll konnte nicht gefunden werden’, …
Die VC8/SP1/x86–Runtime benoetigt das Spiel selber … die mitgelieferte Python DLL braucht VC9/X86.
Ich nutze das <SonstWas>–Layout, meine Pfeiltasten sind auf der Rueckseite der Tastatur …
Die Tastaturbelegung kann in der Datei ./config/key_bindings.txt geaendert werden.
Sound? …
Kommt noch, in der naechsten Version.
What about WINE?
Nicht getestet bislang, koennte durchaus klappen ;-)
Desktop? IIIIICH WIIIIILL VOLLBILDMODUS SPIELEN!!!!!!!?
Offiziell nirgendwo, aber gaaaaaaanz Clevere koennten es eventuell schaffen ihn zu aktivieren. Dafuer muesste man aber wirklich so enorm clever sein, dass man eigentlich in der Lage sein sollte zu begreifen, dass es vermutlich einen Grund fuer den nicht im Menue aktivierbaren Vollbildmodus gibt.
Mir gefaellt die Grafik nicht, gibt es eine Option um auf die CryEngine™ zu wechseln?
Leider nein und es ist auch keine in Planung.
Feedback
Ich freue mich ueber jegliches Feedback, ob Bugreport, konstruktive Kritik oder einfach nur ein paar nette Worte :-) Das Projekt hat Spaß gemacht, und es wird sicherlich noch eine weitere Version geben, wenn auch außerhalb der ZFX–Action …
Achja … wie viele $ schafft ihr? ;-)