Spiele-Programmierung



  • cobra11freak schrieb:

    1>LINK : fatal error LNK1104: Datei "C:\Programme\Microsoft.obj" kann nicht geöffnet werden.

    Da muss wohl irgendein Pfad, der ein Leerzeichen enthält, in Anführungszeichen gesetzt werden.



  • wenn du vista nutzt hast du ggf. das Problem, dass der programme ordner eigentlich "program files" heißt und nur gemapt wird. Das perfide daran ist, dass selbst die Vista-Boardmittel(notepad, explorer) damit nicht klar kommen..



  • Ja mir ist klar das ich ne Win32 Anwendung erstellen muss 🙂
    Ich weiß nur nicht wie ich die lib's Linke mit Visual C++ 2008 ,da ich voher mit Dev-C++ gearbeitet habe.
    Da ging das wenn die .lib im Standard-Libary Verzeichniss ist so:
    Projekt-->Projekt Eigenschaften -->Parermeter -->und bei Linker dann -l und dann den Dateinamen von der Libary.

    Aber danke für die Antworten...

    PS:Bitte sagt mir noch wie ich DirectX erlernen soll. C++ kann ich bereits(Also ich weiß was Arrays, Pointer und Objektorientierte Programmierung ist)
    Aber von "Matritzen" habe ich zB noch nie was gehört...
    (Vieleicht liegt das daran das ich nicht besonders gut in Mathe bin 😞 )

    MfG cobra11freak



  • DocJunioR schrieb:

    wenn du vista nutzt hast du ggf. das Problem, dass der programme ordner eigentlich "program files" heißt und nur gemapt wird. Das perfide daran ist, dass selbst die Vista-Boardmittel(notepad, explorer) damit nicht klar kommen..

    AFAIK heisst der unter Vista "Programs"



  • allgemeiner rat: bevor man einfach anfängt grafik programmierung im trial & error zu erlernen sollte man sich mal die grundlegenden technologien anschauen. das erspart einem extrem viel ärger, da die directx-api definitiv für leute geschrieben ist, die diese technologien beherrschen.

    will man also z.b. 2d programmieren (was sich für den anfang anbietet - 3d ist ungemein komplexer und aufwändiger... man will ja sicher erstmal ein schnelles ergebnis), so sollte man sich erstmal die konzepte multi buffering und page flipping anschauen. wenn man da durchsteigt dann hat man schonmal ne idee wo es langgeht.
    des weiteren empfiehlt sich, für eine reine 2d anwendung NICHT c++ und directX zu verwenden, da diese technologien stark veraltet und äußerst umständlich und aufwändig zu verwenden sind.
    in java z.b. hättest du maximal die hälfte an code zu schreiben (directx fehlerbehandlung = ganzganz schrecklich) und moderne computer sind schnell genug, 2d animationen die eine vm erzeugt flüssig darzustellen. auch python und c# sollen wohl ganz gute bibliotheken für grafik haben.

    hier mal ein paar extrem nützliche links für java:
    http://java.sun.com/docs/books/tutorial/extra/fullscreen/doublebuf.html
    http://java.sun.com/docs/books/tutorial/extra/fullscreen/exclusivemode.html
    http://www.javalobby.org/articles/ultimate-image/ (ein bischen runterscrollen)

    darin hat man alles, was man braucht um direkt mit 2d grafik loszulegen

    2d sollte man beherrschen, bevor man an 3d geht, sonst muss man doppelt lernen und hat viel frust 😉

    ich hoffe, ich konnte ein wenig helfen 🙂



  • He *lol*!

    Du bist ja wie mein Kumpel, der erzählt auch immer wie "Toll" java ist.
    Ich will aber nicht Java lernen sondern mit C++ und DirectX meine Spiele Programmieren und übriegens hatte ich auch nicht vor gleich 3D Spiele zu Programmieren.:)
    Warum: Weil ich C++ bereits kann!

    MfG cobra11freak



  • Mit C++ kann man sehr wohl einfache, performante und auch noch gute kleine Spiele entwickeln. Für die 2D-Grafikprogrammierung rate ich dir unbedingt zu der Grafikbibliothek SFML, die relativ neu ist. Ich habe vor einigen Monaten damit angefangen und habe sehr gute Erfahrungen gemacht. Sie ist wirklich relativ einfach zu handhaben, bietet sehr viele Funktionen und ist auch noch ziemlich schnell. Auf der Seite http://www.sfml-dev.org/ kannst du die Bibliothek downloaden, und dort gibt es auch Tutorials für den Einstieg und ein Forum.



  • Tag nochmal!
    SFML klingt ganz gut für 2D spiele aber ist der Eistieg in DirectX dann einfacher?
    Also ich kann mir das nicht vorstellen!(Aber es kann ja sein)
    Aber es muss doch trotzdem machbar sein DirectX in MSVC++ 2008 einzubinden.
    Es muss doch irgendjemanden geben der das schon mal gemacht hat.
    Und dann wüsste ich immer noch gerne wie ich das erlernen soll.
    Auf jeden fall downloade ich mir mal dieses SFML.

    MfG cobra11freak



  • cobra11freak schrieb:

    Und dann wüsste ich immer noch gerne wie ich das erlernen soll.

    parallel Dokumentation lesen, Artikel über DirectX, ein Buch und nebenbei Testprojekte schreiben. Artikel z.B. auch wie der Weg von 3D zu 2D funktioniert. Dann die ganze Reihe der bekannten Clone nachbauen: Pong, Snake, Tetris, Asteroids. Es kann auch nicht schaden immer wieder die entsprechenden dazu benötigten Techniken genauer durchleuchten (z.B. Wikipedia-Artikel)

    Man lernt durch Wiederholung.



  • cobra11freak schrieb:

    SFML klingt ganz gut für 2D spiele aber ist der Eistieg in DirectX dann einfacher?
    Also ich kann mir das nicht vorstellen!(Aber es kann ja sein)

    Ganz bestimmt. Nur schon, weil du dann besser verstehst, wie überhaupt etwas auf dem Bildschirm gezeichnet wird. DirectX baut allerdings nicht direkt auf SFML auf, du wirst also nicht darum herum kommen, vieles neu zu lernen und dich umzugewöhnen. Trotzdem finde ich es ratsam, am Anfang kleine 2D-Spiele selber zu programmieren. Dann repetierst du auch gleich die Grundlagen von C++ und lernst immer dazu. Aber auch Grundlagen der Grafikprogrammierung sind sicher von Nutzen. Als krönenden Abschluss kannst du ja ein eigenes kleines Jump'n'Run implementieren, dann fühlst du dich auch gleich viel sicherer 😉

    Das Wichtigste ist allerdings, nichts zu überstürzen. Mach die Tutorials aufmerksam durch, erstelle Fenster, zeichne Sprites, lass sie rotieren und verfärben, und lerne immer mehr dazu. Mit grösseren Projekten wirst du auch vermehrt wieder die C++-Standardbibliothek und Grundlagen der Sprache benötigen; du wirst dir auch Überlegungen zum Design und zur Strukturierung der Spiele anstellen müssen, und so wird dein Wissen wiederum erweitert. Alles Dinge, die dir bei DirectX sicherlich helfen werden.

    Auf jeden Fall viel Spass beim Programmieren 🙂



  • Hi cobra11freak,

    also DirectX im Selbstversuch zu lernen halte ich dann doch für extrem schwierig. 😮

    Ich kann Dir mal folgendes Buch von André Lamothe empfehlen:

    http://www.amazon.de/Game-Programming-Dummies-Andre-LaMothe/dp/3826630734/ref=sr_1_5?ie=UTF8&s=books&qid=1215200993&sr=8-5

    Dort wird alles beschrieben was man für ein 2D-Game benötigt.

    Viel Spaß

    HeckyDA



  • Ich habe mal diese SFML Tutorials angeschaut. Macht einen interessanten Eindruck. Hat jemand damit ein komplexes 2D-Spiel gebaut? Links zu Bildern?



  • Beim offiziellen SFML-Forum gibt es einen Bereich für Projekte:
    http://www.sfml-dev.org/forum/viewforum.php?f=10&sid=b9102e8bbfcbe58fc79311a4f312a7c8



  • Danke für alle Antworten!

    Ich müsste aber trotzdem wissen wie ich DirectX in MSVC++ 2008 einbinde, da ich damit sonst gar nichts machen kann :).

    Ist doch irgenwie Logisch... 😉

    (SFML bekomme ich schon hin)



  • cobra11freak schrieb:

    Aber von "Matritzen" habe ich zB noch nie was gehört...
    (Vieleicht liegt das daran das ich nicht besonders gut in Mathe bin 😞 )

    Dann fang erst mal damit an, dass du in mathe gut wirsd. Ohne ausreichende Mathematikkentnisse wirsd du nie auch nur ansatzweise Spiele programmieren können. Egal ob 2D oder 3D, Mathe ist überall NOTWENDIG.



  • Learning by doing... lasst ihn doch.


  • Mod

    ceplusplus@loggedoff schrieb:

    Learning by doing... lasst ihn doch.

    bin auch der meinung. jeder soll es probieren, irgendwann wird man beim programmieren doch bei mathe landen und weil es keine trockene theorie ist, merkt man es vielleicht garnicht und hat spass 🙂



  • So ich habe mir jezt dieses SFML runtergeladen...
    Ich habe es wieder in Visual C++ 2008 eingebunden, das klappt aber nicht...
    (Natürlich habe ich die Libary's eingebunden und die Include Verzeichnisse von SFML)
    Mein einfacher Quelltext:

    #include "stdafx.h"
    #include "SFML.h"
    #include <SFML/Window.hpp>
    
    int main()
    {
    
        sf::Window App(sf::VideoMode(800, 600, 32), "SFML Window");
    
        bool Running = true;
        while (Running)
        {
            App.Display();
        }
    
        return EXIT_SUCCESS;
    }
    

    Das Erbgebnis:

    1>------ Erstellen gestartet: Projekt: SFML, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>SFML.cpp
    1>Ressourcen werden kompiliert...
    1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
    1>Copyright (C) Microsoft Corporation.  All rights reserved.
    1>Manifest in Ressourcen wird kompiliert...
    1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
    1>Copyright (C) Microsoft Corporation.  All rights reserved.
    1>Verknüpfen...
    1>SFML.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: virtual __thiscall sf::Window::~Window(void)" (??1Window@sf@@UAE@XZ)" in Funktion "_main".
    1>SFML.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall sf::Window::Display(void)" (?Display@Window@sf@@QAEXXZ)" in Funktion "_main".
    1>SFML.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall sf::Window::Window(class sf::VideoMode,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned long,struct sf::WindowSettings const &)" (??0Window@sf@@QAE@VVideoMode@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KABUWindowSettings@1@@Z)" in Funktion "_main".
    1>SFML.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (??0VideoMode@sf@@QAE@III@Z)" in Funktion "_main".
    1>MSVCRTD.lib(crtexew.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup".
    1>C:\Dokumente und Einstellungen\Vincent-Silver\Eigene Dateien\Visual Studio 2008\Projects\SFML\Debug\SFML.exe : fatal error LNK1120: 5 nicht aufgelöste externe Verweise.
    1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Vincent-Silver\Eigene Dateien\Visual Studio 2008\Projects\SFML\SFML\Debug\BuildLog.htm" gespeichert.
    1>SFML - 6 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Bitte helft mir mal, ich scheck das nicht mit Visual C++ 2008 😃



  • omg, das forum :o

    gibt's bei dir auch eine

    WinMain()
    

    ? 🙂



  • Bist du dir sicher, dass du die richtigen Bibliotheken eingebunden hast?
    Eventuell musst du SFML auf deinem Compiler neu kompilieren. Öffne dazu die Projektmappe SFML.sln im Installationsverzeichnis und erstelle sie neu mit der gewünschten Konfiguration.

    In deinem eigenen Projekt müssen die eingebundenen Bibliotheken dem Linker bekannt gemacht werden: Im Debug-Modus muss bei Projekt -> Projekt-Eigenschaften -> Konfigurationseigenschafen -> Linker -> Eingabe Folgendes in dieser Reihenfolge stehen:

    sfml-window-s-d.lib sfml-system-s-d.lib sfml-graphics-s-d.lib
    

    (wobei du das letzte evtl. noch nicht brauchst, aber sicher später)

    Im Release-Modus wäre das so:

    sfml-graphics-s.lib sfml-window-s.lib sfml-system-s.lib
    

    Das gilt, wenn du SFML statisch rekompiliert hast. Ansonsten entfällt jeweils das "-s".

    Das mit WinMain() ist bei SFML eigentlich nicht nötig, ich könnte mir vorstellen, dass die Fehlermeldung aus den anderen Linkerfehlern resultiert.


Anmelden zum Antworten