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

C++ 53%
C# 47%

15 Stimmen

8 Antworten

Vom Beitragsersteller 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
C++

C++ ist von der sicherheit schon alleine viel besser zb
1. das spiel ist schwieriger zu cracken
2.cheat entwicklung ist sehr sehr sehr viel schwieriger
Dazu kommt noch das zb die so hochgelobe Unity Engine einfach nur schlecht ist es gibt so viele sachen die so viel nnötige performance kosten und das memory managemant lässt auch zu wünschen übrig daher ist meine klare empfehlung c++ und die Unreal Engine 4 oder wenn sie rauskommt oder schon draussen ist die UE5 (meine aussagen und erfahrungen baseieren auf gamehacking also ich habe einen viel tieferen blick in die engine als die ganzen leute die nur die spiele machen )

Woher ich das weiß:Hobby – Programmiere seid 6 Jahren Modifikationen für Spiele

regex9  29.07.2021, 06:30

Es ist erstaunlich, dass du weiter über Performance und Memory Management von Unity herziehst, obwohl du noch vor ein paar Tagen auf konkrete Nachfrage gezeigt hast, dass du die Technik wohl eben nicht durchschaust. Kann es sein, dass das bei dir eher eine Glaubensfrage ist?

BcksteinForelle  29.07.2021, 10:53
@regex9

Ich hab einfach keine Lust mehr mit fanboys zu diskutieren du kannst jeden fragen der cheats Nacht und Ahnung hat und jeder Wird die sagen das unity so ist als hätte es ein 5 jähriger gemacht

regex9  29.07.2021, 11:41
@BcksteinForelle

Ich bin kein Fan von Unity. Aber ich merke auch, wenn jemand keine Ahnung von dem hat, was er schreibt, sondern sich mit plumpen Bashing profilieren möchte. Hast du denn schon einmal ernsthaft an einem solchen Softwareprojekt gearbeitet, welches die Komplexität von Unity hat? Ich schon. Ich kenne auch Entwicklerteams solcher Projekte und weiß daher, dass da Leute dransitzen, die um einiges mehr Erfahrung und Fertigkeit mitbringen als du oder deine Cheater-Freunde, die ich bei so einer Beurteilung eh als allerletztes fragen würde. Wäre es ein Projekt für Fünfjährige, müsstest du mir einmal erklären, wieso es so schwer für dich ist, die Funktionalität hinter Unity wirklich zu erfassen, geschweige denn selbst etwas besseres zu entwickeln. 🤨

BcksteinForelle  29.07.2021, 11:56
@regex9

naja aber wie gesagt wir kennen die seiten die du nicht kennst und ich habe keine lust hier so ins detail zu gehen da ich weiss das mich hier manche script kiddies verfolgen und keine lust habe den infos zu geben direkt wie was geht ich habs dir schon erklärt aber anscheinend bist du zu begrenzst um es zu verstehen

regex9  29.07.2021, 11:59
@BcksteinForelle

Du hast irgendetwas herumgestammelt und bist regelmäßig auf unwichtige Informationen ausgewichen. Erklärt hast du gar nichts.

BcksteinForelle  29.07.2021, 12:04
@regex9

doch ich habe dir gesagt wie genau diese funktion arbeitet also einer der komischen

regex9  29.07.2021, 12:21
@BcksteinForelle

Wie sie genau funktioniert. Das ist jetzt nicht dein Ernst? Das ist bei dir eine genaue Erklärung, wie eine Funktion arbeitet? Gerade deswegen solltest du dich mit Beurteilungen von fremden Code wirklich zurückhalten. 😐

BcksteinForelle  29.07.2021, 12:33
@regex9

so dann nochmal für ganz begrenze
Normale games Player + Model + Bones + (bone * 12) -> Dann haste die coordinate
und bei unity Player + Model + Bones + (bone * 8) + Transform +transformarray + matrix + dickes mathe -> dann haste die coordinate

regex9  29.07.2021, 12:34
@BcksteinForelle

Endlich ein wenig konkreter. Aber offensichtlich hast du es immer noch nicht verstanden. 🤨

BcksteinForelle  29.07.2021, 12:36
@regex9

du checkst es auch immernoch nicht das unity viel unnötiges macht ich block dich jetzt mir geht das zu sehr auf die nerven mit fanboys

regex9  29.07.2021, 12:44
@BcksteinForelle

Mach das. Ist für dich wohl einfacher, als dich wirklich mit Unity auseinanderzusetzen. 😄

Dultus  29.07.2021, 14:17
@BcksteinForelle

*Nennt Leute, die Unity nutzen, aber eindeutig keine Fanboys sind Fanboy - aber ist nur ohne am Ende am Bashen, weil er Unreal lieber hat* x)

Setz dich mal vernünftig damit auseinander, dann kannst du auch entsprechende Posts observiert verfassen. So aber ist das unkonkret, unschlüssig und bietet einfach keinerlei Basis.

Dann solltest du das Antworten lieber ganz lassen, wenn es nicht neutral funktioniert.

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


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?