p4cx schrieb:
die gängigsten Paradigmen (...) Angefangen mit einfachen Sachen wie if-else und Schleifen bis zu Designpatterns.
Das halte ich für Game Design, vor allem in 2018, für nicht gerade praktikabel.
Gerade wenn es um 3D Spieleentwicklung geht - so wie hier. Da ist es doch viel wichtiger, fit in Mathematik zu sein. Partikeleffekte oder überhaupt irgendwas, das ich im Spiel bewegen, rotieren, ... soll bedarf jeder Menge Vektorrechnung und mitunter generell Linearer Algebra.
In den meisten Fällen kommt heutzutage ja auch noch Physik hinzu, womit man spätestens dann auch Analysis braucht.
Ein konkrete Programmiersprache selbst, besonders die Syntax, ist unglaublich einfach zu erlernen und steht in keinem Verhältnis zur Theorie von Datenstrukturen, Algorithmik, Analytischer Geometrie, Linearer Algebra, Analysis usw.
All das braucht man viel eher und ist deutlich aufwendiger, als Sprache XYZ zu erlernen.
Es sei denn wir sprechen hier nur von Tetris in Pseudo-3D.
Gerade
Designpatterns & Co. sind doch heutzutage ohnehin überholt. Das meiste an Mathematik, und das ist i.d.R. der aufwendigste Teil (eine UI oder so ist ja schnell gebaut - abgesehen von gut aussehender Grafik, was ja aber auch nicht Job des Spieleentwicklers selbst ist), wird ja i.d.R. mit funktionaler Programmierung abgedeckt. Schöner, wartbarer, näher an der Mathematik und vor allem schneller, als für jede Kleinigkeit erstmal Klassen zu bauen.
Ganz generell sattelt man doch überall gerade aus Performancegründen auf
Data Driven Design um. Unreal macht das schon, CryEngine afaik auch, Unity investiert ganz viel mit ihrem ECS, was derzeit Beta-Status hat.
Damit kann man dann auch jede Kleinigkeit recht einfach parallelisieren, spart sich noch den ganzen Overhead von Klassen und obendrein liegt alles linearisiert oder sonstwie für schnellen Zugriff optimiert im Speicher.
In 2018 noch strenges OOP, wie etwa bei Java, zu lernen, würde ich im Leben nicht mehr machen. Für reguläres Zeug und Spieleentwicklung bin ich i.d.R. in C++ oder C# unterwegs, die meiste Zeit verbringe ich aber mit AI & Robotik in Python, wo man dann für alles eine API hat und zur Not einfach selbst optimierte C-Module schreibt, die dann von Python aus nur noch gesteuert werden.
Worauf ich eigentlich hinaus wollte: um grundsätzlich irgendwas zu strukturieren existiert OOP natürlich schon noch, aber für sicherlich gut 3/4 von allem was ich entwickle gibt es maximal noch structs, eher direkt irgendwelche effizienten Container und dann funktionale Programmierung, Mathe, ...
Und das was ich an OOP und den typischen design patterns, die ich überhaupt noch nutze, sind halt zum Großteil APIs. Da gibt es dann ja nicht viel zu lernen, eher kurz Google'n.
Also wenn man ernsthaft in 3D-Spieleentwicklung einsteigen möchte, dann würde ich (abgesehen vom Studium) vor allem Mathe, bisschen Physik, Algorithmik & Datenstrukturen sowie funktionale Programmierung empfehlen.
Wenn er jetzt ein kompletter Anfänger ist (also tatsächlich Null Vorkenntnisse) und das ernsthaft lernen möchte, dann würde ich mich eventuell direkt von der Vorstellung verabschieden sich das überhaupt einfach so beizubringen. Ohne Studium ist höhere Mathematik, Algorithmik usw. für die meisten Leute unschaffbar und ohne solche Kenntnisse wird man ohnehin nie etwas professionelles in 3D zustande bringen.
Da es hier ja um eine professionelle Laufbahn zu gehen scheint, würde ich dann eher direkt ein Studium empfehlen.