Ich habe dies früher in diesem Thread auf stackoverflow.com gefragt. Einer der frühen Kommentare hat mich hierher zu gamedev.stackexchange.com weitergeleitet, also reposte ich hier.
Auf der Suche nach verwandten Fragen habe ich eine Reihe sehr spezifischer Fragen gefunden, aber ich fürchte, die Details haben sich für mich als nutzlos erwiesen, und nach 4 Stunden bei Google bin ich nicht näher dran als ich begonnen habe in Ordnung.
Erstens mein Ziel: Ich habe noch nie ein Spiel gemacht, obwohl ich mehrmals über die Möglichkeit nachgedacht habe. Ich beschloss, mich endlich hinzusetzen und zu lernen, wie man Spiele codiert, Game Engines verwendet usw. So dass ich eines Tages (hoffentlich bald) in der Lage sein werde, funktionierende (wenn auch einfache) Spiele zu entwickeln. Ich kann später anfangen, die Komplexität zu erhöhen, denn jetzt wäre ich froh, eine tastaturgesteuerte Kamera zu haben, die sich in einer 3D-Welt ohne weitere Interaktion bewegt.
Mein Hintergrund: Ich habe in MEHREREN Programmiersprachen gearbeitet, von PHP über C ++ über Java bis hin zu ASM. Ich habe keine Angst vor Herausforderungen, die mit dem Erlernen der neuen Syntax oder den Einschränkungen einer neuen Sprache einhergehen. Alle meine bisherigen Programmiererfahrungen waren jedoch rein nicht grafisch und normalerweise mit wenig oder extrem einfacher Interaktion während der Ausführung. Ich habe umfangreiche und brillante Algorithmen zur Lösung logischer und mathematischer Probleme sowie zur Darstellung von Problemen entwickelt. In jedem Fall wurde die Eingabe jedoch entweder in einer Datei definiert, in einem HTML-Formular übergeben oder in die Konsole eingegeben. Die Interaktion in Echtzeit mit dem Benutzer ist etwas, mit dem ich keine Erfahrung habe.
Meine Frage: Wo soll ich anfangen, um Spiele zu machen? Besser noch - wo soll ich anfangen, um eine mit der Tastatur navigierbare 3D-Umgebung zu erstellen? Bei der Online-Suche habe ich mehrere Ressourcen gefunden, die mit Game-Engines, Grafik-Engines und Physik-Engines verknüpft sind. Hier ist eine kurze Zusammenfassung meiner Erfahrungen mit einigen Motoren, die ich ausprobiert habe:
Unreal SDK: In den Tutorial-Videos wird davon ausgegangen, dass Sie bereits über fundierte Kenntnisse in Bezug auf 3D-Modellierung, Grafik-Engines, Animationen usw. verfügen bin schon vertraut mit. Nachdem ich das SDK heruntergeladen und es gestartet hatte, um zu prüfen, ob die Tools so intuitiv waren, wie sie behaupteten, wurde ich mit etwa 60 Schaltflächen und einer leeren Leere für meine 3D-Modellierung begrüßt. Durch Klicken auf "Add Volume" (um zu versuchen, einen Basiswürfel hinzuzufügen) wurde ich mit einem Menü mit 30 Optionen konfrontiert. In Panik schloss ich den Editor.
Crystal Space: Die Website schien eher informativ zu sein und erklärte, dass Crystal Space nur für Grafiken gedacht war und die Companion-Software CEL eine Entitätslogik für die Erstellung von Spielen lieferte. Es wurde ein Demo-Spiel zur Verfügung gestellt, das mit "CELStart" erstellt wurde, dem einfachen Tool für Leute, die keine Kenntnisse in der Programmierung von Spielen haben. Ich habe das Spiel gestartet, um zu sehen, worauf ich mich freuen könnte. Es fror mehrmals ein, die Menüs waren fehlerhaft, es gab Tausende von Grafikfehlern, Feinde reagierten nicht auf Schaden, und als ich das Spiel schloss, war es gesperrt. Hat diesen Motor aufgegeben.
IrrLicht: In diesem Tutorial wird davon ausgegangen, dass ich Visual Studio 6.0 (Visual Studio 2010) habe. Ihren Anweisungen folgend konnte ich die Bibliothek nicht ordnungsgemäß in Visual Studio importieren und keine der Funktionen aufrufen, die sie weiterhin verwendeten. Manuelles Kopieren von Header-Dateien, Klassendateien und DLLs in den Ordner meines Projekts - das Projekt konnte nicht ordnungsgemäß kompiliert werden.
Es ist klar, dass ich nicht gut anfange und mich im Kreis bewege. Kann mich jemand in die richtige Richtung weisen? Soll ich zuerst ein Programm wie Blender herunterladen und 3D-Modellierung lernen, oder soll ich lernen, wie man eine Grafik-Engine verwendet? Sollte ich nach einer All-Inclusive-Game-Engine suchen oder ist es besser, meine eigene Spielelogik zu programmieren? Wenn jemand tatsächlich seine eigenen Spiele gemacht hat, würde ich lieber hören, wie sie angefangen haben.
Auch Unterricht an meiner Schule ist keine Option. Es wird nichts angeboten.
Antworten:
Ich habe eine solche Frage gestellt, als ich zu GD kam. Hier sind einige Links, die für Sie von Interesse sein könnten und die Sie hoffentlich zu Ihrem Ziel führen werden.
Kurz gesagt, ich würde mitgehen
XNA Game Studio
, um die Spieleentwicklung in den Griff zu bekommen. Fahren Sie dann mit dem fort, was Sie als Wissen / Technologie erreichen möchten.XNA
brachte mir das Arbeiten mit Sprites bei und ermöglichte mir, einige meiner Kenntnisse von Beginn meiner Lernkurve an anzuwenden, damit ich schnell genug verstehen konnte, wie ich mein Spiel für die Verwendung von Klassen während der Arbeit gestalten sollte Abhängigkeitsinjektion und so weiter. Also lasse ich dich nicht länger warten.Warum fragst du XNA? Einfach wegen Ihres Java-Hintergrunds. XNA verwendet C #, das Java in mehrfacher Hinsicht ähnelt, und es ist auch ein einfaches Framework, das den Game Loop und andere Dinge abstrahiert, damit Sie sich auf das konzentrieren können, was wichtig ist.
Ich hoffe wirklich, dass Sie damit anfangen. =)
quelle
Game1
Klasse als Gamecontroller verwendet, was meiner Meinung nach die Klasse ist, die die anderen Klassen steuern und ihnen sagen soll, was zu tun ist usw. Ich erkläre diesen Aspekt ein wenig mit den Verknüpfungen Nr. 4 und Nr. 5.Sie könnten Unity 3D ausprobieren , weil
(Haftungsausschluss: Ich bin in keiner Weise mit den Machern von Unity verwandt, ich benutze es einfach selbst und fand es ein großartiges Werkzeug, um die Grundlagen zu lernen.)
Aber ja - Sie haben sich auf eine ziemliche Aufgabe eingestellt. Ich bin jetzt in meinem 6. Semester und studiere Game Design. Ich habe immer noch nicht das Gefühl, mehr als die Oberfläche zu kratzen. Es ist kein Wunder, dass die Branche Spezialisten für nahezu alle Aspekte des Entwicklungsprozesses eines Spiels hat.
Bearbeiten: Es wurde ein Kommentar darüber abgegeben, dass Unity nicht als "richtige" Spiel-Engine angesehen wird, der falsch verstanden werden könnte, wenn ich das sage - daher die folgenden Kommentare. Es war nicht meine Absicht vorzuschlagen, dass Unity nicht verwendet werden könnte, um das richtige Spieldesign zu erstellen, im Gegenteil. Ich benutze es selbst und ich mag es. ;)
quelle
Na wenn du Probleme mit irrlicht hattest, solltest du auch Ogre3D ausprobieren; Es ist nicht einfacher, aber es könnte besser funktionieren, wenn Sie etwas Zeit investieren. Das Wichtigste, was Sie verstehen müssen, ist, was ein Framelistener ist, wie Sie die Zeit abrufen können, seit das letzte Bild angezeigt wurde, und das ist so ziemlich das einzige, was Sie verstehen müssen, wenn Sie diese Anwendung erstellen möchten, über die Sie sprechen.
Ich hatte auch einige Schwierigkeiten mit irrlicht, die Tutorials sind nicht sehr aktuell, aber du hättest die Samples ausprobieren sollen!
Ich bin zu Beginn auch viel im Kreis herumgelaufen, habe mit Panda3D und anderen Dingen wie Pygame usw. gespielt. Versuche, mich auf eine Spielidee zu konzentrieren und eine Sache nach der anderen zu implementieren.
Und versuchen Sie, sich ein bisschen Mathe zu merken, es wird in 3D von Nutzen sein!
quelle
Ich habe vor kurzem die gleiche Verfolgung wie Sie begonnen. Ich bin auf eine reine Java-Engine namens jMonkeyEngine gestoßen, die mich durch eine fantastische Reihe von Tutorials geführt hat. Ich weiß nicht, ob es wirklich das Spieledesign in großem Umfang erklärt, aber es bringt Sie auf die grafische Front.
Es enthält Vorschläge / Links zu Tools, die Sie für die Modellierung verwenden können, sowie kopier- und einfügebare, gut beschriebene Beispiele, die Sie durch das Einrichten der Physik-Engine auf dem Bildschirm führen.
Auf jeden Fall eine Lektüre wert - ich hatte eine gute Vorstellung davon, was ich nach nur einigen Stunden tat.
quelle
Du solltest unbedingt Flixel ausprobieren http://flixel.org/ Ich habe mein erstes "Demo" -Spiel mit Flixel gemacht. Nette Community, nette Tutorials.
Es ist nicht 3D, aber es hat viele nette Funktionen, die Ihnen den Einstieg in die Programmierumgebung erleichtern.
So, dass: Tausende sich bewegender Objekte anzeigen
Grundlegende Kollisionen zwischen Objekten
Objekte der Einfachheit halber gruppieren
Partikel einfach generieren und ausgeben
Spielebenen mithilfe von Kachelkarten erstellen
Textanzeige, Spiele speichern, Scrollen
Maus- und Tastatureingabe
Mathematik- und Farbdienstprogramme
Und es ist kostenlos für die kommerzielle Nutzung, was großartig ist.
quelle
Wenn Sie überhaupt nicht mit Grafiken gearbeitet haben. Bevor Sie Open Gl oder Direct X lernen, ist dies ein Anfang. Ich habe mein erstes Spiel so programmiert. Unsere Firmen-Engines sind in Eigenregie und die meisten Systeme unterstützen Open Gl in irgendeiner Form. Ich habe bei der Arbeit gelernt, indem ich den Code durchgesehen habe, bevor ich angefangen habe zu arbeiten. Vielleicht möchten Sie sich einige Open-Source-Projekte ansehen, um zu sehen, wie eine Spielstruktur aufgebaut ist, und diese ändern, bis Sie sich sicher fühlen, Ihr eigenes Ding zu beginnen. Ich empfehle auch "Game Coding Complete" als großartige Referenz für all die kleinen Teile der Spielprogrammierung, von denen Sie nicht wissen, dass sie vorhanden sind, wie eine ordnungsgemäße Dateistruktur und Ressourcenverwaltung.
quelle
Probieren Sie Source Engine . Es ist einfach, Spiele darauf zu entwickeln, und Sie können eine Vertriebsplattform (Steam) erwerben und Ihr Spiel kostenlos verkaufen, wenn Sie eine Vereinbarung mit Valve Corportaion unterzeichnen.
quelle
Ich würde empfehlen, mit Flash-Spielen zu beginnen, da Sie wirklich alles in einem Paket haben, um einfache Spiele zu erstellen. Es gibt Unmengen von Blogs mit Lösungswegen, zum Beispiel von Emanuele Feronato . Er hat sogar ein Buch mit 10 kompletten Spielen oder so.
Ich habe FlashDevelop verwendet, was für die Entwicklung ausreicht.
Chris Möllers "Erstellen eines Asteroiden-Flash-Spiels" ist ein hervorragendes Beispiel dafür, mit einem vollständigen schrittweisen Ansatz unter Verwendung von Flash-Entwicklung.
Für Tile-basierte Spiele gibt es ein exzellentes Tutorial bei Ironcoding .
Ausgerüstet mit all dem ist es meine Empfehlung, einen Ort zu finden, an dem es eine Herausforderung für Videospiele gibt, mit einer Community von Menschen, die Spiele bauen. Erstellen Sie ein Videospiel pro Monat und konzentrieren Sie sich auf etwas, das Sie fertigstellen, polieren und präsentieren können, bevor Sie mit Ihrem nächsten Projekt beginnen. Ich bin in einer monatlichen Videospiel - Herausforderung teilnehmen hier .
Halten Sie es klein, damit Sie es beenden und freigeben können.
quelle