C# XNA für Spiele mit Zukunft

Physically

Lt. Commander
Registriert
Nov. 2010
Beiträge
1.708
Hallo,

ich beschäftige mich seit ein paar Wochen mit C#, da mich die Sprache einfach interessiert und ich einen Anfang gesucht habe, ich muss sagen, ich bereue es keineswegs!

Nun wollte ich mal schauen, ob man mit C# auch 2D Spiele programmieren kann, und bin somit auf XNA gestoßen, eine "Technologie zur Spieleentwicklung für Microsoft Windows" (Quelle: Wikipedia). Habe mich natürlich noch etwas reingelesen pipapo.

Leider sind mir noch einige Lücken offen geblieben, sodass ich mich dem Forum hier widme und hoffe hilfreiche Antworten zu bekommen.

1. Angenommen es wurde ein Spiel mit C# unter XNA programmiert und es ist "fertig". Was benötigt der Spieler, der z.B. das Spiel von mir bekommt? Klar, Visual Studio bestimmt nicht, aber er braucht doch bestimmt die XNA Engine oder?

2. Ich unterstelle Euch jetzt mal, ihr interessiert Euch für 2D-Games im Stil von Pokemon, und findet eine Website, die das Spiel zum Download anbietet. Das Spiel wurde in C# mit XNA programmiert, das steht unter den Voraussetzungen. Hättet ihr die "Motivation", extra zusätzlich die "Engine" (bzw. das, was benötigt wird) zu installieren, sodass ihr das Spiel problemlos spielen könnt?

3. Haben Spiele, welche mit C# unter XNA programmiert worden sind überhaupt Zukunft, und sind "seriös" bzw. kommen diese überhaupt an (abgesehen wie das Spiel ist etc.) und werden nicht instiktiv oder grundlos abgeschrieben?

Eventuell denkt ihr Euch, was für Fragen das sind, für mich persönlich sind die Antworten wichtig, und ich hoffe es kommen auch produktive Antworten.

ACHJA: Nein, ich bin nicht 15 Jahre alt, habe den Traum vom Spieleentwickler um mich damit finanzieren zu können ;-). REINE Interesse :).

Wer mir meine "persönlichen Fragen" beantworten möchte, nur zu, ich freue mich! Und wer nicht, bzw. der es absolut nicht versteht, warum ich so Fragen stelle, soll ich sich bitte nicht schriftlich in diesem Thread äußern.


Danke und schönen Abend!

Physically
 
1. Ja, die Person braucht das "XNA Framework Redistributable".

2. Ja, das habe ich selbst schon gemacht aus 2 Gründen: erstens wegen Magicka und zweitens, da ich selbst schon einiges darin programmiert habe ;)

3. Ja, haben sie, es gibt auch einige (z.B. Magicka, Terraria).
 
zu 2.) Man kann von einem Nutzer nicht erwarten, dass er selbststaendig die entsprechende Library herunterlaedt und installiert. Jedoch kannst du es in den Installer integrieren, so dass der Nutzer davon gar nichts mitbekommt.
Ergänzung ()

Und zu 3.) Der Nutzer sollte von der verwendeten Sprache nichts mitbekommen. Zudem ist die Sprache und ob das Programm serioes ist oder nicht zwei unabhaengige Sachen. XNA sollte dich jedenfalls nicht hindern ein serioeses Programm zu entwickeln. Lediglich die Performance koennte etwas schlechter sein als vergleichbare C++ Programme.
 
Wenn es um etwas derart Simples wie ein 2D Pokémon geht, würde ich darüber nachdenken XNA gar nicht erst zu benutzen. Grundsätzlich sind Frameworks ja toll, aber wenn es ohne geht, arbeitet man auch schlanker. Einen game loop, ein bisschen Eingabeverarbeitung usw., das bekommt man auch schnell alleine hin. Damit schafft man sich auch gute Grundlagen, um sich beim nächsten Anlauf in XNA einzuarbeiten.
 
@locomarco: Ok, danke Dir!
@Bagbag: Super, dieses Magicka scheint ja echt schön zu sein.
@Turas: Das ist sehr praktisch, gut zu wissen :).
 
