Dieser Artikel richtet sich an Schüler, Schüler und ältere Menschen, die es noch nie versucht haben, aber wirklich mit dem Schreiben von Computerspielen beginnen möchten. Wer hat in seiner Kindheit keine Computerspiele gespielt und wollte kein eigenes Spiel schreiben, das besser ist als GTA oder Crysis? Und ich wollte und seltsamerweise möchte ich immer noch. Und während ich mehrere Jahre lang die gleichen Programmierer unterrichtete, bekam ich ein paar Notizen darüber, wohin ich gehen und was ich tun sollte.
Der Artikel erhebt keinen Anspruch auf vollständige Genauigkeit und Zuverlässigkeit. Er wurde von nur einer Person verfasst, die seine Erfahrungen in nur wenigen Jahren gesammelt hat. Außerdem wird nur die praktische und romantische Seite betrachtet: Es werden nicht die Fragen der Monetarisierung und der Erzielung von Vorteilen aus Spielen behandelt, die nicht die Befriedigung der Geliebten und möglicherweise anderer sind.
1. Wo soll ich anfangen?
Aus der Praxis. Sie können mit reinem C und OpenGL / DirectX beginnen, dies ist der Weg der Samurai, da es ziemlich schwierig ist, ihn ohne Abstraktionen von Grund auf neu zu lernen.
Sie können Frameworks wie SDL oder LibGDX / PyGame / LÖVE2D auf höherer Ebene verwenden, wenn C / C ++ zu verwirrt erscheint. Hier ist der Abstraktionsgrad etwas höher, so dass die Arbeit etwas einfacher ist. Sie müssen jedoch die gesamte Organisation der internen Struktur des Spiels selbst durchführen und erkennen, was eine Spielschleife ist und wie ein Ereignissystem darin organisiert wird. Dieser Ansatz bietet ein gutes Maß an Wissen und Fähigkeiten, bietet jedoch zunächst keinen Anreiz, in die Tiefen der Eisenwildnis aufzusteigen.
Und schließlich können Sie eine Spiel-Engine wie Unity / Unreal / CryEngine / Godot nehmen und ein Spielzeug darauf machen.
Wie wählen wir aus all dieser Vielfalt? Dies ist jedoch nur ein kleiner Teil. Die typische Falle, in die ein Anfänger, der noch kein Entwickler ist, gerät, ist die Wahl eines Werkzeugs. Framework / Engine und Sprache. Viele Artikel werden gelesen, Video-Tutorials werden angeschaut, irgendwo werden großartige Dinge über etwas gesagt, irgendwo werden böse Dinge darüber erzählt ... Es gibt kein ideales System und existiert nicht, sonst wäre die Ideal Game Engine (zusammen mit Ideal) vor langer Zeit erfunden worden Programmiersprache), und alle Unternehmen würden einfach nach „Programmierern“ suchen, nicht nach Programmierern in einem bestimmten Ökosystem. Wir nehmen nur das Werkzeug, das besser zu unserer Aufgabe passt oder eher so ist, und eine Person, die sich nicht entscheiden kann, kann ohne Fortschritte am selben Ort bleiben wie seit Jahren.
Wie soll man also wählen? Wir können einfach den ersten nehmen und anfangen zu verstehen. Gefällt es Ihnen nicht, wenn Sie es länger als ein oder zwei Wochen verwenden? Wir nehmen das Folgende und schreiben sofort etwas Einfaches wie eine Schlange, während wir die Dokumentation für das ausgewählte Tool lesen, nach allem anderen in Google suchen und das Designdokument für unser Superspiel schreiben, das Diablo und Doom gleichzeitig töten wird. Warum mit etwas Einfachem beginnen, wenn wir bereits die Idee eines Super-Spiels haben? Alles ist sehr einfach, das Können eines unerfahrenen Entwicklers ist immer so niedrig, dass er sein Super Game zwanzig Mal umschreibt, die Ergebnisse nicht den Erwartungen entsprechen, und hinter dieser Frustration verbirgt sich eine völlige Abkühlung der Idee, Ihr Spiel und Ihre Programmierung im Allgemeinen zu schreiben. Zu Beginn des Trainings machen wir einfache Dinge, die Sie sofort fühlen und mit Freunden spielen können, indem Sie in Rekorden gegeneinander antreten. Dies ist unser Anreiz, dies ist unsere Freude an Selbstbildung und produktiver Gehirnaktivität, dies ist etwas, das uns nicht erlaubt, auszubrennen. Nach der Schlange können Sie sich diese Schlange zuerst ansehen und versuchen, sie „auf normale Weise“ umzuschreiben, da die erste Schlange, selbst eine perfekt funktionierende, eine monsterähnliche innere Struktur hat, das Ändern des Aussehens der Schlange sehr schwierig ist und das Hinzufügen eines neuen Bonus noch schwieriger wird . Und dann schreiben Sie es erneut oder gehen Sie zu etwas anderem über, sonst sitzt diese Schlange bereits in der Leber. Jetzt machen wir zum Beispiel einen Ball, der von den Wänden springt und in den Ring muss. Es spielt keine Rolle, was eigentlich eine Idee wäre.
Es gibt nur ein paar Tipps zur Auswahl: Meiner Meinung nach sollten Sie nicht etwas zu Niedriges nehmen, da wir hier Spiele schreiben, anstatt Bit-Flags zu unterbrechen und Zeigern nachzugeben. Mit etwas sehr niedrigem Niveau ist es sehr einfach, in den fernen Dschungel zu gehen und ein paar Monate fast verschwendet zu verbringen. Und nehmen Sie nicht etwas zu hohes Niveau (wie Motoren), weil sie ein zu hohes Abstraktionsniveau geben. Solange wir nicht wissen, wie die Motoren angeordnet sind, ist es nicht sinnvoll, die Entwicklungen anderer zu nutzen. Wir müssten verstehen, wie sie organisiert sind, da jeder in der Welt der Motoren viele interne Einschränkungen hat, mit denen wir uns in Zukunft befassen müssen, und wir Hände und Füße verbunden haben Mangel an Informationen und Verständnis für den Prozess sowie sobald ein Loch im Motor
leckt , können wir nichts tun, bis wir die interne Struktur vollständig verstanden haben. Das Gleichgewicht zwischen Komplexität des Lernens und Handlungsfreiheit.
2. Wie lerne ich?
Hier ist eine äußerst nützliche Fähigkeit namens „googeln“ für uns nützlich. Das Internet ist eine riesige Informationsquelle, die in meinem Gedächtnis aus irgendeinem Grund normalerweise unterschätzt wird, und die zweite Seite der Suchmaschine ist bereits etwas Unerreichbares. Daher lernen wir, der Suchmaschine solche Fragen zu stellen, damit sie das benötigte Beispiel liefert. Im Allgemeinen werden zu Beginn Video-Tutorials angezeigt. Und Sie können Lehrbücher lesen. Videokurse haben den Vorteil, dass sie in kurzer Zeit sofort ein greifbares Ergebnis liefern, was für die Motivation sehr nützlich ist, aber sie haben große Probleme mit der Vollständigkeit der Informationen, sodass niemand die Lehrbücher und Dokumentationen storniert. Sie können auf dem Github nach Beispielen für Code suchen. Dies ist eine äußerst nützliche Lektion, aus der Sie nicht weniger als aus Lehrbüchern lernen können. Wir schauen uns alles Unverständliche im Code eines anderen an und suchen im Internet nach dem, was es gerade hier war. Dann benutzen wir (oder nicht, hehe). Der Diebstahl von Ideen und Konzepten wird nur empfohlen (wenn der Code unter einer kostenlosen Lizenz stand). Wenn etwas einfach ziemlich kompliziert, aber sehr notwendig ist, ist es nicht verboten, andere Personen in Foren und Chatrooms zu kontaktieren, aber es ist sehr einfach, diese Methode zu missbrauchen. Daher ist es nicht ratsam und nur dann, wenn sie vollständig gebacken ist und mehrere Stunden kompetenter Suche nicht erfolgreich waren. Aus den Bereichen Mathematik empfehle ich Ihnen dringend, Vektoralgebra, analytische Geometrie, Wahrscheinlichkeitstheorie und viele clevere Wörter zu lesen und zu verstehen, da dies ziemlich universelle Bereiche sind, die nicht nur in Spielen nützlich sind. Von den Sprachen - offensichtlich Englisch - ist der größte Teil der Dokumentation in Englisch verfasst. Die Verwendung von Übersetzern ist nicht verboten. Auch hier müssen wir am meisten lernen, Informationen zu lernen und zu suchen. Sie werden überall und immer nützlich sein, nicht nur in diesem Bereich. Das Training sollte jedoch die Praxis nicht überschatten und umgekehrt. Es ist ratsam, das Zeitverhältnis zwischen Schreiben und Lernen auf dem Niveau von 20/80 zu halten, und dann kann Übung nur hinzugefügt werden, ewige Schüler sind gut, aber unpraktisch. Ausgleichszeit.
3. Wollten Sie etwas Ernsthafteres?
Nach der letzten Phase und mehreren (Dutzenden) Prototypen von Spielen haben wir bereits gelernt, erträglich gut zu schreiben, vielleicht sogar mit einer nicht sehr großen Anzahl von verschachtelten if-elseif-elseif. Wir haben mehrere Dutzend Projekte anderer Leute gefunden und gelesen, und selbst wenn die Hälfte es nicht verstanden hat, ist es immer noch nicht sehr beängstigend, weil wir bereits bereit zu sein scheinen, etwas Ernstes zu tun, wie das Super Game? Halte die Pferde. Wir haben mehrere Prototypen, die sogar großartig spielen, aber wir haben noch nicht einmal versucht, unsere Arbeit zu beenden. Sobald etwas mehr oder weniger funktioniert hat, sind wir zu etwas Interessanterem übergegangen, aber wir warten immer noch auf eine extrem harte Phase, in der sehr viele (einschließlich mir, hehe) zusammenbrechen: das fertige Projekt erstellen. Wie unterscheidet es sich von unseren Prototypen? Und hier ist was: Das fertige Projekt ist derselbe Prototyp, aber es wurde dreimal länger als der Prototypteil ausgegeben. Es hat alle Menüs und Einstellungen ausgeführt und überprüft, ob es bei unterschiedlichen Bildschirmauflösungen und zumindest mit unterschiedlichen Tastaturen einwandfrei funktioniert ein Dutzend Levels oder eine Auswahl des Schwierigkeitsgrades, so dass es interessant ist, nicht nur für den Autor und seine Freunde, sondern auch für zufällige Leute in der Schule oder Universität zu spielen. Der routinemäßigste Teil, was zu sagen ist, aber der nützlichste und sehr gut ausgebildete Wille zum Sieg. Wenn Sie diese Phase nicht durchlaufen, können Sie ein lebenslanger Prototyp bleiben. Sich in Routine und Spaß ausbalancieren.
4. Wo kann man nach Bibliotheken suchen?
Wenn Sie den zweiten Absatz sorgfältig lesen, scheint die Antwort offensichtlich zu sein: online, in Repositories und von anderen Personen. Und als ob alles in Ordnung wäre, sparen wir Zeit und machen sofort etwas Cooles. Aber während wir studieren und Zeit haben und die Möglichkeit haben, Fahrräder zu bauen, ist es eine Sünde, diese Gelegenheit nicht zu nutzen. Wenn das Lesen von Lehrbüchern und Artikeln sowie das Betrachten von Lektionen eine Erweiterung unseres Wissens darstellt, ist das Schreiben unserer eigenen Bibliotheken eine Vertiefung und dies an mehreren Fronten gleichzeitig: Implementierung praktischer APIs (Abschneiden überflüssiger und ausgewogener Leistung und Benutzerfreundlichkeit), Vertiefung und Erkundung der Innenseiten unseres sprachlichen Ökosystems und die Erstellung kleiner fertiger Module, auch wenn diese die Funktionalität bestehender Module teilweise duplizieren. Aber die Hauptsache hier ist, nicht in Zyklen zu fahren. Wir schreiben immer noch Spiele und ein Toolkit für sie. Hier können Sie genauso gut Bibliotheksautor werden und niemals ein einziges abgeschlossenes Projekt durchführen. Es gibt aber auch eine große Schicht allgemeiner Erfahrung.
5. Fazit.
Es gibt noch viele unbeantwortete Fragen, von denen einige hier kurz beantwortet werden.
Was ist ein Designdokument und warum wird es benötigt? Dies ist so ein Wiki für ein Spiel, das noch nicht erstellt wurde. Je voller, desto besser. Und dies sollte vor dem Start des Spiels geschehen, indem die Entwicklungszeit grob anhand der Anzahl der verfügbaren Personen geschätzt und Funktionen abgeschnitten werden.
Warum Features abschneiden? Wenn Sie die vorherigen Phasen durchlaufen haben, können Sie ungefähr die Zeit abschätzen, in der Sie und Ihr Team dieses Projekt satt haben werden. Wenn wir uns in einer Situation der Indie-Entwicklung im Keller befinden, in der es keine Finanzierung und keinen Arbeitsplan gibt, besteht eine sehr hohe Wahrscheinlichkeit für Verwirrung und Verwirrung, anstatt das Projekt umzusetzen. All die coolen Sachen sind sehr schnell implementiert, und es bleibt noch viel Routine, die dennoch erledigt werden muss, und unsere Aufgabe ist es, die Coolness und die Routine in Einklang zu bringen, um sie trotzdem zu beenden.
Wo kann man Künstler / Musiker / Designer suchen? Zunächst können Sie ein fast abgeschlossenes Projekt ohne Grafiken und Sounds erstellen, mit Sprites, die in msPaint gekritzelt sind, und denselben ungeschickten Animationen und Fick-Pony aus freien Ressourcen, die im Netzwerk gefunden wurden. Ich empfehle wirklich nicht, andere Leute mit etwas zu beladen, das noch nicht fertig ist und hohe Chancen hat, unvollendet zu bleiben.
Eigentlich wollte ich einen Job bei Valve, EpicGames oder anderswo bekommen und dort arbeiten. Warum brauche ich das alles? Die meisten Programmierer auf der Welt sind Autodidakten, oft mit umfassender Erfahrung im "Keller". Darüber hinaus sind Prototypen und kleine Spielzeuge ein hervorragendes Portfolio für die Platzierung in großen Unternehmen und nicht nur für die Position des Spieleentwicklers.
Bonus: Die meisten dieser Techniken eignen sich für absolut jeden Bereich, nicht nur für das Programmieren von Spielen, sondern auch nur für das Programmieren. Darüber hinaus können Sie eine Kunstausbildung erhalten oder das Schnitzen lernen, indem Sie nach kleinen Änderungen in die richtige Richtung dieselben Anweisungen verwenden.
Vielen Dank fürs Lesen, der Artikel wird kritisiert und ergänzt.