Ergebnis 1 bis 12 von 12

Thema: .NET, Mono, VB, C#, DirectX, OpenGL

  1. #1

    .NET, Mono, VB, C#, DirectX, OpenGL

    Hi. =)

    Ich hätte da mal ein paar Fragen zu den oben genannten Stichworten und euren Rat.

    Aber erst einmal vielleicht ein Vorwort:
    Ich bin jetzt seit fast einem Jahr in einer Ausbildung zum Fachinformatiker (Fachrichtung Anwendungsentwicklung). Im Betrieb programmieren wir ausschließlich unter .NET mit VB 2005/2008. Zwangsläufig musste ich mich daher mit der .NET-Technologie auseinandersetzen. Ich finde die Programmierung unter .NET sehr interessant und beschäftige mich daher auch privat vermehrt mit diesem Thema.

    Mir stellt sich zum einen die Frage, für welche Sprache ich mich entscheiden sollte, welche Vorteile hat VB, wofür ist C# geeignet? Mit VB hab ich jetzt natürlich mehr Erfahrung, da ich ja quasi täglich Windowsanwendungen damit programmiere. Ich interessiere mich allerdings auch für C#. Ich könnte wahrscheinlich auch schon einiges damit programmieren, die Syntax ist mir auch relativ gut bekannt, würde ich sagen, da ja PHP und C++ ähnliche Sprachelemente haben, und damit hab ich teilweise schon gearbeitet (auch wenn ich C++ nicht so mag, was muss das muss. )
    Könnt ihr mir hier vielleicht irgendwelche Empfehlungen geben oder einfach eure Erfahrungen posten?

    Nun, und wie viele Programmierer bin auch ich leidenschaftlicher PC-Spieler und der Traum vom eigenen Spiel ist da ja fast schon unvermeidlich.
    Da ich nun meinen Schwerpunkt auf .NET gelegt habe, hab ich mich schonmal vorab etwas informiert, was es denn alles für Möglichkeiten gibt.

    Klar sind dann Begriffe wie DirectX und OpenGL nicht fern.

    Also hab ich mir erstmal das aktuelle DirectX SDK heruntergeladen und mir ein paar einfache Grundlagentutorials angeschaut (jedoch noch nicht wirklich selbst programmiert).

    Allerdings finde ich auch die Möglichkeit, C#/VB-Programme mithilfe von Mono auch unter Linux/Mac OS X lauffähig zu bekommen. Und da treten dann auch schon die ersten Konflikte auf, denn DirectX und Linux klappt wahrscheinlich so gut.
    Daher hab ich mich auch etwas über OpenGL schlau gemacht und wie man das unter .NET programmieren kann. Leider hab ich nicht so vollkommen durchgeblickt.
    Wichtig ist für mich hier eben auch, dass das ganze wenn möglich auch Linux-kompatibel wäre.

    [Edit]
    Ach, was ich ganz vergessen hab zu erwähnen. Ich will erstmal ganz normal mit 2D-Programmierung anfangen. Das sollte aber denke ich keinen Unterschied machen, müsste ja mit DirectX und OpenGL funktionieren, denke ich.

    (Ich weiß, .NET ist hier glaube ich etwas verpöhnt (hab den C# vs. C++-Thread teilweise mitverfolgt ^^), aber ich hoffe einfach trotzdem mal auf Hilfe und eure eigenen Erfahrungen.)

    Soweit so gut. Danke schonmal für's Durchlesen. =)

    Geändert von The Best Isaac (10.07.2008 um 21:44 Uhr)

  2. #2
    Zu den Programmiersprachen kann ich nicht viel sagen, da ich ich bei beiden nur ein Grundwissen besitze.

    Dagegen kann ich einiges zur Grafikprogrammierung sagen, da ich mit der gleichen Fragestellung dastand. In erster Linie sollte man wissen das OpenGL bis auf die Anzeige von Grafiken nichts anderes Beherrscht, daher muss man alle andere Funktionen (Tastaturabfrage Musik etc) ueber andere Biblotheken hinzufuegen, dazu aber gleich mehr. DirectX hat dagegen den Vorteil alles in einem zu haben und so kann man sich auf die Programierung selbst beschraenken, leider ist man damit Platformabhaengig und daher wohl fuer dich eher ungeeignet. Was von beiden besser ist sollte man am besten gar nicht fragen, da die Meinungen sehr geteilt sind.

    Wenn man aber an Grafikprogrammierung ran geht, sollte man noch SDL als Moeglichkeit in betracht ziehen. Wie DirectX bietet es alle grundsaetzlichen Funktionen an (Tastaturabfrage, Gamepad, Eventbehandlung, Musikwiedergabe etc.) und ist in der Handhabung sehr leicht. Desweiteren ist es Plattformunabhaengig. Zwar sagen alle, das die Power der Grafikanzeige eher gering ist, aber hier tritt OpenGL in Kraft. In der SDL ist OpenGL als Moeglichkeit der Erweiterung direkt inbegriffen und kann Problemlos hinzugefuegt werden. Damit hat man eine starke Grafikbehandlung und zudem auch alle andern benoetigten Funktionen. Ich selbst bevorzuge diese Kombi und bisher war das auch sehr gut und an Dokumentation wirst du in Internet mehr als genug zu fnden haben.

    Zur 2D-Grafik: Hier bietet SDL eigendlich alles was man benoetigt und ist als einstieg ganz gut. Ansonsten kann man auch die grossen Brueder verwenden, wobei man mit SDL schneller vorankommen wird.

    .Net habe ich bisher ueberhaupt nicht bearbeitet, wobei man hier eigentlich Problemlos OpenGL einfuegen sollte. Mit WinApi geht es ja Problemlos und so viel anders sollte die Art von .Net ja auch nicht sein und du solltest wahrscheinlich auch nicht der erste sein der auf diese Idee kommt und ein kurzer Blick in Google bestaetigt meine Annahme.

    Alles in allem solltest du dir erstmal klar werden was du wirklich willst. Plattformunabhaengig oder nicht, denn dadurch stellt sich die Frage erst ob OpenGL und DirektX und hier sollte jeder fuer sich selbst entscheiden.
    Da ich selbst Plattformunabhaengig sein wollte entschied ich mich fuer OpenGL und SDL, wobei ich mich auch noch mit DirektX beschaeftigen will.

    So ich haffe ich hab nicht zu viel Schmarn geschreiben.

  3. #3
    Für Plattformunabhängige 2d Anwendungen eignet sich SDL mit OpenGL. Ich persöhnlich benutze SDL in C++. Es gibt allerdings auch SDL.net welches man in VB.net und C# verwenden kann. Auf dieser Seite findest du weitere Information zu SDL.net.

  4. #4
    Zitat Zitat von The_Best_Isaac Beitrag anzeigen
    Mir stellt sich zum einen die Frage, für welche Sprache ich mich entscheiden sollte, welche Vorteile hat VB, wofür ist C# geeignet?
    Meine persönliche Meinung: Völlig egal. Du solltest dich eh nicht krampfhaft auf eine Sprache konzentrieren. Versuche eher die dahinter liegenden Konzepte zu verstehen. Im Idealfall solltest du in der Lage sein, jede beliebige neue Programmiersprache innerhalb einer gewissen Frist zu erlernen.
    Benutze einfach immer das, was für die aktuelle Situation angemessen ist. Wenn dein Arbeitgeber Java will, arbeitest du dich halt in Java ein. Betreust du ein C++ Projekt, dann eben das. Wenn dein Chef will, dass du Assembler codest, mach halt das...
    Genauso für irgendwelche privaten Projekte. Benutze immer das, was für deine Situation am besten geeignet ist - nicht notwendigerweise das, was du am besten beherrscht. Wie heißt es so schön: "Wenn du nur einen Hammer hast, sieht jedes Problem aus wie ein Nagel."

    Flexibilität ist der Schlüssel - imho, natürlich.

  5. #5
    Zitat Zitat von Irian Beitrag anzeigen
    Meine persönliche Meinung: Völlig egal. Du solltest dich eh nicht krampfhaft auf eine Sprache konzentrieren. Versuche eher die dahinter liegenden Konzepte zu verstehen. Im Idealfall solltest du in der Lage sein, jede beliebige neue Programmiersprache innerhalb einer gewissen Frist zu erlernen.
    Benutze einfach immer das, was für die aktuelle Situation angemessen ist. Wenn dein Arbeitgeber Java will, arbeitest du dich halt in Java ein. Betreust du ein C++ Projekt, dann eben das. Wenn dein Chef will, dass du Assembler codest, mach halt das...
    Genauso für irgendwelche privaten Projekte. Benutze immer das, was für deine Situation am besten geeignet ist - nicht notwendigerweise das, was du am besten beherrscht. Wie heißt es so schön: "Wenn du nur einen Hammer hast, sieht jedes Problem aus wie ein Nagel."

    Flexibilität ist der Schlüssel - imho, natürlich.
    Naja, von Java auf Assembler ist das schon ne ziemliche Umstellung

    Ansonsten kann ich dir aber nur zustimmen. Ich persönlich mag Basic-Dialekte nicht, aber das ist ne Geschmacksfrage. Mono ist keine wirklich gute Lösung, da es a) rechtlich nicht ganz einwandfrei ist, und b) wohl auch in der Umsetzung noch nicht 100% ausgereift. Ich habs allerdings nie benutzt/Benutzen müssen, kann also keine erste-Hand-Infos geben^^

  6. #6
    Mal noch ein par Worte zu DirectX vs OpenGL.

    OpenGL hat natürlich den Vorteil, daß du damit plattformunabhängig bist, der Nachteil ist, daß die Standardunterstützung von OpenGL unter Windows ein wenig eingeschränkt ist. Sofern die Nutzer also nicht aktuelle Grafikkartentreiber nutzen kannst du nicht alle Features von OpenGL nutzen. Ob man jetzt als Hobbyentwickler aber unbedingt Shader X.0 braucht ist eh eine Frage für sich.

    Wenn du dich für DirectX entscheidest, triffst du damit eine Entscheidung für Windows und gegen andere Plattformen. Über Wine/Cedega ist vielleicht unter Linux ein wenig möglich, aber OSX fällt damit schonmal so ziemlich raus.

    Gerade wenn du erst einmal nur 2D machen willst, ist die SDL eigentlich die perfekte Wahl. Sie bietet alles was man für ein 2D-Spiel benötigt ist sehr verbreitet und unter einen sehr angenehmen Lizenz zu haben. Ausserdem funktioniert sie problemlos unter sehr vielen Plattformen. Damit hälst du dir für später sicher die meisten Optionen offen.
    Wenn du dann später auch 3D machen willst kannst du direkt OpenGL mit der SDL nutzen oder später immer noch auf DirectX umsteigen. Alternativ würde ich persönlich aber, wenn ich ein 3D-Spiel plane, sowieso eine vorgefertigte Open Source 3D-Engine ala Irrlicht nehmen, die sowohl auf Basis von OpenGL als auch auf Basis von DirectX laufen können.

    Über .NET und Mono kann ich wenig sagen. Als OSX-Nutzer kann ich aber sagen: Wenn du Software für OSX mittels .NET schreibst hast du dafür sorge zu tragen, daß das bei mir läuft. Ich, und damit wohl auch der typische OSX-Nutzer, ist nicht bereit dafür noch speziell extrakram (Mono) zu installieren.

  7. #7
    Danke soweit für die Antworten.

    @tarrox und Milchbox:
    Irgendwie ist SDL komplett an mir vorbeigegangen.
    Hab mir gleich mal SDL.NET geladen und ein wenig damit herumexperimentiert. Einfaches Abspielen von Musik hab ich schon hinbekommen. xD
    Gefällt mir ziemlich gut das Ganze und die Examples haben die Leistungsfähigkeit sehr gut gezeigt. Zum Glück liegt ja der Source bei, muss ich mir mal näher anschauen.

    @Irian und Freierfall:
    Ich stimm euch grundsätzlich zu, je mehr Sprachen man beherrscht, desto besser ist es. Ich würd mich jetzt auch nicht als Programmieranfänger bezeichnen und behaupte mal, dass mir das Lernen einer neuen Sprache jetzt nicht so~ schwer fallen würde.
    Andererseits muss man sich, wenn man eine Sprache richtig gut beherrschen und die Möglichkeiten ausreizen will, sich mit dieser auch intensiv beschäftigen. Und ich hab jetzt nicht soviel Zeit, dass ich mich mit allen möglichen Sprachen gründlich auseinandersetzen kann.
    Und vor Assembler hab ich ein bisschen Angst. xD
    (In der Berufsschule wird ja jetzt im zweiten Jahr bald Java gelehrt und bei C++ geht's endlich mit Objektorientierung los. Mal sehen was da auf mich zukommt.)

    Zitat Zitat von Freierfall
    Mono ist keine wirklich gute Lösung, da es a) rechtlich nicht ganz einwandfrei ist, und b) wohl auch in der Umsetzung noch nicht 100% ausgereift.
    Die Rechtsfrage ist wirklich ein Problem, da hast du recht.

    Zitat Zitat von MagicMagor
    Über .NET und Mono kann ich wenig sagen. Als OSX-Nutzer kann ich aber sagen: Wenn du Software für OSX mittels .NET schreibst hast du dafür sorge zu tragen, daß das bei mir läuft. Ich, und damit wohl auch der typische OSX-Nutzer, ist nicht bereit dafür noch speziell extrakram (Mono) zu installieren.
    Das ist auch ein interessanter Punkt den du ansprichst. Das ist ja auch der größte Nachteil an .NET, imo. Dass man eben das Framework auf dem Client-Rechner komplett installieren muss. Bei Microsoft-Betriebssystemen ist Verbreitung ja relativ groß, denke ich. Zumindest was .NET 1.1 angeht.
    Mit dem Nicht-installieren-wollen von Mono, meinst du damit eine manuelle Installation des Anwenders oder allgemein, dass dir das Framework nicht auf die Platte kommt? Letzteres würde ja dann komplett ausschließen, dass das Spiel bei dir und bei den anderen Anwendern laufen könnte.

    Hat vielleicht jemand schon Erfahrungen mit Mono gemacht und vielleicht sogar mal eine Anwendung unter Linux zum Laufen gebracht? Persönliche Erfahrungen sind ja meist die nützlichsten.

    Bin mir jetzt aber noch nicht sicher, wie ich mich entscheiden werde. SDL macht schon einen sehr guten Eindruck. Allerdings scheint DirectX (zumindest speziell für die Entwicklung unter .NET) besser dokumentiert zu sein. Es gibt ja immer hin ein Buch zu Managed DirectX und C#. Zu SDL.NET hab ich leider nicht so viel gefunden.

  8. #8
    Zitat Zitat von The_Best_Isaac Beitrag anzeigen
    Mir stellt sich zum einen die Frage, für welche Sprache ich mich entscheiden sollte, welche Vorteile hat VB, wofür ist C# geeignet?
    Die ganzen Sprachen die auf .NET basieren, sind so ziemlich alle samt gleich. Die einzigen Unterschiede besteht letztendlich im Code. Das liegt daran, dass die Sprachen alle auf das .NET Framework zurückgreifen. Also: "Alle nehmen aus der gleichen Bibliothek das gleiche Wissen". Deshalb ist keine Sprache, die auf das .NET basiert, besser oder schlechter. Zum Beispiel:

    Mit C# kannst du unter .NET das gleiche machen wie bei VB.net. Java.net das gleiche wie C# oder C++.net. C++.net das gleiche und und und (gibt's ja genug )

    In Sachen Betriebssysteme:

    Es gilt die Regel: Überral wo das .NET installiert ist, dort werden deine Programme auch funktionieren. Du musst nicht den Code für jedes System umändern. Der Code wird nämlich NICHT in die Maschinensprache kompiliert sondern in eine Zwischensprache von Microsoft! Diese Zwischensprache wird bei jedem Ausführen erst in die Maschinensprache übersetzt. Dauert zwar länger, ist dafür Plattformunabhängig und die Kommunikation zwischen zwei Dateien wird auch vereinfacht.

    Letztendlich würde ich sagen:
    Schau dir von jeder Sprache mal das Grundwissen an und entscheide dich nach dem "Optischen" und nach dem, was du schneller verstehst. Am Anfang habe ich mit VB.net begonnen. Doch das ganze "Sub" -> "Sub End" blablabla wurde mir auf Dauer zu dämlich und bin deshalb dankend auf C# umgestiegen, mit dieser ich mehr als zufrieden bin. 8)

    Hoffe, es ist leicht verständlich.

    Mit freundlichen Grüßen
    Raptor

  9. #9
    Du musst auf jedenfall wissen für welche Plattform du nun Programme schreiben willst.
    Linux und Mac Nutzer werden von deinen instabilen und speicherlastigen Anwendungen nicht sehr erfreut sein. (Bisher war noch nie eine Mono Anwendung bei mir stabil und ressourcensparend, was wohl an diversen Bugs und Problemen in der Plattform liegt)
    Neben dem das ich mir nicht sicher wäre ob C# Anwendungen ohne neukompillieren unter Mono laufen.

    Wenn es wirklich Plattform unabhängig sein soll wäre das Java und die JMonkeyengine(3D) oder lwjgl(2D) besser. Da kannst du auch sicher sein das die Anwendung beim gegenüber läuft.(sofern er einen passenden Rechner hat)


    Daher entscheide dich was du möchtest. Willst du Anwendungen für moderne Windowssysteme schreiben, sollten .NET und das XNA Framework eine gute Wahl sein. Soll es ohne großen Auffand auch unter Linux/OSX laufen, wäre SDL.NET bzw. das Tao Framework nicht schlecht. Willst du wirklich schnelle und native Anwendungen schreiben wäre C++ eine gute Wahl. Denn hier gibt es für jeden Problemfall im Spielebereich was. Willst du das Linux/OSX Nutzer deine Anwendung nutzen, sollte C# nicht die erste Wahl sein.

    Hab noch nie ein Spiel unter Mono gespielt, daher kann ich nichts zur Performance sagen. Neben dem das ich auch nur 2 C# Spiele kenne die unter Mono laufen. Gehe aber nicht davon aus das die Performance gut ist.

    Edit: Wie ich gerade sehe ist die in Ubuntu 8.04 enthaltene Version recht alt. Was auch nicht gerade ein gutes Zeichen für eine plattformunabhängige Nutzung ist.

    Geändert von Hisoka (14.07.2008 um 23:53 Uhr)

  10. #10
    Zitat Zitat von Raptor Beitrag anzeigen
    [...]
    Danke, wusste ich aber alles schon. Ich beschäftige mich ja wie schon gesagt etwa ein Jahr mit der .NET-Technoligie. =)

    Aber was die Sprachen angeht. Mich stört an VB nicht die Syntax selbst, sondern vielmehr, dass durch Microsofts Kompatibilitätswahn einige Altlasten übernommen wurden. Finde ich nicht ganz optimal. Da ist C# doch eine erfrischende Alternative. Dass die Programmierung selbst sehr ähnlich ist und der größte Unterschied die Syntax ist, ist mir bekannt. Allerdings wird ja auch C# von Microsoft eher favourisiert und dadurch gibt es in C# oft neue Sprachfeatures vor Visual Basic.

    @ssj5000:
    Endlich mal jemand, der schon mit Mono zu tun hatte und entsprechende Erfahrungen gesammelt hat. =)
    Allerdings hört sich das ganze nicht sehr erfreulich an. Nun, dass .NET im allgemeinen, was die Performance angeht, z.B. C++ nicht schlagen kann, ist ja bekannt. Dass das unter Mono noch schlimmer wird, war wohl fast logisch.
    Nun, ein Umstieg auf Java oder C++ kommt für mich jedenfalls vorerst nicht in Frage. Das würde mich nur zu weit zurückwerfen, denke ich.

    Jedenfalls tendiere ich momentan dazu, plattformunabhängige Ausführbarkeit erstmal auszuschließen. Bei SDL werde ich aber trotzdem bleiben. Das scheint mir der perfekte Einstieg zu sein. Außerdem hab ich mich mit Linux vorher noch nie wirklich beschäftigt. Werde aber trotzdem mal 'ne Distribution demnächst installieren.

    Jedenfalls vielen Dank für eure Antworten und Erfahrungsberichte, ihr habt mir schon sehr geholfen. =)

  11. #11
    OT: Wieso muss man eigentlich die SDL.dll und die anderen dlls noch mitliefern obwohl man ja eigentlich die statischen Bibliotheken einbindet? (libSDL.a/lSDL)

  12. #12
    Zitat Zitat von Drakes Beitrag anzeigen
    OT: Wieso muss man eigentlich die SDL.dll und die anderen dlls noch mitliefern obwohl man ja eigentlich die statischen Bibliotheken einbindet? (libSDL.a/lSDL)
    Weil deine libSDL.a vermutlich keine echte statische Bibiothek ist, sondern nur eine Importbibliothek. Das heißt, dass sie die Funktionen nur soweit definiert, dass sich der Linker nicht beschwert. Tatsächlich ruft sie aber selbst nur die DLL auf.

    freundliche Grüße, Rolus

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •