Hallo Besucher, der Thread wurde 29k mal aufgerufen und enthält 155 Antworten

letzter Beitrag von TheRealWanderer am

F64PGC2017: Fußball (Coder gesucht)

  • Aber generell hast Du bei C halt so ein paar Libs, die hinzu gelinkt werden, weil ich aktuell z.B. einige printf Ausgaben drin hab. Die würden ja bei nem echten Spiel auch wegfallen. Dort würde der eigentliche Spielablauf ja in Asm laufen und C nur benutzt werden, um z.B. die Daten zu laden.

    Ich hatte beim flüchtigen Gucken nur ellenlange, mehrfache gleichartige Routinen gesehen. Geht das in C nicht irgendwie anders? Ich hab da aber auch keine Ahnung von.

  • Natürlich müssen die Routinen für die Bewegungen noch zusammengefasst werden.
    Im Moment hack ich eher rum, um mal die Bewegungen in alle Richtungen 'schön' zu bekommen.
    Danach wollte ich dann schauen, wie man das mit (viel) weniger Code hinbekommt.


    Magst helfen? ^^

  • Schon ganz schön – aber toller wäre es, wenn man während des Schusses den Spieler weiter bewegen könnte, weil das im Spiel natürlich auch so wäre. Und der Ball darf deutlich schneller über den Screen fliegen (ein Ball kann schneller als ein Spieler sein).


    Als nächstes könnte man dann mal die 16 Richtungen angehen, denn dafür gibt es den Dummy ja.


    Weiter so .....

  • Ich habe mal getestet, wie man das mit den 16 Richtungen lösen/umsetzen könnte.


    Anbei das PRG mit dem Versuch.


    Ist natürlich nicht optimiert (vieles redundant, kein 9. Bit für die X Achse und noch keine unterschiedlichen Geschwindigkeiten (rennen, normal laufen), Geschwindigkeitsanpassung für Diagonale Bewegungen ist aber enthalten).


    Ich verrate mal nicht wie man steuern muss, einfach mal probieren ;)


    Tipp: Am besten mit einem Joystick testen. Mit der Tastatur (= Joy-Emulation in Vice) geht das zwar auch, macht aber keinen Spaß.

  • Ich habe mal getestet, wie man das mit den 16 Richtungen lösen/umsetzen könnte.

    Ich habe es mal getestet und bin nicht ganz schlau daraus geworden. Es hat sich mir intuitiv nicht erschlossen – vielleicht liegt es aber auch nur an ein paar Ungereimtheiten. Wenn ich z.B. gerade hoch laufe und dann zusätzlich kurz nach links oder rechts steuere, verhält sich der Pfeil unterschiedlich – das kann doch nicht gewollt sein, oder?

  • Also folgendermaßen:


    Aus der Joystick 0-Stellung heraus steuert man immer in die Richtung, in die man den Joystick bewegt.
    Anschließend bewegt man den Joystick (ohne das man in die 0-Stellung zurück geht) links oder rechts rum. Damit verändert man den Laufweg immer um 22,5 Grad in die jeweilige Richtung.


    Beispiel:
    - Du steuerst nach oben - Spieler läuft hoch.
    - Dann diagonal rechts oben - Spieler läuft (22,5 Grad) weiter nach rechts oben.
    - Dann nach rechts steuern - Spieler läuft (45 Grad) nach rechts oben.


    usw.


    In der anderen Richtung entsprechend andersrum.


    Wichtig: Sobald du den Joystick loslässt, damit er in die 0-Stellung fällt, läuft der Spieler bei der nächsten Bewegung in die Richtung, in die der Stick gedrückt wird.


    Ich fand es ganz angenehm zu steuern, aber vielleicht ist es etwas zu gewöhnungsbedürftig ;)

  • huch? Der compo orga codet an einem entry mit? :)

    Nein, das Problem mit den 16 Richtungen hat mich nur mal interessiert :)

  • Also da sind definitiv noch ein paar Bugs vorhanden. Wenn ich z.B. nach rechts laufe und dann kurzerhand nach links wechseln moechte, bewegt sich der Pfeil nach rechts unten.


    Es mag ja sein dass es noch eine etwas passablere Loesung geben mag, aber ich bin eigentlich relativ fest davon ueberzeugt, dass das nix werden kann. Eine solche Steuerung wird sich NIEMALS intuitiv verhalten, da bin ich mir sehr sicher. Zudem ist es auch nervig, wenn der Spieler sich erstmal "drehen" muss - das mag zwar realistisch sein, aber warum spielt ihr eigentlich Computerspiele? Doch nicht etwa wegen Realismus, oder? Das tolle an Computerspielen ist doch gerade, dass da vieles deutlich einfacher ablaeuft, als im echten Leben - und dazu gehoert fuer mich z.B. auch, dass die Figur direkt die Richtung wechseln kann, wenn der Joystick bewegt wird. Alles andere wirkt "schwammig" und nervig. Und gerade bei einem actionreichen Spiel moechte man doch nicht immer solche Steuerungshindernisse erleben.


    Einer der wichtigsten Punkte bei einem guten Spiel sind doch reproduzierbare Ergebnisse. Wenn man aber bereits mit der Steuerung zu kaempfen hat, dann ist das nur unnoetig frustrierend.


    Ihr koennt natuerlich gerne weiter probieren, aber bislang ueberzeugt mich das null. Und ich glaube, dass sogar die ausgefeilteste Loesung immer noch nicht wirklich gut spielbar sein wird. Ich wuerde mir daher schonmal Gedanken zu einer Alternative machen, oder mich doch mit 8-Wege-Steuerung anfreunden. So zumindest mal meine bescheidene Meinung.

  • Wie gesagt, war nur ein Test.

    Also da sind definitiv noch ein paar Bugs vorhanden.

    Auf jeden Fall. Hab das nur schnell mal runtergeschrieben :)

    Wenn ich z.B. nach rechts laufe und dann kurzerhand nach links wechseln moechte, bewegt sich der Pfeil nach rechts unten.

    Ich bekomme das Phänomen nur hin, wenn ich mit der Tastatur in Vice spiele, da man damit rechts und links gleichzeitig drücken kann.

    Zudem ist es auch nervig, wenn der Spieler sich erstmal "drehen" muss

    Da verwechselt du was. In dem Test geht es nicht darum, dass der Spieler sich drehen muss, um z.B. in die Gegenrichtung laufen zu müssen, sondern um auch andere, als die normalen 8 Wege mit einem Digitaljoystick, gehen zu können.


    Fazit: Die Steuerung ist zu kompliziert, also Test gescheitert :)

  • Das war mir schon klar, dass es um die 16-Wege-Steuerung geht und nicht um die Drehung. Aber die Drehung wurde weiter vorne irgendwo als gutes "Mittel zur Kaschierung" erwaehnt, wenn ich das richtig in Erinnerung habe. Also quasi um eine Moeglichkeit, diese eigenartige Steuerungsidee ein wenig "plausibler" erscheinen zu lassen. Die Beispiele von daybyter haben diese Drehung auch tatsaechlich so umgesetzt gehabt (aber da ging die 16-Wege-Steuerung noch nicht).

  • huch? Der compo orga codet an einem entry mit?

    Zum einen geht es hier nicht um die Realisierung des Spiels, sondern um einen grundsätzlichen Lösungsansatz, der auch für andere Spiele taugen könnte. Zum anderen sehe ich noch nicht, dass das Spiel überhaupt an der Compo teilnehmen wird. Es müsste sich schon ein erfahrener Programmierer melden, der für die Hälfte der Herausforderungen (und davon gibt es einige bei dem Projekt) Code in der Schublade liegen hat. Gegen ein gutes Fußballspiel ist ein beliebiger Weltraumshooter quasi eine Fingerübung.


    Wenn man aber bereits mit der Steuerung zu kaempfen hat, dann ist das nur unnoetig frustrierend.

    Das sehe ich ebenso und das ist auch nicht gewollt. Nur leider hat bisher noch keiner versucht, meine Steuerungs-Idee zu realisieren. Ich gucke mir Alternativen ja gerne an aber ich würde mich freuen, wenn mal jemand meinen beschriebenen Ansatz umsetzen würde.


    Fazit: Die Steuerung ist zu kompliziert, also Test gescheitert

    Für mich sieht es erstmal so aus. Ich verstehe sie zumindest nicht auf Anhieb. Aber du bist schon so weit gekommen, dass ich mir vorstellen könnte, dass es ein Klacks wäre, meinen Vorschlag damit mal zu testen.

  • ( wenn die Bugs weg wären ) , nur nicht für ein Fußballspiel.

    Welche Bugs sind dir denn aufgefallen?
    Vielleicht kann ich die Steuerung ja mal irgendwo anders verwenden, dann wäre es schön, wenn sie bugfrei ist.


    Aber du bist schon so weit gekommen, dass ich mir vorstellen könnte, dass es ein Klacks wäre, meinen Vorschlag damit mal zu testen.

    Ich hab mir nochmal durchgelesen, wie du dir die Steuerung vorstellst.
    Im Prinzip schon eine Grundähnlichkeit zu meinem Test.
    Aber ein paar Fragen stellen sich mir dazu.
    Du sagtest, hoch laufen, dann diagonal rechts um kurz im Winkel von 22,5 Grad zu laufen.
    Wieder hoch um den Winkel beim Laufen beizubehalten.
    Wie kann ich denn dann wieder gerade hoch laufen? Oder muss dazu der Stick vorher erst wieder kurz in die Nullstellung?
    Das betrifft ja irgendwie alle Richtungen.

  • Welche Bugs sind dir denn aufgefallen?Vielleicht kann ich die Steuerung ja mal irgendwo anders verwenden, dann wäre es schön, wenn sie bugfrei ist.

    Genrell hatte ich ( unter Vice ) Probleme, dass die Steuerung manchmal nicht das machte was ich wollte ( Plötzliche Richtungswechsel ). Leider kann ich es nicht auf realer Hardware testen, da alle Geräte derzeit verpackt sind.

  • .

    Zitat von Retrofan

    Gegen ein gutes Fußballspiel ist ein beliebiger Weltraumshooter quasi eine Fingerübung

    das nehme ich Dir ab, wenn Du beides einmal programmiert hast :-)
    Was die grafische Ausgestaltung angeht hätte ich da auch so meine Zweifel.

  • das nehme ich Dir ab, wenn Du beides einmal programmiert hast

    Ja, ich weiß, Restaurantkritiker sollten selber auf Sterne-Niveau kochen können und Buch-Kritiker dürfen erst kritisieren, wenn sie selbst mal ein paar Bestseller geschrieben haben (gar nicht zu reden von Auto- und HiFi-Testern, die doch selber erstmal sowas bauen sollen, bevor sie sich ein Urteil leisten). ;)


    Ich glaube schon, dass ich den Entwicklungs-Schwierigkeitsgrad eines Spiels einigermaßen einschätzen kann, ohne es vorher selbst entwickelt zu haben (einfach als Gamer und auch involviert in Spiele-Entwicklung). Natürlich nicht im Detail aber doch über den Daumen gepeilt.


    Bei den meisten (natürlich nicht allen) Shootern dürfte z.B. die Kollisionsabfrage (teilweise Überdeckungen der Spieler und Berücksichtigung der Ballflughöhe beim Fußball in 2,5D-Ansicht) und auch das "Handling" des "Projektils" deutlich einfacher sein. Auch die Bewegung eines Raumschiffes selbst ist bei den meisten Horizontal- und Vertikal-Shootern wohl deutlich simpler (kommt beim Shooter meistens mit einer einstelligen Anzahl von Animationsframes aus) als der Bewegungsablauf eines menschlichen Fußballspielers, der in 8 oder 16 Richtungen laufen soll (ich erwähnte ja schon die bis zu 128 Sprites nur für das normale Laufen).


    Dazu die KI (die bei den meisten Shootern gar nicht bis kaum vorhanden ist), wo der Computer beim Fußball 21 Gegner/Mitspieler übernehmen muss, während der User nur eine der Figuren steuert. Auch ganz spezifisch die Angriffsbewegungen der Spielfiguren (Grätsche, Torschuss, Kopfball, Dribbling etc.) können weitaus komplexer sein, als Bewegungen bei R-Type und Co. Und auch beim Scrolling, Sprite-Multiplexing etc. kann sich der Spieleentwickler beim Fußball keine Auszeit nehmen – das eint allerdings beide Genres.


    Also, ich glaube schon, dass ein Fußballspiel den Programmierer vor Aufgaben stellt, die einen sehr hohen Schwierigkeitsgrad haben. Das ist nichts für Anfänger, die immer schon mal ein C64 Spiel schreiben wollten. Letzteren würde ich raten: lasst erstmal ein paar Raumschiffe von oben oben in den Screen fallen und versucht sie, von unten abzuschießen.


    Das soll keine Kritik an oder ein Herunterputzen von Weltraumshootern (oder deren Entwicklern) sein – es ist eines meiner Lieblings-Genres. Und natürlich gibt es unendlich komplexe Weltraumshooter. Ich hatte im Hinterkopf eher so "Space Invaders" vs. "Sensible Soccer", (was man natürlich als unfair bezeichnen kann). Natürlich kann jeder auch Gegenbeispiele finden, Ausnahmen bestätigen eher die Regel und widerlegen sie selten komplett.


    Sollte ich irgendwem zu nahe getreten sein, so tut es mir leid – und ehe ich jemanden beleidige, nehme ich meine Äußerung lieber zurück. Böse gemeint war sie nicht.



    Ich war wirklich stark am hadern, ob ich meine Spiel-"Idee" überhaupt vorstellen soll. Einfach, weil ich weiß, was für ein "Brett" so ein Spiel ist. Ich sehe ungern Leute scheitern und das Fußballspiel so ein Ding, bei dem auch ein erfahrener Coder sicherlich gerne mal mittendrin alles an die Wand wirft, wenn wieder nicht alle Teile zusammen arbeiten wollen. Ich war anfangs schon recht sicher, dass sich sowas kaum jemand ans Bein binden wird (der wirklich weiß, was auf ihn zukommt) und nach den Diskussionen bin ich sogar noch sicherer geworden, dass man es besser sein lässt. Es ist einfach zu komplex (wenn es wirklich gut werden soll).


    (Trotzdem würde ich die Bewegungssteuerung gerne weiter testen, da man sie vielleicht auch für Autorennen oder Weltraumshooter verwenden könnte) ;)


    Was die grafische Ausgestaltung angeht hätte ich da auch so meine Zweifel.

    Da habe ich nicht nur Zweifel, da bin ich mir sogar sicher. Das Fußballspiel hätte ich "recht schnell" heruntergepixel gehabt (die Spielerbewegungen sind das einzig wirklich komplexe) – während ich bei einem Salamander-Clone wochenlang Level-Tiles und Gegner-Varianten zusammenpixeln dürfte. Die Grafik ist beim Fußballspiel die geringste Herausforderung.


    (Trotzdem glaube ich, dass ich eine recht hübsche Variante gezeichnet habe, die mit der existierenden Soccer-Konkurrenz mithalten könnte)

  • Du sagtest, hoch laufen, dann diagonal rechts um kurz im Winkel von 22,5 Grad zu laufen.
    Wieder hoch um den Winkel beim Laufen beizubehalten.
    Wie kann ich denn dann wieder gerade hoch laufen? Oder muss dazu der Stick vorher erst wieder kurz in die Nullstellung?

    Hier nochmal meine (überarbeitete) Beschreibung (besser kriege ich sie nicht hin, außer man sagt mir, was genau unklar ist):


    Man steuert ja üblicherweise den Nicht-KI-Spieler in eine bestimmte Richtung. Hier mal angenommen mit Ball – direkt nach oben auf das Tor zu rennend. Wenn man jetzt z.B. 180° in die Gegenrichtung oder 90° nach rechts steuert, wird sofort diese Richtung eingeschlagen aber wenn man z.B. im Lauf zusätzlich (zu vorn) nach rechts steuert (also 45° oben-rechts), dann wird nicht sofort auf 45° geschaltet, sondern für eine sehr kurze Zeit ein Zwischenschritt mit 22,5° eingeschlagen und erst dann auf 45° geschaltet. Schießt man in der Phase, wird auch der Ball in 22,5° abgefeuert.


    Das wäre der erste Schritt, der noch gut zu realisieren wäre und auch keine Umgewöhnung für den Spieler brächte. Jetzt geht es aber weiter:


    Man kann aber auch weiter in diese 22,5°-Richtung laufen, wenn man sofort nach der Oben-Rechts-Bewegung wieder auf Oben zurückschaltet (wenn man es nicht tut, würde man ja bei 45° rechts-oben landen). Dann läuft der Spieler (bis man ein kurze Gegenbewegung nach Oben-Links ausführt) in 22,5° (nord-nord-ost – wenn man es in Windrichtungen angeben würde) weiter.


    Das wäre eigentlich schon die komplette Grundidee, die zu testen wäre. Als Variation könnte man den 90°-Geradeauslauf (nach 22,5°) nicht per Joystickkorrektur, sondern automatisch nach kurzer Zeit durchführen. Oder man lässt das Laufen in der Zwischenrichtung bleiben und nimmt sie nur für den Ball-Schuss.


    (Man benötigt für den Dummy kein Scrolling – man kann den Pfeil über den Bildschirm laufen lassen. Wenn er den Bildschirm verlässt, sollte er auf der gegenüberliegenden Seite wieder hereinkommen. Bei Betätigen des Feuerknopfes kann der Ball (eine feste Strecke lang oder bis zum Bildschirmrand) in Laufrichtung verschossen werden (nach Ende des Schusses sollte der Spieler einen neuen Ball bekommen). So müsste man sehen können, ob meine Idee mit den 16 Richtungen umsetzbar ist und intuitiv benutzt werden kann.)