Bilder vor Graphics laden?
Übersicht BlitzBasic Beginners-Corner
Bobo2040Betreff: Bilder vor Graphics laden? |
Do, Aug 28, 2014 2:13 Antworten mit Zitat |
|
---|---|---|
Hi
Sry das in letzter Zeit soviele Threads von mir kommen aber ich "arbeite" in letzter Zeit seit langem mal wieder mit BB und so So zu meinem Problem, ich habe ganz viele Bilder teils sehr große (10mb+) und die müssen in den Ram geladen werden ... so da mein Spiel aber im Vollbildmodus ist ist solange die Bilder geladen werden (insgesamt ca 80mb davon ca 10mb von rotate image(langsam)) ein Schwarzen Bildschirm was ich als seeeehrrr unschön empfinde... weil man das Programm zumindest unter XP nicht ohne weiteres Beenden kann... und weil man den Fortschritt einfach nicht sieht... Was kann ich da jetzt machen? Ich dachte ja aber 2 Graphics Befehle eins mit nem kleinen Fenster als "platzhalter" das auch Windowed ist (Modus = 2) und danach wenn alles Geladen wurde ein Großes das im Vollbildmodus ist aber leider löscht Graphics ja alles an Bildern usw aus dem Speicher raus.. sodass ich die Bilder nochmal laden müsste -> sehr blöd. Gibt es jetzt irgendwas anderes womit man das Lösen kann aber ich bei dem Vollbildmodus bleiben kann würde ungern Windowed nehmen... Freue mich über jede anregung und Hilfe! Mfg |
||
bitro.de |
BladeRunnerModerator |
Do, Aug 28, 2014 6:34 Antworten mit Zitat |
|
---|---|---|
Mach einen Ladescreen, lad den zuerst und zeig ihn an während der Rest eingeladen wird. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Bobo2040 |
Do, Aug 28, 2014 8:22 Antworten mit Zitat |
|
---|---|---|
Stimmt! Gute Idee
Mfg |
||
bitro.de |
DAK |
Do, Aug 28, 2014 9:11 Antworten mit Zitat |
|
---|---|---|
Am Besten mit einem Ladebalken oder so, den du bei jedem geladenen Bild ein Stück weiter laufen lässt. Auch ein langer Ladebildschirm auf dem sich nichts bewegt kann einen User verunsichern.
Warum brauchen bei dir 80 MB lange zum Laden? Machst du RotateImage für jedes Grad? Wenn ja, dann reduziere es auf alle 5°. Das ist gut genug dass man den Unterschied nicht sieht, aber fünf mal schneller. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
XeresModerator |
Do, Aug 28, 2014 17:55 Antworten mit Zitat |
|
---|---|---|
Ich sehe auch nicht wirklich einen Grund für RotateImage.
Man bekommt ein gleiches oder besseres Ergebnis, wenn man Bildbearbeitungssoftware für die Bearbeitung von Bildern benutzt. Gimp z.B. kann mit Sicherheit eine Reihe von Aktionen durchführen, ohne dass man das alles per Hand machen müsste. Auf LoadAnimImage umsteigen und schon ist die Ladegeschwindigkeit geringer. Klar muss man die ganzen Daten noch in den Speicher schaufeln, aber zumindest entfällt das ganze CPU intensive gedrehe... Wenn du es bequem für dich haben willst, dann würde ich beim laden den Hash des Bildes berechnen und die Gedrehte Version generieren und abspeichern. Dann dauert das laden nur beim ersten Start länger (bzw. wenn die Bilder geändert wurden). Nicht zu Ressourcen fressend programmieren ist löblich, aber ich würde lieber schneller laden als 20 MB einsparen (wo mehr als genug Plattenplatz vorhanden sein sollte). |
||
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) |
Bobo2040 |
Do, Aug 28, 2014 18:06 Antworten mit Zitat |
|
---|---|---|
Ja schon aber das RotateImage geht ja Relativ flott ^.^ also bei weitem schneller als das Laden der großen Bilder... ich habe jetzt einfach andere Bilder genommen für die Map und die als .jpg abgespeichert damit die schön klein sind (müssen ja nicht gemasket werden)
Mfg |
||
bitro.de |
DAK |
Do, Aug 28, 2014 20:32 Antworten mit Zitat |
|
---|---|---|
Kleine Frage: wie kommst du 80 MB an JPEGs? 20 MB computererstellte JPEGs sind enorm viel. Das kommt auf rund 24-30 Megapixel. Bei guter Komprimierung sogar noch mehr.
Brauchst du die ganzen Bilder wirklich alle gedreht? Eventuell könntest du auch parallel nachladen. Wenn du nicht alles ganz von Anfang an brauchst, könntest du jedes Frame ein Bild ein Mal drehen, gerade so dass man es im Spiel nicht merkt. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
Do, Aug 28, 2014 21:09 Antworten mit Zitat |
|
---|---|---|
Ehm ich hatte Bilder von der NASA benutzt ^^
Also 4000*4000 px xD |
||
bitro.de |
Spark Fountain |
Do, Sep 04, 2014 14:51 Antworten mit Zitat |
|
---|---|---|
Es ist zwar schon ein paar Tage her, dass hier zuletzt was geschrieben wurde, aber vielleicht interessiert es dich @Bobo2040 ja noch:
Ich vermute, dass du Weltraumbilder benutzen willst und dann dem Benutzer die Möglichkeit geben willst, sie aus verschiedenen "Perspektiven" zu beobachten bzw. sich eben darin herumdrehen zu können. Falls es so (oder ähnlich) sein sollte und du Blitz3D besitzt, würde ich dir empfehlen, das ganze stattdessen mithilfe von Sprites (LoadSprite) im 3D-Grafikmodus umzusetzen. Da lädst du das Bild einmal als Textur, packst die auf das Sprite und kannst dann die Kamera (CreateCamera) durch die Gegend bewegen. Dann skaliert und dreht sich das Bild automatisch. |
||
Gewinner der MiniBCC's #11, #13 und #28 |
Bobo2040 |
Do, Sep 04, 2014 22:23 Antworten mit Zitat |
|
---|---|---|
@Spark Fountain
danke fuer die Antwort aber ich benutze B+ also klappt das so nicht ich denke aber fuer jemand der B3D benutzt ist das ein guter Tipp :p Mfg |
||
bitro.de |
DAK |
Do, Sep 04, 2014 22:36 Antworten mit Zitat |
|
---|---|---|
Sag, verwendest du eigentlich irgendwelche BlitzPlus-Funktionen oder eh nur das Standard Blitz2D? Falls nicht, dann sollte dein Code ohne irgendwelche Änderungen auf Blitz3D laufen. Und Blitz3D ist inzwischen genauso wie BlitzPlus gratis. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
Sa, Sep 06, 2014 0:16 Antworten mit Zitat |
|
---|---|---|
@DAK nein ich benutze nur die Standard Funktionen dies in BB auch gibt
Also keine GUI Elemente oder sowas eine GUI benutze ich derzeit nur für den Konfigurationsmanager Welcher aber getrennt vom Spiel ist ... Aber ich werde das Projekt vorerst auf Eis legen müssen da ich erstmal Java o.ä lernen muss da ich die Berechnungen usw lieber aufm Server machen würde Weile schlichtweg schneller und unkomplizierter ist... Denn derzeit ist jeder Client zugleich ein Server also über prüft alle Sachen der Gegner etc Und lässt die Daten Updaten das sollte eig. Hacken sinnlos machen weil die Daten binnen weniger Schleifen Durchgängen wieder zurückgesetzt werden würden... Zieht aber zuviel Leistung Ist B3D eig. Schneller als BB ? Und wo gibts denn B3D Kostenlos?0.o ich weis nur das B+ 4free ist... Link? Mfg |
||
bitro.de |
Spark Fountain |
Sa, Sep 06, 2014 9:34 Antworten mit Zitat |
|
---|---|---|
Jein. Der 3D-Grafikmodus von Blitz3D ist in vielen Fällen schneller als die normalen 2D-Befehle (welche sowohl in Blitz+ als auch in Blitz3D enthalten sind). Ansonsten ist Blitz3D aber eher eine "Weiterentwicklung" von Blitz2D, soweit ich weiß. D.h. die Engine basiert ebenfalls auf DirectX 7 und gilt dementsprechend heute als veraltet. Nichts desto trotz läuft fast alles immer noch mit modernen Rechnern und Betriebssystemen.
Ich kann dir also nur empfehlen, wenn du das Projekt doch noch weitermachen willst: Lade dir die kostenlose Version von Blitz3D hier (du musst dort lediglich einen Account erstellen, ist komplett kostenlos). Dann schau dir ein paar grundlegende 3D-Befehle an wie CreateCamera, CreateLight, UpdateWorld und RenderWorld. Schließlich löst du deine Bildrotation mit Sprites, wie schon beschrieben, und alles ist super. |
||
Gewinner der MiniBCC's #11, #13 und #28 |
DAK |
Sa, Sep 06, 2014 11:56 Antworten mit Zitat |
|
---|---|---|
Wie Spark Fountain schon geschrieben hat ist alles was nicht 3D ist in B3D und B2D weitgehend ident. Du hast die gleichen Befehle, die gleich übersetzt werden und deswegen auch gleich schnell sind. Nur kommen dann noch die 3D-Befehle hinzu, mit denen man einiges besser machen kann als mit den 2D-Befehlen, selbst wenn man im Endeffekt die 3D-Befehle nur für 2D-Bilder verwendet.
Wie machst du deinen Datenversand bisher? Hast du nur 2-Spieler Peer-To-Peer mit Lockstep oder so? Je nach dem wie du deinen Server aufbaust und was du genau synchronisierst kannst du einen riesigen Teil der Daten sparen und das Ergebnis dabei noch besser ausschauen lassen. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
Di, Sep 09, 2014 17:35 Antworten mit Zitat |
|
---|---|---|
Also ich habe B3D mal gestestet also habe ein kleines "prog" geschrieben was einfach in einer Schleife von 0 - 10mio eine Zahl Hochzählt und am ende ausgibt ich habe diesen Code 1:1 Kopiert und hatte bei B3D an weitausschlechteres Ergebnis rausbekommen (3x langsamer) Debug war bei beiden ausgeschaltet sowie auch keine anderen Programme an waren ich habe die "tests" mehrfach durchgeführt um sicher zu gehen
Kann man das als vergleichswert nehmen? :O Weil ich meine ich will das Spiel performant halten um eine Hohe FPS Rate auch auf "Holzpcs" zu gewährleisten Ich habe es nur auf Win XP getestet vllt liegts ja daran was ich aber nicht glaube! So zur Server Client Kommunikation das ist so aufgebaut: Client1 (Hp,Sh,Map usw) Client1\Client2 (Hp,Sh,Map usw.) die Daten von anderen Spielern (eigener Server im prinzip) Server Client2(Hp,Sh,Map usw.) Client2\Client1(Hp,SH,Map usw..) So ich habe auf meinem PC 4 Leute die "Spielen" diese Daten der Spieler die ich am Anfang bekommen habe nehme ich und speicher sie im Type oClient ab ... alle X Millise´kunden werden die Daten an den Server geschickt, welcher die Daten nur verteilt an alle anderen Clienten und die nehmen die Daten an überprüfen ob das so hinkommen kann (hier treten oft Bugs auf ... z.B. 3 Spieler greifen 1 Spieler gleichzeitig an also ist der Schaden enorm was aber "gekenzelt" wird und der Spieler als "Hacker" abgetan wird :/ ) wenn die daten soweit hinkomen werden sie abgespeichert und auch die eigenen Daten werden überprüft und abgespeichert so kann man seine eigenen Lebenspunkte Schaden etc. nicht so leicht verändern weil sie ca 11-12mal pro Sekunde aktualisiert werden So hab ich das eigentlich nicht gut durchdacht 1. Unperformant 2. Viel zu viel Datennutzung 3. Bugs die sehr schwer und unzuverlässig zu beheben sind! Der Vorteil daran ist einfach, das fast "unhackbar" von den 0815 Script - Kiddies ist (CE - Gen.) Jedoch wenn ich so überlege und alles auf dem Server berechnen lasse also Schaden und aktuelle Hitpoints und Schilde dann müsste es eig unmöglich sein zu Cheaten Einziger Nachteil ist leider das ich kein Java Crack bin und mich da erstmal sehr lange einlesen muss bis ich da was "taugliches" zustande bringen kann :/ Mfg |
||
bitro.de |
DAK |
Di, Sep 09, 2014 18:33 Antworten mit Zitat |
|
---|---|---|
@Microbenchmark: solche Winz-Benchmarks, die nur Wert auf einen einzelnen Punkt legen sind nicht sehr aussagekräftig. Kleine Modifikationen könnten es ganz anders aussehen lassen. Dazu kommt, dass du mithilfe der 3D-Befehle die CPU beim Zeichnen stark entlasten könntest, was dir viel Performance gibt, gerade beim Laden.
@Netzwerkarchitektur: -) Wie genau rennt dein Server? In welcher Sprache ist er geschrieben? Wenn es eine Sprache mit Multithreading ist, nützt du das Multithreading? -) Was machen deine Clients, wenn sie die Daten nicht schnell genug bekommen? Wie viele ms hast du zwischen dem Senden? Was braucht so lange an der ganzen Sache? das Überprüfen, das Netzwerk oder was anderes? Selbst wenn du alles auf jedem Client überprüfst sollte das nicht so dramatisch sein. Wie viele Werte sendest du denn pro Client? Kannst du bei den Daten eventuell was einsparen, wenn du unnötige Daten weglässt? |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
Di, Sep 09, 2014 19:13 Antworten mit Zitat |
|
---|---|---|
Okay ja das dachte ich mir schon
ehm multithreaded ist es er läuft auch in Java das hat mir ein "bekannter" Aus dem Codebot.de Forum geschrieben leider ist er in letzter Zeit nicht mehr Online zwecks Source Code weil deb zu erweitern muesste leichter sein als einen von komplett Null zu programmieren So bei den Daten kann ich denke mal sehr viel einsparen z.b. Wird immer die aktuelle Map gesendet und welche Konfiguration drinne ist was unnuetz ist aber ich werde eh alles neu ueberarbeiten aber ich lege den Schwerpunkt erstmal auf den Server bzw Java zu lernen Danach der Rest geht ja vergleichsweise "einfach" mfg |
||
bitro.de |
DAK |
Mi, Sep 10, 2014 7:02 Antworten mit Zitat |
|
---|---|---|
Schick mir den Server, ich dekompiliere ihn dir, und schicke dir den Source zurück. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Bobo2040 |
Mi, Sep 10, 2014 13:09 Antworten mit Zitat |
|
---|---|---|
Das ist wirklich sehr nett gemeint !
Aber leider kenne ich ihn nicht Persönlich und würde ihn davor lieber Fragen Mfg |
||
bitro.de |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group