Was ist für einen soliden Allzweck-Softwareentwickler spezifisch anders an der Spieleentwicklung, entweder grundlegend oder nur graduell unterschiedlich?
Ich habe Spielzeugspiele wie Tic-Tac-Toe, Tetris und einen Brute-Force-Sudoku-Löser (mit Benutzeroberfläche) gemacht und beginne jetzt ein mittelgroßes Projekt (mittelgroß, weil ich ein einzelner Entwickler bin und keinen habe) Eine Sache, die ich bei diesem Projekt festgestellt habe, ist, dass die Trennung von Bedenken viel schwieriger ist, da alles den Zustand beeinflusst und jedes Objekt auf vielfältige Weise mit jedem anderen Objekt interagieren kann.
Bisher habe ich es geschafft, den Code für meine Zufriedenheit einigermaßen sauber zu halten, aber ich finde, dass es viel schwieriger ist, sauberen Code in nicht-trivialen Spielen zu halten, als es für meine tägliche Arbeit ist.
Das Spiel, an dem ich arbeite, ist rundenbasiert und die Grafiken werden ziemlich einfach sein (webbasiert, hauptsächlich durch DOM-Manipulation), sodass Echtzeit- und 3D-Arbeit für mich nicht wirklich zutreffen, aber ich würde es trotzdem tun interessiert an Antworten zu denen, wenn sie interessant sind. Hauptsächlich an allgemeiner Spielelogik interessiert.
PS: Sie können dies gerne wiederholen. Ich bin mir nicht sicher, welche Tags zutreffen.
quelle
Ich bin in erster Linie ein Spieleentwickler und kein traditioneller Softwareentwickler, aber ich denke, es gibt mehrere wesentliche Unterschiede.
Dies sind offensichtlich mehrere Verallgemeinerungen und nicht umfassend:
Größere Teams. Unterschiedlichere Hintergründe (Künstler, Programmierer, Produzenten, mit jedem gibt es noch mehr Abwechslung). Längere Entwicklungszyklen. Höhere Leistungsstandards. Größerer Umfang von Projekten. Größeres und teureres Ausfallrisiko. Mehr stressige Umgebung.
In Bezug auf Objektinteraktionen und das Layout Ihrer Architektur können Sie Systeme weiterhin ordnungsgemäß entkoppeln. Ihre Gameplay-Objekte und Ihr Gameplay-Verhalten sind eindeutig voneinander und von diesen Systemen abhängig. Das ist die Natur des Spiels (Wortspiel beabsichtigt), es kombiniert all diese Systeme zu einer einzigen, zusammenhängenden Einheit, und daran ist nichts auszusetzen. Es scheint so, weil das Ausmaß des Ganzen größer ist, als Sie es gewohnt sind.
Einige leicht identifizierbare und getrennte Systeme?
quelle
Ich denke nicht, dass sich Spieleprogrammierung von anderen Anwendungsbereichen unterscheidet, da es schwieriger ist, die richtige Trennung der Probleme zu finden. Jedes Mal, wenn Sie Ihre Kenntnisse auf eine andere Art von Anwendungsdomäne übertragen, werden Sie feststellen, dass der Übergang nicht so reibungslos verläuft, wie Sie es sich erhofft haben, da es immer Unterschiede gibt. Was in Ihrer Datenbankanwendung funktioniert hat viele Muster / Redewendungen, die in Ihrer eingebetteten Anwendung nicht so gut funktionieren, und viele Muster / Redewendungen, die in diesem Echtzeitsystem, das auch viele Muster / Redewendungen hat, nicht so gut funktionieren arbeite nicht in der Spielprogrammierung. Die Game-Programmierer haben jedoch dieselben Probleme, wenn sie ihre Game-Programmierdomäne verlassen. Es ist alles nur eine Frage der Gewohnheit.
Trotzdem denke ich, dass das Programmieren von Spielen für viele Menschen schwieriger erscheint, da Sie mit Teilen des Computers arbeiten müssen, mit denen die meisten Programmierer bei ihrer eigentlichen Arbeit nie zu tun haben (einfache Grafiken und Sounds) und mehr angewandte Mathematik als viele andere Die Menschen fühlen sich wohl und nicht wegen der Trennung von Sorgen. Es gibt zwar immer Schwierigkeiten, die richtige Wahl für die Trennung von Bedenken zu treffen, aber ich denke, die Schwierigkeit bei der Trennung von Bedenken, die Sie haben, besteht darin, einfach in einen neuen Problembereich überzugehen. Sobald Sie ein paar Anwendungen erstellt haben, werden Sie lernen, was Ihnen gefällt, und nicht mehr, was Ihnen nicht gefällt.
quelle
Ich denke, Sie haben eine Antwort, es gibt viele Wechselwirkungen. Ich habe ein paar Spiele mit XNA (C #) gemacht, jetzt mache ich ein mittelgroßes Spiel, wie du sagst, ein Strategiesimulationsspiel, arbeite seit fast 2 Monaten daran und mache es alleine ohne Hilfe, also ich muss meinen Code einfach halten. Ich denke, ein großer Unterschied besteht darin, einige Klassen für die Funktionalität und andere für das Zeichnen zu verstehen und zu entwerfen. Dies hilft und macht Ihr Programm sauberer. Wenn Sie ein Spiel spielen, benötigen Sie natürlich mehr Ressourcen wie Bilder (2D oder 3D) und Musik (oder Sounds). Es gibt also Unterschiede, ich denke es ist schwieriger, aber es ist sehr lustig.
quelle
Ich denke, Game Programming macht mehr Spaß. Sie können Ihr Spiel ständig testen, Sie implementieren unterschiedliche Physik, was zu unterschiedlichem Verhalten führt.
Nach meiner Erfahrung macht das Programmieren von Spielen im Vergleich zur Softwareentwicklung viel mehr Spaß. Bei der Softwareentwicklung müssen Sie bestimmte Geschäftsregeln einhalten, es wird wenig langweilig. Sie erstellen eine Software, die keinen Spaß macht. Die Verwendung von Software ist großartig, hilfreich, nützlich, macht aber keinen Spaß.
Spiele machen Spaß. Vielleicht bin ich es nur, aber ich finde die Spieleentwicklung viel faszinierender und aufregender als die herkömmliche Softwareentwicklung, unabhängig von den verwendeten Tools.
PS: Ich benutze die neuesten Tools für die Softwareentwicklung, HTML5, Asp.Net, C # usw. Ich finde immer noch, dass DirectX, UDK, XNA, Unity mehr Spaß macht, um zu programmieren.
quelle