Zu langsame Spiele

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Blond Panda

Betreff: Zu langsame Spiele

BeitragDi, Aug 06, 2013 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Tag (Very Happy erster Post, yay)

Ich bin ein Anfänger Programmierer, der vor kurzem erst mit der Programmierung angefangen hat.
Meine momentanen Spiele sind noch im zweidimensionalem Raum.

Problem bei der Sache ist: meine Spiele, die ich mit Blitz gemacht habe laufen viiiiieeeeel zu langsam.
Selbiges gilt für Spiele, die jemand anders auf Blitz gemacht hat.
Hierbei ist es egal, ob ich das Spiel zum test über Blitz Basic starte oder eine Executable ausführe.
Laut einem FPS- check, laufen meine Spiele mit 60 fps. Direkt 60. Also so als ob man sie extern oder intern gecapt hätte.
Das war nicht immer so und ich habe schon fast ganz Google nach einer Lösung durchforstet. Allerdings ohne Érfolg.

Hier sind noch ein Paar wichtige Informationen:

Mein Rechner:
Intel Core I5
AMD Radeon HD 6800 von Powercolor
4 Gb Ram
1 Gb video Ram

weiterhin benutze ich die Blitz 3d Vollversion.

Mein Computer ist auf jeden fall keine Schrottmühle und besitzt sogar ziehmlich gute Teile.
Und wenn er Spiele, wie Battlefield 3 fast auf maxed- out mit mehr als 60 FPS schafft, dann wird er das bei ein Paar selbst gebastelten 2d Programmen doch erst recht schaffen.

Ich freue mich über jede Hilfe.
Blond Panda

Xeres

Moderator

BeitragDi, Aug 06, 2013 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Willkommen.

Die Ursache wird am Code liegen - ohne den wird dir hier Niemand wirklich ausführlich helfen können.

Davon abgesehen: Wozu brauchst du mehr als 60 fps? Mehr Berechnungen als angezeigt werden können sind überhaupt nicht erwünscht.

Und zu guter Letzt, da keine 3D Frage:
~VERSCHOBEN~
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

count-doku

BeitragDi, Aug 06, 2013 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu langsam mit 60FPS?
Es gibt gleich mehrere Punkte warum mehr nichts bringt ausser deinen PC unnötig zu belasten:

1. Dein Auge sieht 29.999 Bilder pro Sekunde
2. Dein Monitor schafft 60 vllt 100 oder ja vllt. auch 200 Bilder pro Sekunden. Das bringt auchnoch minimal besserung aber bei kleineren Spielen nicht wirklich.

Somit hast du mit mehr FPS unnötig Rechenleistung (und damit Strom) verbraten. Und wofür?
Gerade bei so kleinen Spielen reicht es teilweise sie mit 30FPS auszuführen.
Also warum zur Hölle beschwerst du dich darüber, dass ein mini Spiel nicht gleich 100% deiner CPU und Graka verbraucht?!
Wobei wenn du unbedingt Strom/Leistung verschwenden willst, es gibt da Benchmarks oder diese Proggi hier: FPS Burner

Ansonsten Delay/Timer oder Flip 1 rausnehmen bzw. zu Flip 0 machen. Siehe auch Hilfe CreateTimer, Delay, Flip.

Und warum du deine anderen Spiele unbedingt schneller rennen lassen musst - FPS Junkie?


lg
Count-Doku

Pummelie

BeitragDi, Aug 06, 2013 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
60 FPS = Maximale Anzahl an Bildern die dein Monitor pro Minute fehlerfrei anzeigen kann.
Die Vertikale Synchronisation, welche sicherstellt das es zu keinem Bildflackern, da zuviel FPS kommt wird mit Flip(0) abgeschaltet.

Da du angiebst, das andere Spiele bei dir mit mehr FPS überzeugen klassierst du dich selbst als nicht gerade erfahren im Umgang mit Grafikausgabe der Computertechnik und solltest, bevor du anfängst es einfach zu benutzen, dir ersteinmal ein paar allgemeine Informationen zu diesem Themengibt aneignen.
It's done when it's done.
 

Blond Panda

