Breite eines Videos festlegen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

Xeres

Moderator

BeitragDo, Aug 22, 2013 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Standardwerk dazu heißt Hurra, 100 % Auslastung.
Wenn du einen Timer und Flip(0) benutzt und immer noch die CPU belastest, musst du mal messen & ausprobieren, was so viel Zeit beansprucht. Nur das zu zeichnen was auch wirklich sichtbar ist und Abfragen so zu Schachteln, dass erst schnelle und einfache Prüfungen gemacht werden, macht das allermeiste aus.
Was danach kommt sind sehr spiel-spezifische Optimierungen, die weniger offensichtlich sind und von deinen Datenstrukturen abhängen - darüber solltest du dir noch keine Gedanken machen müssen.
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)

Jamagin

BeitragDo, Aug 22, 2013 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Dazu sag ich jetzt nichts mehr!
Jedes Programm verbraucht Ressourcen und wie bitte soll man da bei einem kleinen Programm noch tricksen?
Ich arbeite auch mit Photoshop CS6 und bin vollends zufrieden damit. Zu deiner Frage wegen der Frames oder wo das nächste beginnt, hängt davon ab wie groß du deine Einzelbildchen machen willst!
Angenommen du willst eine Animation mit 4 Bilder machen und ein Bild ist 32x32 Pixel dann ist deine Endgrafik 128x32 Pixel groß und du kannst da auch dann den Raster in Photoshop so einstellen das dieser 32 Pixel Abstand hat! Du kannst aber auch andere Größen verwenden, kommt immer drauf an wie groß deine Objekte schlußendlich sein sollen! Du kannst aber auch eine Grafikdatei mit 1024x1024 Pixel machen und jede Menge Objekte da rein platzieren. Da mußt du dann eben die Koordinaten herausschreiben wo welches Bild ist!
Das kann ja nicht so schwer sein! Oder du legst alle Grafiken einzeln an und fügst sie im Speicher zusammen. Wie einer halt will!

Xeres hat deine Frage eh schon ganz gut beantwortet!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte
 

Bobo2040

BeitragDo, Aug 22, 2013 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Das war ja nur ne frage... Braucht man sich ja nicht so aufzuregen tut mir leid das ich kein cs crack bin ... Und woher soll ich das denn wissen das man bei cs rastern kann ? Soll ich das ausm quellcode denn ich nichtmal hab rauslesen oder was !? Man kanns ja auch einfach und ganz normal sagen z.b. So du gehst auf einstellungn und dann auf rastern damits hatte sich das auch erledigt....und @xerxes danke guck mir das mal an .. Smile

Jamagin

BeitragDo, Aug 22, 2013 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
@bobo2040,

ich habe mich ja nicht aufgeregt! sorry, wenn es kalt rüberkam! habe es ja nur veranschaulicht, weil du vom frameabstand bzw. größen geschrieben hast!
Nicht gleich eingeschnappt sein, okay!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte
 

Bobo2040

BeitragDo, Aug 22, 2013 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem Frameabstand hab ich schon verstanden gehabt... nur wollte ich wissen mit welchem programm ich das machen kann ... das ich die frame größe aussuchen kann und er mir dann ne art tabelle darum macht damit ich sehe wo das nächste bild ist Wink

DAK

BeitragDo, Aug 22, 2013 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab dafür nie ein besonderes Programm verwendet. Gepixelt habe ich damals meist noch in Paint, und da habe ich hald einen Ramen mit der Größe eines Frames (z.B. 32x32) gemacht, und diesen Ramen mit Copy&Paste über das ganze Bild verteilt, also links oben angefangen und immer rechts/unten neben dem letzten angesetzt. Das braucht nicht lange und dafür braucht man kein besonderes Programm.

