Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.02.2015, 10:02

Fragen über Lernprozess, Steigerung der Lernkurve und Anwendung

Hallo liebe Spieleprogrammierer-Community,

seit ungefähr eineinhalb Jahren beschäftige ich mich mit Programmierung und bin seit jeher von Spielen sehr angetan - was das Entwickeln eines eigenen Spieles doch sehr attraktiv und zum angestrebten Ziel macht. Nach der Entscheidung eine Programmiersprache zu erlernen, vor, wie oben erwähnt, ungefähr eineinhalb Jahren, merkte ich direkt, dass das Programmieren an sich mir fast mehr Spaß als das eigentliche Spielen macht. Ich kann bis heute nur in wenigen Worten erklären warum, womöglich ist es der Reiz aus "Nichts" etwas, aus eigener Logik und der Fähigkeit mit dem Computer zu kommunizieren, zu schaffen - quasi auf irgendeine Art und Weise Gott zu spielen.
Doch das ist nicht das Thema, was ich hier und jetzt ansprechen wollte und womöglich nichts, was euch interessiert - tut mir Leid. :)

Da ich das Programmieren fast autodidaktisch, sprich ohne Bücher und Lehrmaterial, gelernt habe, habe ich Angst gewisse Sachen "falsch" gelernt zu haben und der Lernprozess an sich doch mittlerweile sehr langsam ist und kaum eine Steigerung in der Lernkurve gibt. Die Angst kann ich sofern erklären, dass ich denke/vermute, dass die beiden Ursachen ein Nebeneffekt des Lernvorgangs an sich sind und ich die Sachen eventuell falsch angepackt habe.
Nun wären meine Fragen, ob es überhaupt eine "falsche" Vorgehensweise gibt, ob und wie man seine Lernkurve erhöhen kann und womit ich mir eher einen Gefallen tue - ob so weitermachen wie bisher, oder doch lieber auf Lernbücher zurückgreifen? Denn das Experimentieren mit dem Quellcode und das Versuchen Probleme eigenständig zu lösen (was leider nicht immer mit Erfolg gekrönt ist..) und so die Erfahrung zu sammeln, als stundenlang und repetitiv hinter einem Buch zu sitzen, was natürlich stellenweise auch sehr spannend und hilfreich sein kann, macht mir ehrlich gesagt mehr Spaß.


Um euch mal einen kleinen Einblick gewähren zu können, schreibe ich auf was ich in den vergangenen eineinhalb Jahren so gelernt habe:
- Kleinere Programme auf der Konsole (Kleines "Telefonbuch", diverse Rechner (z.B. für das Ausrechnen des Bezugspreises, das Umrechnen von Temperaturen, das Umrechnen von Währungen) und kleinere Spiele (Zahlenraten, Tic-Tac-Toe, u.ä.))
- Das rumprobieren mit diversen Bibliotheken (SDL, SFML)
- Kleinere Spiele mit SDL oder SFML (à la Pong, Weltraumshooter, der übliche Verdächtige: Tic-Tac-Toe, Memory, u.ä.)
- Gerade dabei: Das erstellen von eigenen Frameworks (mithilfe von SFML) mit diversen Gamestates, das Experimentieren mit aufwändigeren Animationen

Ist es normal, oder kommt mir das so wenig vor? Wenn man sieht, was die Leute für Videos auf YouTube hochladen, unter dem Namen "Mein erstes Spiel", kommt mir das ehrlich gesagt sehr, sehr ernüchternd vor.

Ich hoffe, ich habe euch nicht gelangweilt mit meinen "Problemchen" und genauso hoffe ich auf Aufklärung und Antwort, die vielleicht auch für andere, die die gleichen oder ähnlichen Bedenken haben, helfen könnten und bedanke mich schon mal ganz herzlich im Voraus!

Achja: Falls es etwas vergleichbares in der Form schon gab tut es mir Leid, denn die SuFu hat diesbezüglich nichts und Google leider nichts aufklärendes ausgespuckt - kann natürlich auch sein, dass ich zu dumm zu Suchen bin. :rolleyes:


Mit ganz lieben Grüßen
Plumbum :thumbsup:

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

22.02.2015, 10:30

Zitat

Nun wären meine Fragen, ob es überhaupt eine "falsche" Vorgehensweise gibt, ob und wie man seine Lernkurve erhöhen kann und womit ich mir eher einen Gefallen tue - ob so weitermachen wie bisher, oder doch lieber auf Lernbücher zurückgreifen?