BeitragDi, Aug 06, 2013 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Das problem liegt nicht am code. Es ist schließlich bei jedem spiel so. Auch denen von anderen entwicklern.
Es sind nicht die 60 FPS, die mich stören. Es ist mir nur aufgefallen, dass es so ist, obwohl solche Spiele bei mir mit 1000 FPS laufen.
Mein Problem ist, dass das Spiel langsam läuft.
Meine Spiele laufen beispielsweise auf dem Rechner meines Bruders so schnell, dass man nichts erkennt, wärend sie bei mir genau richtig laufen.
Die Spiele von meinem Bruder laufen so langsam, dass das spiel aussieht, als ob es in zehnfacher Zeitlupe abgespielt wird.

Es tut mir leid, wenn du mich misssverstanden hast, Count-Doku.
60 FPS finde ich, nur mal so am Rande bemerkt eine wundervolle Leistung. Genauso, wie 30 FPS und alles dazwischen.

Also, zur klarstellung: Das Problem ist die Geschwindigkeit. Nicht die FPS.
Sorry nochmal von mir.

na ja. Ich poste trotzdem mal die Hauptschleife von meinem momentanem Projekt

BlitzBasic: [AUSKLAPPEN]
;Hauptprogramm
Repeat
Cls

hudfont= LoadFont (verdena, 12)


If MouseDown (1)= False Or Munition=-1 Or KeyDown (57) Then GunX= MouseX() Else GunX= GunX-Rnd(-recoilx, recoilx)
If MouseDown (1)= False Or Munition=-1 Or KeyDown (57) Then GunY= MouseY() Else GunY= GunY-Rnd(-recoily, recoily)

If eigenleben<100 Then leben=lebenszeichensehrgut
If eigenleben<90 Then leben=lebenszeichengut
If eigenleben<80 Then leben=lebenszeichenok
If eigenleben<70 Then leben=lebenszeichenmittel
If eigenleben<60 Then leben=lebenszeichenwenig
If eigenleben<50 Then leben=lebenszeichenschlecht
If eigenleben<40 Then leben=lebenszeichenschlechter
If eigenleben<30 Then leben=lebenszeichensehrschlecht

;Nachladefunktion
If KeyHit (19) And Munition<magazin And nachladezeit= nachladesource Then Munition=0

;Bilder Zeichnen
TileImage (Hintergrund)
TileImage (Wand)
TileImage (wandzwei)
DrawImage Fenster, 0, 0
DrawImage Fensterzwei, 0, 0
DrawImage Fensterdrei, 0, 0
DrawImage Fenstervier, 0, 0
DrawImage Tuer, 0, 0
DrawImage tuerzwei, 0, 0
DrawImage gegnerkoerper, 0, +150
DrawImage gegnerkopf, 0, +150
DrawImage gegnerzweikoerper, 250, 150
DrawImage gegnerzweikopf, 250, 150
DrawImage einsdeckung, 0, +150
DrawImage zweideckung, 250, 150
If gegnerleben=0 Then DrawImage einstot, 0, 150
If gegnerzweileben=0 Then DrawImage zweitot, 250, 150
If Einsstellung<230 And einsstellung>220 Then DrawImage einsmuzzle, 0,+150
If Einsstellung=230 Then boom= PlaySound (feuer)
If Einsstellung=230 And KeyDown (57)= False Then eigenleben= eigenleben-5
If zweistellung<230 And zweistellung>220 Then DrawImage zweimuzzle, 250,+150
If zweistellung=230 Then boom= PlaySound (feuer)
If zweistellung=230 And KeyDown (57)= False Then eigenleben= eigenleben-5
If KeyDown (57) Then DrawImage eigenedeckung, 0, 0
If MouseDown (1)=True And cooldown=coolmaster=True And Munition>0 And KeyDown (57)= False Then DrawImage flash, gunx+flashx, guny+flashy
DrawImage Gun, GunX+gundrawdiffx, GunY+gundrawdiffy
DrawImage Point, GunX+gundrawdiffx, GunY+gundrawdiffy

If eigenleben<=0 Then
Cls
Print "You Died "
Print "Retry!"
Gosub auswahl
EndIf


DrawImage leben, 0, 0

;Gegner
If einsstellung< 411 Then Einsstellung=einsstellung -1
If einsstellung=-2 Then Einsstellung=410