Da sich von Frame zu Frame eh immer nur ein wenig verändert habe ich beim Pixeln meist einfach mit einem Frame angefangen, und nachdem er fertig war, ihn nach rechts kopiert und umgestaltet. Auf diese Weise geht alles in einem Arbeitsschritt. Am Ende muss man dann hald noch per Farbfüller die Ramen wieder wegtun.

Ansonsten google einfach mal nach [Name deines Lieblings-Grafikprogramms] + Raster.

Offtopic: @Bobo: hab ich eine PM? Hab ich keine gesehen. Schick sie eventuell nochmal.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Bobo2040

BeitragFr, Aug 23, 2013 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay Very Happy
Habs gefunden ...
Falls jemand sowas sucht hier ist der Link:
CS6 Raster einstellen

Damit hat sich das Thema hier erledigt danke an alle die mir geholfen haben
und mir Tipps gegeben haben Wink Und das ihr so viel gedult habt :**

EDIT:
Also ich habs Probiert und klappt soweit auch NUR ... werden nicht alle 8 Frames geladen/angezeigt... sondern nur 5 die Letzten Drei werden eiskalt übersprungen Sad
Und ich bekomme den Hintergrund nicht Transparent... egal als was ich es abspeichere... Sad
Obwohl das Bild im Browser Transparent gezeigt wird also es sieht jetzt nicht schön oder so aus... aber ich sehe den Hintergrund ... bei dem .bmp zwar nicht aber bei dem .png ... nur in B+ ist er dann halt weiß Sad
Wie kann ich da den Alpha wert rausnehmen ?

Hier mal mein Bild:
[img]
http://www.grazy-games.de/pics/exploFrame1.png
[/img]
Ihr könnt auch auf der Hauptseite beim ersten Bild direkt sehen, das Der Hintergrund Transparent ist...

Offtopic: @DAK so hab nochma ne PM geschickt wenn die nicht angekommen ist ist vllt. dein Speicher voll oder so ... Sad

DAK

BeitragFr, Aug 23, 2013 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du bei dem LoadAnimImage die Frameanzahl (5. Parameter) richtig eingegeben? Dort musst du eingeben, wie viele Frames geladen werden sollen.

@PM: habe ich gesehen, werde dir antworten.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Bobo2040

BeitragFr, Aug 23, 2013 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja hab ich Very Happy
BlitzBasic: [AUSKLAPPEN]

Graphics 640, 480, 32
SetBuffer BackBuffer()
gfxSparks = LoadAnimImage("exploFrame1.png", 128, 128, 0, 8)
MaskImage gfxSparks, 255, 0, 255
DebugLog("Bild:"+gfxSparks)
While Not KeyHit(1)
Cls
If MilliSecs() > tmrSparks + 500 Then
tmrSparks = MilliSecs()
frmSparks = (frmSparks + 1) Mod 4 End If
DrawImage gfxSparks, 1, 1, frmSparks
Flip
Wend

Das ist der Code aus der help... habs nur so nen bisschen verändert.. hab 8 angegeben ... kannst wenn du willst ja mal das bild downloaden und das Script testen...
Mfg

Tennisball

BeitragFr, Aug 23, 2013 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die Maskierfarbe anpassen. Wenn du z.B. schreibst: MaskImage gfxSparks, 255, 0, 255 musst du in deinem Bild alle Pixel die später transparent sein sollen, mit dieser Farbe (also 255, 0, 255) einfärben.

Gruß,
Tennisball
 

Bobo2040

BeitragFr, Aug 23, 2013 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Asooooo Very Happy
Okay danke ^^
So jetzt ist es schonmal transparent Very Happy
Nur werden trozdem nur 5 Frames angezeigt Sad

Tennisball

BeitragFr, Aug 23, 2013 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Mich würde es wundern, wenn mehr als 4 Frames angezeigt würden. Wink
Schau dir mal folgende Zeile genauer an:
BlitzBasic: [AUSKLAPPEN]
frmSparks = (frmSparks + 1) Mod 4


