Beiträge von internetfreak

    Ich weiß auch nicht, was bei dir falsch läuft, da ich das Problem nicht wirklich nachvollziehen kann.
    Normalerweise sollte es funktionieren
    Das falsche Update von DirectX kannst du praktisch auch nicht wirklich haben, ich kenne kein "falsches" Update für DirectX9, nur andere (und ältere Updates) kann es geben.
    Erfüllst du auch wirklich die Systemvoraussetzungen, die XNA brauch?
    Evtl ist deine Grafikkarte nicht gut genug oder so.
    Was wirklich helfen würde, wäre irgendeine Fehlermeldung oder so, gibt es wirklich keinen einzigen Fehler?

    Und bitte achte darauf, keine Doppelposts zu machen, wir sehen den Beitrag von dir auch so, ohne doppelt und dreifaches Posting

    Das verstehe ich jetzt selbst nicht, wieso bei dir das Ding nicht funktioniert, der Anfangscode müsste normalerweise lauffähig sein, es wäre gut, wenn man mal nen Fehler sehen könnte, aber den gibts ja auch nicht.
    Mach mal ein DirectX 9 Update, also lad dir mal das aktuellste DirectX runter, evtl hilfts

    Zitat von thefreakbpx3;228647

    was machst du auf möchtegern, halt deine fresse Dawn, nur weil ich die tutorial eher als du geschrieben hast.
    Alles funktioniert!
    bevor du was postest überleg erst mal


    Und du bleibst mal bitte ruhig aufm Boden stehen und fängst nich gleich an, so zu beleidigen, sonst setzts was

    Hast du den neusten Launcher, ich weiß nicht, wie ältere Versionen des Launchers halt gehen, die nicht die neusten Loginserver haben (gab ja mal Webseitenupdate von denen mit Umzug auf anderen Server vor einigen Wochen)
    Ansonsten schau mal, ob du internet hast oder ob evtl die "hosts" Datei von nem Privatserver geändert wurde, so dass minecraft.net auf ne andere IP verweist, als die OriginalIP

    Wenn du noch keinen Code geschrieben hast, dann ist das klar, dass es ausgeht, da das Ende des Programms erreicht ist.
    Allerdings, normalerweise müsstest du ja ein Template (zB Windows-Game (4.0)) gewählt haben, dann sollte eigentlich Code vorhanden sein, der auch ausführbar ist.
    Ich würde dir sagen, du befolgst einfach mal Tutorial, dann hast du was lauffähiges und auch Wissen, was der Code macht.
    Danach kannst du selber rumprobieren oder noch etwas warten, da ich bald den nächsten Teil schreiben werde

    Und bitte lass die viele Ausrufezeichen, eins am Satzende reicht völlig aus, zuviele sind doof

    @Grafitti
    -7 und -9 können durchaus richtig sein, da das Quadrat einer negativen zahl sowieso immer positiv ist (Der Grund, wieso Parabeln auch immer symmetrisch zur y-achse sind)
    Ich kanns jetzt nich nachvollziehen, da ich nich weiß, welche Gleichung nun richtig is und so zeugs, aber wenn x und y sowieso quadriert werden, kann man auch -7 und -9 benutzen

    Zitat von ichbinniemand;228237

    das man in photoshop als HTML exportieren kann wäre mir neu, oder muss man mit dw die psd importieren?


    f4il

    was jok3r sagt, ist wahr, aber nich zu empfehlen ohne selber hand anzulegen, da ps immernoch tables verwendet für den autogenerierten html code.
    daher dann am besten nur die slices verwenden.

    und die seite stammt sicher nich aus nem editor, dafür sieht sie zu gut gemacht aus, außerdem wäre das bei nem unternehmen n bissl fail, wenn die sich ne seite generieren lassen

    Klassen bringen aber trotzdem mehr als du denkst, so kannst du die ganze Logik des Players, der Gegner sowie der Bomben kapseln und hast weniger Arbeit, die Sachen in den Maincode einzubauen usw.
    Eine Klasse für Player usw ist besser als eine Struktur, allein wegen der Übersicht und so.

    Trotz allem ist ein Aufruf von Dispose die bessere Variante, als auf den GC zu warten, denn der tritt nicht immer in Aktion, dazu müssen schon bestimmte Dinge erfüllt sein, damit der wirklich kommt.
    Und deine Antwort mit Content.Load zeigt mir, dass du:
    1. Nich wirklich Ahnung von Content.Load hast
    2. Meinen Beitrag nicht gelesen hast bzw nicht richtig
    Content.Load lädt einen Inhalt nur einmal und gibt ansonsten immer wieder einen Verweis auf das Ding zurück, das wär ja noch schöner, wenns wirklich jedes mal geladen wird, wenn mans brauch, also so dumm sind die XNA entwickler auch nicht, dass sie nicht etwas auf den Speicherverbrauch achten.
    Aber dennoch sollte man nie immer alles direkt vorladen, man bedenke, dass XBox sowie das WindowsPhone nur begrenzt Speicher haben, da muss man auf alles achten.

    Die Kapselung in Klassen hat einige Vorteile:
    Man kann Methoden definieren, der Code wird sauberer usw, was wird da unübersichtlich, wenn du mal schnell ne Klasse anlegst für ein Spielobjekt usw.
    Und wenn du schon sagst, dass alles initialisiert und abgefragt wird und dies nur "Ressourcen" und "Ram" kostet, dann halte dich bitte von C# sowie VB.net fern.
    Denn da arbeitest du eigentlich soweit nur mit Klassen und Strukturen, das .NET Framework ist eine Klassenbibliothek.

    Fehler macht man, das ist klar.
    Aber es nicht definitiv nicht immer egal, wo man einen Fehler letztendlich behebt, das kann z.T sogar eher zum Nachteil werden, einen Fehler nicht da zu beheben, wo er sich befindet, sondern eher woanders auszugleichen.
    Und ob du nun den Fehler umgehst oder nicht, die Leute können immernoch C&P machen und nicht drüber nachdenken, außerdem soll ein Tutorial Wissen vermitteln und den Leuten zeigen, wie etwas geht und daher eigentlich von vornerein nicht unbedingt so aufgebaut sein, dass man zwangläufig auf nen Fehler trifft, also man soll sie nicht absichtlich einbauen, das ist nicht förderlich.

    Alles schön und gut, dass du dich bemühst, aber es kommt mir keine rechte Freude an so einigem auf.
    Nochmals, wieso nimmst du Strukturen statt Klassen für Objekte, die mit ner Klasse 1000x besser bedient sind.
    Außerdem kannste bei nicht benötigten Sachen gleich Dispose() aufrufen, nur auf den GC zu warten kann teilweise tödlich sein.
    Es mag stimmen, dass man während Update nich unbedingt was laden sollte, da es aufgrund der häufigen Aufruferei blöd wäre, aber es macht meistens auch mal sinn, etwas trotzdem dort nachzuladen, aber dafür zu sorgen, dass es am ende dennoch wieder geladen wird, wenn von XNA die LoadContent Methode aufgerufen wird, damits keine Probleme gibt.
    Achja, deine Kollisionsabfrage ist sehr umständlich und doof, benutz ein Rechteck um die Textur quasi als Bounding-Box und führe damit die Kollisionsabfrage durch, die sieht erstens besser aus und bringt mehr als deine Methode.

    Für mich sehen die Tutorials teilweise aus, wie als hättest du kaum Ahnung, willst aber was machen, die Mängel fliegen einem richtig zu in manchen Fällen.
    Gerade Spieleentwickler müssen Bescheid wissen von diesen Dingen:
    1. Kapselung der Daten in Klassen/Strukturen (wozu ist alles sonst Objektorientiert, wenn man eh alles irgendwie zusammenschmeißt)
    2. Namenskonventionen
    3. Saubere Programmierung (<-- das wichtigste)

    Achja, einige SCreens im Tut würden nie schaden und mehr erklären auch nicht.
    Und wenn Probleme auftauchen, schmeiß sie raus und sag nich, "dazu kommen wir gleich"
    Das is schon bei deiner Steuerungslogik, du sagst, es gäbe ein Problem mit dem vertauschen von den Richtungen und statt es gleich richtig zu machen, drehst du lieber ein Vorzeichen in ner spätern berechnung rum.
    Viel Spaß beim Bugfix, wenn du so weitermachst.

    CSS

    Code
    .element {
    background: url(image.png) repeat-x;
    }

    HTML:

    Code
    <div class="element"></div>

    einfach mal ein bild zum HTML-Code legen und dann im brwoser ansehen.
    Danach kannste das x mal durch y ersetzen und gucken, was passiert

    Hallo Leute,
    Es ist schon etwas überfällig, eigentlich wollte ich schon vor einige Zeit einige Tutorials zum Thema XNA schreiben, wurde allerdings durch viele verschiedene Gründe davon abgehalten, u.a Krankheit, Faulheit usw.
    Aber das hat nun ein Ende, hier ist der erste Teil meiner Tutorialserie, die ursprünglich mal als Videotutorialserie im Konzept war, jetzt aber doch als Texttutorial veröffentlicht wird.
    Genug der langen Rede, fangen wir an.
    Was ist XNA?

    Bei XNA (XNA's Not Acronymed, zu deutsch: XNA ist keine Abkürzung) handelt es sich um ein Spieleframework aus dem Hause Microsoft.
    Mittels XNA lassen sich einfach und unkompliziert Spiele für Windows und XBox360 erstellen, seit Version 4 des Frameworks (erschien am 16. September 2010) wird auch das neue WindowsPhone 7 unterstützt. Spiele für Windows zu entwickeln ist kostenlos, während man bei der XBox360 Mitglied im so genannten XNA Creators Club sein muss. (Mitgliedschaftsgebühren: 49$ für 4 Monate, 99$ für 12 Monate)
    Das Framework übernimmt dabei grundlegende Aufgaben, die ein Spieleentwickler normalerweise erledigen muss, u.a das initialisieren (vorbereiten) des GraphicsDevice (in der Regel die Grafikkarte oder ein anderes Ausgabegerät) und das Aufrufen der Update-/Draw-Methode des Spiels (mehr zu diesen Methoden später).
    Allein das Vorbereiten des GraphicsDevice beansprucht normalerweise schon an die 100 Zeilen Code, wenn man sein Spiel direkt in C++ und DirectX schreibt.
    Was die Wahl der Programmiersprache sowie der Grafikschnittstelle angeht, so wird von Microsoft auf die .NET Sprache C# gesetzt und als Grafikschnittstelle kommt DirectX in Version 9 zum Einsatz.
    Dies macht die Spieleentwicklung auch für Anfänger und Programmierneulinge ziemlich einfach, da C# leicht zu erlernen ist und dennoch Leistung bietet.
    Was wird benötigt, um Spiele mit XNA zu erstellen?

    Um Spiele mit dem XNA Framework unter Windows zu erstellen, werden folgende Dinge benötigt:

    • Mindestens eine DirectX 9.0c fähige Grafikkarte mit mindestens Pixel Shader Model 2.0
    • Visual Studio 2010 oder Visual C# 2010 Express (im Falle der Version 4, die in dieser Tutorialserie verwendet wird)
    • XNA GameStudio 4.0 (Hier erhältlich)
    • Mindestens Windows XP
    • C#-Grundkenntnisse


    Für die Entwicklung von XBox360-Spielen wird zustäzlich noch benötigt:

    • Eine XBox360 mit installierter Festplatte
    • Eie Mitgliedschaft im XNA Creator Club (Preise siehe oben)


    Für die Entwicklung von WindowsPhone 7 Spielen wird zusätzlich noch benötigt:

    • Mindestens eine DirectX 10 fähige Grafikkarte
    • Ein WindowsPhone 7
    • Die WindowsPhone 7 Developer Tools (Hier erhältlich, inklusive XNA Gamestudio 4.0 und deutschem Sprachpaket)
    • Mindestens Windows Vista SP2 (Windows XP wird nicht unterstützt aufgrund DirectX 10)


    Zum spielen von Spielen, die mit dem XNA Framework erstellt wurden, wird das XNA Framework Redistributable benötigt (Hier erhältlich, entfällt, wenn das XNA GameStudio 4.0 installiert ist)
    Damit sollte erstmal alles abgehakt sein, die Installation und Einrichtung ist selbsterklärend, auf die werde ich nicht auch noch eingehen.
    Sobald alles installiert ist, startet Visual Studio 2010 und geht einen Punkt weiter.
    Die ersten Schritte:

    Als erstes geht auf Datei -> Neu -> Projekt.

    In dem nun auftauchenden Dialog geht es links auf XNA Game Studio 4.0 und danach im großen Bereich des Fensters auf Windows-Spiel (4.0). (Bitte beachtet die viele Projektvorlagen nicht, solltet ihr die Expressversion von Visual Studio nutzen, so fehlen die Meisten, ich habe Visual Studio Professional)
    Vergebt nun noch einen Namen für das Projekt, ich benutze in diesem Tutorial den Namen XNATutorial.


    Nach dem Klick auf OK dauert es, je nach Rechengeschwindigkeit eures Computers, einige Sekunden, bis alle erforderlichen Daten angelegt und geladen wurden.
    Danach sollte es in etwa so aussehen:

    Was ihr an Code vor euch findet, ist alles, was ihr benötigt, um theoretisch ein Spiel entstehen zu lassen.
    Drückt nun auf F5 und wartet, bis alles fertig ist.
    Danach sollte so ein Fenster erscheinen:

    Dieses Fenster ist euer Spiel. Wie ihr seht, ist der vorgenerierte Code schon eigenständig lauffähig, im Hintergrund hat XNA bereits das GraphicsDevice initialisiert und ruft nun fleißig die entsprechende Update- und Draw-Methode eures Spiels auf. (Zu den Methoden gleich mehr)
    Schließt das Fenster nun durch einen Klick auf das X rechts oben in der Ecke.
    Bevor wir nun weitergehen, möchte ich erst einmal die Dinge erklären, die euch schon vorliegen.
    Im Codefenster haben wir zuerst alle wichtigen Namespaces, auch die von XNA, sowie 5 Methoden inkl. Kommentar zur Erklärung: Initialize, LoadContent, UnloadContent, Update und Draw.
    Nachfolgend werde ich auf alle Methoden eingehen und ihren Zweck erläutern, auch wenn dies in Kurzform schon durch die Kommentare geschehen ist:

    Initialize - Diese Methode wird nach dem Konstruktor (in meinem Fall "public XNATutorial") aufgerufen.
    In dieser Methode werden normalerweise die einzelnen Objekte und Variablen nach ihrer Initialisierung im Konstruktor (oder hier in Initialize) mit Standardwerten gefüllt, die gebraucht werden.
    Außerdem kann in Initialize alles vorbereitet werden, was in einem der nächsten Schritte gebraucht wird.

    LoadContent - In dieser Methode werden sämtliche Inhalte des Spiels geladen, z.B. Texturen, Sprites, 3D-Models, Musik, Sounds, externe Bibliotheken usw.
    Sie wird einmal bei Spielstart aufgerufen und ist der Platz, um alle Inhalte zu laden, die zu Anfang gebraucht werden.
    Weitere Inhalte lassen sich dennoch auch nachträglich noch laden, empfehlenswert ist es aber, die Inhalte soweit alle hier zu laden, wenn möglich, in Bezug auf Speicherverbrauch und Leistung.
    Diese Methode ist eine kleine Ausnahme, meine obige Aussage, sie wird nur bei Spielstart aufgerufen, stimmt zwar, allerdings geschieht dies auch mal während des Spiels, u.a wenn das GraphicsDevice verloren gegangen ist (z.B. weil zwischendurch eine andere Anwendung im Vollbildmodus lief oder so). In diesem Fall muss der Content neu geladen werden, weshalb diese Methode nochmals aufgerufen wird.
    Auf das Laden von Content gehe ich später nochmals ein.

    UnloadContent - Das Gegenstück zu LoadContent, hier wird sämtlicher Content, der nicht mittels Content-Pipeline geladen wurde, entladen. (Die Content-Pipeline werde ich später erklären)
    Hier müssen also alle geladenen Klassenbibliotheken usw wieder entladen werden, indem man die entsprechenden Objekte freigibt.
    Dieser Schritt ist besonders auf der XBox360 und dem WindowsPhone 7 notwendig, da diese, im Gegensatz zu Windows, keinen GarbageCollector haben bzw. dieser anders funktioniert. (Der GarbageCollector kümmert sich um die Speicherbereinigung und ist euer Freund, wenn es ums Aufräumen von nicht mehr gebrauchten Objekte und Variablen geht).

    Update - Die Update-Methode ist eine der wichtigen Methoden in einem Spiel. In ihr laufen alle Berechnungen ab, z.B. für die aktuelle Position der Spielfigur oder der Objekte in der Welt.
    Sie wird standardmäßig etwa alle 1/60s aufgerufen, was 60 Frames pro Sekunden (FPS) sind.
    Diese Zahl der FPS kann erhöht werden, bringt aber keinen wirklichen Nutzen, da 60 FPS durchaus für flüssiges Spielen reichen.
    Außerdem wird in Update auch der Status der Tastatur bzw des Gamepads abgefragt, um die Spielfigur steuern zu können usw.

    Draw - In der Draw-Methode wird schließlich alles auf den Bildschirm gebracht, dabei stehen viele Hilfsmittel zur Verfügung.
    Euch ist doch noch der Test von vorhin in Erinnerung und der blaue Hintergrund, den ihr da gesehen habt?
    Dies geschieht genau hier in Draw, ausgelöst durch die Funktion "GraphicsDevice.Clear(Color.CornflowerBlue);"
    Diese leert den BackBuffer (dort wird die Grafikausgabe vorbereitet, bevor sie auf dem Bildschirm erscheint) und füllt ihn mit einer Farbe, in diesem Fall CornflowerBlue.
    Übrigens, bevor die Ausgabe auf dem Bildschrim erscheint, könnt ihr sie mittels Shader (kleine Programme, die auf der Grafikkarte laufen und Bilddaten manipulieren können) anders aussehen lassen oder einfärben, drehen, skalieren (vergrößern/verkleinern) usw.
    Bei 2D Grafiken geschieht dies mittels des SpriteBatch, dessen Deklaration auch oben zu finden ist, über dem Konstruktor der Game-Klasse.
    Dort findet sich auch der GraphicsDeviceManager, er verwaltet die Grafikkarte und erlaubt euch, Dinge zu ändern oder abzufragen, u.a die Größe (Auflösung) des Spielfensters, ob es im Vollbildmodus läuft usw.

    Dies war soweit mal der Code, wenden wir uns nun der rechten Seite zu, dem Projektmappen-Explorer.
    Wie ihr seht, enthält die Projektmappe schon zwei Projekte.
    Das eine Projekt ist euer Spiel, das andere Projekt ist das so genannte Content-Projekt.
    In diesem Projekt landet sämtlicher, von der Content-Pipeline unterstützter Content. (Die Funktionsweise der Content Pipeline erkläre ich später)
    Die hier hinzugefügten Dinge landen später zusammen mit eurer Exe des Spiels im Projektordner, von dort aus werden sie dann geladen und genutzt.
    Jedenfalls wird euch das Content-Projekt die ganze Entwicklungszeit über begleiten.

    Dies war das erste Tutorial, eigentlich wollte ich noch etwas mehr reinbringen, allerdings haben wir jetzt schon über 1200 Wörter und somit ziemlich viele Dinge, daher wird es im nächsten Tutorial weitergehen mit den ersten Praxiserfahrungen und dieses Tutorial ist reine Theorie.
    Ich hoffe, das Tutorial gefällt euch, ihr könnt ja den ein oder anderen Kommentar dazu hinterlassen.

    Ebenfalls zu finden auf meinem Blog unter http://www.internetfreak.net und unter http://www.coding-cluster.net

    Wenn ichs richtig verstanden habe, willst du ein Bild praktisch kacheln, allerdings nur in ne bestimmte Richtung oder?
    Das kannste mit repeat-x (dann verläufts entlang der x-Achse) oder repeat-y (selbiges nur mit der y-achse) tun.
    Allerdings gehts bei der x-Achse nur in positiver Richtung und y-Achse in negativer Richtung, also von links nach rechts und von oben nach unten.
    Hoffe, ich konnte dir zumindest etwas helfen.

    Nettes Teil, auch wenn es eher mit Files arbeitet, die durch XACT erstellt wurden.
    Ich persönlich nutze die Möglichkeit, Musik usw über MP3 Files abzuspielen, aber mit XACT kann man einiges anstellen, daher nicht schlecht

    Lange ists her, seit ich das angekündigt habe, ich entschuldige mich jetzt schon für das ewige "hinauszögern" allerdings gabs mehrere gründe für.
    Ich wollte nur kurz bescheid geben, dass das erste Tutorial bald erscheint, bin es schon am schreiben.
    also freut euch schonmal.
    Ich nutze diesen Thread dabei absichtlich für die Infoausgabe, also bitte nicht meckern wegen dem alter usw

    Jok3r
    Er benutzt halt eben die XML-Kommentare^^

    ichbinniemand
    Ich würde dir bei sowas trotzdem auch empfehlen, evtl doch auf Klassen umzusteigen, weils bei nem Spiel einfach sinn macht, die Sachen als Klasse einzubauen, falls du irgendwann mal einige Objekte gleichen Typs hast is das viel besser, wenn du nur pro Objekt eine Methode aufrufen musst statt das Update praktisch so vorzunehmen.
    Außerdem könnte es evtl ein kleines Problem geben, was die Lebenleiste angeht, XNA resized automatisch, zumindest unter verwendung eines Rechtecks.
    Du musst aber ja eig die Lebensleiste stück für Stück ausblenden.
    Daher wäre es gut, wenn du da evtl im nächsten Tut drauf eingehst, denn ich wüsste so jetzt auch keinen Ansatz für, das zu bewerksteilligen.
    Evtl weiß ichs schon, aber es fällt mir zumindest nichts ein atm.

    Erstmal, schon besser, wie das Tutorial im Vergleich zum anderen aussieht.
    Ich werde wohl später auch noch eins veröffentlichen, aber nicht in direkter Konkurrenz zu dir, hatte eig schon lange eins vor.
    Allerdings verstehe ich nicht wirklich, wieso du alles als Struktur implementierst.
    Die ganzen Objekte als Klasse zu nutzen wäre doch eigentlich mehr von Vorteil, da du so Update/Draw-Methoden einbauen kannst und diese am Ende nurnoch aufrufen musst.
    Außerdem wäre ich eher noch etwas mehr auf Grundlagen eingegangen sowie auf ein paar andere Dinge, zB wozu dient jedes Objekt genau, wie dieses GameEnvironment
    In Verbindung mit WAV und SoundEffect könntest du außerdem auf XACT eingehen, das ist bei sowas immer nützlich.
    Es wäre auch von Vorteil, bestimmte Dinge zu erklären, zB was ein Vector ist usw.
    Ansonsten mach mal weiter, ich seh ja, was noch draus wird.

    Gut, dass du ein Tutorial gepostet hast, aber:
    Das ist für mich kein Tutorial, außerdem siehts etwas grausig aus mit all den REchtschreibfehlern usw, es ist etwas schwer zu lesen und so.
    Außerdem solltest du die FOrm etwas überarbeiten und manche deiner Infos sind teilweise etwas falsch, es wird durchaus mehr getan, als du sagst mit den 5 Methoden, im Hintergrund erledigt das XNA Framework genug zeugs, was wir nicht sehen
    Standardmäßig wird man mit XNA nie mehr als 60 FPS bekommen, 1000 Frames sind total unnötig, jede Engine hat irgendwann auch ne Limitierung drinnen, ich hab mit XNA zwar auch schon über 1000 FPS bekommen, aber nur bei einer bestimmten Situation und selbst dann kanns auch evtl ein etwas kleinerer Fehler meines FPS Counters gewesen sein.
    Das mit den 25 FPS, darunter laggts, ist soweit richtig, da das Auge nur 24 Bilder pro Sekunde verarbeiten kann, allerdings sollte die Zahl der Bilder pro Sekunde stets bei ca 40 liegen, erst dann spricht man richtig von lagfrei, 25FPS werden meistens schon als nicht-flüssig deklariert.
    Soviel mal dazu, bitte etwas überarbeiten, glaube, das wäre besser für alle.