If einsstellung<300 Then Gegnerkoerper=Einsdeckungbody
If einsstellung<280 Then Gegnerkoerper=einsstehenbody
If Einsstellung<200 Then Gegnerkoerper=Einsdeckungbody
If Einsstellung<150 Then gegnerkoerper= einsweg
If einsstellung<300 Then Gegnerkopf=Einsdeckunghead
If einsstellung<280 Then Gegnerkopf=einsstehenhead
If Einsstellung<200 Then Gegnerkopf=Einsdeckunghead
If Einsstellung<150 Then gegnerkopf= einsweg

If zweistellung< 411 Then zweistellung=zweistellung -1
If zweistellung=-2 Then zweistellung=410

If zweistellung<300 Then Gegnerzweikoerper=zweideckungbody
If zweistellung<280 Then Gegnerzweikoerper=zweistehenbody
If zweistellung<200 Then Gegnerzweikoerper=zweideckungbody
If zweistellung<150 Then gegnerzweikoerper=zweiweg
If zweistellung<300 Then Gegnerzweikopf=zweideckunghead
If zweistellung<280 Then Gegnerzweikopf=zweistehenhead
If zweistellung<200 Then Gegnerzweikopf=zweideckunghead
If zweistellung<150 Then gegnerzweikopf=zweiweg

