erstes Spiel "fertig", Probleme auf anderen Computern



  • Hallo,
    Ich hab mein erstes wirkliches Spiel mit Grafik fertig gestellt und bei mir läuft alles wunderbar, nur auf anderen Computern gibt es teilweise Probleme.
    Ich hab das Spiel mit OpenGL in verbindung mit SDL Programmiert.
    Nun werden auf manchen Rechnen bestimmte Texturen nicht angezeigt. Ich vermute es liegt an der größe dieser, die eine ist 1024x768(hintergrundbild ;)) und die andere 64x320 nun scheint es so als ob Nvidia Karten damit kein Problem haben ATI Karten aber schon. Ist das möglich ? Also gibt es da einen unterschied ?
    Und gibt es eine möglichkeit das Problem zu umgehen ohne die größe der Texturen zu ändern ?
    Gibt es darüber hinaus eventl. noch andere Sachen die man bei OpenGL in sachen Kompatibilität und so Beachten muss, und die ich als Änfänger warschl. vergessen hab ?

    Mein Spiel: www.nicokaufmann.de/bc.zip



  • Es ist generell eine schlechte idee Texturen zu verwenden, die nicht quadratisch sind... Einige Grakas können das, andere halt eben nicht.



  • Quadratisch müssen sie heutzutage eigentlich nicht mehr sein.
    Aber nach Möglichkeit sollte man für Breite und Höhe nur Zweierpotenzen verwenden (also 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096).



  • Hmm ok das mit den Texturen müsste dann daran liegen, ich hatte das zwar mal gelesen aber über die Zeit wieder vergessen und dachte solange bei MIR alles angezeigt wird ist das schon in Ordnung 😉
    Nungut, aber wie man ich das jetzt mit meinem Hintergrund Bild ?
    Ist doch extrem doof das 1024x768 nicht geht, ich will ja auch ne vernünftige Qualität haben, soll ich das auf 1024x512 + 1024x256 splitten ?

    Ich hab noch ne andere Frage, bei manchen stürzt das Spiel schon im Menü ab, ich teste jetzt mal obs daran liegt das das ich im Menü keine Framebremse habe, aber an was kann sowas noch liegen ?



  • Ohne weitere Informationen kann Dir da wohl niemand helfen.
    Was bedeutet "stürzt ab"? Verwendest Du assertions? Hast Du irgendeine Art von Fehler-Logging eingebaut?



  • Nein hab ich nicht. Generell ist mein Code nicht so der Hammer hier mal ein beispiel:

    class Game
    {
    public:
    void TextAusgabe(char *text,int x,int y, int red, int green, int blue);
    void DisplayMap();
    void Render();
    void RenderHud();
    void RenderHudOverlay();
    void RenderPlayer();
    void RenderCorps();
    void DisplayMouse();
    void RenderMenue();
    
    void Init2D(int flags);
    void LoadMap(char dateiname[30]);
    void LoadItems();
    void Init();
    void InitGame();
    void Destroy();
    void InitMap();
    void ClearMap();
    void LoadLevel(char dateiname[30]);
    
    void GameLoop();
    void MenueLoop();
    
    void Spielgeschehen();
    void DeathCheck();
    void Spawn();
    
    void CreateItem(int x, int y,int type, int ammo, int weapon);
    void ItemControl();
    
    void Timer();
    
    void LoadWeapons();
    void PlayerWeapons();
    void shoot();
    void bullet();
    void DrawBullets();
    void reload();
    void grenades();
    void grenades_throw();
    void explode(float x,float y,int radius);
    
    void CreateEnemy(int x,int y);
    void CreateEnemy();
    void KiManager();
    void KiRender();
    void KiModeMove(int enemy, int direction);
    void KiModeAvoid(int enemy);
    bool KiInRange(int enemy);
    bool KiFreeShoot(int enemy);
    void KiShoot(gegner *enemy);
    
    int CreateAnimation(int x,int y,TextureImage* pTexture,int frames,int width,float ms, int repeat);
    void DeleteAnimation(int id);
    void Animation();
    bool LoadTGA(TextureImage *texture, char *filename);
    
    void PlayerMovement(int winkel);
    bool TileCollision(float x, float y,float z);
    void BulletCollision();
    int SizeMap(char dateiname[30]);
    float GetWinkel(float x, float y);
    float GetWinkel(float x, float y,float x2,float y2);
    int abs(int number);
    void RefreshScreen();
    
    koordinaten Movement(float x,float y,int winkel, int speed);
    
    //variablen
    SDL_Surface *screen;
    TextureImage schrift,
    			tiles,
    			spieler,
    			hud,
    			hud_balken_blue,
    			hud_balken_red,
    			hud_waffen,
    			hud_muni,
    			hud_munianzeige,
    			nade,
    			anim,
    			enemy,
    			blood,
    			corpses,
    			muni,
    			item_health,
    			item_ammo,
    			bbeenden,
    			bstart,
    			bfullscreen,
    			btext,
    			crosshair,
    			bier,
    			glow,
    			law,
    			hintergrund1,
    			hintergrund2,
    			spawnanim;
    
    float playerx,playery;
    int playerhealth;
    
    int groesse;
    int anim_id;
    float tileRows;
    int camposx,camposy,camposx32,camposy32;
    float winkel;
    int actualweapon;
    float wurf;
    char temp[25];
    int actualki;
    char status[256];
    int WPANZAHL;
    int kills;
    int nextitem;
    int max_enemys;
    int numberofenemys;
    int *prun;
    int gamestate;
    int gamemode;
    int spezialitem;
    int itemx,itemy;
    int gametime;
    float diffi;
    
    bool showframes,fullscreen;
    bool dead,won;
    Uint32 endtime;
    
    int debug;
    
    vector<int> Map;
    vector<int> CollisionMap;
    vector<kugel> ActualBullets;
    vector<corps> Bodies;
    vector<int> WeaponData;
    vector<weapon> Weapons; //Für spieler
    vector<item> Items;
    vector<int> Ammo;
    vector<granate> Nades;
    vector<animationdata> animations;
    vector<gegner> Enemys;
    vector<s_timer> v_Timer;
    
    vector<ListBox*> Listen;
    vector<DsplButton> Buttons;
    vector<CheckBox*> Boxen;
    vector<TextBox*> TextBoxen;
    
    Uint32 currentframe,lastframe,frametime,lastshoot,nextfps;
    int fps;
    
    };
    

    Nachdem ich das jetzt fertig hab werd ich auch erstmal versuchen nen bissel Ordnung in meine Programmierung zu bringen und mir das mit dem Klassendesign nochmal anschauen 😃 😉 😃 😉

    Ich weiß auch nicht was stürzt einfach ab bedeuten sollte 😃
    Ich dachte mehr so an allgemeine Sachen die man bei OpenGL beachten muss.
    Aber die scheint es nicht zu geben ?
    Naja es wird wohl an der fehlenden Framebremse im Menü gelegen haben ... hab ich jetzt gefixt und es scheint nun zu funzen ... Die Texturen hab ich auch angepasst.

    So ihr dürft mich jetzt gerne noch für das da oben auslachen oder mein spiel testen und mir sagen wie scheiße es ist oder eben das es ganz ok ist ... 🙂



  • TomasRiker schrieb:

    Quadratisch müssen sie heutzutage eigentlich nicht mehr sein.
    Aber nach Möglichkeit sollte man für Breite und Höhe nur Zweierpotenzen verwenden (also 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096).

    2048+ kann schon fuer einige Grafikkarten zu gross sein, vor allem bei Laptops. OpenGL garantiert eine Mindestgroesse von 64..

    Quadratisch muessen sie nicht sein, wenn man die GL_EXT_texture_rectangle - Erweiterung anschaltet, hat inzwischen wohl jede Karte (dann geht aber Mipmapping nicht mehr).



  • Mortal2006 schrieb:

    So ihr dürft mich jetzt gerne noch für das da oben auslachen oder mein spiel testen und mir sagen wie scheiße es ist oder eben das es ganz ok ist ... 🙂

    Ich hab das Spiel mar gespielt, und ich muss sagen: Von der Programmierung super! Da muss man schon einiges an Vorwissen haben, für Schüsse und so (cos,sin,und so). Ist das wirklick dein erstes Spiel? Wenn ja, dann bist du echt gut.
    Allerdings macht das Spiel noch keinen Spaß und ist schwer zu durchschauen. Aber ich glaube das ließe sich beheben wenn du das menü überarbeitest und die Geschwindigkeit hochsetzt. Oder ist das nur auf meinen PC so langsam? Also man muss mindestens schneller gehen. Das seitwerts driften ist Überkopf etwas schwierig und die Schüsse sind manchmal nicht vom hintergrund zu unterscheiden. Wenn du das behoben hast, dann ist es glaub ich lustiger.

    mfg.



  • Naja ist mein erstes Spiel mit richtiger Grafik, hatte davor einmal nen Schiffeversenken und das hier gemacht www.nicokaufmann.de/spiel.zip ...
    Das mit dem Cosinus und Sinus hatte mir einer hier ausm Forum gesagt, hatte mir da irgend ne asi lösung überlegt gehabt 😉

    Das mit dem Spass ist mir während der Programmierung auch aufgefallen, aber ich dachte ich hätte es einigermaßen spielbar hinbekommen ... wenn ich nochmal lust habe überarbeite ich das gameplay vieleicht nochmal und änder die perspektive etwas damit das strafen einfacher ist.

    Danke fürs antesten 🙂



  • Mortal2006 schrieb:

    Ich weiß auch nicht was stürzt einfach ab bedeuten sollte 😃
    Ich dachte mehr so an allgemeine Sachen die man bei OpenGL beachten muss.
    Aber die scheint es nicht zu geben ?

    Es gibt so'n Werk "OpenGL Pitfalls" die die meisten (Nicht-nur-)Anfänger-Fehler beleuchten, aber ob das Dir jetzt was bringt bezweifel ich noch... 😉

    Mortal2006 schrieb:

    Naja es wird wohl an der fehlenden Framebremse im Menü gelegen haben ... hab ich jetzt gefixt und es scheint nun zu funzen ...

    Sorry, aber wenn es an der lag, hast Du wohl eher scheiße gebaut.
    Warum sollte das Spiel abstürzen, nur weil man die Frames schneller durchrendert?!? 😕

    Mortal2006 schrieb:

    Die Texturen hab ich auch angepasst.

    Das macht mehr Sinn.
    Wenn Du eine non-power-of-two texture auf einem System lädst, ohne die Unterstützung abzufragen, könnte das wohl sein mit dem Absturz.

    Generell kannst Du auch 2 1024x1024 Texturen aneinander pappen, und nur links oben die 1024x768 benutzen. Dann mußt Du die natürlich skalieren, daß sie genau den Bildschirm ausfüllen.
    Aber wenn dann mal einer auf 1280x800 spielen will... 😉


Anmelden zum Antworten