Spieleprogrammierung - Empfehlungen?

  • Heii Community,
    Ich habe vor ein Spiel zu entwickeln, aus Hobby und Langeweile. Jedoch weiß Ich jetzt nicht genau welche Programmiersprache Ich verwenden soll.
    Freunde etc. empfehlen XNA C#. Doch bevor Ich anfange wollte Ich euch mal fragen.


    Ich will mit was kleines anfangen. Eine Cube World. Das die Welt dann aus Blöcken besteht und man einfach rumlaufen kann
    Dies habe Ich erstmal vor, jedoch kann Ich mich nicht entscheiden welche Programmiersprachen :thumbdown:


    MfG

  • Vor 3D-Programmierung solltest du erstmal 2D-Spiele machen.
    In der Tat ist XNA mit C# eine einfache Möglichkeit dies zu erledigen und dann auch vergleichsweise leicht auf 3D umzusteigen. Nach etwa 2 Wochen Beschäftigung mit XNA konnte ich mir ein Space Invaders programmieren.
    Nachteil ist dabei natürlich die Plattformabhängigkeit (von .net). Einige sagen gern' C# ist eine "schlechte" Programmiersprache für Spieleprogrammierung, doch schlechte Sprachen gibt es nicht.
    Alle haben ihre Vor- und Nachteile. Für den Einstieg ist C# (nicht nur für die Spiele-, sondern auch Anwendungsentwicklung) allerdings gut geeignet und zeigt bereits früh Aspekte der Objektorientierung auf.
    Bevor du dabei aber mit XNA anfängst, solltest du dir im Umgang mit C# einigermaßen sicher sein, was aber denke ich verständlich sein sollte.


    Als Alternative wäre noch Java zu nennen (Dort die jMonkeyEngine anstatt direkt implementierten Möglichkeiten, zwecks Einfachheit und Verwendbarkeit) und sicherlich auch C++. Dies hat allerdings
    trotz dem großen Verwendungsspektrum den Nachteil, dass es allgemein als schwer zu erlernende Programmiersprache gilt (Was ich bedingt auch bestätigen kann, da die Syntax ein wenig gewöhnungsbedürftig ist).
    Dennoch bietet sie eine professionelle Alternative (nicht das Java oder C# nicht professionell wären).



    Nachtrag:


    Java bietet meiner Meinung nach die am besten vergleichbare Alternative zu C#. Sie ist einfacher zu beherrschen (zumindest für mich) und hat eine sehr starke Ähnlichkeit zu C#, weshalb du mit Grundwissen bei der einen Sprache auch gut
    bei der anderen anfangen kannst.
    Also meine Empfehlung wäre: Java > C# > C++ (Wenn man andere, durchaus für Spieleprogrammierung geeignete Sprachen - die ich jedoch bisher nicht selbst versucht habe - nicht beachtet)

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    4 Mal editiert, zuletzt von Padarom ()


  • Erstmal vielen Dank für die Hilfe. Also 3D sowie 2D Spiele habe Ich mal programmiert zumnd. halb.
    Ich habe durch programmieren von Minecraft Modifikationen Java gelernt, und C# für Unity3D sowie Javascripts.
    Jedoch will Ich schon mehr dazu lernen und frage mich welche Programmiersprache jetzt zum Empfehlen währe.
    XNA habe Ich mal versucht zu lernen jedoch wollte es mein Pc nicht mit machen also habe Ich mir ein teuren Laptop gekauft.
    Also was währe jetzt genau zum Empfehlen ?(

  • Mit Unity3D kenne ich mich leider nicht aus, aber wenn dort C# verwendet wird, sollte es sich nicht allzu stark von XNA unterscheiden.
    Wenn du bereits Minecraft Mods erstellt hast, kennst du ja bereits die Vorzüge von Java, weshalb du wohl doch am besten selbst beurteilen könntest ob du lieber C# oder Java dafür verwenden würdest.
    Diese beiden würde ich für den Einstieg auf jeden Fall empfehlen. Vor- und Nachteile kann ich dir aber leider keine genauen nennen, da meine subjektive Einschätzung wohl ebenfalls keine große Hilfe wäre^^

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • 90% der Top-Spiele auf dem Markt sind noch immer mit C oder C++ programmiert.
    Ich würde ja fast sagen C# ist die Zukunft, aber durch SteamPlay(Spiel läuft auf Windows UND Mac), auf das vll. andere Entwickler auch umsteigen werden, befürchte ich, dass C++ weiter dominierend bleibt.


    Im Prinzip ist es egal was du verwendest.
    Du wirst auf jeden Fall mit C# nicht viel weniger Leute erreichen als mit Java. Durch Steam Greenlight kannst du das Spiel ja heutzutage schon gut verbreiten.
    http://steamcommunity.com/greenlight/

  • Also danke erstmal für die schnelle Hilfen.
    Ich will mit Java anfangen, jedoch will Ich ein Spiel programmieren was nicht viel CPU Auslastung benötigt.
    Und Java ist ya in dem Falle naya wie Minecraft schon zeigt, nicht auf jedem Pc spielbar.
    Aus dem Grund finde Ich keine Entscheidung.

  • Ich würde Java erstmal nehmen. Es ist zwar ressourcenfressend as shit, aber es ist kompatiel mit sovielmlich allem. Ausserdem isses egal was du genau lernst, jede Sprache ähnellt eine andere. Wenn du zum beispiel Java perfekt beherrscht kannst du mit einem Crashkurs schon eine andere Programiersprache richtig gut beherschen.

  • Ich würde Java erstmal nehmen. Es ist zwar ressourcenfressend as shit, aber es ist kompatiel mit sovielmlich allem. Ausserdem isses egal was du genau lernst, jede Sprache ähnellt eine andere. Wenn du zum beispiel Java perfekt beherrscht kannst du mit einem Crashkurs schon eine andere Programiersprache richtig gut beherschen.


    Ja ok. Vielen Dank für die Hilfe. Habe mich dann für Java entschieden. ^^

  • Ich würde ja fast sagen C# ist die Zukunft, aber durch SteamPlay(Spiel läuft auf Windows UND Mac), auf das vll. andere Entwickler auch umsteigen werden, befürchte ich, dass C++ weiter dominierend bleibt.


    Wie soll C# die Zukunft sein, wenn es fast immer von .Net abhängig ist?


    Auf Linux kommst du damit nicht sehr weit komm jetzt nicht mir WINE bzw Wine.
    Das ist keine Argumentation.


    Zum Thema Java.
    Java ist zwar schön und gut, aber für Spiele eher ungeeignet, da es alles mehrfach absichert, damit es nicht abstützt.
    Was daraus geworden ist, sieht man ja an Minecraft, eine RAM Schleuder wie nichts gutes.


    Man muss natürlich abwiegen, möchte ich Plattform unabhängig sein?
    Dann nehme ich vielleicht Java oder C(++)


    Möchte ich eher auf Windows?
    Dann nehe ich lieber C#.


    Wenn man große Spiele erstellen will, sollte man sich jedenfalls nicht Java aussuchen.
    Du magst mit 4 GB auskommen, das heißt aber nicht, das der nächste mit 2 auch aus kommt ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • Also soll Ich doch mit C# anfangen ?(
    Ich bin verwirrt


  • Er ist ein Anfänger, wie soll er bitteschön damit ein Spiel wie Minecraft hinkriegen? :P


    Java wird oft als Anfangssprache genommen, es ist anscheinend leichter zu verstehen etc. Ich empfehle ihm Java, weil er später immernoch auf C++ umsteigen kann, sobald er soweit ist. Bis dahin hat er noch einen langen steinigen Weg. Habe wie bereits oben geschrieben, dass wenn man eine Sprache wie Java perfekt beherrscht, kann man andere Sprachen sehr schnell lernen, da jede Sprache sehr ähnlich ist, es gibt immer nur kleine Ausnahmen.


    Klar ist Java an sich nicht so toll, aber für kleine Games ist das kein Problem.

  • Also soll Ich doch mit C# anfangen ?(


    Das hab ich nicht gesagt.


    Es ist eher so, das man sich bei beiden hier geboteten Programmiersprachen im klaren sein sollte,
    auf was man sich da einlässt.


    Da Java eigentlich aus der Flugzeugtechnik kommt, hat es eben diese hohe Absicherung
    und da C# in Koperation mit Microsoft entstanden ist, hat es halt diese .Net Abhängigkeit.


    Beide Programmiersprachen sind recht mächtig, auch wenn C# ein Tick weitereinwickelter ist als Java.


    Ich würde dir raten,
    ein paar Programme anzugucken und dir ein Bild davon zu machen,
    was eher zu dir passt und von dem du auch überzeugt bist.


    Blunt
    Ich hab doch gar nichts gegen Java gesagt :huh:

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Er ist ein Anfänger, wie soll er bitteschön damit ein Spiel wie Minecraft hinkriegen? :P


    Java wird oft als Anfangssprache genommen, es ist anscheinend leichter zu verstehen etc. Ich empfehle ihm Java, weil er später immernoch auf C++ umsteigen kann, sobald er soweit ist. Bis dahin hat er noch einen langen steinigen Weg. Habe wie bereits oben geschrieben, dass wenn man eine Sprache wie Java perfekt beherrscht, kann man andere Sprachen sehr schnell lernen, da jede Sprache sehr ähnlich ist, es gibt immer nur kleine Ausnahmen.


    Klar ist Java an sich nicht so toll, aber für kleine Games ist das kein Problem.


    Anfänger bin Ich nicht, programmieren kann Ich zwa, wie geschrieben, Ich will nur Empfehlungen wegen der CPU Auslastungen etc. :pinch:

  • @Blackace
    Naja ich selbst mag java jetzt selber nicht so, aber man muss sagen, dass Leute teilweise wegen der ressourcenlastigkeit bisschen übertreiben. Zwar zieht Minecraft sehr viel Leistung und eine programierung in c++ wäre sicherlich ressourcenschonender, aber eine große dynamische Welt die 'unendlich' groß ist, würde selbst in c++ einiges an ressourcen ziehen.


    Teldabis
    Wenn du wirklich kein anfänger bist, dann hättest du nicht den Thread erstellt, sondern hättest angefangen ein Spiel in c++ zu schreiben. Obwohl du Grundlagen kennst und hier und da was machen kannst, bist du trozdem noch ein Anfänger, ich meine nicht mit Anfänger, dass du überhaupt keine Ahnung hättest, wenn du verstehst.

  • @Blackace
    Naja ich selbst mag java jetzt selber nicht so, aber man muss sagen, dass Leute teilweise wegen der ressourcenlastigkeit bisschen übertreiben. Zwar zieht Minecraft sehr viel Leistung und eine programierung in c++ wäre sicherlich ressourcenschonender, aber eine große dynamische Welt die 'unendlich' groß ist, würde selbst in c++ einiges an ressourcen ziehen.


    Teldabis
    Wenn du wirklich kein anfänger bist, dann hättest du nicht den Thread erstellt, sondern hättest angefangen ein Spiel in c++ zu schreiben. Obwohl du Grundlagen kennst und hier und da was machen kannst, bist du trozdem noch ein Anfänger, ich meine nicht mit Anfänger, dass du überhaupt keine Ahnung hättest, wenn du verstehst.


    Dann habe Ich es wohl falsch verstanden. Sorry.
    Hmm ok also C# oder Java ?(

  • Da Java eigentlich aus der Flugzeugtechnik kommt, hat es eben diese hohe Absicherung.


    Stimmt nicht ganz. Habe bereits mehrere Praktika im Bereich Flugzeugtechnik (Fluggerätmechaniker, Elektroniker für luftfahrttechn. Systeme usw.) abgeschlossen und bin nie auf Java gestoßen.
    Wikipedia und meine Bücher über Java sagten mir dazu, dass Java (damals noch "Oak") ursprünglich als Projekt entwickelt wurde, welches beispielsweise Küchenmaschinen steuern sollte.
    In Flugzeugsystemen programmiert man quasi maschinennah.


    Ansonsten hast du schon recht, mir ging es bei meiner Empfehlung auch um den Einstieg, wodurch man sich später in der Tat leichter in andere Programmiersprachen begeben kann.
    Dass bereits in den ersten Wochen kaum professionelle Ergebnisse dabei herauskommen ist hoffentlich jedem klar^^

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    3 Mal editiert, zuletzt von Padarom ()

  • Zitat

    Ich habe vor ein Spiel zu entwickeln, aus Hobby und Langeweile.


    Die Langeweile vergeht schnell.
    Das Hobby wechselt schnell.


    Programmiersprache:
    Wenn man davon ausgeht, das du nun durch die vorherigen Antworten die Entscheidung getroffen hast bsp. Eine der C-Sprachen zu wählen so wird dir das nicht viel bringen.
    Deine Langeweile vergeht und bringt dich immer wieder etwas Neues ( nicht unbedingt im Bereich Spieleprogrammierung ) zu tun.


    Fang am besten klein an und versuche die gewählte Sprache zu verstehen.
    In vielen Tutorials zur Spieleprogrammierung wird Grund- ( und / oder ) Fortgeschrittenenwissen vorausgesetzt was bedeutet das du alles langsamer verstehst und so die Lust daran verlieren kannst.



    Adnan

  • Da Java eigentlich aus der Flugzeugtechnik kommt, hat es eben diese hohe Absicherung


    Da würde ich aber gerne eine seriöse Quelle zu sehen. Bisher ist mir nur ein CAD-Programm bekannt, welches aus der Luftfahrt kommt aber nicht Java(also nichdas Java jetzt CAD ist).


    @TE: Solang du nicht erwartest ein neues GTA:SA zu programmieren, sondern nur bei kleinen Spielen bleibst, wirst du mit den bisherigen Vorschlägen glücklich. Für sowas wie GTA brauchst du sehr sehr sehr viel Zeit oder ein großes gutes Team. Aber selbst dann überschreitet die Zeit schon das, was viele hier im Forum investieren wollen.


    Du hast hier viele Ratschläge gelesen, bei der Sprachauswahl stellt sich nun die Frage Plattform unabhängig oder nicht. Die Entscheidung liegt bei dir, aber auch viele Linux-Nutzer greifen dann zum Zocken wieder auf Windows zurück, dann sollte es sich aber auch lohnen. Also da du ja erstmal wahrscheinlich was kleines machen willst, aber auch einige Nutzer es ausprobieren sollen, würde ich von C# weggehen, auch wenn dies mittlerweile von Linux unterstützt wird(keine Ahnung wie aktuell und fehlerfrei dort die Entwicklung ist).

  • Ich würde Java erstmal nehmen. Es ist zwar ressourcenfressend as shit, aber es ist kompatiel mit sovielmlich allem. Ausserdem isses egal was du genau lernst, jede Sprache ähnellt eine andere. Wenn du zum beispiel Java perfekt beherrscht kannst du mit einem Crashkurs schon eine andere Programiersprache richtig gut beherschen.

    Sorry, aber was redest Du da? - Er ist Anfänger, warum Ihm gleich eine Sprache empfehlen, die zwar von der Syntax easy ist aber man damit nie perfekte Ergebnisse erzielen wird?

    Blackace hat mal ausnahmsweise (fast) recht. Die Frage mit der Plattform sollte man aber wiederrum anders formulieren. Willst Du dass Deine Applikation (oder auch Dein Spiel) auf allen Geräten verfügbar ist? - Dann nutze Java, anders wirst Du Dein Vorhaben nicht schneller & besser realisieren können. Willst jedoch nur auf Windows oder auch das Spiel mal für eine Linux-Distribution konvertieren, dann nutze C#. So kommst Du einfach besser voran.


    Java wird heutzutage viel seltener eingesetzt als noch früher. Da die Perfomance von Java so grotten mies ist, werden immer weniger Spiele/Applikationen mit dieser Sprache entwickelt.


    Zum Thema Java und der Entstehung, solltest Du (Blackace) mal folgendes lesen ;)
    http://de.wikipedia.org/wiki/Java_(Technik)#Geschichte



    Meine persönliche Empfehlung ist entweder C++, oder C#. Beides hat seine Vor- und Nachteile. Letztendlich ist es aber sowieso Deine Entscheidung.

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)