Jain, wenn Code compiliert und nicht abstürzt ist er funktionsfähig, aber evt. noch lange nicht gut/sauber oder besonders elegant gelöst.
Das reine Programmieren, also Code schreiben, ist imo nicht das einzige was zum programmieren lernen gehört. Software Design würde ich inzwischen sogar als wichtiger werten, weil sich das auf jede Sprache übertragen lässt und letztendlich zum Erfolg/Misserfolg führt.
Was du also noch tun kannst um deine Lernkurve wieder zu steigern ist dich in Software Architektur und Designpattern einzulesen. Da durch lernt man auch noch mal eine ganze Menge zur Sprache selbst, da du evt. auf Sachen stößt die du bis jetzt nicht benutzt hast oder für die sich kein richtiger Nutzen ergeben hat.

Btw. ich denke du programmierst in C++ weil du SFML erwähnt hast? Wäre gut zu wissen.
Aber allgemein: du wirst in 5 und wahrscheinlich auch in 10 Jahren noch etwas neues finden.

Zitat

Ist es normal, oder kommt mir das so wenig vor?

Vom Umfang her klingt das eigentlich recht normal und schnell genug.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

22.02.2015, 10:53

Wenn sich jemand jetzt die Unreal Engine nimmt, ein Sample öffnet, ein paar von den schon fertigen Assets nimmt und dann durch viel klicken und Videos aus dem Internet irgendwie was zusammen stellt was nett aussieht dann heißt das nicht dass er es wirklich selbst erstellen kann. Und selbst wenn er die Arbeit die er da macht versteht und auch wirklich selbst ausführt und nicht nur abguckt, hast du halt eine andere Arbeit zu erledigen. Du schreibst dir deinen Kram ja anscheinend mit C++ selbst, bzw greifst auf Frameworks. Im Vergleich mit so einer großen Engine ist das halt was ganz anderes. Jetzt hast du 2 Möglichkeiten. Willst du auch eher Spiele basteln und der Rest ist grad nicht so wichtig, so nimm dir doch auch eine vernünftige Engine. Unity wäre da mein Vorschlag weil es kostenlos ist. Ansonsten gibts halt wie gesagt die Unreal Engine und noch viele weitere.
Aber du sagst ja selbst du hast Spaß am coden. Das bedeutet natürlich nicht dass du mit solchen Engines nicht arbeiten darfst. Auch wenn man gern programmiert ist es ja mal schön wenn man schnell Ergebnisse sieht und sich auf das wesentliche vom Spiel konzentrieren kann. Oder auch Spiele von ganz anderem Umfang umsetzen kann.
Was die Entwicklung von dir als Programmierer angeht so würde ich vielleicht schon zu einem Buch greifen. Es muss ja nicht unbedingt ein Buch sein welches dir die Sprache noch mal erklärt, wobei ein dicker Wälzer zum Nachschlagen und schmökern sicher nicht stören würde. Es gibt genug Bücher zu konkreten Problemstellungen die interessant sein können. Effective C++ wäre so ein Beispiel. Ähnliche Bücher gibt es mittlerweile auch zu anderen Sprachen. Da wird versucht dir Tricks zu vermitteln wie du deinen Code verbessern kannst und du lernst viele wichtige Punkte die du als Entwickler kennen solltest. Design Patterns sind sicherlich auch ein gutes Thema mit welchem man sich mal auseinander setzen könnte. Da geht der Rest aber eigentlich erst mal vor.
Du kannst dich auch einfach mal an Algorithmen versuchen. Such dir ein paar Algorithmen raus die du mal nachbasteln willst. Versuch es erst mal ohne dir Code vorher anzugucken. Das selbe gilt für Datenstrukturen. Du lernst die Algorithmen und Datenstrukturen so richtig kennen und sammelst Erfahrung bei deren Umsetzung.
Ansonsten halt immer am Ball bleiben und entwickeln.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

4

22.02.2015, 11:36

Erst einmal vielen Dank für die sehr schnelle Antwort!


Zitat

Btw. ich denke du programmierst in C++ weil du SFML erwähnt hast? Wäre gut zu wissen.
Ja, ich programmiere in C++, nach den Anfängen mit Java bin ich auf C++ umgestiegen, da es mir viel interessanter erschien, nach ein paar Recherchen. :)



Zitat

Was du also noch tun kannst um deine Lernkurve wieder zu steigern ist dich in Software Architektur und Designpattern einzulesen. Da durch lernt man auch noch mal eine ganze Menge zur Sprache selbst, da du evt. auf Sachen stößt die du bis jetzt nicht benutzt hast oder für die sich kein richtiger Nutzen ergeben hat.
Danke für den Tipp, werde ich definitiv berücksichtigen und mich da in die Richtung schlau machen! Dass die Strukturierung des Programms wichtig ist, habe ich auch schon selbst am eigenen Leibe erfahren müssen, wenn man nach ein paar Tagen nicht mehr versteht, was man da versucht hat zu erreichen und nach ein paar Wochen dann sogar die selbst erstellten Funktionen verwechselt und joa ich hör lieber auf, bevor es peinlich wird. :D



