Viele! Bunte Smileys von Markus |
Die wollte ich auf dem Desktop tanzen lassen ... darum habe ich es auch mal hier rein gepackt :shock: Der Trick ist dabei das man Interger Werte für die Bewegungen benutzt (nicht FLOAT!) , also 1 2 4 8 . Bis 30 FPS sieht das Auge das nicht und es erscheint fließend !!! :idea: Also alle die ein Spiel schreiben sollten das berücksichtigen !!! Wenn ich an die Amiga Zeit denke wo ich nur 8 Sprites darstellen konnte sind 5000 schon eine ganze Menge , natürlich fehlen noch die berechnungen bei einem Spiel etc. aber immer hin :roll: [code:1:4a50f2fd93] ; Blitz Basic 2D Example ; MR 18.03.2003 ; 640x640 =5000 Sprites 16x16 ohne zu ruckeln mit Geforce4 TI4200 !!! :-))))) Const width=640 , height=480 Graphics width,height,16,1 SetBuffer BackBuffer() Global numcolours=256 ; play with this value SeedRnd(312498756) ; and this too Type Ball Field x,y,xs,ys Field col End Type Global bcnt=0 Dim ball_image(numcolours) For loop=0 To numcolours rff=70:gff=50:bff=70: Color rff+Rnd(255-rff),gff+Rnd(255-gff),bff+Rnd(255-bff) Oval 0,0,16,16 ; draws eyes and mouth.. Color 4,4,4 Plot 5,5:Plot 11,5 Plot 4,8:Plot 4,9:Plot 5,10 Plot 12,8:Plot 12,9:Plot 11,10: Line 6,11,10,11 ball_image(loop)=CreateImage( 16,16 ) GrabImage ball_image(loop),0,0 MidHandle ball_image(loop) Next Color 255,255,0 CreateBalls() Local t# While Not KeyDown( 1 ) t=MilliSecs() Cls Text 0,0,"Balls="+bcnt Text 0,FontHeight(),"Arrow key left to remove - Arrow key right to add" UpdateBalls() RenderBalls() While Abs(MilliSecs()-t)<10.0 Wend Flip Wend End Function CreateBalls() Local dx,dy,k For k=1 To 2 bcnt = bcnt + 1 b.Ball=New Ball bx=Rnd( 8,width-8 ) by=Rnd( 8,height-8 ) dx=Rnd(0,1) If dx=0 Then dx=-1 dy=Rnd(0,1) If dy=0 Then dy=-1 bxs=Rnd(1,4 )*dx bys=Rnd(1,4 )*dy bcol=Rnd(numcolours) Next End Function Function RemoveBalls() For k=1 To 2 bcnt = bcnt - 1 Delete First Ball Next End Function Function UpdateBalls() If KeyDown( 205 ) CreateBalls() Else If KeyDown( 203 ) RemoveBalls() EndIf For b.Ball=Each Ball bx=bx+bxs If bx<8 Or bx>width-8 Then bxs=-bxs:bx=bx+bxs by=by+bys If by<8 Or by> height-8 Then bys=-bys:by=by+bys Next End Function Function RenderBalls() For b.Ball=Each Ball DrawImage ball_image(bcol),bx,by Next End Function [/code:1:4a50f2fd93] |
von ??? |
Sehr nett, aber es gibt nen kleinen Bug bei der Ballzählvariable. Bei der kann man unter 0 gehen und dann sind 0 da aber sobald man wieder raufgeht kommen wieder welche und so verrutscht der 0 punkt immer mehr ins -. |
von ??? |
jo, mann kann die smylie anzahl auch ins minus setzen... 5000 sprites --- es ruckelt ohne ende natürlich mit ner Geforce2 mx 400 :mrgreen: |
von ??? |
[quote:ba541435d8="Niclas"]jo, mann kann die smylie anzahl auch ins minus setzen... 5000 sprites --- es ruckelt ohne ende natürlich mit ner Geforce2 mx 400 :mrgreen:[/quote:ba541435d8] Naja , kann man mit leben , ist ja nur ein Beispiel . |
von ??? |
Hab eine Geforce2 MX 400 13000 Sprites ohne ruckeln ^-^ habs bissel veränder das er net immer nur 2 dazu zählt sonder 1000 :o vielleicht rückelt es bei mir nicht da ich 768 MB DDR Ram hab und 2,4 Ghz :o |
von ??? |
Jo , ganz gut :-) :-) :-) EDIT FÜR @LASSE :-) * 8000 |
von ??? |
hi, hmmm, ich habe ihn auch entdrosselt. Habe nen 800er mit 256 MB und Gforce4 Aber, BB muß ne macke haben ! Oder kann mir das einer erklären ? bis zu 1320 smiley 148 FPS bis 1500 sind es noch 130 bei 1600 sind es 85 bei 1700 noch 75 und von 1700 bis 3100 bleiben die FPS auf 75, hmm, warum ? ab 3500 - 4700 sind es 51 FPS Warum dies witzigen Sprünge und Löcher ? Toni |
von ??? |
@Hot-Bit... was für eine Geforce4 hast du? eine MX ? Den auch das: [quote:53d2d5fb74] bis zu 1320 smiley 148 FPS bis 1500 sind es noch 130 bei 1600 sind es 85 [/quote:53d2d5fb74] Ist schon mal ziehmlich wenig. Da bringt meine Geforce3 mehr... Also an BB liegt das nicht... |
von ??? |
Hi, es ist eine Nvidia GeForce4 MX 420 Mit 20000 Smileys habe ich noch 13 FPS Toni |
von ??? |
[quote:63153e2af3="HOT-BIT"]...Warum dies witzigen Sprünge und Löcher ?...[/quote:63153e2af3] Denke mal das es an der synchronisation der Bildanzeige liegt . Bei 50 Hz hat man pro Bildaufbau 20 ms Zeit , danach kann man sich 40 ms zeit lassen weil ein Bild übersprungen wird . Versuche mal Flip 0 |
von ??? |
Hi, das mit Flip 0 kannte ich schon. Hab da so knapp 1400 FPS. Habe mich nun mal mit den Einstellungen der Grafikkarte befasst. Gibt da 2 Einstellungen: Memory Clock - war von Haus aus auf 333 MHz und Core Clock - war auf 250 MHz Habe nun Autoadjust drüberlassen, und siehe da, habe nur mehr 100 FPS bei 10 Smileys. Habe nun bei Memory Clock 405 MHz. Alle FPS-Werte bleiben gleich, nur daß ich nicht mehr mit 150 FPS starte. Lustig ! Bei 60000 Smileys habe ich noch 5 FPS Toni |
von ??? |
@ Markus: Ein Smilie reicht also nimm mal bitte den rest weg... sie nehmen nur unützen platz weg... :) |