Spiel programmieren
-
Nexus schrieb:
rapso schrieb:
c++ auf den stand zu lernen das man machen kann was man in c# machen kann, wird gleich lange dauern.
Gerade Dinge wie manuelle Speicherveraltung, Objekt-Lebensdauer und Zeiger bereiten Anfängern (und leider nicht selten auch Fortgeschrittenen*) in C++ sehr viel Mühe, auch sonst gibts genügend Pitfalls. Diesbezüglich hat mans in C# schon etwas einfacher...
das ist ein weiter verbreiteter irrglaube, wie damals dass es in java keien pointer gibt, nur referenzen und deswegen niemand davor angst haben muss wie bei c++ pointern vor zugriffen auf null pointer oder vor memory leaks.
als beispiel:
du musst bei device resourcen dennoch die lebensdauer beachten, machst du das nicht, kann es sein, dass du out of memory laeufst, weil eine kleine referenz eine ganze texture verwaltet und der GC das garnicht mitbekommt. wenn du performance kritische dinge machst, musst du den speicher selbst verwalten (also alle objekte in free lists und daraus allokieren), weil sonst der GC reinhaut und die 10ms bei den 100fps die dein spiel vielleicht hat extrem den spielfluss stoeren (gaengige foren topics in z.b. XNA und Android dev foren). wenn dann ein anfaenger seinen ganzen code nochmal bearbeiten muss um das raus zu bekommen, ist der frust extrem, und nicht weniger als speicher verwaltung in c++.derFer schrieb:
weil man um 3D Spiele zu programmieren, eigentlich auch noch OpenGL oder Direct3D braucht
Warum? Man kann direkt ein High-Level-Framework wie Irrlicht oder Ogre verwenden. Bietet vielleicht nicht ganz so viel Möglichkeiten, aber man kommt schneller ans Ziel.
man kann auch pygame nutzen, sehr schneller erfolg. haengt vermutlich davon ab, was jemand lernen will.
ich gebe dir da recht, ganz unten anzufangen macht nicht sinn wenn man einfach nur schnell ans ziel will, sowas selbst zu machen dauert sicher wenigstens 1 bis 2 jahre, wenn man smart ist.
-
Mir ist bewusst, dass man durch den Begriff "Referenzen" statt "Zeiger" nicht automatisch alle Probleme löst, doch durch die eingeschränkte Funktionalität entstehen tendenziell weniger Fehler. An die anderern Faktoren, die dafür dazukommen (GC, Ressourcenverwaltung) habe ich jedoch nicht gedacht, danke für den Hinweis.
raps schrieb:
wenn dann ein anfaenger seinen ganzen code nochmal bearbeiten muss um das raus zu bekommen, ist der frust extrem, und nicht weniger als speicher verwaltung in c++.
Das Lustige daran ist, dass Speicherverwaltung in C++ dank RAII extrem einfach ist. Nur machen sich halt die meisten Leute das Leben extra schwer, indem sie dauernd
new
unddelete
benutzen
-
Nexus schrieb:
raps schrieb:
wenn dann ein anfaenger seinen ganzen code nochmal bearbeiten muss um das raus zu bekommen, ist der frust extrem, und nicht weniger als speicher verwaltung in c++.
Das Lustige daran ist, dass Speicherverwaltung in C++ dank RAII extrem einfach ist. Nur machen sich halt die meisten Leute das Leben extra schwer, indem sie dauernd
new
unddelete
benutzenUnd warum ist das wohl so?
Weil new/delete schnell erklärt und schnell erlernt sind. Um RAII soweit zu behirnen dass man seine eigenen (ausreichend fehlerfreien) RAII Klassen schreiben kann, braucht man vermutlich etwas länger.C++ ist angenehm zu verwenden wenn man es mal richtig gut kann.
C# bzw. Java sind dagegen angenehm zu verwenden so lange man sie noch nicht gut kann (aber dummerweise nicht länger :D)
-
hustbaer schrieb:
Weil new/delete schnell erklärt und schnell erlernt sind.
Aber auch weil sie erklärt werden. RAII findet man in Büchern nicht allzu oft...
hustbaer schrieb:
C++ ist angenehm zu verwenden wenn man es mal richtig gut kann.
C# bzw. Java sind dagegen angenehm zu verwenden so lange man sie noch nicht gut kann
-
Nexus schrieb:
hustbaer schrieb:
Weil new/delete schnell erklärt und schnell erlernt sind.
Aber auch weil sie erklärt werden. RAII findet man in Büchern nicht allzu oft...
Auch in Vorlesungen/im Studium nicht. Ist halt oft irgendwie unwichtig und nebensächlich. Man macht ein Praktikum oder Projekt in C++. Irgendwie. Ich kann mich jetzt nicht bewußt erinnern, dass jemand im Studium smart pointer erwähnt hätte.
-
ich weiss zwar nicht mehr wer das gesagt hat, aber seine aussage war in etwa, dass man in sonst jedem studiengang anhand von beispielen und 'best practise' lernt das wissen anzuwenden, bei informatik lehrt man die grundlagen (loop, if, switch etc.), dazu technisches/theoretisches wie prozessor aufbau, laufzeit verhalten, code analyse, aber nie anhand von best practise code beispielen wie man alles anwendet.
daher kommen sprachen mit dem "du bist zu doof, lass mich im hintergrund zaubern" attribut immer besser an, natuerlich verkauft als "du bist ein architekt, du brauchst nicht wissen wie ein ziegelstein aussieht" marketing (VB war noch direkt mit "zu doof? nimm VB" beworben, weshalb das image so schlecht war, das niemand es wirklich nutzen wollte).
die krux ist leider, wenn man einmal mit einer sprache anfaengt, lernt man auch mit ihren fehlern umzugehen und sieht sie nicht mehr, das umsteigen auf eine andere sprache ist dann meistens ausser frage, weil man wieder bei 0 anfangen muesste (z.b. kommen viele anfaenger mit headern gut zurecht, jemand der es nicht gewohnt ist, versteht die welt nicht).
deswegen ist es schade anfaengern grundsaetzlich zu c# zu raten (was hier im forum irgendwie uebertrieben oft gemacht wird), denn jeder sollte das lernen was ihm das meiste bringt bei seinem ziel.
will jemand kurz ein spiel schreiben lernen, da reicht ein game maker vollkommen (auch wenn manche den verteufeln weil ja "fuer n00bs").
will jemand vielleicht nur genug koennen um sein eigentliches interesse: game design, zu ergaenzen, ist unreal script, lua usw (je nach engine), die perfekte wahl.
vielleicht mag man android und browser spiele entwickeln, was mit java super geht.
oder nur casual facebook games, wofuer php gut geruestet ist.
wenn jemand professionel spiele programmieren lernen will, ist c++ nicht verkehrt, im besonderen wenn man sich nicht festlegen will auf nur eine platform. vielleicht will man ja mal damit arbeiten, oder android, iOS und WP8 spiele machen, oder ein browser spiel, ohne jedesmal die sprache, libs, frameworks wechseln zu muessen und dann ist c++ IMO das beste.Etwas nur immer zu empfehlen weil man es selber mag ist nicht wirklich jemandem helfen.
-
Ein wahres Wort
Dem kann ich mich nur anschließen!
MfG
-
ich bin selbst noch nicht lange bei der spieleprogrammierung dabei und hab noch nicht viel erfahrung: aber mit c# spiele machen ist um einiges leichter. weil unter c# gibts ja XNA mit dem ich auch schon paar versuche gestartet habe und ich finde es leichter zu lernen, außerdem findet man auch schneller gute tutorials die gut erklärt sind. ´Zum spiele programmieren finde ich es auch komplett anders als mit c++, außerdem kannst du in c++ viel mehr machen und es läuft auch schneller.
Zwecks OpenGL hab ich selbst für c++ kein einziges gut erklärtes tutorial gefunden, und habs am besten bei Android mit Java & OpenGL gelernt da gibtsn super tutorial, sehr gut erklärt. und mit etwas C/C++ verständniss leicht in C++ umzusetzen(ich bin allerdings selbst schon 4 Jahre schule Gegangen komm jetzt die 5te, also 4 Jahre Java/C#/C/c++ etc hinter mir,wobei java sehr leicht zum einsteigen ist, jedoch wenn du weist du willst c++ machen würd ich gleich mit c++ einsteigen)
http://www.jayway.com/2009/12/03/opengl-es-tutorial-for-android-part-i/
DAs sind glaub 7parts. die seite da oben fangt mit Part1 an.
Mir hats super geholfen.
Auch wenns Java ist, Text ist supererklärt und wie gesagt mit c/c++ verständnis leicht von java auf c++ umzusetzen.(allerdings kannst du acceleration etc auslassen weil das touchscreen fürs handy ist! )
-
http://blog.uncle.se/2012/02/opengl-es-tutorial-for-android-part-ii-building-a-polygon/
bzw. hier, da glaub andere seite paar fehler bei den weiteren tutorials hat:
aja weil ich wo gelesen hab wenn man eine sprache beherrscht muss man bei ner neuen wieder von 0 anfangen:
ich stimme dem gar nicht zu!:
Ich hab mit Java angefangen(1 jahr gelernt)
alles von grund auf gelernt wie alles aufgebaut ist und wird.
Ich hatte damit keine probleme mehr auf C umzusteigen(natürlich ist source code jetzt anders aber innerhalt 1 monat tutorials lesen und programmieren hast du das komplett drinnen/abgesehen von pointern jetztt die man dort selbst machen muss)Von Java auf C# umsteigen brauchen wir gar nicht anfangen, da C# eig komplett gleich ist, 1-2 wochen und du bist drinnen
C#/Java auf c++(1 monat und du hast dich umgestellt!) ich weis nicht ob es damit zu tun hatte da ich mit C angefangen habe, und da wirklich rein di basics gelertn habe, aber man muss auf keinnen fall von 0 anfangen.
WEnn man die basics in einer Sprache beherrscht kann man sich schnell in ne neue sprache einprogrammieren, beispiele machen etc und üben und dann klappt das schnell.
-
sleicreider1337 schrieb:
C#/Java auf c++(1 monat und du hast dich umgestellt!)
Du glaubst nach einem Monat C++ zu können.
Du schaffst es nichtmal mit Google rauszufinden wie Eingabefelder mit OpenGL genutzt werden.Du bist genau die Zielgruppe für "Benutz C#, das löst deine Probleme wie von Zauberhand.", kein weiterer Kommentar...
-
ich kann c++, ich hab nicht gesagt das ich ein OpenGL pro bin(hab selbst gesagt das ich mit OpenGL selbst erst angefangen habe, was mit c++ jetzt nicht viel zu tun hat).
und man kann aufjedenfall C++ in einem monat beherrschen, wenn man bereits viel erfahrung mit anderen Programmiersprachen hat, zu mindest die basics.
alles können wird man nie!, gibt immer genug zum dazu lernen
-
außerdem hab ich nie von C# allein geredet, ich rede von Java/C# und andere Objektorientierte sprachen, kennt man sich da gut aus, sollte man sich nicht besonders schwer tun auch c++ zu lernen, und wenn man trotzdem noch probleme hat das grundverständniss von c++ zu lernen, tja dann hat man wohl die basics davor auch noch nicht verstanden!
-
Xin schrieb:
Java - das iPad für Entwickler.
-
sleicreider1337 schrieb:
ich kann c++, ich hab nicht gesagt das ich ein OpenGL pro bin(hab selbst gesagt das ich mit OpenGL selbst erst angefangen habe, was mit c++ jetzt nicht viel zu tun hat).
und man kann aufjedenfall C++ in einem monat beherrschen, wenn man bereits viel erfahrung mit anderen Programmiersprachen hat, zu mindest die basics.
alles können wird man nie!, gibt immer genug zum dazu lernenAha, du kannst C++, kannst aber wedern mit Google noch mit Lesen umgehen (denn ich schrieb nicht, dass du nicht mit OpenGl umgehen kannst, sondern "schaffst es nichtmal mit Google rauszufinden wie...").
-
doch schaff ich^^,
nur wenn ich schon paar fragen habe,
hab ich das halt eben mal mitgefragt^^
Naja ist eure sache, aber wenn mir einer sagt er kann C#/Java oder andere OO sprachen und braucht trotzdem 1 jahr um die c++ basics zu lernen, tjo der hat die bis jetzt gelernten sprache/en anscheinend nicht verstanden^^
wenn ihr da andere meinung seid auch ok^^
(nicht umsonst ist es vielen arbeitgebern egal ob du gut in Java bist, und noch nie mit c#,c++ zu tun hattest, weil die davon ausgehen das man die oo basics kann und eben eine umstellung dann auf eine anderesprache inner halb 1 monat nicht das problem sein sollte) ich sag ja nicht wenn man jetzt java kann kann man automatisch OpenGL. gleiche ist in c++, kann man c++ kann man nicht gleich OpenGL ist ja auch was komplett anderes.
-
1. Hör' auf jeden zweiten Satz mit ^^ zu beenden. Oder bist Du erst 10?
2. Nach einem Monat wirst Du bestenfalls C++ mit Javastil schreiben und einen Tritt in den Arsch kriegen wenn Du den Code irgendwo postest. Du wirst noch lange nicht in der Lage sein guten C++ Code zu schreiben. Falls Du anderer Meinung bist, wage das Experiment und zeige uns nach ein paar Wochen Deinen Code
-
@sleicreider1337
Java -> C++ lernt man nicht auf die Schnelle, weil C++ einfach ... schwieriger ist, viel schwierigerC++ -> Java lernt man nicht auf die Schnelle, weil die Java Standard-Library einen ordentlichen Umfang hat, und wenn man da nicht die wichtigsten Dinge kennt löst man viele Dinge viel zu umständlich
Und wenn du anderer Meinung bist, dann bist du leider doof. OK warte, das bist du ja sowieso^^