Zitat

Wenn sich jemand jetzt die Unreal Engine nimmt, ein Sample öffnet, ein paar von den schon fertigen Assets nimmt und dann durch viel klicken und Videos aus dem Internet irgendwie was zusammen stellt was nett aussieht dann heißt das nicht dass er es wirklich selbst erstellen kann.
Das stimmt, das kann natürlich sein, daran habe ich, in meinem jugendlichen Leichtsinn, gar nicht gedacht.



Zitat

Du schreibst dir deinen Kram ja anscheinend mit C++ selbst, bzw greifst auf Frameworks. Im Vergleich mit so einer großen Engine ist das halt was ganz anderes. Jetzt hast du 2 Möglichkeiten. Willst du auch eher Spiele basteln und der Rest ist grad nicht so wichtig, so nimm dir doch auch eine vernünftige Engine.
Eine Engine zu benutzen hat für mich leider diesen Charme vom Selbstgemachten nicht, das was mich an der ganzen Sache doch so sehr reizt. Da werde ich brav beim Selbstschreiben bleiben. :)



Zitat

Was die Entwicklung von dir als Programmierer angeht so würde ich vielleicht schon zu einem Buch greifen. Es muss ja nicht unbedingt ein Buch sein welches dir die Sprache noch mal erklärt, wobei ein dicker Wälzer zum Nachschlagen und schmökern sicher nicht stören würde. Es gibt genug Bücher zu konkreten Problemstellungen die interessant sein können. Effective C++ wäre so ein Beispiel. Ähnliche Bücher gibt es mittlerweile auch zu anderen Sprachen. Da wird versucht dir Tricks zu vermitteln wie du deinen Code verbessern kannst und du lernst viele wichtige Punkte die du als Entwickler kennen solltest.
Vielen Dank, auch diesen Tipp werde ich berücksichtigen und mir das empfohlene Buch zulegen. Zum Nachschlagen habe ich eigentlich immer vom Netz Gebrauch gemacht *hust*. Ich sollte vielleicht nicht so bequem sein. :D
Aber Spaß mal beiseite und Ernst ins Epizentrum, ihr habt schon Recht mit den Büchern, da es unweigerlich eine wegweisende Direktive bietet, die ich im Grunde eigentlich, in gewissem Maße, suche.



Zitat

Du kannst dich auch einfach mal an Algorithmen versuchen. Such dir ein paar Algorithmen raus die du mal nachbasteln willst. Versuch es erst mal ohne dir Code vorher anzugucken. Das selbe gilt für Datenstrukturen. Du lernst die Algorithmen und Datenstrukturen so richtig kennen und sammelst Erfahrung bei deren Umsetzung.

Das hatte ich sogar vor, nur habe es bis heute nur vor mir hergeschoben. Algorithmen und Datenstrukturen sind ja ein Thema für sich, wovor ich auch Respekt habe - aber nichtsdestotrotz ist das ein Thema was mich interessiert, sprich auf der ToDo-Liste. :)

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

22.02.2015, 11:55

Was die Bücher angeht, die sind auch kein Allheilmittel. Da gibt es auch viel Mist. Im Internet halt auch. Wenn du da vernünftige Quellen hast dann ist ja alles gut.
Was Algorithmen und Datenstrukturen angeht, das hört sich erst mal komplexer an als es ist. Als einfaches Beispiel für einen Algorithmus werfe ich mal Bubblesort, Insertionsort und Selectionsort in den Raum. Drei Sortieralgorithmen die sehr leicht zu verstehen und deshalb auch leicht umzusetzen sind. Es gibt effizientere Algorithmen, keine Frage, aber die sind eben leicht zu implementieren.
Eine einfache Datenstruktur ist zum Beispiel ein Stack. Eine verkettete Liste bei welcher du nur am Anfang bzw nur am Ende oder von mir aus beides einfügen kannst ist auch relativ simpel. In der Uni haben wir im ersten Semester solche Datenstrukturen erst mithilfe eines Arrays umgesetzt wobei die einzelnen Elemente dann intern im Array gespeichert wurden. Der Einfachheit halber haben wir den Datenstrukturen so eine feste maximale Größe gegeben. Danach haben wir die Datenstrukturen noch mal per Zeiger umgesetzt. Zu dem Thema sollte sich im Internet aber auch genug finden. Wie gesagt, die Uniskripte können da gut hilfreich sein.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige