Programmierung für Windows, Linux und MacOS
-
Du solltest dir vorher klar darüber werden, welche Sprache du nutzen willst. Soll es wirklich C++ sein, dann würde ich dir von der SDL abraten und dir die SFML ( http://www.sfml-dev.org ) nahe legen.
SDL ist in C geschrieben, während die SFML eine C++-Bibliothek ist. Beide machen das gleiche, nämlich 2D-Zeichnen (mit ein wenig Drumherum wie User Input, Sound, Netzwerk).
Du machst es dir einfacher, wenn du eine Bibliothek passend zur Sprache nutzest. Außerdem besitzt SFML ein schönes Design und ist angenehm zu nutzen.Kóyaánasqatsi schrieb:
...und in der FAQ sollte auch alles zu finden seien, das deine Frage beantwortet.
Die seit Jahren nicht mehr aktualisiert wurde und z.B. SFML gar nicht kennt?
-
Der aufwand für ein Spiel C++ zu verwenden ist tatsächlich enorm hoch. Solange man alleine an einem Spiel arbeitet würde ich auch behaupten, dass sich das lernen dieser Sprache nicht lohnt. Ich habe schon Spiele im Alleingang geschrieben, und ich muss sagen wenn ich C++ verwendet habe bin ich selten ans Ziel gekommen, weil der Verwaltungsaufwand irgendwann einfach zu groß wurde und ich mit dem eigentlichen Spiel nicht mehr vorrangekommen bin.
was ich allerdings empfehlen kann, ist mit Processning anzufangen. Das ist ein Projekt basierend auf Java das einem versucht bei der Grafischen Programmierung so viel Verwaltungsaufwand abzunehmen wie möglich. Es auch einen knopf in der IDE engebaut, mit der man gleichzeitig für alle Plattformen kompilieren kann.
-
mad_martin schrieb:
Du solltest dir vorher klar darüber werden, welche Sprache du nutzen willst. Soll es wirklich C++ sein, dann würde ich dir von der SDL abraten und dir die SFML ( http://www.sfml-dev.org ) nahe legen.
SDL ist in C geschrieben, während die SFML eine C++-Bibliothek ist. Beide machen das gleiche, nämlich 2D-Zeichnen (mit ein wenig Drumherum wie User Input, Sound, Netzwerk).
Du machst es dir einfacher, wenn du eine Bibliothek passend zur Sprache nutzest. Außerdem besitzt SFML ein schönes Design und ist angenehm zu nutzen.Danke für den Hinweis.
Auf http://www.libsdl.org/languages.php habe ich folgendes gelesen:
The Simple DirectMedia Layer library has bindings to many different programming languages. While SDL is written in C, it works well with C++ and many people like to use it with various scripting languages and special purpose programming languages.
Ich habe daher gedacht, das die populäre SDL geeignet ist. Kannst du mir die zu erwartenen Probleme bei den Nutzung von SDL unter C++ näher erläutern oder gibt es Seiten, wo ich entsprechendes nachlesen kann?
SDL würde mich auch sehr interessieren, weil ich die gewonnenen Erfahrungen dann auch in einem anderen Projekt verwenden könnte.
-
Kóyaánasqatsi schrieb:
EightBitWitch schrieb:
Ach wie ich das liebe, ich stelle ein Frage und werde mich wenig konkreten "Bla-Bla" überschüttet, das mir in keiner Weise weiterhilft. Der Beitrag von "zwutz" ist hiervon ganz klar ausgenommen.
Das Verhalten was du hier an den Tag legst ist einfach nur dumm.
Solche Threads gab es schon 20k mal und in der FAQ sollte auch alles zu finden seien, das deine Frage beantwortet.
Ich finde es einfach ungebührlich, Leute die man nicht kennt und die neu in einem Forum sind, gleich mit unwirschen Bemerkungen runter zu putzen.
Ich weiß nicht welche Altersstruktur hier vorherrscht, aber in meiner Altersgruppe (40+) sind solchen Einstiegsbemerkungen nicht üblich und für einen freundlichen Ton auch nicht förderlich.Zu der FAQ: Wenn man ganz neu in einem Thema ist, dann tut man sich mit einer FAQ einfach recht schwer, denn man weis schlicht und ergreifend nicht, nach was man suchen oder auch was man achten muss.
Wenn du mir nicht konstruktiv helfen kannst, dann ist das ok, aber beleidige mich bitte nicht mit deinen wenig hilfreichen Kommentaren.
-
EightBitWitch schrieb:
Ich finde es einfach ungebührlich, Leute die man nicht kennt und die neu in einem Forum sind, gleich mit unwirschen Bemerkungen runter zu putzen.
Gerade weil wir in einem Forum sind hat jeder ein Recht auf seine eigene Meinung. Und darauf bestehe ich, sowie fast jeder Andere. Jedoch frage ich mich, warum du dich so wunderst, immerhin hast du es provoziert.
EightBitWitch schrieb:
ch weiß nicht welche Altersstruktur hier vorherrscht, aber in meiner Altersgruppe (40+) sind solchen Einstiegsbemerkungen nicht üblich und für einen freundlichen Ton auch nicht förderlich.
Gut das du das erkannt hast. Dann kannst du es beim nächsten mal ja besser machen. Im Übrigen: Alter spielt keine Rolle.
EightBitWitch schrieb:
Wenn du mir nicht konstruktiv helfen kannst, dann ist das ok, aber beleidige mich bitte nicht mit deinen wenig hilfreichen Kommentaren.
Ok, dann stelle du deine provokanten Bemerkungen ein. Dann verstehen wir uns.
Ahja: An meinem Beiträgen war nichts nicht hilfreich. Du wusstest die Fragen, also können wir nicht dvaon sprechen das du es schwer hattest "danach zu suchen". Die FAQ hätte sicherlich vieles beantwortet.
-
Krux schrieb:
Der aufwand für ein Spiel C++ zu verwenden ist tatsächlich enorm hoch. Solange man alleine an einem Spiel arbeitet würde ich auch behaupten, dass sich das lernen dieser Sprache nicht lohnt. Ich habe schon Spiele im Alleingang geschrieben, und ich muss sagen wenn ich C++ verwendet habe bin ich selten ans Ziel gekommen, weil der Verwaltungsaufwand irgendwann einfach zu groß wurde und ich mit dem eigentlichen Spiel nicht mehr vorrangekommen bin. (...)
Was macht das erstellen eines Spieles oder allgemein Programmes in C++ so sehr schwieriger, gegenüber Visual Basic, Turbo Pascal(incl. OOP) oder Assembler?
Es soll "nur" ein 2D-Spiel werden, in der Hauptsache ein MMOG-Client eben unter Windows, Linux und MacOS.
Der MMOG-Server und auch ein rudimentärer Client, ist in einer ersten Version, zum Testen von Konzepten und der Kommunikation von Client und Server bereits fertig.
Das war ein längerer Prozess (vier Monate), da ich vorher nie mit VB oder VB.NET gearbeitet habe und zuvor auch noch keine Erfahrung in Netzwerkprogrammierung, von eigenen Servern ganz zu schweigen, hatte. Was ich früher gemacht habe, ist Netzwerke für die Verbindung von HomeComputern verschiedener Hersteller zu erstellen, Hardware und Software. So was es möglich Daten zwischen C64(Userport), Atari 800XL(Joystickports) und Sharp MZ800(Centronics) auf einfache Art auszutauschen. Das ganze war als Betriebsystemerweiterung in Assembler ausgelegt.
Aktuell: Angefangen habe ich mit der Erstellung eines Bots für ein bestehendes MMOG (Dark Orbit, browserbasierendes MMOG), der nicht auf Tools wie Auto-It (gespeicherte und abspieltbare Maus-Clicks im Browserfenster) aufbaut. Ich habe alles direkt in VB.NET programmiert und verbinde mich unter Umgehung des Browser direkt mit den Spiel-Servern. So ist es mich möglich mehrere hundert Schiffe in dem Spiel gleichzeitig über mein Programm (auf einem Rechner oder verteilt über das Internet) steuern zu lassen und über einen selbst erstellten Strategie- und Kontroll-Server diese Schiffe voll automatisch in Rudeln/Schwärmen koordiniert und im ganze DO-Universum vorgehen zu lassen.
Ich habe also ich den Grundaufgabe bereits Erfahrungen gesammelt, nur fehlen mir nun noch die passenden Werkzeuge für die Umsetzung eines Clients, der dann eben auf drei Betriebssystemen lauffähig sein soll. Auf welchen Betriebssystem der Spiel-Server später laufen wird ist noch nicht klar.
Ich muss vielleicht auch noch erklären, das ich keinen Geschwindigkeitsrekord in der Spielentwicklung aufstellen will. Das ganz darf gerne 1-2 Jahre dauern, ich muss damit kein Geld verdienen und habe Zeit so viel ich will.
-
EightBitWitch schrieb:
Ich habe daher gedacht, das die populäre SDL geeignet ist. Kannst du mir die zu erwartenen Probleme bei den Nutzung von SDL unter C++ näher erläutern oder gibt es Seiten, wo ich entsprechendes nachlesen kann?
Es spricht direkt nichts gegen SDL und Probleme bei der Benutzung mit C++ wird es auch nicht geben, da die Einbindung von C-Libraries in C++ trivial ist.
Aber es bietet dir aufgrund der Herkunft keinen objektorientierten Ansatz.
Unter SDL machst du alles mit Funktionen, denen du immer die Daten übergibst, die gerade bearbeitet werden sollen, z.B. einen Pointer auf ein Array mit den Bilddaten, die mit SDL_BlitSurface dargestellt werden sollen. C halt.
Bei SFML ist ein Bild dagegen ein Objekt, dass seine Methoden zur Darstellung selbst mitbringt.VB.NET ist ja auch objektorientiert. Wenn dir der Ansatz gefällt und du auch gerne C++ nutzen möchtest, ist es naheliegend und einfacher, SFML anstatt SDL zu nutzen. Aber am besten schaust du dir mal Tutorials von beiden an, wo Code zu sehen ist. Dann kannst du entscheiden, was dir besser gefällt.
Ich hab mich, da ich aus dem C++-Lager komme und mit C nicht viel am Hut hatte, gegen SDL und für SFML entschieden.
EightBitWitch schrieb:
SDL würde mich auch sehr interessieren, weil ich die gewonnenen Erfahrungen dann auch in einem anderen Projekt verwenden könnte.
Wenn das andere Projekt SDL nutzt und du gerne dabei bleiben willst, mach das.
-
Kóyaánasqatsi schrieb:
EightBitWitch schrieb:
Da ich was C++ angeht ein absoluter Neuling bin
Müssen wir wirklich noch weiter diskutieren?
Du hast zwar recht, aber die art und weise wie du es rueber bringst ist nichts als provokativ. schau dir die beitraege unter dir an, waere nett wenn du versuchen wuerdest konstruktiv wie die zu schreiben, statt deiner destruktiver einzeiler.
danke im voraus
(versteh mich nicht falsch, ich finde deine beitraege haben wohl die richtige absicht, aber du stellst es vielleicht ungeschickt an.)
-
EightBitWitch schrieb:
Hallo, ich möchte ein 2D-Spiel für Windows, Linux und MacOS in C++ unter der Verwendung von SDL erstellen.
Wenn du ein Maximum an Portabilität willst, dann würde ich Java nehmen. So schwer mir die Aussage auch fällt [ich bin slebst C++ Programmierer]. Ein 2D-Spiel bekommst du damit auch locker hin
-
EightBitWitch schrieb:
Was macht das erstellen eines Spieles oder allgemein Programmes in C++ so sehr schwieriger, gegenüber Visual Basic, Turbo Pascal(incl. OOP) oder Assembler?
Es soll "nur" ein 2D-Spiel werden, in der Hauptsache ein MMOG-Client eben unter Windows, Linux und MacOS.
Der MMOG-Server und auch ein rudimentärer Client, ist in einer ersten Version, zum Testen von Konzepten und der Kommunikation von Client und Server bereits fertig.
Das war ein längerer Prozess (vier Monate), da ich vorher nie mit VB oder VB.NET gearbeitet habe und zuvor auch noch keine Erfahrung in Netzwerkprogrammierung, von eigenen Servern ganz zu schweigen, hatte. Was ich früher gemacht habe, ist Netzwerke für die Verbindung von HomeComputern verschiedener Hersteller zu erstellen, Hardware und Software. So was es möglich Daten zwischen C64(Userport), Atari 800XL(Joystickports) und Sharp MZ800(Centronics) auf einfache Art auszutauschen. Das ganze war als Betriebsystemerweiterung in Assembler ausgelegt.
Aktuell: Angefangen habe ich mit der Erstellung eines Bots für ein bestehendes MMOG (Dark Orbit, browserbasierendes MMOG), der nicht auf Tools wie Auto-It (gespeicherte und abspieltbare Maus-Clicks im Browserfenster) aufbaut. Ich habe alles direkt in VB.NET programmiert und verbinde mich unter Umgehung des Browser direkt mit den Spiel-Servern. So ist es mich möglich mehrere hundert Schiffe in dem Spiel gleichzeitig über mein Programm (auf einem Rechner oder verteilt über das Internet) steuern zu lassen und über einen selbst erstellten Strategie- und Kontroll-Server diese Schiffe voll automatisch in Rudeln/Schwärmen koordiniert und im ganze DO-Universum vorgehen zu lassen.
Ich habe also ich den Grundaufgabe bereits Erfahrungen gesammelt, nur fehlen mir nun noch die passenden Werkzeuge für die Umsetzung eines Clients, der dann eben auf drei Betriebssystemen lauffähig sein soll. Auf welchen Betriebssystem der Spiel-Server später laufen wird ist noch nicht klar.
Ich muss vielleicht auch noch erklären, das ich keinen Geschwindigkeitsrekord in der Spielentwicklung aufstellen will. Das ganz darf gerne 1-2 Jahre dauern, ich muss damit kein Geld verdienen und habe Zeit so viel ich will.Was ich vorallem gemerkt habe, als ich von BlitzBasic nach C++ umgestiegen bin, ist dass man versucht alles irgendwie Standartkonform mit Klassen, Vererbungen und dem ganzen zeug was C++ so mit sich bringt zu implementieren. Dabei geht dann natürlich viel Zeit drauf. Zudem nerft es auch immer wieder Linkeflags zu setzten, wenn man eine Library benutzen will (Andere Sprachen brauchen nur das Import im Quelltext). Es sind auch viele Sprachfeatures in modernen Sprachen, die man in C++ einfach vermisst, wie z.B die for-each-Schleife.
Eine Sprache die versucht die Macken von C++ auszubügeln, ohne dessen vorzüge zu verlieren ist momentan D.
vorteile
Sauberer als C++, weil die sprache von "Altlasten" bereinigt wurde
nachteile
Es gibt noch keine Professionelle IDE, die D wirklich unterstützt
es ist nicht Sicher ob D irgendwann C++ ablöst, aber ich hoffe es
Es gibt noch nicht sehr viele Compiler (Lässt sich z.B. nicht auf Handys compilieren)Da du gerade von einem MMO Clienten gesprochen hast sollte ich mal meine empfehlung zu Processing überdenken. Eine Netzwerkschnittstelle ist nicht eingebaut, aber es ist Prinzipiell Java, kann also theoretisch auch jede Java-Netzwerk-Schnittstelle benutzen. Es ist dann halt nur nicht so schön integriert.
zu SDL gegen SFML
SDL gibt es schon wesentlich länger, und ist auch auf viel mehr Platformen verfügbar. Es ist quasi der Industriestandart der Indipendent-Szene. SFML muss sich da erst noch durchsetzten. SDL hat aber als altlasten z.B. noch dass man alles was man benutzt Initialisieren muss, und am ande wieder Deinitialisieren Muss. SFML hat aufgrund der Objektorientiertheit das nicht. SFML hat für mich als einzigen nachtel, man kann es nicht auf Handys kompilieren, aber willst du ja eh nicht.
btw SFML hat eine D schnittstelle