Zu 3.
Ist nicht XNA die einzige Möglichkeit für unabhängig Entwickler für die Xbox Spiele zu entwickeln? Solange man kein lizensiertes Entwicklerstudio für die Xbox ist, und somit ein Xbox SDK hat, ist man doch komplett auf XNA angewiesen.
 
zu 2.:

Spätestens wenn es in Richtung Installation / Distribution geht, solltest du dich in eins der zahlreichen Installationssysteme einarbeiten. Das hat aber Zeit, bis das Produkt so weit ist.

Was das XNA-Framework angeht: In der Regel reicht es aus, die benötigten Bibliotheken einfach mit zu paketieren, solange es sich nicht gerade um das .Net-Grundframework handelt. Wichtig ist, alle impliziten Referenzen zu erwischen. (Was das ist lernst du automatisch, wenn du dich mit der Paketierung von .Net-Software auseinander setzt ;-) )


Und dann gibt es ja noch Android und Linux...


WAT!? Android und Linux mit XNA? Jup!

Solltest du je auf die Idee kommen, dein Spiel nach Linux, Android oder sonstwohin portieren zu wollen - es gibt eine weit fortgeschrittene Open-Source-Implementierung des XNA-Frameworks in Mono: http://monogame.codeplex.com/

Das schöne: Du kannst erstmal im normalen XNA loslegen und später relativ problemlos migrieren, weil identische API. Einziges Manko: MonoGame kann immo soweit ich weiß abseits Windows nur 2D, aber 3D ist in Arbeit.
 
Ok gut zu wissen. Das Manko ist für mich eigentlich eher irrelevant, da ich in ferner Zukunft 2D Spiele in Aussicht habe :) Danke für die netten Infos.
 
3. Haben Spiele, welche mit C# unter XNA programmiert worden sind überhaupt Zukunft, und sind "seriös" bzw. kommen diese überhaupt an (abgesehen wie das Spiel ist etc.) und werden nicht instiktiv oder grundlos abgeschrieben?
Die wenigsten Menschen wissen überhaupt, was XNA eigentlich ist. Man kann davon ausgehen, dass mindestens 95% der Spieler kein technisches Hintergrundwissen über derlei Dinge hat.
Aus diesem Grund ist es eher wichtig, dass die Installation schön stromlinienförmig ist. Der User sollte nicht gezwungen werden, sich XNA selbstständig zu besorgen: Es sollte schon dabei sein (die angesprochene Redistributable) und sich automatisch installieren.

Je weniger automatisch geht, desto eher wenden sich die Spieler ab ("Scheiß Programm"). Die verwendete Technologie ist dabei eher egal.
 
Ok, da haste wohl recht.

Noch eine Frage zur allgemeinen Sicherheit von XNA:

Hat XNA eine eher "schlechte" Sicherheit im Gegensatz zu anderen Sprachen wie C,C++?
Also z.B. Sourcecode, den man sich dann als normaler Spieler einfach anschauen kann durch irgendwelche "Tools", oder falls es ein onlinebasierendes Spiel, sich irgendwie "reinhacken" und sich somit durchs Spiel mogeln kann, bzw. die Datenbank ansehnlich machen.

Gruß
 
Hallo ich kann dir nur als alternaive für c# OpenTK ans herz legen das ist ein Nativer OpenGL Wrapper für c# (wenns c# sein soll)

http://www.opentk.com


das ganze Framework ist exzellent ich hab ein projekt mit 15000 zeilen geschrieben damit und es steht der nativen OpenGL Programmierung in nix nach (außerdem ist die Syntax 1:1 übersetzt)

im XNA Framework hast du natürlich verschiedene Sachen schon implementiert die das leben erleichtern... opentk ist mehr so low Level auf high Level ebene

lg

m2k
 
Aha ok, na das macht das ja nochmal interessanter. Jetzt ist die Frage was ist stabiler und praktischer zu Coden. Du meintest in XNA sind schon viele Sachen implementiert, erleichtert natürlich auch schon die Schreibarbeit.
 
