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



## Nils_93 (11. Mai 2014)

*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


----------



## Multithread (11. Mai 2014)

*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.


----------



## Leandros (11. Mai 2014)

*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.


----------



## Turbo1993 (11. Mai 2014)

*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.


----------



## Leandros (11. Mai 2014)

*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.


----------



## Turbo1993 (11. Mai 2014)

*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.


----------



## Leandros (11. Mai 2014)

*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.


----------



## Turbo1993 (11. Mai 2014)

*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.


----------



## Crysis nerd (11. Mai 2014)

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

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

Außerdem:


Nils_93 schrieb:


> ...fürs Smartphone...


gilt das noch? Ist irgendwie aus dem Post nicht ganz klar.


----------



## Leandros (11. Mai 2014)

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

In wie fern Blödsinn. Ich schreibe nie Blödsinn.


----------



## XPrototypeX (11. Mai 2014)

*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.


----------



## Leandros (11. Mai 2014)

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

Objective-C ist ein direktes superset von C. Keine "abwandlung". Ähnlich wie C++.


----------



## XPrototypeX (11. Mai 2014)

*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.


----------



## Leandros (11. Mai 2014)

*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.


----------



## XPrototypeX (11. Mai 2014)

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

Kk Abwandlung ist da der falsche Begriff. Du hast recht.


----------



## Nils_93 (12. Mai 2014)

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



Crysis nerd schrieb:


> Oh Gott, hier steht so viel Blödsinn im Thread
> 
> 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


----------



## Leandros (12. Mai 2014)

*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


----------



## Bunny_Joe (12. Mai 2014)

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.


----------

