Lade Balcken am Anfang
Übersicht

![]() |
BB-FreakBetreff: Lade Balcken am Anfang |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Forum,
ich weiß nicht ob es schon einen solchen Thread gibt(Ich habe jedenfalls keinen gefunden ![]() Ich will, da es am Anfang immer ein weilchen dauert bis meine Bilder geladen sind möchte ich gerne einen Lade Fenster machen, indem eine kleines Spiel eingebaut ist ,das man dann während des Ladens spielen kann. Leider weiß ich nicht genau wie das gehen soll ![]() ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit Threads gehts vielleicht. Aber ganz andere Frage, wieviel Daten schaufelst Du in den Speicher das man in der Zeit ein Spielchen spielen könnte? | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn die Bilder nicht zu groß sind, kann man die Arbeit auch so weit zerstückeln, dass man zwischen den einzelnen Ladevorgängen einen Ladebalken zeichnen lässt. (->keine Threads)
Du kannst dir dafür Types als Liste der zu ladenen/geladenen Bilder erstellen. Die Ladeschleife würde etwa so aussehen: BlitzBasic: [AUSKLAPPEN] While Not allesGeladen Vorher sollte man aber schauen, dass man nichts unnötiges lädt. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Sterbendes Lüftlein |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Text entfernt | ||
![]() |
Lakorta |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde das auch so ähnlich machen:
Code: [AUSKLAPPEN] ;Balkenbilder laden Drawimage balken_teil_1, 0, 550 ;Andere Bilder laden Drawimage balken_teil_2, 50, 550 usw... Die Balkenbilder ergeben dann zusammengezeichnet einen langen Balken. Allerdings kannst du das auch machen, das du mehrer Balkenbilder hast, die nicht nebeneinander gezeichnet werden, sondern das du immer per Cls die alten Bilder löschst und den neueren, längeren Balken dahin zeichnest. Am Ende kannst du dann auch per FreeImage den Balken wieder löschen, fallst du ihn nicht mehr brauchst, um den Speicher zu schonen ![]() |
||
--- |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ihr weicht zwar voll vom Thema ab, aber einen einfach Ladebalken als Image malt man mit DrawImageRect![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du annst es mit Multithreading versuchen, doch ist das nix für Anfänger...
Ansonsten kannst du ja eine 2. exe erstellen, die vom HAuptprogramm aufgerufen wird, bis das Hauptprogramm (in diesem Moment Fensterlos...) mit laden fertig ist... |
||
It's done when it's done. |
Sterbendes Lüftlein |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Text entfernt | ||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vom Thema abweichen, weil er nach einem Minispiel während des Datenschaufelns gefragt hatte, nicht nach einem Lade-vorgangs-fortschritts-balken ![]() Einzelbilder sind unflexibel und fressen unsinnig Ressourcen. Was wenn ich diesen Balken in anderen Spielen wieder verwenden will? Klar, ich packe das in eine Function. Und diese Function errechnet nun anhand des übergebenen Prozentsatzes, Auflösung und Bildgröße wieviel Image gezeichnet werden muß und tut dies. Oder nehmen wir an der Benutzer des Programms kann selbst die Auflösung bestimmen und das Bild soll von der Function zusätzlich noch entsprechend resized werden... Seiner Frage entnehme ich das BB-Freak nicht zu den "Vollprofis" zählt und damit solche Scherzchen für ihn vermutlich noch gar nicht von Bedeutung sind, aber wenn er von Haus aus schon auf solche Gleise geschoben wird... Du verstehst? ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Sterbendes Lüftlein |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Text entfernt | ||
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
im übrigen glaube ich dass ihr ihn initial sowieso (fast) alle falsch verstanden habt
seine aussage Zitat: ich weiß nicht ob es schon einen solchen Thread gibt
bezog sich darauf, dass er die suche verwendet hat. nicht dass er interesse an multithreading hat. ich vermute mal dass er gar kein BMax hat... zum problem selbst: 1) ich bezweifle, dass du genug bilder lädst so dass ein minispiel sich lohnen könnte (oder du machst irgendwas falsch^^) 2) die einzige möglichkeit die du hast ist wie bereits vereinzelt erwähnt deine ladesequenz zu splitten. du musst also abwechselnd ein bild laden und dein minispiel berechnen/darstellen du könntest z.b. alle 60 durchläufe von deinem minispiel 1 bild für das hauptspiel laden je nach größe deiner bilder/daten kann das dann trotzdem noch zu lags führen, welche du ohne bmax und damit verbundenen threads allerdings nicht wirklich effektiv umgehen kannst in blitzbasic. (dazu bräuchtest du eine eigenen bilder-lader-routine, welche gezwungenermaßen um einen ENORMEN faktro langsamer wäre als die von bb gestellt - und zudem ist diese aufgabe alles andere als trivial) das laden der bilder könnte in etwa so aussehen: Code: [AUSKLAPPEN] - berechne Minispielschleife - stelle diese dar - erhöhe counter um 1 - wenn counter = 60 dann setze counter auf 0 und lade nächstes bild - [function lade nächste bild] lies pfad des nächsten bildes ein (z.b. in einem Data-Field gespeichert o.Ä.) lade dieses bild kehre zum anfang der Minispielschleife zurück alles in allem würde ich dir eigentlich von der idee abraten, aber einen kleinen plan hab ich dir trotzdem mal zur verfügung gestellt. hoffe du hast erfolg |
||
![]() |
Lakorta |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest auch statt einem richtigem Minispiel irgendeine kleine Spielerei machen, zum Beispiel Punkte die der aus folgen, oder ein kleines Coic während der Ladezeit ![]() Das währe um einiges einfacher und ist ja auch teilweise unterhaltsam. |
||
--- |
Sterbendes Lüftlein |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Text entfernt | ||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du könntest ja Tipps&Tricks zum spiel anzeigen lassen, zum ladebalken hab ich hier mal ne kleine funktion geschrieben:
BlitzBasic: [AUSKLAPPEN] Function CreateBar(Percent, posx, posy, r = 255, g = 255, b = 255) mfG, CO2 |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
BB-FreakBetreff: Danke... |
![]() Antworten mit Zitat ![]() |
---|---|---|
-Also zu der Frage ob mein Spiel wirklich soooo lange braucht :Nein braucht es nicht(könnte es aber bald da
es bei 5 oder so Welten 10 sek dauert und ich vtl. 100 mache(ich weiß ergeiz ![]() 10*20=200sek:60=3,3333 min ![]() (Außerdem kommen noch die Items und dass ich alle Bilder als Bmp's hab, weil erst die Demo besitze ![]() -Ähm ich habe auch schon überlegt etwas in Richtung Funktion zu machen( ![]() da ein Spiel reinpacken soll ^^. -Falls jemand gegebenen falls eine Idee hat wie ich mein Spiel(das im Fenstermodus ist) minimieren kann, dann würde ich auch ne 2. ExE mache ![]() Also vielen Dank für eure guten und vielen Antworten !!! Euer BB-Freak |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lade nur die benötigten Daten am Anfang und lade beim Levelwechsel etwas nach.
Kurze Ladepausen sind besser als eine lange. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Sterbendes Lüftlein |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Text entfernt | ||
![]() |
BB-Freak |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich auch ![]() |
||
primero |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja, du könntest, wenn deine Bilder oder Daten in Arrays stehen, das Spiel (oder Hauptmenü ... wär ja auch ne Idee) laufen lassen und die Bilder je nach anzahl der durchlaufenen stufen laden. etwa so:
Code: [AUSKLAPPEN] repeat
spiel ... menü ... sonstiges n=n+1 a=a+1 if a=1 then bild(n)=loadimage("bild"+n+".bmp") ;Levelbilder werden geladen if a=2 then bild(n)=loadimage("bild"+n+".bmp") if a=3 then bild(n)=loadimage("bild"+n+".bmp") if a=4 then bild(n)=loadimage("bild"+n+".bmp") if a=5 then item(n-4)=loadimage("bild"+n-4+".bmp") ;itembilder werden geladen item(n-3)=loadimage("bild"+n-3+".bmp") item(n-2)=loadimage("bild"+n-2+".bmp") item(n-1)=loadimage("bild"+n-1+".bmp") item(n)=loadimage("bild"+n+".bmp") a=0 ;level ist fertig, die nächsten levelbilder werden geladen endif until naja, so ähnlich. muss halt angepasst werden. hoffe das hilft |
||
![]() |
BB-FreakBetreff: :) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke hat mir sheeer geholfen !
Nur leider fängt das Spiel,dann an zu laggen oder? Und Loadimage in ner Schleife ist auch net so gut glaub ich. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group