Gruß,
Tennisball
 

Bobo2040

BeitragFr, Aug 23, 2013 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm ja dachte der Mod ist dafür da welcher Modus es sein soll ? oder irre ich mich da ?
Jap tu ich eben getestet Very Happy
Ich dussel xD
Hmm okay Very Happy und wie kann ich das Bild dann wieder aus dem Bildschirm entfernen ? Mit freeimage gings nicht...

Holzchopf

Meisterpacker

BeitragFr, Aug 23, 2013 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Gar nicht. Du musst einfach drüber malen.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

Bobo2040

BeitragFr, Aug 23, 2013 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne mach ich nicht... ist total unsauber einfach was zu übermalen ...
Habes jetzt so gemacht:
BlitzBasic: [AUSKLAPPEN]

Graphics 640, 480, 32
SetBuffer BackBuffer()

Global rounds=1
Global Animation = LoadAnimImage("exploFrame1.png", 128, 128, 0, 8)
Global Black = LoadImage("Black.png")
Global gfxSparks = Animation
Global DrawBlack = 0
MaskImage gfxSparks, 255, 255, 255

While Not KeyHit(1)
Cls
DrawExplosion()
Flip
Wend

Function DrawExplosion()
While rounds<9
If MilliSecs() > tmrSparks + 4000 Then
If rounds=8 Then
gfxSparks=Black
DrawBlack = 1
Else
tmrSparks = MilliSecs()
frmSparks = (frmSparks + 1) Mod 8
rounds = rounds+1
EndIf
EndIf
If DrawBlack=0 Then
DrawImage gfxSparks, 1, 1, frmSparks
Else
DrawImage gfxSparks, 10, 10
EndIf
Wend
End Function

Nur aus irgendeinem grund aktualisiert er das fenster nicht -.-'
Er hattest aktualisiert bis ich das in ne Funktion gemacht hab und seitdem gehts nicht mehr...
Und als ichs wieder so wie davor gemacht hab gehts auch nicht mehr -.-'

EDIT:
So nachdem ich die while schleife in der Function rausgenommen hab gehts wieder... nur leider zeichnet er mit jetzt ein Bild und das ist das 3 oder 4 das ist so schnell weg so schnell kann ich nicht gucken -.-'
BlitzBasic: [AUSKLAPPEN]

Graphics 640, 480, 32
SetBuffer BackBuffer()

Global rounds=1
Global Animation = LoadAnimImage("exploFrame1.png", 128, 128, 0, 8)
Global Black = LoadImage("Black.png")
Global gfxSparks = Animation
Global DrawBlack = 0
MaskImage gfxSparks, 255, 255, 255

Repeat
Cls
DrawExplosion()
Flip
Until KeyHit(1)

Function DrawExplosion()
If MilliSecs() > tmrSparks + 400 Then
tmrSparks = MilliSecs()
If rounds=8 Then
gfxSparks=Black
DrawBlack = 1
Print "Schwarz"
Else
frmSparks = (frmSparks + 1) Mod 8
rounds = rounds+1
EndIf
EndIf
If DrawBlack=0 Then
DrawImage gfxSparks, 1, 1, frmSparks
Else
DrawImage gfxSparks, 1, 1
EndIf
End Function


Ok Very Happy
EDIT 3 :
So jetzt gehts ^^
BlitzBasic: [AUSKLAPPEN]

Graphics 640, 480, 32
SetBuffer BackBuffer()

Global rounds=1
Global Animation = LoadAnimImage("exploFrame1.png", 128, 128, 0, 8)
Global Black = LoadImage("Black.png")
Global gfxSparks = Animation
Global DrawBlack = 0
Global frmSparks
Global tmrSparks
MaskImage gfxSparks, 255, 255, 255

Repeat
Cls
DrawExplosion()
Flip
Until KeyHit(1)