;Treffer Indikator
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, gegnerkoerper, 0, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Schmerz= PlaySound (Au)
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, gegnerkoerper, 0, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then gegnerleben=gegnerleben-schaden
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, gegnerkopf, 0, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Schmerz= PlaySound (kopfschuss)
If Cooldown=coolmaster And ImagesCollide (Point, GunX-gundrawdiffx, GunY+gundrawdiffy, 0, gegnerkopf, 0, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then gegnerleben=gegnerleben-kopfschaden
If gegnerleben=0 Then Gegnerkoerper= einsweg
If gegnerleben=0 Then gegnerkopf= einsweg
If gegnerleben=0 Then einsstellung=411
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, gegnerzweikoerper, 250, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Schmerz= PlaySound (Au)
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, gegnerzweikoerper, 250, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then gegnerzweileben=gegnerzweileben-schaden
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, gegnerzweikopf, 250, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Schmerz= PlaySound (kopfschuss)
If Cooldown=coolmaster And ImagesCollide (Point, GunX-gundrawdiffx, GunY+gundrawdiffy, 0, gegnerzweikopf, 250, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then gegnerzweileben=gegnerzweileben-kopfschaden
If gegnerzweileben=0 Then Gegnerzweikoerper= zweiweg
If gegnerzweileben=0 Then gegnerzweikopf= zweiweg
If gegnerzweileben=0 Then zweistellung=411

;Zerstörung Tür eins
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, tuer, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Tuerleben= Tuerleben-schaden
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, tuer, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then knack=PlaySound (splitter)
If Tuerleben< 40 Then tuer=tuerbameins
If tuerleben< 20 Then tuer=tuerbamzwei
If tuerleben< 5 Then tuer=tuerbamdrei

;Zerstörung Tür zwei
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, tuerzwei, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Tuerzweileben= Tuerzweileben-schaden
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, tuerzwei, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Knack= PlaySound (Splitter)
If Tuerzweileben< 40 Then tuerzwei=tuerzweibameins
If tuerzweileben< 20 Then tuerzwei=tuerzweibamzwei
If tuerzweileben< 5 Then tuerzwei=tuerzweibamdrei

;Zerstörung für Fenster eins
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, fenster, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then fensterleben= fensterleben-schaden
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, fenster, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Knack= PlaySound (Crack)
If fensterleben< 10 Then fenster=fensterbameins
If fensterleben< 5 Then fenster=fensterbamzwei


;Zerstörung für Fenster zwei
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, fensterzwei, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then fensterzweileben= fensterzweileben-schaden
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, fensterzwei, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Knack= PlaySound (Crack)
If fensterzweileben< 10 Then fensterzwei=fensterzweibameins
If fensterzweileben< 5 Then fensterzwei=fensterzweibamzwei

;zerstörung für fenster drei
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, fensterdrei, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then fensterdreileben= fensterdreileben-schaden
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, fensterdrei, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Knack= PlaySound (Crack)
If fensterdreileben< 10 Then fensterdrei=fensterdreibameins
If fensterdreileben< 5 Then fensterdrei=fensterdreibamzwei

;Zerstörung für Fenster vier
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, fenstervier, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then fenstervierleben= fenstervierleben-schaden
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, fenstervier, 0, 0, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Knack= PlaySound (Crack)
If fenstervierleben< 10 Then fenstervier=fenstervierbameins
If fenstervierleben< 5 Then fenstervier=fenstervierbamzwei

;Zerstörung für deckung eins
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, einsdeckung, 0, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then deckungseinsleben= deckungseinsleben-schaden
If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, einsdeckung, 0, 150, 0) And MouseDown (1) And Munition>0 And KeyDown (57)= False Then Knack= PlaySound (Splitter)
If deckungseinsleben>60 Then einsdeckung=einsdeckung
If deckungseinsleben< 60 Then einsdeckung=einsdeckungleicht
If deckungseinsleben< 30 Then einsdeckung=einsdeckungmittel
If deckungseinsleben< 5 Then einsdeckung=einsdeckungstark


;Munition
If MouseDown (1)=True And cooldown=coolmaster And Munition>0 And KeyDown (57)= False Then munition=munition -1

;Schießen
If MouseDown (1)=True And cooldown=coolmaster=True And Munition>0 And KeyDown (57)= False Then cooldown=0 And kanone=PlaySound (feuer)

;wieder Aufladen
Cooldown= Cooldown+1

If Cooldown=coolmaster And ImagesCollide (Point, GunX+gundrawdiffx, GunY+gundrawdiffy, 0, Hit, 640, 512, 0) And MouseDown (1) And Munition>0 Then Tuerleben= Tuerleben-schaden

;Limit setzen
If cooldown> coolmaster Then Cooldown= coolmaster

;wenn er Nachladen muss
If Nachladezeit=newmagpunkt=True Then Nachladen= PlaySound (newmag)
If Nachladezeit=chargepunkt=True Then Nachladenzwei= PlaySound (charge)
If Nachladezeit=chargepunkt Then StopChannel Nachladen
If Nachladezeit=nachladesource-1 Then StopChannel Nachladenzwei
If munition= 0 Then Nachladezeit=0
If Munition= 0 Then Munition= -1
Nachladezeit= Nachladezeit+1
If Nachladezeit>nachladesource Then Nachladezeit= nachladesource
If Nachladezeit=nachladesource-1 Then munition = magazin
If Nachladezeit=intervall1 Then Gun=rauseins
If Nachladezeit=intervall1 Then Point=Pointeins
If Nachladezeit=intervall2 Then Gun=rauszwei
If Nachladezeit=intervall2 Then Point=Pointzwei
If Nachladezeit=intervall3 Then Gun=rausdrei
If Nachladezeit=intervall3 Then Point=Pointdrei
If Nachladezeit=intervall4 Then Gun=reineins
If Nachladezeit=intervall4 Then Point=Pointvier
If Nachladezeit=intervall5 Then Gun=reinzwei
If Nachladezeit=intervall5 Then Point=Pointfünf
If Nachladezeit=intervall6 Then Gun=reindrei
If Nachladezeit=intervall6 Then Point=Pointsechs
If Nachladezeit=intervall7 Then Gun=durcheins
If Nachladezeit=intervall7 Then Point=Pointsieben
If Nachladezeit=intervall8 Then Gun=durchzwei
If Nachladezeit=intervall8 Then Point=Pointacht
If Nachladezeit=nachladesource Then Gun=gunner
If Nachladezeit=nachladesource Then Point=pointer

;Programm endet
Flip
Until KeyHit (1)
End

Pummelie

BeitragDi, Aug 06, 2013 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Blond Panda hat Folgendes geschrieben:
Das problem liegt nicht am code. Es ist schließlich bei jedem spiel so. Auch denen von anderen entwicklern.
Es sind nicht die 60 FPS, die mich stören. Es ist mir nur aufgefallen, dass es so ist, obwohl solche Spiele bei mir mit 1000 FPS laufen.


Es liegt an deinem Code, du verwendest vertikale Synchronisation.
Andere Entwickler machen das auch.
Du verwendest Frame - Abhängige Programmierung, dh. das dein Programm soschnell läuft wie es die Grafikausgabe tut. - Das machen andere Entwickler nicht.

Du lädst die Font in der Schleife: - Verlangsamt, läd Speicher voll, produziert enorme Festplattenaktivität während der Programmlaufzeit.
It's done when it's done.

count-doku

BeitragDi, Aug 06, 2013 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Jap wie Pummelie schon schreibt.
Änder das Flip mal in ein Flip 0 und lade die Font vor der Schleife.

Auch die ganzen ImagesCollide können bremsen. Siehe Forensuche und Hilfe

Xeres

Moderator

BeitragDi, Aug 06, 2013 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich sollte dir dieser Code binnen zweier Minuten um die Ohren fliegen; Wenn du LoadFont in der Hauptschleife ausführst, füllst du den Speicher bis er irgendwann platzt.
Lade nichts in der Hauptschleife!

Ansonsten solltest du mit Flip(0) und Waittimer arbeiten. So verbrauchst du 100% CPU Leistung mit dem warten darauf, dass der Buffer wirklich fertig bearbeitet wurde. Siehe dazu: Hurra, 100 % Auslastung

Als nächstes solltest du dir gleich Gosub abgewöhnen. Benutze Funktionen. Die Kapseln den Code und erlauben es, strukturiert zu programmieren.

Dann solltest du dir die grundlegenden Strukturen nochmal ansehen und den Code optimieren:
BlitzBasic: [AUSKLAPPEN]
If gegnerzweileben=0 Then Gegnerzweikoerper= zweiweg
If gegnerzweileben=0 Then gegnerzweikopf= zweiweg
If gegnerzweileben=0 Then zweistellung=411

;*** Besser:

If gegnerzweileben=0 Then
Gegnerzweikoerper= zweiweg
gegnerzweikopf= zweiweg
zweistellung=411
EndIf
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Blond Panda

BeitragDi, Aug 06, 2013 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja, wie schon gesagt bin ich noch recht unerfahren im entwickeln.
Die Font hab ich jetzt rausgehauen. Die war sowieson noch nicht in verwendung (das spiel ist erst in der 0.01 alpha und ich hatte vor, später die munition damit auszugeben Smile. )
Hm... schneller wird's dadurch nicht... aber ich lass sie trotzdem draussen. An dem, was du gesagt hast, wird schon etwas wahres dran sein. Very Happy
Weiterhin bleibt dann noch die Frage, warum es bei meinem Bruder viel schneller läuft...
wie ist das mit Frame gemeint? Die Frage ist wahrscheinlich dumm aber das könnte die Lösung sein.
 

Kruemelator

BeitragDi, Aug 06, 2013 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ist mal ein Grundaufbau von sogut wie jedem Prorgamm von mir, vielleicht hilft es dir/euch:
BlitzBasic: [AUSKLAPPEN]
;Allgemein----------------------------------------
Global xfenster = 800
Global yfenster = 600
Global mx
Global my
Global mz
Global mxs
Global mys
Global mzs
Global mht1
Global mht2

Graphics xfenster,yfenster,32,2
SetBuffer BackBuffer()


;Laden--------------------------------------------
;Hier wird alles wie Bilder, Sound usw. geladen

;Start--------------------------------------------
;Hier werden Variablen die man immer wieder braucht gesetzt und alles für das Spiel vorbereitet
;z.B. das Platzieren von Objekten an ihrer Startposition und ähnliches

;Hauptschleife------------------------------------
fps = CreateTimer(60)
While Not KeyHit(1)
WaitTimer(fps)
Cls
mx = MouseX()
my = MouseY()
mz = MouseZ()
mxs = MouseXSpeed()
mys = MouseYSpeed()
mzs = MouseZSpeed()
mht1 = MouseHit(1)
mht2 = MouseHit(2)
time = MilliSecs()

;Hier kommt alles hin wie: Malen/Berechnen/Spielereingabe
;Packe soviel wiemöglich in Funktionen, am besten alles

If KeyDown(57) Then Text 10,10,MilliSecs()-time;Leertaste gedrückthalt im Zeit für einen Schleifendurchgang zu sehen
Flip 0
Wend
End



;Funktionen---------------------------------------
;Hier packst du Funktionen hin

Pummelie

BeitragDi, Aug 06, 2013 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Frame

Ich ändere meine Aussage von früher wie folgt:
"dir ersteinmal ein paar allgemeine Informationen zu diesem Themengibt aneignen " -> "dir ersteinmal ein paar englische Wörter aneignen"

Der PC deines Bruders ist verstellt/defekt.
It's done when it's done.
 

Blond Panda

BeitragDi, Aug 06, 2013 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
haha, ich wollt mir die CPU ausklastung ansehen und hab deswegen den Fullscreen rausgenommen.
CPU= 25%
Viel erstaunlicher ist, dass das Spiel dann in seiner eigendlichen Geschwindigkeit läuft.
also viiieeeel zu schnell.

Jaaaaaaa, die Ifs brauchen wirklich ne überarbeitung.
Ist gosub wirklich so schlimm, wenn es einmal vorkommt und das nur, wenn der Charakter stirbt?

Mir geht es jetzt erstmal darum, dass ich meine Spiele idee umsetze, die ich plötzlich hatte.
Leider geht das nicht, wenn ich das Spiel viel zu lahm programmiere.
Määääh.

Aber danke schonmal für die fleißige hilfe.
Seid mir bitte nicht böse, dass ich so nen hässlichen Code zusammenklebe. Wink
Ich will mein Spiel dafür ja auch Modbar machen Very Happy

Pummelie

BeitragDi, Aug 06, 2013 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Vergiss das Spiel...

Lerne das Programmierung erstmal in Ansätzen, hole dir dann am besten einen 2. Programmierer und versuche dich dann erneut.

Du hast 4 Kerne, 1 Thread auf 100% = 1 CPU Kern 100% = 25%
It's done when it's done.

Xeres

Moderator

BeitragDi, Aug 06, 2013 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn deine CPU vier Kerne besitzt, nutzt BB dann also einen zu 100% aus - nicht schön für Stromrechnung und Lebenszeit (siehe link).

Gosub ist "schlimm" weil es keinen rationalen Grund gibt, diese Struktur zu benutzen. Gosub und Goto gab es, weil man früher einfach nichts besseres hatte. Vergiss, dass es das gibt und lerne mit Funktionen um zu gehen.

Wenn man etwas richtig machen will, braucht es eben Zeit - besonders, wenn du keine Erfahrung mit dem hast, was du tust.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

count-doku

BeitragDi, Aug 06, 2013 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Die 25% kommen daher, dass es auf einem Kern 100% sind. Da B3D nur einen nutzt sagt der Taskmanager dann 25%...

Wenn es jetzt gut läuft, kann es am ImagesCollide und Vollbild liegen, das gibt auf manchen grakas probleme. Siehe auch die Forumsuche dazu.

Und sonst mach halt jetzt nen Timer rein. Xeres hat ja 100% Auslastung bereits gepostet. Sieh dir das mal an.
Zum Spiel, ich würde Pummelie nicht komplett zustimmen, dass du es komplett vergessen solltest. Aber dir vllt. mal ein paar Tutorials und kleinere vorher Dinge anschauen.

Ansonsten mach es kurz und simpel.
  • Zuletzt bearbeitet von count-doku am Di, Aug 06, 2013 21:44, insgesamt 2-mal bearbeitet

Tennisball

BeitragDi, Aug 06, 2013 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie Pummelie schon gesagt hat, solltest du dich wirklich erstmal mit Grundlagen auseinandersetzen. Suche dir am besten hier Tutorials raus und arbeite sie komplett durch: https://www.blitzforum.de/foru...622#324622

Gruß,
Tennisball
 

Blond Panda

BeitragDi, Aug 06, 2013 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Junge. Ich stehe Eins in Englisch. (Angebermodus enabled)
http://www.youtube.com/user/Determinationchannel
Hier ist mein Youtube Kanal, falls du es mir nicht glaubst.

Ein frame heißt eigendlich Rahmen. In diesem Falle ist es ein Bild.
FPS bedeutet Frames per second. Das bedeutet Bilder Pro Sekunde.

Ich verstehe nur den Zusammenhang mit meinem Programm nicht.

Du sagtest nunmal (übersetzt) "du arbeitest mit Bild." Oder noch schlimmer: "Du arbeitest mit Rahmen."

Es macht echt keinen Spaß, sich mit einer Programmierer Sprache auseinander zu setzen, wenn die Leute, denen man eine Wichtige Frage Stellt einen gleich als ein "nichts" oder sowas in der Art abstempeln.

Man könnte wenigstens in wenig mehr höfligkeit erwarten! Crying or Very sad

Der PC meines Bruders ist frisch und Nagelneu aufgesetzt.
Bei anderen Rechnern ist es das selbe Problem.
Und das schreibe ich hier echt nicht das erste mal! Mad

count-doku

BeitragDi, Aug 06, 2013 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Denke, der Großteil der Antworten war freundlich - deine war die erste unfreundliche.
Pummelie schrieb FrameAbhängigeProgrammierung, dies bedeutet, das dein Programm an die Hz deines Monitors angepasst ist. Und somit bei unterschiedlicher Hardware unterschiedlich schnell läuft.
( was du auch mit Google hättest erfahren können)

Außerdem schreiben auch wir Sachen nicht zum ersten Mal. Es gab diese Probleme schon oft.
Ich habe bereits mehrmals geschrieben, dass du dich bitte mit der (deutschen) Hilfe, und der Forensuche auseinandersetzen solltest. Dort werden eigentlich alle Fragen beantwortet.
Gerade die Probleme mit Flip, VSync und so weiter hatten wir schon.

Probiere beispielweise mal ein einfacheren Testcode.
Zum Beispiel: BlitzBasic: [AUSKLAPPEN]
Graphics 400,300,0,2
SetBuffer BackBuffer()

Local ms=MilliSecs()+1000,count,fps
Local timer=CreateTimer(60)
Repeat
; Ein fps counter
count=count+1
If MilliSecs()>ms Then
fps=count
count=0
ms=MilliSecs()+1000
EndIf
Text 1,1,"FPS: "+fps
Flip 0
WaitTimer timer
Cls
Forever

End



Das sollte mit 60FPS laufen. Wenn du daran jetzt dein Programm anpasst, wird das auch was. Ansonsten muss du zumindest mal einen einfacheren Testcode mit gleichen Problemen bringen. Denn den anderen können wir nicht ausführen.

Auch schrieb ich schon mehrmals von Problemem mit ImagesCollide auch hier werden in der Hilfe alternativen genannt....

Pummelie

BeitragDi, Aug 06, 2013 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
"Du verwendest Frame - Abhängige Programmierung" <> "Du arbeitest mit Bild"

Es macht echt keinen Spaß, sich mit einem Anfänger auseinander zu setzen, wenn dieser erfolgreich alle Warnungen missachtet, die Grundbegriffe nicht kennt, und Links die ihm geben werden ignoriert.

Man könnte wenigstens ein wenig mehr Einsatzwillen erwarten.

Ist ein PC frisch und nagelneu, dann ist er nicht nur falsch, sonder gar nicht konfiguriert.
Das du etwas mehrfach schreibst kommt wohl daher, da du glaubst man müsse einmalig gegebene Informationen nicht für voll nehmen, was sich dahingehend auswirkt, das dir ein und die selbe Information nun von uns mehrfach gegeben wird.

Schon zu Beginn dieser Diskussion wurde dir ein Befehlsparamter für Flip beschrieben der dein Problem lösen sollte, hast du diesen denn bereits ausprobiert?

Mir scheint das dir mit der langsamen Mitteilungsgeschwindigkeit hier im Forum nicht angemessen schnell geholfen ist. - Komm doch kurz zu uns ins TS (pummelie.de)...
It's done when it's done.
 

Blond Panda

BeitragDi, Aug 06, 2013 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiterhin:
NEIN! Ich vergesse das Spiel nicht.
Es funktioniert wie es soll! Ich freu mich darüber.
Denkst du ich schmeiß das alles über bord?
Ich nehme mir auch gerne das ein oder andere mal meinen Bruder zu hilfe.

Es geht mir darum, dass das Spiel äuft. Und nicht darum Wie ich meinen PC nicht überfordere.
Ich habe nicht gesagt, dass 25% gut sind
genau so hab ich nicht gesagt, dass 25% schlecht sind.

An alle, die sich wirklich mit dem Problem auseinander gesetzt haben und mir ernsthaft (und auf gute Art und Weise) geholfen haben, vielen Dank für eure hilfe. Ich werde mir definitiv noch tutorials ansehen. Very Happy

An alle anderen: danke, dass ihr mir die gute laune verdorben habt Mad
Hätte ich vorher gewusst, dass man hier behandelt wird, als würde man das Alphabet nicht beherrschen, häötte ich dieses Thema nie angefangen.

Gute nacht.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group