hmmm ja ich würd sagen dass ist reine geschmackssache ich persönlich habe am anfang mit managed DirectX angefangen (der Vorgänger von XNA) und bin dann umgestiegen auf opentk :) außerdem liebe ich OpenGL shader Programmierung GLSL .. man braucht halt ne zeit um sich damit auszukennen .. ein weiterer Vorteil ist das man sich automatisch mit den nativen OpenGL auskennt d.h. wenn du opentk "kannst" kannst du später auch direkt in c oder c++ ohne wrapper schreiben :)

stabil ist beides... allerdings mehr Featurerich und mehr supported und wo man weiß dass es nochfolger geben wird und dass das Framework ständig gewartet wird ist natürlich XNA ...
ich würde allerdings behaupten dass das bei einem 2d game ganz egal ist


lg

m2k
 
Zuletzt bearbeitet: (x)
Mal ne Frage, wollte MS XNA jetzt nicht bald fallen lassen? Meine das irgendwo gelesen zu haben...
 
Nicht, dass ich wüsste. XNA ist mehr oder weniger immer noch die erste Wahl, wenn man grafisch aufwändigere Spiele für Windows Phone und XBox programmieren will. Das wird wohl auch noch ein Weilchen so bleiben, da es keine Alternative gibt.

Unklar ist aber, was mit Silverlight (wird scheinbar ersatzlos eingestampft, weil es sich nicht durchgesetzt hat) und dem .Net-Framework (wird durch die neue WinRT API ersetzt?) in Zukunft passieren wird.
 
Was den PC angeht ist die Zukunft von XNA in der Tat ungewiss, viel erwarten würde ich da nicht mehr. XNA 4 ist jetzt ja auch schon wieder 2 Jahre alt und brachte damals im Wesentlichen nur Neuerungen für Windows Phone. Dass XNA die gemeinsame Schnittstelle für Spiele bei Win8 Metro Apps / WP8 Apps wird, hat sich nur im Gegenteil bestätigt. Es wird nicht nur nicht mehr benötigt, sondern ist im Falle von Modern UI auch gar nicht mehr möglich.

Das heißt aber nicht, dass man XNA nicht mehr einsetzen sollte. Falls alle Stricke reißen gibt es Dinge wie MonoGame oder ANX, welche Sourcecode-Kompatibel zu XNA sind und das Ziel haben, auch andere Plattformen anzusprechen. Aber auch ohne MonoGame oder ANX gibt es keinen Grund, warum XNA stand-alone nicht auch in 10 Jahren noch laufen sollte, merkliche Bugs hatte es ohnehin nie. Es ist ausgereift und gut wie es ist. Leichtgewichtig und exzellent für "Rapid Prototyping", aber auch ernstere Sachen.

SharpDX, SlimDX, OpenTK und wie sie alle heißen sind übrigens eine ganz andere Baustelle aufgrund des dünnen Abstraktionsgrades. Ob der TS so low-level einsteigen möchte, muss er selbst wissen.
 
Zuletzt bearbeitet:
Na ich sag mal so: Solange XNA sicher ist, und damit "alles" was man möchte realisieren kann (2D-mäßig), und man damit auch größere Projekte in Angriff nehme kann (mit "groß" meine ich schon ein paar tausend Zeilen Code), ist es denke ich optimal. Ist halt doof, wenn man sich da reinarbeitet, und dann eine komplette neue "Sprache" (also ein XNA Konkurrent) entwickelt wird für C#, aber die Syntax eine "andere" ist.
 
Naja, wenns danach geht kann man jede Programmiersprache skeptisch betrachten, weil man ja nie weiß ob es in 1-2 Jahren nicht etwas völlig neues, performanteres oder dergleichen gibt, was die grad gelernte Sprache verdrängt.

Davon abgesehn, würd ich einfach mal loslegen. XNA ist als Einstieg ok.
Ob du Erfolg haben wirst liegt letztendlich nicht an der Programmiersprache.
Siehe Minecraft ^^
 
Zurück
Oben