Function DrawExplosion()
If MilliSecs() > tmrSparks + 50 Then
tmrSparks = MilliSecs()
If rounds=8 Then
gfxSparks=Black
DrawBlack = 1
Else
frmSparks = (frmSparks + 1) Mod 8
rounds = rounds+1
EndIf
EndIf
If DrawBlack=0 Then
DrawImage gfxSparks, 1, 1, frmSparks
Else
DrawImage gfxSparks, 1, 1
EndIf
End Function

Xeres

Moderator

BeitragFr, Aug 23, 2013 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar. Die Variablen tmrSparks und frmSparks sind ja nur Lokal in der Funktion vorhanden und werden jedes mal neu initialisiert.

Flip(0) + Timer solltest du auch benutzen.
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)
 

Bobo2040

BeitragFr, Aug 23, 2013 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das weiß ich Very Happy
Weil ich sonst 100% Cpu hab Wink
Nur das war jetzt zum Test und wird ins Hauptspiel eingebunden Very Happy
Das wäre dann hier eig. alles geklärt hoffe ich ^^
Mfg

BladeRunner

Moderator

BeitragSa, Aug 24, 2013 9:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Ne mach ich nicht... ist total unsauber einfach was zu übermalen ...

nope. Es ist genau der Weg den man gehen sollte - solange Du was zeichnen willst tust du das, wenn es dann nicht mehr zu sehen sein soll wird es durch nachfolgende Grafiken oder beim Turnusmäßigen Löschen (merke: pro Programm nur ein CLS und ein Flip) entfernt.
Da darfst Du gern Leuten glauben die das seit mehreren Jahren praktizieren.
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

BeitragSa, Aug 24, 2013 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja mach ich ja auch ... nur hört sich das nicht schön an und
ich weiß ja nicht wie gut er BB kann Wink
In PHP benutzt man ja auch nicht nur 1 Variable für alles und überschreibt diese 1 Variable permanent...
Und deshalb dachte ich das das nicht gut ist etwas zu "übermalen".
Aber meine Lösung geht doch auch oder zieht die zu viel Ressourcen/ist zu Langsam ?
Mfg

BladeRunner

Moderator

BeitragSa, Aug 24, 2013 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke von einem Moderator hier im Portal kannst Du erwarten dass er einige Erfahrung im Umgang mit der Sprache hat.
Es ist ja auch nicht so dass du immer die gleiche Variable überschreibst. Du verwendest das Bild halt nur solange wie es nötig ist und mittels einer Zustandsvariable bestimmst Du ob gezeichnet werden soll oder nicht.
Ich denke bei kleineren Projekten solltest Du mal den Resourcenverbrauch erstm al ein wenig aussen vor lassen. Moderne Rechner haben dermaßen viel Speicher und Rechenleistung dass Du - wenn Du nicht grade Resourcen in der Hauptschleife lädst- eine Menge luft hast.
Es ist löblich sparen zu wollen, aber grade wenn Du noch ungeübt bist kümmere dich erst mal um Problemlösungen und dann optimiere.

Zu deinem Code: Das Bild black ist nicht notwendig, denn mit cls löschst Du vorm einzeichnen ja den Bildschirm. Da ist also nichts was überpinselt werden muss.
Es reicht etwas in der Art:

BlitzBasic: [AUSKLAPPEN]
If explodiert = True Then
DrawImage explosion,bla bla bla
EndIf

Nur wenn die Variable explodiert auf true gesetzt ist wird gezeichnet, ansonsten passiert einfach nichts.
Die Variable setzt du zu beginn der Animation auf true und hinterher wieder auf false. Das wäre alles.

EDIT: Wenn Du merkst dass dein Rchner in die Knie geht, dann ist der Zeitpunkt gekommen zu optimieren. Und dann wird in der Regeln nur das Optimiert was wirklich deutliche Verbesserungen bringt. Bis dahin, lern erst mal die Grundlagen. Viel Erfolg!
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

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group