Lieber C oder doch C++ für einfaches 2D Spiel

Nils_93

Freizeitschrauber(in)
Lieber C oder doch C++ für einfaches 2D Spiel

Hallo,

im Grunde genommen verrät der Titel bereits alles. Ich programmiere seit inzwischen 5 Jahren, bisher vorallem mit Anfänger Sprachen wie z.B. AutoIt - vor gut 5 Monaten überlegte ich mir dann, dass ich gerne kleine Apps fürs Smartphone schreiben möchte und fand heraus, dass in dem Bereich C/Objective C am meisten genutzt wird. Also fing ich an das zu lernen und kann mittlerweile dank 2 Büchern zumindest die absoluten Basics. In Ermangelung echter Herausforderungen habe ich das Wissen leider noch nicht weiter ausbauen können. Das soll sich nun aber ändern, denn über die Zeit hat sich bei mir im Kopf ein Projekt "abgelagert", welches ich nun gerne ganz Sachte in Angriff nehmen würde.
Ich möchte gerne ein Spiel programmieren, welches sich vorallem auf die spielerischen Abläufe, auf die Herausforderungen und den Inhalt konzentriert, als auf die Grafik. Es soll daher wahrscheinlich sogar nur 2D werden (wie Oldschool ^^) - falls es doch 3D werden sollte, dann maximal auf einem Level von z.B. Railroad Tycoon III, also alles sehr einfach gehalten. Thematisch soll es an zahlreiche "Tycoon"-Spiele angelehnt sein, nur globaler gesehen und nicht auf einzelne Ableger wie z.B. die Bahn fixiert. Es soll also ein Tycoon Spiel werden, welches Luft, Bahn, Schiff und Strasse vereint und sich vorallem auf die operativen Aufgaben, auf die Führung eines solchen Unternehmens konzentriert. "Natürlich" soll es auch KI geben die dafür sorgt das man sich nicht in einem "Sandbox"-artigen Szenario wiederfindet indem man sofort ein Marktführer ist, sondern dass man Konkurrenz hat gegen die man ankämpfen muss.
Die Frage die sich mir nun stellt ist ob ich ein solches Projekt problemlos in C schreiben kann, oder ob es überragende Vorteile von C++ gegenüber C gibt die dafür sprechen das ich zunächst die C++ Basics erlerne und es dann in C++ schreibe. Ich möchte das gern im Vorfeld "klären" bevor ich mir die Mühe mache das ganze in C zu schreiben und dann bei irgendeinem Feature feststelle das es aufgrund der Programmier-Sprache Limitierungen gibt die ich nicht umgehen kann.

Für Tipps und Ratschläge bin ich sehr dankbar!

MfG Nils
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Hmm, mein Vorschlag wäre C# mit XNA erweiterung, dann musst du dich auch nicht um die Schnittstelle kümmern, sondern bekommst nativ bereits ein Voll funktionsfähiges DX9 zur Verfügung.

Ansonsten: C++ geht mMN vor C, da C++ Objekt Orientiert ist.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Eigentlich komplett egal. Mit C kannst du alles machen. Allerdings ist C eine sehr "minimalistische" Sprache. Selbst einfache String Funktionen musst du selber schreiben.

Würde es aber nicht von der Sprache abhängig machen, sondern dem Framework / Engine. Cocoa2D ist z.B genial für 2D Spiele.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Auf alle Fälle C++. Die Compiler sind mittlerweile genau so gut, wie die für C. Und die Performance ist der einzige Grund überhaupt noch C zu schreiben. Die Objektorientierung von C++ ist außerdem ein großer vorteil, was besonders viel unötige Arbeit spart.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Öhhmm. Es gibt einige Gründe C zu nutzen, aber die Performance gegenüber C++ ist keiner davon.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Öhhmm. Es gibt einige Gründe C zu nutzen, aber die Performance gegenüber C++ ist keiner davon.

Welche sind das? Man kann ja meines Wissens nach alle Kunstrukte aus C in C++ verwenden.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Richtig. Du kannst mit C++ die komplette C API nutzen. Allerdings gibt es trotzdem reichlich Gründe um C weiterhin zu nutzen.

- C ist eine einfache und kleine Sprache. Einen C compiler zu schreiben ist wesentlich weniger Komplex als einen C++ compiler zu schreiben.
- Jegliche Embedded Systems werden in C programmiert (z.B AVR, avr-gcc hat nur ein C frontend).
- Du brauchst eine stabile Implementierung deines Systems, alle Tricks und Kniffe in C zu wissen ist nicht sonderlich kompliziert, C++ ist wesentlich komplexer.
- Der überwiegende Teil neuer Programmiersprachen sind in C geschrieben (C++, Java, Objective-C, Python, etc).
- Dein Programm ist so simpel, das C++ einfach overkill wäre. C++ Programme generieren einen ziemlichen overhead, verglichen mit C Programmen.

C ist Grundsätzlich performanter als C++, das ist Richtig. Allerdings musst du wenn du C nutzt, alles selber schreiben. Und ich bezweifle, das irgendein Mensch auf Gottes Erde, alle Algorithmen aus dem Kopf performant implementieren kann. Ich zumindest nicht. Ich vertraue auf die Personen, die C++ implementiert haben.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Stimme Leandros, dein Argumente sind richtig. Mein Aussage wahr etwas überhastet und zu Allgemein.

