Inwiefern unterscheidet sich die Spieleentwicklung von anderen Softwareentwicklungen? [geschlossen]

18

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.

Davy8
quelle

Antworten:

23

Es gibt einen großen Unterschied. Meiner Meinung nach ist es der einzige Unterschied, der wirklich zählt.

Wir können uns die technischen Details ansehen, warum es anders ist. 3D-Engines, Teilchenphysik und viele andere Dinge spielen eine Rolle.

Mit vielen verschiedenen Formen von Software sind jedoch Zeichenfolgen verbunden. Modellierungssoftware muss viele der gleichen Dinge tun. Jede wichtige Software verfügt über eine spezielle Bibliothek, die sie verwenden muss.

Was macht GAMES also anders?

Hier ist es: Software wurde entwickelt, um geschäftliche Anforderungen zu erfüllen. Sie möchten ein Inventarsystem? Sie können festlegen, mit welchen Arten von Elementen Sie umgehen müssen. Sie können festlegen, was Sie für Ihre Produktionsplanung benötigen. Das alles kannst du machen. Oder wenn Sie Bankensoftware wünschen, können Sie definieren, was Sie damit tun möchten.

Mit Spielen ist Ihr Geschäftsbedürfnis "Spaß". Versuchen Sie, eine technische Spezifikation für "Spaß" zu schreiben.

Das ist meiner bescheidenen Meinung nach als Entwickler das, was Spiele von normaler Software unterscheidet. Sie können einfach nicht sagen "Großartig! Diese Software ist jetzt gemäß den Anforderungen des Kunden vollständig!" weil sie nur Spaß haben wollen.

Trotzdem braucht man keine 3D-Grafik und keine extravagante Physik, um Spaß zu haben. Warum spielen die Leute immer noch Tetris? Seine Physik besteht aus "Block runter bewegen", "Block nicht aus dem Ruder laufen lassen" und "Block anhalten, wenn er auf etwas trifft", und im Laufe der Jahre gab es zahlreiche Versionen, einige mit schickeren Grafiken als andere, aber die Fazit ist - es macht Spaß !!

Wenn Sie also ein großartiger Spieleentwickler sein möchten, werfen Sie nicht das raus, was Sie als regulärer Softwareentwickler gelernt haben. Es ist immer noch sehr nützliches Zeug. Und @Sion trennt Ihre Komponenten genau so, wie Sie es in einer normalen Software tun würden. Aber das wichtigste Feature, das Sie Ihrem Spiel hinzufügen können, ist der Spaß. Spaß Spaß Spaß Spaß Spaß. Das ist der Grund, warum es Spieleentwicklung gibt. Das ist es, was du brauchst, um dein Spiel erfolgreich zu machen. Und glaub mir , egal wie lustig es ist zu spielen, es macht mindestens 10x soviel Spaß !!

Viel Glück beim Entwickeln !! : D

