IDEEN GESUCHT ZUR PROGRAMMIERUNG EINES SPIELES MIT C++



  • Hey Leute,
    ich studiere Mechatronik und muss dieses Semester ein Spiel programmieren mit C++. Der Zeit nutzen wir Visual Studio 2017 zum programmieren. Ich würde auch gerne weiterhin das Programm nutzen, weil ich noch ein Anfänger bin. Da kommen wir zum Thema meine Vorkenntnisse 😮 Ich hab dieses Semester erst angefangen zu programmieren, deswegen noch ein Noob 🤡 . Aber würde das gerne ändern. Falls, ihr super Ideen habt zum Üben oder Lernen, dann her damit. Weil unser Dozent nicht wirklich hilfreich ist und die Bücher sind nicht wirklich ausführlich 👎 👎 .

    Aber nochmal zum Thema "IDEEN GESUCHT ZUR PROGRAMMIERUNG EINES SPIELES MIT C++".
    Habt ihr selber Erfahrung in Spiele Programmierung und könnt mir sagen, welches Spiel gut zu programmieren ist. Vielleicht kennt ihr auch super Seiten, die mir helfen könnten. 🙂

    Ich hoffe, es gibt hier Leute, die mir helfen können. 🙂



  • Ein Spiel, was ich recht am Anfang meiner Programmierzeit geschrieben habe war Tetris und Snake. Beides geht im Notfall rein Textbasiert, wenn dir die Pixel-Grafik zu schwer wird.

    Ansonsten gibts ja noch Schiffe versenken.

    Unser C++ Lehrer hat uns zur Weihnachtszeit mal die Aufgabe gegeben, dass wir mit Ascii-Zeichen ein Weihnachtsbaum zeichnen mussten. Vielleicht kann man daraus ja was machen^^ Weihnachtsbäume, die einfach nur so dastehen und größer werden^^



  • wie wäre es mit schach?



  • Pong wäre der Klassiker 🙂

    Snake ist auch gut, das ist noch relativ einfach, und wenn man die "basic" Variante fertig hat kann man es schön erweitern (Extras, ...).

    Tetris ist auch noch relativ einfach, aber schon ne Nummer schwieriger als die anderen.
    Also vom Schwierigkeitsgrad her vermutlich Pong < Snake < Tetris.



  • Cannon Fooder ohne Scrolling

    Das sollte auch noch recht einfach zu implementieren sein.



  • Danke Leute für eure Antworten 🙂
    Hören sich alle sehr gut an 🙂 Und Snake ist auch mein Favorite, weil ich schon früher Snake süchtig war 😃

    Kennt ihr den Medien ( Tutorials, Videos usw.), die ihr selber oder andere gemacht haben zum Thema Spiele programmieren. Aber auch Medien zum Thema Text Programmierung. Dort sind wir momentan. 😮

    Unser letztes Projekt war ISBN nr. Erkennung.

    Nochmals vielen Dank für eure Meinungen und Ideen 🙂

    Würde mich freuen, wenn ihr mir helfen könntet.



  • Ich hatte mal ein Tetris in Textmode hier reingeschrieben, fuer education zwecke...mal suchen...

    hier:
    https://www.c-plusplus.net/forum/277262-3

    falls du/ihr fragen habt dazu, fragt ruhig.
    Jetzt steht dem Snake Spiel nicht mehr im Weg 😉



  • Danke die rapso 👍 👍 👍
    Das ist eine super Orientierung. 🙂 🙂 🙂
    Ein klarer Leitfaden 🙂

    Kennst du den noch weitere Anleitungen zum Thema " Spiele Programmierung"



  • Wie wär's denn mal mit was Eigenem?

    Wieso wird immer Pong, Snake und Tetris vorgeschlagen? Weil es einfach zu programmieren ist? Na und? Generell ein Männchen über den Bildschirm zu bewegen ist auch einfach. Und das kann man dann als Grundlage benutzen, irgendein x-beliebiges Spielprinzip zu erfinden.

    Also macht doch mal wenigstens etwas, das vom Spielprinzip ein bisschen kreativer ist als "Spieleidee, die zu 100% von einem bereits vorhandenen Spiel übernommen ist und die buchstäblich bereits eine Million mal implementiert wurde".



  • Gamaer schrieb:

    Wieso wird immer Pong, Snake und Tetris vorgeschlagen?

    Na, andere Alternativen sind auch nicht viel besser, Nimm-Spiel, Textadventure(kreativ oder nicht?), Asteroids usw.
    Peter Norton hatte Einsteigern geschrieben, dass es (erfahrungsgemäß) mit am einfachsten ist, fertige Programme (oder Unterprogramme) zu nehmen und die dann individuell etwas abzuändern.

    So kann man sich am einfachsten auf die wichtigen Lerninhalte, Programmierwerkzeuge und Bugs wie auch erste Schritte zu bestimmten Umsetzungen konzentrieren.

    Aber natürlich schade, das der Prof nicht so etwas wie Oblivion Mod Debugger/Patcher vorgeschlagen hatte. Etliche Probleme werden durch "Custom Races" verursacht - ist das jetzt lame oder auch eine Möglichkeit für Geld zurück?



  • nachtfeuer schrieb:

    Na, andere Alternativen sind auch nicht viel besser

    Man muss ja auch nicht die größte Innovation programmieren und gleich ein komplett neues Genre erfinden.

    Aber nehmen wir mal an, man nimmt sich jetzt folgendes vor:
    Ein Top-Down-Spiel mit Wänden und Gegnern, die sich, je nach Gegnertyp, unterschiedlich verhalten.
    Ziel: Alle Gegner abzuschießen ohne selbst getroffen zu werden, bevor die Zeit ausläuft.

    So. Ist jetzt auch nicht gerade das Allerneueste. Aber der Unterschied ist eben: Es ist nicht einfach ein Klon von einem ganz bestimmten Spiel.

    Pong wird am Ende einfach nur Pong sein, und Snake einfach nur Snake. Wieso sollte ich dieser konkreten Implementierung mehr als 10 Sekunden meiner Zeit widmen?
    Während die obere Idee auf ganz verschiedene Weise implementiert werden kann. Genauso wie Berzerk und Robotron 2048 zwei verschiedene Spiele sind, wird auch dieses Spiel anders sein.
    Somit ist das für einen Spieler wenigstens ein bisschen interessant: Man hat eben ein neues kleines Spiel. Vielleicht ist es gut.

    Pong und Snake, das ist jetzt so, als wenn mir ein Programmieranfänger zeigt, wie er die Zahlen von 1 bis 10 in einer Schleife ausgegeben hat: Eine nette Übung für ihn selbst, aber nichts, wo das Programm jetzt außerhalb der Übung für irgendwas zu gebrauchen wäre.



  • Wenn es in C++ sein soll und 2D würde ich noch SFML für Fenster/Graphics/Audio/Networking empfehlen. Die API ist sauber und eher C++ig (nicht wie SDL).

    Als Medien kann ich persönlich das Buch SFML Game Development empfehlen. Ich habe es selbst auch mir gegönnt und daraus gelernt wie man 2D Spiele programmiert (States, StateStack, SceneGraph, Entity, Networking, ...).

    Und generell gilt, wenn man sich mit C++ nicht wohl fühlt (zumindest OOP/Klassen, lambdas, STL, smart pointer, ?), dann kann das schon mal frustrierend werden.


  • Global Moderator

    Gamaer schrieb:

    Pong und Snake, das ist jetzt so, als wenn mir ein Programmieranfänger zeigt, wie er die Zahlen von 1 bis 10 in einer Schleife ausgegeben hat: Eine nette Übung für ihn selbst, aber nichts, wo das Programm jetzt außerhalb der Übung für irgendwas zu gebrauchen wäre.

    Aber genau darum geht es doch! Es soll schließlich gelernt werden, wie man so ein Spiel programmiertechnisch aufzieht. Der kreative Teil der Spieleentwicklung lenkt davon nur unnötig ab. Bei Tetris und Pong ist jedem ohne Erklärung perfekt klar, was am Ende rauskommen muss, man kann sich voll darauf konzentrieren, wie man diese bekannten Ideen in Software umsetzt.

    Dass das Ergebnis am Ende für die Tonne ist, weil sich ein erster Versuch eines Anfängers nicht mit den ausgereiften Profiergebnissen messen kann, ist jedem klar. Das würde aber auch für dein 'innovatives' Spiel gelten, bloß dass man unnötig mehr Arbeit reinstecken muss. Fast mit Sicherheit ist das innovative Spiel noch viel mehr ein Fall für die Mülltonne, denn Ideen für gute Spiele sind sehr viel schwieriger zu finden als man denkt; besonders für jene, die sich eher für die Programmierung interessieren als für den Designteil. Bei Pong und Tetris weiß man auf jeden Fall, dass die Idee gut ist, und man kann dann daher das Ergebnis auch mit Freude selber spielen oder Bekannten vorführen, ohne sich für das schlechte Gameplay schämen zu müssen.

    Wenn jemand das erste Mal backt, sollte er schließlich am besten auch nach (einem einfachen!) Rezept vorgehen. Es wäre der Wahnsinn, zu empfehlen, gleich etwas eigenes zu kreieren. Das würde nur in irgendwelchem Mehlmatsch enden, wohingegen nach Rezept ein akzeptabler Standardkuchen heraus käme.

    Die handwerkliche Umsetzung und die Schaffung neuer Ideen sind nun einmal, auf egal welchem Arbeitsfeld, völlig verschiedene Handlungsbereiche. Viele Menschen machen sogar stets nur eines von beidem, weil die Bereiche so wenig Schnittmenge haben.



  • Gamaer schrieb:

    Wie wär's denn mal mit was Eigenem?

    Wieso wird immer Pong, Snake und Tetris vorgeschlagen? Weil es einfach zu programmieren ist?

    weil du dich auf ein programmierproblem fokusieren willst, was schon herausforderung genug ist. eigene regeln und systeme zu entwickeln kannst du machen, wenn dir die implementierung keine probleme bereitet, denn wenn du zuviele vorhaben auf einmal hast, bekommst du am ende keiene sache fertig.

    spiel 2.0 kann ja was eigenes sein.



  • Na, dann reicht aber echt auch nur, ein Viereck über den Bildschirm zu bewegen.

    Durch Mauern soll er nicht laufen können (Kollisionsabfrage mit Level) und bei Berührung mit einem anderen Viereck kommt ein Sound (Kollisionsabfrage mit anderen Sprites).

    Läuft man in eine Wand, während man eine bestimmte Taste gedrückt hält, verschwindet diese Wand (zerstörbares Spielfeld).

    Wenn's wirklich nur um Programmiertechniken gehen soll, dann ist das ausreichend.
    Dann muss man nicht Zeit verschwenden mit Tetris oder Snake, wo es neben den speziellen Spieleprgrammiersachen ja auch ganz allgemeine Regeln gibt (Wenn Linie voll, dann Linie löschen), die jetzt eher mit Programmierung allgemein zu tun haben und die in einem späteren Spiel sowieso wieder ganz anders sind.



  • da hast du recht, wenn die motivation egal ist, kann er ein paar triviale schleifen oder EVA systeme programmieren. Wenn jedoch etwas mehr motivierendes, ohne viel mehr nono-programming aufwand gewuenscht ist, ist ein clone von existierenden spielen eine valide alternative.


  • Global Moderator

    Gamaer schrieb:

    Na, dann reicht aber echt auch nur, ein Viereck über den Bildschirm zu bewegen.

    Durch Mauern soll er nicht laufen können (Kollisionsabfrage mit Level) und bei Berührung mit einem anderen Viereck kommt ein Sound (Kollisionsabfrage mit anderen Sprites).

    Läuft man in eine Wand, während man eine bestimmte Taste gedrückt hält, verschwindet diese Wand (zerstörbares Spielfeld).

    Es würde reichen, ja. Aber es ist der gleiche Aufwand, ein bekannt gutes Spielprinzip zu implementieren, und man hat dann hinterher ein brauchbares Spiel. Ein eigenes Spielprinzip von Grund auf zu Designen ist hingegen viel aufwändiger und die Chancen stehen gut, dass das selbst erfunden Spielprinzip keine Spaß macht.

    Wenn's wirklich nur um Programmiertechniken gehen soll, dann ist das ausreichend.
    Dann muss man nicht Zeit verschwenden mit Tetris oder Snake, wo es neben den speziellen Spieleprgrammiersachen ja auch ganz allgemeine Regeln gibt (Wenn Linie voll, dann Linie löschen), die jetzt eher mit Programmierung allgemein zu tun haben und die in einem späteren Spiel sowieso wieder ganz anders sind.

    Wie man Spielregeln implementiert ist für dich kein Teil der Spieleprogrammierung?



  • Mangelnde Ideen für Spiele waren noch nie ein Problem für mich. Eher mangelnde Zeit und Disziplin zur Realisierung dieser Ideen.

    Fällt dir wirklich nichts ein? Es gibt so viele Möglichkeiten. Manche Leute lassen sich auch von älteren Retro Spielen inspirieren. Der Vorteil dabei wäre auch dass die Spiele damals simpler waren.
    Und hin und wieder findet man sogar ein Spielprinzip dass es heute gar nicht mehr gibt



  • Wenn wir jetzt sowieso schon bei 2D/2,5D sind, werfe ich einfach mal Tower Defense in den raum.

    Das grundlegende Prinzip sollte jedem bekannt sein und dennoch laesst es mehr als genug Spielraum fuer eigene Regeln und Design.



  • Ja, klar, ein Anfänger wie hASCII_Cpp programmiert mal eben nen Tower-Defense in C++. Ihr habt alle einen an der Klatsche. Damit wird er doch nie fertig.

    Hier, DAMIT fängt man mal an:
    https://tinodidriksen.com/2003/05/but-can-you-make-pong/

    Wenn man das fertig hat (und fertig heisst FERTIG, nicht halbfertig), erst dann sollte man sich an kompliziertere Sachen dranwagen.