Programm läuft unter B+ schlechter wie unter B3D..?
Übersicht

MynBetreff: Programm läuft unter B+ schlechter wie unter B3D..? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey,
das wollte ich eigentlich schon vor Monaten gefragt haben^^ Mein Programm (Spiel) hab ich mit B3D geschrieben. Es baut nur auf 2D Grafik und müsste ja theoretisch auch unter B+ laufen. Das geht auch, jedoch nur mit 1 bis 3 FPS anstatt 30 eingestellten...? Gibt es irgentwelche Funktionen die in B+ das Programm verlangsamen oder Fehler erzeugen die den Ablauf so verlangsamen ...? mfg Myn |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du nicht den Backbuffer eingestellt?
BlitzBasic: [AUSKLAPPEN] SetBuffer(BackBuffer()) Du kannst auch mal folgendes an den Anfang deines Programmes schreiben: BlitzBasic: [AUSKLAPPEN] SetGfxDriver(2) Damit schaltest du OpenGL ein, was ein paar hundert mal schneller ist als DirectDraw 7. |
||
It's done when it's done. |
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Habe ich natürlich ![]() 2. Getestet, geht schon besser, aber im vergleich zu B3D immer noch seeeeehr langsam und nicht spielbar. Ist B+ einfach langsamer ? Oder brauchen bestimme Funktionen vielleicht einfach noch einen Parameter so dass Fehler enstehen ...? PS. Noch ne kleine Frage: Mit der Input Funktion(B3D) und anderen Eingabe Methoden wie GetKey(B3D) kann ich keine Sonderzeichen sowie GROß Buchstaben eingeben, andere Spieler können das aber sehr wohl ..? Bei meinem alten PC (Vista) und bei meinem neuen (Win7-64) geht es nicht. Liegt das am PC an irgentwelchen Einstellungen ? //EDIT In B+ geht das wunderbar, ein Grund weswegen ich Umsteigen möchte..^^ |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Pummelie: Der automatische BackBuffer ist ein Feature von B+ (dergleichen ist mir von B3D nicht bekannt).
Draw3D läuft unter B+ natürlich nicht. Dass B+ in 2D langsamer sein sollte, ist mir ehrlich gesagt unbekannt. Im Gegenteil, man kann durch die Event-Struktur sogar Zeit sparen, da die ganzen KeyDown ![]() ![]() ZEVS |
||
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Draw3D verwende ich auch nicht ![]() Was mir aber aufgefallen ist dass das Fortbewegen was durch die "Pfeiltasten" geht und mit der Funktion "KeyDown" abgefragt wird nur nach mehrfachem drücken der Taste funktioniert. Liegt es vielleicht an den Code: [AUSKLAPPEN] If KeyDown(200) Then ;Nach Oben
Abfragen..? |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verwendest du event. LockBuffer?
Das hat auf meiner neuen Graphikkarte damals (schon 2 Jahre her) das Spiel so dermaßen herunter gezogen, allen LockBuffer hatte 10ms gebraucht! Glaube eher nicht dass Bei den Tastatur-Abfragen der Hund begraben ist. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein verwende ich auch nicht.
Aber es lamt schon im Hauptmenu, wo wirklich nur RectsOverlap & Drawimage+Maskimage zu finden ist. |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tastatur-Abfragen werden unter B+ normalerweise über Events realisiert. Das ergibt einen ganz anderen Mainloop. Die Erklärung ist hier. Damit sparst du dir alle Abfragen mittels KeyDown: Statt 30mal in der Sekunde nachzufragen ob eine Taste unten ist (und das pro Taste), lässt sich das Programm einfach bei jedem Tastendruck Bescheid sagen und speichert sich die Taste. Somit kann der Mainloop wesentlich schlanker (und schneller) werden.
Natürlich müsstest du dafür umschreiben. Aber wieso willst du dein Programm überhaupt in B+ laufen lassen? ZEVS |
||
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: PS.
Noch ne kleine Frage: Mit der Input Funktion(B3D) und anderen Eingabe Methoden wie GetKey(B3D) kann ich keine Sonderzeichen sowie GROß Buchstaben eingeben, andere Spieler können das aber sehr wohl ..? Bei meinem alten PC (Vista) und bei meinem neuen (Win7-64) geht es nicht. Liegt das am PC an irgentwelchen Einstellungen ? //EDIT In B+ geht das wunderbar, ein Grund weswegen ich Umsteigen möchte..^^ Das ist ein Grund und außerdem läuft der MapEditor+GameServer+FileServer auch über B+. Da es ja die gleichen Befehle wie B3D hat und ehr ein paar Verbesserungen wollte ich eben umsteigen. Was ja so einfach doch nicht geht : / |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zeig mir mal deinen Loop für das Menü (wenn du es hier nicht Preisgeben möchtest, gerne auch PN oder E-Mail) - vlt. ann ich ja den Speedsünder finden. | ||
It's done when it's done. |
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich glaube es liegt and en KeyDown() Abfragen.
Denn sobald man im Hauptmenu, das relativ normal läuft in die "Lobby" wechselt in der ein Chat intigriert ist und deswegen auch KeyDow() verwendet wird sieht man wie der Mauszeiger langsamer wird... Teste das morgen mal genauer^^ |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist ungewöhnlich...
Du kannst ja aber nun wo du B+ verwendest diese verschwenderischen Befehle ignorieren und dir mit dem Event-System was basteln. |
||
It's done when it's done. |
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich muss mich nochmal Verbessern ^^
Es liegt am "Text" Befehl, im Hauptmenu gibt es nur 1mal "Text", in der Lobby werden 20 Zeilen News angezeigt. Im MapEditor von mir sieht man es noch besser. Wenn ich mir das (2D Game+Tilemap) Datenfeld anzeigenlassen und zwar nur einen kleinen Teil der gerade am Bildschirrm sichtbar ist habe ich ~ 1 FPS ^^ In B3D läuft das ganze ohne Probleme .. :O ? (MapEditor) |
||
![]() |
Lobby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das könnte damit zusammenhängen, dass BlitzPlus standardmäßig eine Kantenglättung beim Einzeichnen von Text verwendet.
Hier ein Beispielcode in BlitzBasic: [AUSKLAPPEN] Graphics 400,300,32,2 In Blitz3D ausgeführt: ![]() In BlitzPlus ausgeführt: ![]() Mein Vorschlag wäre, hier den Text auf Bildbuffer vorzurendern, um anschließend nur noch einfache Bilder einzeichnen zu müssen. |
||
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux |
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das der Text "besser" aussieht war mir schon aufgefallen, jetzt weiß ich warum ^^
Deinen Vorschlag habe ich nicht ganz verstanden, kannst du das etwas "ausführlicher" erklären wie du das meinst ..? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke, das ist so gemeint:
BlitzBasic: [AUSKLAPPEN] ;Intalisation ZEVS |
||
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Den Code verstehe ich und kann ihn nachvollziehen, aber ist das nicht sehr "aufwändigt" ..?
Auch nacher wenn man nicht nur 1 sondern ~20 / 30 Texte an verschiedenen Stellen hat etc. ... Kann man das rendern von B+ bei Text nicht irgentwie deaktivieren, sodass es wie bei B3D funktioniert ...? |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das mit dem vormalen bringt auch nur wirklich was wenn sich die Texte nicht dauernd ändern, z.B. Punkte anzeige, ne Event-Console o.ä. (Chat bspw.). Sonst ist es sogar noch langsamer.
Außer man speichert auch die Zahlen vor, also als eine art Image-Font, dann würde sich das wieder Rentieren, aber dann müsste man den Font auch mit Blitz3D (Ohne Kantenglättung) rendern und mitliefern .. mfg ToeB Edit : Probiert mal diesen Code aus : BlitzBasic: [AUSKLAPPEN] Graphics 800, 600, 16, 2 Bei mir ergibt sich : 0.01951ms (BPlus) 0.04083ms (BB3D) Man sieht, Blitz3D ist sogar langsamer ! (Ich habe allerdings XP, glaube Vista unterstützt ja nicht mehr das DirectDraw, sodass es hier sowieso schneller ist) mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Lobby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja Myn, genau so, wie ZEVS das freundlicherweise schon vorzeigte, meinte ich das. Es mag sicherlich sehr umständlich sein, das für einen bestehenden Code anzuwenden, könnte sich aber Umständen dennoch lohnen (sofern die Texte sich, wie ToeB schon richtig einwarf, nicht zu oft ändern).
ToeB, so ein direkter Vergleich ist eine gute Idee, denn bei mir fällt der Test mit deinem Code wie folgt aus (allerdings habe ich die Debuglogs mit Print-Befehlen ersetzt, damit die Geschwindigkeit, da im Release-Mode, für das letztendliche Ergebnis relevant ist): In Blitz3D: 0.10105ms In BlitzPlus: 0.71731ms Getestet unter Windows7. (Die Zeitangaben beziehen sich auf den durchschnittlichen einzelnen Text-Zeichenbefehl-Aufruf) Wenn ich nun allerdings in BlitzPlus das anfangs schon erwähnte SetGfxDriver(2) setze, scheint er tatsächlich auf die Kantenglättung zu verzichten (zumindest ist von ihr dann bei anderen Schriftarten nichts mehr zu sehen) und damit auch nur noch 0.08090ms zu brauchen. Myn, jetzt wäre interessant, was dieser Test bei dir für Zahlen liefert ![]() |
||
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
B3D: 0.01129
B+: hab mir da es auch in print liefern lassen, jedoch kam nach 20 sec immer noch nichts und vom Programm keine Rückmeldung... Mit welche Font hat man keine Kantenglättung? Ich benutze Arial derzeit... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group