corsiKa
quelle
2
Wenn Sie "Spaß" mit "nützlich" tauschen, stoßen Sie meines Erachtens beim Entwerfen eines Produkts auf dasselbe Problem (im Gegensatz zum Schreiben von Software für einen Kunden). Ich nehme an, dass es einen Unterschied im Grad gibt. Die Leute sind manchmal falsch, was nützlich wäre, sie sind normalerweise ratlos, was ihnen etwas "Spaß" macht. (+1 obwohl)
Davy8
1
Es gab eine berüchtigte Entscheidung des Obersten Gerichtshofs in Bezug auf die Erotikfilmindustrie und was in den 60er Jahren als "Hardcore" eingestuft wurde. Die Justiz sagte: "Ich könnte es niemals schaffen, es zu definieren, aber ich weiß es, wenn ich es sehe." Ich denke, dasselbe kann man zum Spaß sagen. Ich meine, ich kann Dinge aufschreiben, die ich an Spielen mag, aber ich stelle oft fest, dass ich ein Spiel spiele und mich frage: "Was macht das Spaß?" (Natürlich möchte ich es wissen, damit ich es in einem meiner Spiele nachbauen kann !!) Die Leute wissen nicht, was Spaß macht, aber sie wissen definitiv, wann sie es gefunden haben!
CorsiKa
Ich mochte diesen Beitrag wirklich. Du hast ja so recht. Ich mag Spieleentwicklung wirklich, aber ich habe es nicht wirklich in mir zu sehen, was "Spaß" für "normale" Leute ist. Was dazu geführt hat, dass ich nur Spiele mache, die ich und einige andere Idioten wie ich mögen :)
Phil
1
@Phil und das ist in Ordnung. Wenn Sie wissen, was Ihnen Spaß macht, müssen Sie sich daran erinnern, dass es auf dieser Welt nur ein paar hundert Charaktertypen gibt. Schauen Sie sich an Ihrem Arbeitsplatz um und gleichen Sie die Persönlichkeiten Ihrer Mitarbeiter mit denen ab, mit denen Sie die High School oder das College besucht haben. Sie finden, dass die meisten von ihnen zusammengebracht werden können. Also, wenn dir etwas Spaß macht, wird es wahrscheinlich mehr Leuten Spaß machen, als du denkst. Der Trick ist, sie über das Spiel zu informieren, damit sie es genießen können!
corsiKa
Dies ist die beste Antwort, die ich bisher gesehen habe. Es gibt Unmengen von Artikeln für Nischenideen im Bereich Software, aber nicht viele über Spieleentwicklung. Hmmmm.
Johnny
21

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?

  • Kollisionserkennung
  • Kollisionsreaktion
  • Physik
  • Animation
  • Grafik (2D und 3D)
  • Künstliche Intelligenz
  • Benutzereingabe
  • Dateieingabe / -ausgabe
  • Vernetzung
Sion Sheevok
quelle
+1 für eine gute Antwort auf die Frage, obwohl ich mich für mein spezielles Spiel nicht mit den meisten davon befassen muss (rundenbasiert und kachelnbasiert, also keine wirklichen Kollisionen, keine Physik, Grafiken bestehen aus Sprites und werfen mehr JQuery Bei 2 Spielern, also noch keine KI, werden Benutzereingaben größtenteils auf REST-artige Weise verarbeitet, was auch den Netzwerkaspekt abdeckt Arten von IO werden in typischen Spielen benötigt?
Davy8
4
Ich bin mit den meisten Beiträgen einverstanden und bekomme eine +1 von mir, aber ich würde die Zeile "größeres und teureres Ausfallrisiko" in Frage stellen. Wenn Sie für eine Bank oder eine große Produktionsfirma oder eine Website mit sehr hohem Datenaufkommen arbeiten, kann Ihr Ausfall als Folge eines Ausfalls in Hunderttausenden von Ausfallzeiten pro Minute gemessen werden. In einer Stunde könnten Sie (bei Umsatzverlusten, Kundenverlusten usw.) mehr als einige Game-Dev-Shops verlieren, die monatelang voll bezahlt wurden. Ich sage nicht, dass es nicht groß sein kann, ich sage nur, dass ich nicht überzeugt bin, dass es nicht größer ist als herkömmliche Software.
corsiKa
@glowcoder Ich weiß, was Sie sagen, aber ich glaube, ich verstehe auch, was Sion damit zu tun hat, dass bei Spielen im Allgemeinen entweder das gesamte Projekt ein Erfolg oder ein Misserfolg ist und normalerweise ein Faktor für das, was Sie in Ihrer Antwort erwähnt haben : macht es Spaß? Sie können Hotfixes für Fehler durchführen, aber Sie können keinen Mangel an Spaß beheben.
Davy,
3
Ich bin überhaupt nicht davon überzeugt, dass "größere Teams" auch als Verallgemeinerung zutrifft. Sicher, AAA-Spiele haben große Teams - aber auch komplexitätsäquivalente Nicht-Spiel-Softwareprodukte. Eine große Anzahl von Spielen wird von Einzelpersonen oder Teams von zwei oder drei Personen produziert.
Peter Taylor
@Davy8 oh wenn nur der kommerzielle Erfolg eines Spiels proportional dazu wäre, wie viel Spaß es macht. :)
tenpn
2

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.

Dunk
quelle
0

und eine Sache, die ich bei diesem speziellen 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.

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.

Zukki
quelle
0

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.

harsimranb
quelle