Ist C++ oder C# besser für Game Development und warum?

Das Ergebnis basiert auf 13 Abstimmungen

C++ 54%
C# 46%

8 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
C#

Auch wenn ich mich damit unbeliebt mache:

Für die Qualität des Spiels ist es völlig egal, wie crackbar das Spiel ist. Wenn dein Spiel so beliebt ist, dass alle es cracken wollen, dann wirst du auch die Ressourcen haben es grundlegend abzusichern, egal womit (Wie man aber an Denuvo & co sieht, ist es für Singleplayerspiele trotzdem vergebens). Viel wahrscheinlicher ist jedoch, dass deine ersten Projekte übersehen werden.

Genauso ist Performance für die anfängliche Wahl eher unwichtig. Du kannst in jeder Sprache schlechten Code schreiben, der dann nicht gut läuft. Und auch aus jeder Sprache so viel rausholen, dass es auf den allermeisten Systemen problemlos läuft.

Besonders für Neueinsteiger kommts einfach viel mehr darauf an, womit man schneller Ergebnisse erzielt und seine Ideen umsetzen kann. Dazu kommt persönliche Vorerfahrung.

Im Zweifel hat man mit Unity eine Plattform, für die es extrem viele Einsteigertutorials gibt. Es gibt aber auch lower-level libraries wie SFML.net, oder halt direkt Monogame. Aber das empfiehlt sich eher, wenn man die Sprache selbst bereits kennt und deswegen eine passende library sucht.

Kurzum: Kennst du dich in einer Sprache bereits aus? Wenn ja, dann wähl die und such dir eine passende Engine oder library. Wenn keinerlei Vorerfahrung herrscht würde ich C# und Unity empfehlen, und dann später mal einen Blick in UE4 mit C++ wagen, damit man es für sich selber entscheiden kann.

Woher ich das weiß:Berufserfahrung

Nun heute nutzt man meist eine Game Engine und richtet dann die Wahl der Sprache danach. Sprich wenn man z.B. zu Unity greift, dann ist die Wahl eben C#, wenn man zur Unreal Engine greift, dann eben C++. Natürlich gibt es auch weitere Engines.

Generell bietet einen C++ hier und da mehr Möglichkeiten, unabhängig ob wir nun von Games sprechen aber man hat auch deutlich mehr Verantwortung und kann eher was kaputt machen. Mit modernen Hochsprachen wie C# muss man sich um viele Sachen nicht mehr kümmern, brauch keine Pointer, muss sich meist keine Gedanken machen um Speicher und das Aufräumen dessen usw.

Hat am Ende alles seine Vor- und Nachteile. Ich würde das heute letztlich davon abhängig machen, mit welcher Sprache ich mich sicherer fühle. Sofern ich die eh lernen muss, würde ich vermutlich zu Unity und C# greifen. Die Fülle an Tutorials ist gefühlt deutlich höher und die Lernkurve sowohl für Unity, als auch C# flacher.

Ja UE sieht meist verdammt gut aus, gerade wenn da neue Versionen kommen und Unity läuft immer ein wenig hinterher. Nix desto trotz kann man mit beiden Engines erstaunliche Spielewelten schaffen.

Natürlich gibt es auch noch weitere Engines und Sprachen die man verwenden kann. Wirklich ein besser oder schlechter gibt es heute da aber kaum, eher ein anders. Früher war Performance ein großer, großer Punkt, weshalb C++ klar die beste Wahl war für Spiele. Heute ist sowohl die Software als auch die Hardware an einen Punkt, wo die Wahl der Sprache nicht mehr der limitierende Faktor ist.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

Mit C++ kommste sicher näher an die Maschine ran und kannst die letzten Prozente Performance rausholen.

Dafür ist C# wesentlich leichter zu programmieren, weil es moderner ist und viele der schwierigen Fehlerquellen beseitigt.

C++

Wenn man realistisch schaut, ist C++ wesentlich besser geeignet.

Unity hat definitiv nicht so viele Probleme wie BcksteinForelle meint.

Aber ja, er hat in einem Punkt Recht; dadurch, dass C# eine Hochsprache ist und .NET dahinterhängt, kann man sehr schnell den Source Code knacken. Obfuscater sind, wenn man das Spiel schützen will, unabdinglich.

So gesehen ist es aber auch so, dass C++ in Sachen Speichermanagement wesentlich effektiver sein kann, da man die Adressen selbst verwaltet.

Die Spiele werden in C++ im besten Falle wesentlich performanter.

Das ist meine Antwort auf die Frage, was in dem Sinne "besser" ist, ohne auf weiteres einzugehen.

Jedoch-

In C#, also Unity musst du eben nicht auf die Speicherverwaltung achten, das wird zum größten Teil automatisch für dich über den Garbage Collector abgehandelt.

Unity finde ich persönlich auch einfacher zu bedienen. Meine persönliche Wahl fällt deshalb auf C# und Unity. Grafiktechnisch nehmen sich die Engines mittlerweile nicht mehr viel.

LG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting
MrAmazing2  30.07.2021, 03:12
Obfuscater sind, wenn man das Spiel schützen will, unabdinglich.

Also bei uns in der Uni lernt man, dass Security By Obscurity stets vermieden werden sollte.

Oder ist hier mit Schützen was anderes gemeint, z.B. vor Leuten die das Spiel kopieren?

Oder lässt sich das, was wir in der Uni bezüglich Netzwerksicherheit lernen, nicht auf Game-Development übertragen?

0
C#

C++: Schnelleres Spiel, langsamere Entwicklung.

C#: Langsameres Spiel, schnellere Entwicklung.

Was man besser findet ist eine persönliche Entscheidung, alles hat seine Vor- und Nachteile.

C++ ist super performant, aber da die Sprache sehr Low-Level ist muss man sich selbst um Sachen wie Speichermanagement kümmern, was ein riesen Aufwand sein kann. Bei C# hingegen hat man diesen Stress nicht, dafür ist das Spiel dann nicht ganz so performant, in der Regel ist der Unterschied aber nicht all zu groß.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf