Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

11

11.11.2013, 09:30

Java hat halt den Vorteil der Plattformunabhängigkeit. Wenn du aber sagst, meine Spiele/Programme sind ohnehin nur für Windows gedacht würde ich zu C# greifen. Im vgl. zu C++ kommt man mit den beiden Sprachen einfach viel schneller ans Ziel.

Der Performanceunterschied zu C++ ist außerdem mittlerweile so gering, dass es sich nur bei wirklich aufwendigen Sachen rentiert (siehe AAA-Titel).

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

12

11.11.2013, 10:01

Ruby ist auch wieder nur eine von vielen Scriptsprachen, wobei sie doch recht beliebt ist. Unter anderem liegt das wohl auch an dem von dir genannten Ruby on Rails. Dabei handelt es sich um ein sehr mächtiges Framework zur Entwicklung von Webanwendungen. Wirklich gearbeitet habe ich damit nicht, habe es mir jedoch mal angeguckt. Man kann da wirklich tolle Dinge mit machen. Für C# wird es noch viele andere Frameworks und Engines geben. Zum Beispiel gibt es einen .Net Wrapper für SFML2. Solche Wrapper gibt es für viele C++ und C Bibliotheken. Da musst du vielleicht einfach mal bei Google gucken und wirst eine Menge finden. Am Ende ist die Sprache eigentlich nicht so wichtig. Du wirst mit der Zeit vermutlich ein paar davon lernen und dann ist es eine Frage von persönlichen Vorlieben und Tools die dir zur Verfügung stehen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

13

11.11.2013, 13:34

Zitat von »"VADS"«

JavaScript benutzt man ja für Browsergames zum Beispiel, oder?

Ja, HTML5-Spiele werden z.B. alle in JavaScript geschrieben (oder zumindest in einer Programmiersprache, die letztendlich zu JavaScript kompiliert wird).

Ein Vorteil von JavaScript ist, dass die Spiele praktisch direkt im Browser programmiert werden können und kaum zusätzliche Tools notwendig sind: Mehr als einen Browser, einen Codeeditor und (in bestimmten Fällen) einen lokalen Webserver (z.B. mit XAMPP) brauchst du nicht. Ein weiterer Vorteil ist, dass man nicht nur das Spiel an sich, sondern auch die zugehörigen Tools mit gängigen Webtechnologien umsetzen kann (beispielsweise einen Leveleditor).

JavaScript hat aber vor allem für Anfänger auch einige Nachteile: Beispielsweise wird man von der riesigen Auswahl an verfügbaren Frameworks und Libraries geradezu erschlagen. Wenn man mit JavaScript ein Spiel programmieren möchte, muss man sich also erstmal einen Überblick über die verfügbaren Libraries verschaffen, bevor man überhaupt weiß, was man nehmen kann oder möchte. Andererseits heißt das aber natürlich auch, dass man kaum etwas finden wird, für das es keine Library gibt. ;)

Als weiterer Nachteil kommt hinzu, dass JavaScript keine klassiche Vererbung, sondern prototypische Vererbung verwendet. Vererbung ist wichtig, wenn du objektorientiertes Programmieren lernen möchtest. An dieser Stelle musst du noch nicht den Unterschied zwischen prototypischer und klassischer Vererbung kennen, wichtig ist für dich nur eins: JavaScript -> Prototypen. Fast alle anderen Sprachen -> Klassen. ;) Dieser Unterschied macht JavaScript aus meiner Sicht ziemlich ungeeignet, wenn es um das Erlernen von Objektorientierung geht. Das Gelernte lässt sich dann nur teilweise auf andere Sprachen übertragen. Außerdem sind die Prototypen in JavaScript auch gar nicht so einfach zu verstehen. Wenn du also objektorientiertes Programmieren lernen möchtest, rate ich dir erstmal von JavaScript ab.

Übrigens hat JavaScript nichts mit Java zu tun, falls du das aufgrund der Namensähnlichkeit angenommen hast. Sehr wahrscheinlich war die Namensgebung eine reine Marketingentscheidung, so wie z.B. das i-Präfix bei Nicht-Apple-Produkten.

Cranberry

Treue Seele

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

14

11.11.2013, 17:22

Falls du dich für C# entscheidest würde ich dir zu MonoGame raten. Das ganze ist eigentlich wie XNA aufgebaut wird jedoch noch weiter entwickelt und anscheinend kann man damit auch Cross-Platform entwickeln.

Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

15

11.11.2013, 20:02

@Wirago:
Plattformunabhängigkeit ist ja jetzt wirklich kein Argument pro Java. Für C# gibt es Mono, für C++ gibt es Cross-Platform-Libs, und auch sonst sind fast allen Sprachen die Betriebssysteme auf denen ihre Erzeugnisse laufen wumpe.

@Windoof:
Man kann sich auch unnötig über einen sticheligen Kommentar aufregen... ôO Nenne Java selbst lieber Kaffee, und wenn ich mich wieder durch Microsoft APIs würgen muss, spreche ich auch eher von Microschrott oder Windoof, und Linux-Systeme kürze ich gern mal Tux ab. Die Klamotten haben mittlerweile einen Bart der mindestens so alt ist wie der von NT, aber wen juckt's...


@javascript:
Ja, gut, Prototypen... man gewöhnt sich dran, und so dramatisch sind die jetzt auch nicht. Im Übrigen verwendet Lua ebenfalls ein prototypisches Typsystem und ist sehr beliebt als Scriptsprache für Spiele. Für JavaScript sprechen definitiv die Verbreitung durch's Netz und die großräumige Reifung der vielen JS-JIT-Compiler. Problematisch sind allerdings Designtechnische Blödheiten der Sprache, die absurder sind als Generics in Java.

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

16

12.11.2013, 19:45

Zum Thema JavaScript, mittlerweile spricht man da beim Standard ja von ECMAScript, wobei sich das auch schon des öfteren geändert hat. Ab der neuen Version sollen dann bald auch Klassen und ein paar andere feine Dinge unterstützt werden. Allgemein ändert sich im Web Bereich ja grad einiges (HTML5, CSS3, JavaScript3, HTTP2). Ist natürlich alles noch Zukunftsmusik, aber ich freu mich drauf.
Ich finde so Ausdrücke wie Windoof auch nicht besonders toll. Die meisten flamen obwohl sie das Zeug trotzdem benutzen. Man schreit halt gern mit der Masse und irgendwann weiß selbst die Masse nicht mehr warum sie schreit. Aber ich denke das müssen wir hier nicht weiter ausführen. Bitte das Thema einfach sein lassen und bleibt im Topic. Ich wäre euch sehr dankbar:)
Zum Thema OOP lernen, das ist auch so eine Sache. Es gibt Leute die behaupten C++ ist mehr objektorientiert als Java und anders herum. Statt Java kann man jetzt gerne auch C# oder eine vergleichbare Sprache einsetzen. Bitte ich möchte keine Diskussion darüber los brechen was denn jetzt mehr OO ist, sondern nur darauf hinweisen, dass man sich da über einige Dinge streiten kann. Am Anfang bringt es meiner Meinung nach viel mehr wenn man einfach erst mal programmiert anstatt sich über das ganze Zeug Gedanken zu machen. Je mehr du programmierst am Anfang desto mehr wirst du auf die Nase fallen und je mehr du auf die Nase fällst desto mehr lernst du dabei. Dieser Schritt ist imho auch recht wichtig. Wenn ich etwas "schlecht" löse weiß ich beim nächsten mal warum ich es anders besser lösen kann. Ich achte viel genauer auf Kleinigkeiten und entwickel mich dadurch weiter. Natürlich muss man nicht jeden Fehler selbst machen, weshalb viel lesen auch hilfreich ist, aber um Praxiserfahrung kommt man dadurch trotzdem nicht herum. Du hast ja jetzt hier einiges zu verschiedenen Sprachen gehört, nimm dir einfach eine davon und experimentier damit ein wenig.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

DudeAwesome

Frischling

Beiträge: 5

Beruf: Informatik Student/Typo3Entwickler

  • Private Nachricht senden

17

15.11.2013, 17:06

Es gibt keine Antwort auf die Frage "Welche Programmiersprache" wenn wir deine Anforderungen nicht kennen.

Ich frage ja auch nicht "Welches Auto soll ich mir kaufen" und alle raten mir zu einem Smart obwohl ich für meine Bedürfnisse eher ein LKW bräuchte da ich täglich 15t Kartoffeln transportieren muss.

Es kommt also erstmal drauf an was du machen möchtest.

Stelle dir selbst ersteinmal die Fragen:

Soll es ein Browsergame werden?
Auf welchen Plattformen soll mein Spiel laufen? Auf allen oder Nativ nur auf [OS name here]
Wird es ein 2D/2.5D oder 3D Spiel? Welches 2D Framework oder selber coden? Welches 3D Framework oder selber coden?
Multiplayer?
Physik?


Ob du die Programmiersprache beherrscht oder nicht ist egal. Da wirst du wohl zwangsläufig weitere lernen müssen. Oftmals werden in Spielen auch mehrere Sprachen oder Technologien verwendet die wiederum von Plattform zu Plattform nicht unbedingt unanhängig sein müssen.

Ein Flash Browsergame kann genausogut auch mit html/jscript umgesetzt werden mit Anbindung zu einem Server der in C geschrieben ist. Andererseits kannst du auch eine andere Servertechnologie verwenden um Sockets zu erstellen zB node.js.

Natürlich hat jede Programmiersprache auch Vor und Nachteile. Stimmen die Vorteile mit deinen Anforderungen überein und kannst du die Nachteile in Kauf nehmen dann hast du deine Programmiersprachen gefunden.

Java eignet sich gut um ein Programm ohne große Änderungen (eigentlich so gut wie keine) auf jedem System zum laufen zu bekommen. Problem ist aber das im Hintergrund immer eine JavaVM läuft und es auf jeden System unterschiedliche Java Versionen geben kann.

C/C++ ist sehr Hardwarenah und Schnell. Allerdings hast du hier keinen Garbage Collector (Wie in Java) sodass du dich selbst um den Speicher kümmern musst (Kann vor oder Nachteil sein)

Javascript/HTML musst du nicht kompilieren. Allerdings kann jeder deinen Code lesen. Es sein denn du benutzt noch einen eigenen Server der alles verwaltet.


Du kannst ja gerne mal versuchen ein Browserspiel in Assembler zu programmieren dann weißt du das die Ausgangsfrage irrelevant ist ohne die Info welche Anforderungen du hast.

buzz-steve

Frischling

Beiträge: 51

Beruf: Software Architekt

  • Private Nachricht senden

18

16.11.2013, 10:09

Vielleicht könntest du dir ja mal ein paar Engines ansehen um herauszufinden, welche am besten für deine Zwecke geeignet ist. Dann siehst du auch, welche Sprachen von dir abverlangt werden. Aus aktuellem Anlass: Unity3D hat in der neuen Version jetzt ein 2D-Toolkit. Der Einarbeitung geht sehr schnell, oder zumindest schneller als sich in diverse Libraries einzulesen. Die Sprachen, die hierfür zur Auswahl stehen, wurden hier bereits diskutiert: C# und JavaScript. Ich bin der Meinung, die wichtigsten Aspekte in der Hobby-Spieleentwicklung sind Produktivität, also das Verhältnis zwischen Aufwand und Ergebnis. Und natürlich muss es Spaß machen. Es gibt natürlich auch Entwickler, die Spaß am low-level coden haben. Wenn es dir primär darum geht, Spiele auch voranzutreiben, würde ich mich mehr mit Tools und Abläufen auseinandersetzen, anstatt ne neue Sprache zu erlernen. Das soll dich aber nicht davon abhalten, dich nicht doch irgendwann damit zu beschäftigen. Man lernt eine Menge dadurch, bekommt neue Sichtweisen, aber vielleicht nicht unbedingt etwas, das dich beim Entwickeln von 2D-Spielen wesentlich vorantreibt, vor allem nicht, wenn du ohnehin schon Kenntnisse besitzt.

19

16.11.2013, 15:40

Hinzufügen sollte man allerdings noch, dass Unity nicht JavaScript, sondern UnityScript verwendet. Ich weiß nicht, warum die Leute von Unity ihre proprietäre Sprache als JavaScript bezeichnen, vermute aber, dass es die gleichen Marketinggründe sind, wie damals bei der Namensgebung von JavaScript.

JavaScript und UnityScript sind jedenfalls ziemlich Unterschiedliche Sprachen. UnityScript hat beispielsweise keine prototypische, sondern klassische Vererbung und unterstützt Zugriffsrechte und statische Typisierung. Ich bin mir nicht sicher, aber vermutlich gibt es in UnityScript auch nicht ausschließlich einen Function-Scope wie in JavaScript, sondern auch einen Block-Scope wie in den meisten anderen Programmiersprachen auch.

Aufgrund dieser Unterschiede funktionieren die meisten JavaScripte, die man im Netz findet, nicht in Unity. Auf JavaScript-Bücher und Tutorials kann man ebenfalls nicht zurückgreifen. Abgesehen davon scheint UnityScript auch nicht besonders gut dokumentiert zu sein (ich meine die Sprache an sich). Im Falle von Unity würde ich also eher auf C# oder Boo zurückgreifen, aber das ist nur meine persönliche Meinung.

Evrey

Treue Seele

Beiträge: 245

Beruf: Weltherrscher

  • Private Nachricht senden

20

16.11.2013, 22:50

Interessante Information. Danke dafür. °^°

C-/C++-Quelltext

1
2
3
4
int main(int _argc, char** _argv) noexcept {
  asm volatile("lock cmpxchg8b %eax");
  return 0;
} // ::main
(Dieses kleine Biest vermochte einst x86-Prozessoren lahm zu legen.)

=> Und er blogt unter Hackish.Codes D:

Werbeanzeige