Für dieses Projekt würde ich aber trotzdem C++ verwenden. Weil es sich schneller schreibt und es wirklich gute Compiler für C++ gibt, wodurch die Performance kaum schlechter als zu C ist.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

In wie fern Blödsinn. Ich schreibe nie Blödsinn. ;)
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Für Smartphones:
Apple: objective C (Abwandlung von C)
Android: Java Abwandlung

Für ein einfaches 2d game würde ich wahrscheinlich Java nehmen. Leichter zu lernen, weniger fehleranfällig und fast überall Lauffähig. Für komplexe Spiele würde ich wahrscheinlich auf eine Engine wie Unity zurück greifen.
 
Lieber C oder doch C++ für einfaches 2D Spiel

Objective-C ist ein direktes superset von C. Keine "abwandlung". Ähnlich wie C++.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Naja es ist schon irgendwie eine Abwandlung. Du kannst denke ich nicht obj. C mit einem C Compiler kompilieren wohl aber C mit einem obj. C Compiler.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Deswegen ist es ja auch ein superset. Es basiert auf C und fügt weitere Features hinzu, z.B den Smalltalk syntax. Ähnlich wie C++.
Beides sind keine "abwandlung" bzw Modifikation von C.

Was ich übrigens oben schon schrieb.
 
AW: Lieber C oder doch C++ für einfaches 2D Spiel

Oh Gott, hier steht so viel Blödsinn im Thread :lol:

Außerdem:

gilt das noch? Ist irgendwie aus dem Post nicht ganz klar.
Ja, hat aber nichts mit diesem Projekt am Hut. Das soll nie für Smartphones sein, sondern für Desktops. Dennoch schreibe ich momentan nebenher an 2 Programmen für iOS, weshalb ich zumindest über die very basics in C und Objective C verfüge. Und da ich die Sprachen zumindest im Ansatz kann war halt die Frage ob ich damit wohl für meine Belange hinkomme, oder ob es klug ist auf eine andere Sprache zu setzen. Aus den bisherigen Diskussions Ergebnissen werde ich aber offen gesagt nicht ganz schlau, es kommen immer mehr Möglichkeiten hinzu, nur habe ich noch keine Schlüssige Begründung pro/contra einer speziellen Sprache gesehen. Da das "Spiel" mein allererstes "Creative" Product wird glaube ich zudem kaum, dass irgendwelche Performance Unterschiede zwischen C und C++ spüren würde, da ich vermutlich einfach noch zu unsauber schreibe um von denen nutzen zu machen. Was mir z.B. wichtig ist: wie verschieden sind die Debugger? Von AutoIt bin ich sehr verwöhnt, baut man da einen Fehler ein, so wird man sehr spezifisch darauf hingewiesen. So etwas (ähnliches), also ein hilfreicher anfängerfreundlicher Debugger wäre bei einem solchen "Großprojekt" z.B. wichtig für mich. Bei Apples Xcode ist der Debugger auch noch ok, dennoch habe ich mir schon so manches mal kräftig am Kopf gekratzt und mich gefragt was ich wohl dieses mal falsch gemacht habe. Also ich sage mal es wäre toll wenn der Debugger mindestens so präzise wie der von Xcode ist. Natürlich ist es mir auch wichtig, dass die Sprache grundsätzlich erstmal die von mir geplanten Sachen (siehe Einleitung) nativ supportet - und dies auch halbwegs simpel, ohne das man sich für jede Funktion (z.B. GUI/GDI) erstmal eine eigene UDF (nicht zu verwechseln mit dem DVD Format ^^) schreiben muss, denn sowas kostet Unmengen an Zeit und würde das erlernen einer anderen Sprache für mich durchaus rechtfertigen.
Wenn ich aber alles mit C/ Objective C machen kann, so wäre ich natürlich äußerst dankbar, denn das spart Zeit und Ressourcen die dann nicht unbedingt ins lernen, sondern in das Projekt eingehen. Zudem kann ich dann neu gelerntes auch 1 zu 1 bei Apps o.ä. nutzen und muss nicht alles doppelt lernen.


MfG Nils
 
Lieber C oder doch C++ für einfaches 2D Spiel

Die Frage nach einer Sprache ist in deiner Situation kompletter dummfug.
Ich könnte dir jetzt sagen, schreib es in C++ (würde ich dir auch, mit C würdest du noch weniger weit kommen). Du könntest in Xcode direkt loslegen. Bringt alles mit was du brauchst. Dennoch würdest du in 10 Jahren nicht zu einem Spiel kommen.

Du suchst eine Engine / Framework. Daher empfehle ich dir mal Unity genauer anzuschauen. Dürfte genau das sein was du suchst.
Alternativ gibt es noch die source, unreal 3, oder cryengine 3 welche empfehlenswert sind. Allerdings sind die größtenteils overkill.

PS: Hinter Xcode steht lldb als debugger, allerdings bin ich mir nicht wirklich sicher ob du überhaupt weisst was ein debugger wirklich ist. http://en.m.wikipedia.org/wiki/Debugger
 
Zuletzt bearbeitet:
Such mal nach Cocos2D-X

Crossplatform, OpenSource und auf C++ ausgelegt. Große Community und viele TopApps in den Charts, die es als Framework benutzen.
 
Zurück