Anfängerprobleme
-
philipptr schrieb:
vielen dank funktioniert jetzt
kann ich das jetzt irgendwie schafen das die bilder mit compiliert werden und in der exe sind?
Unter Windows: Als Ressourcen.
Ansonsten: Als Header.
-
Sgt. Nukem schrieb:
...
Unter Windows: Als Ressourcen.
Ansonsten: Als Header.Also ich nehm mal an das ressourcen nihct unter linux funktionieren. wollte aber eigenltlich obwohl ich linux (noch) nicht benutze das spiel möglichst kompatibel halten so das ich nur möglichst wenig code ändern muss ums auf Linux zu kompilieren.. was meinst du mit "Als Header."? und würde das dann auch unter win laufen?
ausserdem hab ich noch ein problem beim laden meines levels: ich benutz
typedef string level[20]; level level1; string filename; int levelnr=1; ... string levelfile; switch (levelnr) { case1: levelfile = "level1.txt"; break; } ifstream readfile (levelfile.c_str()); for (unsigned int i=0;i<20;i++) { readfile>>level1[i]; } readfile.close();
aber level1 bleibt leer
-
Das erste was mir auffällt ist ein typedef auf arrays -> BÖSE
(nur mal so nebenbei)...
-
Vor allem gibts std::string.
Bye, TGGC \-/
-
zu dem bild als header einbinden...da geht man hin und schreibt sich n kleines tool, vielleicht gibts das auch irgendwo...sicherlich eigentlich...das dann die pixel des bildes einzeln ausliest und ne "bild.h" datei bastelt die dann irgendwie so aussehen könnte
Uint8 bild[3][3][3] = { { 255,0,0 }, { 255,0,0 }, { 255,0,0 } }, { { 255,255,0 }, { 255,255,0 }, { 255,255,0 } }, { { 0,255,0 }, { 0,255,0 }, { 0,255,0 } }
wär zum beispiel die jamaica flagge rot-gelb-grün
aber verstehst du was ich meine...die pixelinfos die eigentlich in der datei stehen werden irgendwie in eine datei gepckt die man mit dem code kompilieren und dann intern weiterverarbeiten kann.
problem bei meiner methode ist allerdings warscheinlich etwas die performance, da die bilder im arbeitsspeicher verweilen und wenn sie noch im spiel selbst geladen sind doppelt existieren...da gibt es noch einiges zu optimieren...eine idee wäre vielleicht sie direkt als pixelliste wie sie SDL speichert da rein zu packen...aber da bin ich dann an meinen grenzen.
Für kleinere projekte kann man das aber sicherlich verwenden.Ich hab auch schon irgendwo (http://www.robsite.de/daten/programme/ezip.zip) ein programm gesehen, da packst du den ganzen spiel ordner in eine zipdatei und das programm bastelt dann ein selbstextrahierendes archiv draus, das sich temporär entpackt, die exe startet und danach wieder die dateien löscht...benutzt hab ich das allerdings noch nicht...aber hört sich interessant an
und ist warscheinlich einfacher+besser als meine gammelheader methodecya kolf
-
das mit dem level laden funktioniert (mit stings) jetzt, der ignoriert zwar erste zeile und spalte aber damit kann ich leben
hab immoment noch ein bisschen probleme 1. mit sdl threads (ja ich weis die sind eigentlich pups einfach aber ich bin halt ein noob) und 2. läuft es jetzt wo bewegeung ins spiel kommt recht langsam aber ich glaub da gibt es noch andere threads die sich dem thema geschwindigkeits optimierung annehmen
daher werd ich mich erst wieder melden wenn ich entweder mit den threads gar nicht mehr weiterkomm oder neue probleme auftauchen
btw: bei der methode mit den Bildern in ner header datei.. dann würde das bilder benutzen doch schneller laufen oder ich mein die sind ja schon geladen.. (mach mir bei schätzungsweise max 10fps auf 2.8ghz echt sorgen
)
-
philipptr schrieb:
btw: bei der methode mit den Bildern in ner header datei.. dann würde das bilder benutzen doch schneller laufen oder ich mein die sind ja schon geladen.. (mach mir bei schätzungsweise max 10fps auf 2.8ghz echt sorgen
)
Das solltest Du anders lösen...
Wenn Du nachher mehrere Level hast, würdest Du ja sämtliche Bilder immer im Speicher halten... (Quake 3 hatte 500 MB Ressourcen
)
Und an den FPS wird das auch nix ändern. Du lädst die Bilder ja eh nur einmal am Anfang sonst...
-
also die fps hab ich in den griff bekommen hatte ein paar sehr blöde fehler gemacht... was jetzt mein problem ist: ich woltle das tileset des spieles in eine datei machen und hab das dann wie folgt versucht:
SDL_Surface *tileset; SDL_Rect SourcRect = {0,0,16,16};; tileset = SDL_LoadBMP("tileset.bmp"); sprites[0]=SDL_CreateRGBSurface(SDL_HWSURFACE, 16, 16, 16, rmask, gmask, bmask, amask); SDL_BlitSurface(tileset, &SourcRect, sprites[0], &SourcRect);
allerdings bleibt sprites[0] leer... hat jemand ne idee was ich falsch gemacht haben könnte?
-
also weis niemand wieso das nicht funktioniert / kennt niemand eine andere art auf die ich einen teil eines surfaces in ein anderes kopieren kann?
-
kolloffnikoff schrieb:
zu dem bild als header einbinden...da geht man hin und schreibt sich n kleines tool, vielleicht gibts das auch irgendwo...sicherlich eigentlich...das dann die pixel des bildes einzeln ausliest und ne "bild.h" datei bastelt ...
also nochmal dazu: dieses eine linux-bitmap format (kann mich jetzt nicht an den namen erinnern
) besteht aus header dateien, daher werd ich wenn ich das dann machen will einfach die bmps mithilfe von gimp umwandeln und dann dürfte ich die eigentlich normal einbinden können