Grafiken vorberechnen?
Übersicht

![]() |
TravisBetreff: Grafiken vorberechnen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe vor einen Asteroids-Clone zu programmieren und suche jetzt eine kompfortable Methode meine Grafiken möglichst Speicherplatzsparend zu speichern und schnell zu laden.
Sämtliche Objekte im Spiel müssen um 360° drehbar sein, d.h. ich brauche für jedes Objekt 360 Einzelbilder! Wenn ich jetzt aus einzelnen Bitmaps heraus am Anfang alle Einzelbilder vorberechne, dauert das bei X verschiedenen Objekten natürlich viel zu lange. Wenn ich diese Vorberechnung nur einmal mache und dann eine neue BitMap-Datei mit den Einzelbildern erstelle, kann ich diese sehr schnell mit LoadAnimImage laden. Dann habe ich aber das Problem, dass die Dateien relativ Groß sind. Ich möchte dem Spieler ungerne zumuten, dass er jedesmal eine Minute warten muss, bis das Spiel geladen ist. Andererseits sollten die Grafiken aber auch nicht zu Groß werden. Irgendwer wird doch sicher schon mal was ähnliches gemacht haben. Vielleicht hat ja jemand eine kompfortablere Lösung. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
xperience2003Betreff: ... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kommt auf die game-grafik an, aber ich denke es müssen keine 360 einzelbilder sein ...es reichen auch alle 2 grad ein bild
du kannst ja im vordergrund ein einleitungsintro laufen lassen und im hintergrund alles vorberechnen lassen...das merkt auch keiner wenn dir das immer doch zu langsam ist: lass doch die bilder berechnen , speicher das gesammtbild ab und lädst beim spielstart nur das gesammte fertige bild als animimage ein |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, ich will meine Asteroiden rotieren lassen. Wenn ich jetzt nur 180 Einzelbilder nehme, dann sieht die Bewegung bei langsamer Rotation unsauber aus.
Und ein Bild erstellen und mit LoadAnimImage laden funktioniert wunderbar, nur sind dann die Grafiken allein für 2 Asteroidentypen und dem Spieler schon fast 10 MB groß. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
AbrexxesBetreff: Re: Grafiken vorberechnen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Travis hat Folgendes geschrieben: Sämtliche Objekte im Spiel müssen um 360° drehbar sein, d.h. ich brauche für jedes Objekt 360 Einzelbilder!
übertreibst du da nicht ein bischen? Um genaue Drehungen (zb) darzustellen hat mann dem 2D abgesagt und 3D entwickelt.Was du also brauchst sind 3D objekte,keine 360 Einzelbilder. Bei der Resourcenverschwendung wird wohl so macher 08/15 PC in die Knie gehen.Wenn s den so sein soll,dann lass alles beim ersten Start vorberechnen und legs auf der Festplatte ab,aber so mancher wird dann wohl nicht in den genuss des Games kommen. cu Linux |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit 3D ist das wieder so eine Sache. Dann müßte ich für alles 3D Objekte haben, außerdem ist das nicht gerade mein Fachgebiet. Hätte sicherlich diverse Vorteile auch vom Licht und den Effekten her, aber damit habe ich überhaupt keine Erfahrung. ![]() Ein gutes 2D-Game ist sicher besser als eine schlechte 3D-Variante. Was die Performance angeht, da bin ich der Meinung, dass alles was auf einem 1 Ghz-Rechner ordentlich läuft, in Ordnung ist. Was langsameres wird doch heute eh nicht mehr verkauft. Da bin ich relativ rücksichtslos ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
- Zuletzt bearbeitet von Travis am Di, Mai 18, 2004 22:31, insgesamt einmal bearbeitet
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das stimmt,ich hab aber in meinem Leben (C64/Amiga/AtariST/PC) noch kein 2D-Objekt (Sprite/BoB) gesehen das eine drehung mit 360 schritten gemacht hat.
auf dem C64 waren es in der Regel 8/Amiga/Atari/PC-DOS 16 oder 32 (sehr flüssig). cu Linux |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder nimm runde Asteroiden dann sieht man nicht das ruckeln wenn man
nur 8 Bilder hat ![]() |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es kommt wohl ganz auf die Geschwindigkeit an. Wenn man schnell dreht, dann reichen 36 Einzelbilder, aber je langsamer die Bewegung sein soll, desto mehr Einzelbilder brauche ich eben, damit es flüssig aussieht.
Ich möchte einzelne Asteroiden ja sehr langsam drehen, also brauche ich schon 360 Einzelbilder. Ähm, und runde Asteroiden nehme ich sicherlich nicht. Kann man nicht Sprites nehmen? Die kann man doch in Echtzeit drehen. Dann wirds aber schwierig mit der Kollisionsabfrage. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich kann Linux nur zustimmen, 32 (oder von mir aus 64) Animationsschritte sind mehr als genug (wenn du nicht gerade Asteroiden hast welche mehr als den halben Screen bedecken).Mal ein wenig provokant: wenn wir das 400° System nutzen würden, müssten es dann 400 Schritte sein damit es flüssig genug ist? (nicht bös gemeint, ich hoffe du verstehst worauf ich hinaus will) | ||
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 |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest zb auch ein 180Grad drehung immer wiederhohlen (Grafik so austüfteln das Ausgangspunkt und Endpunkt Identisch sind,dann bräuchtest du nur noch 180 Bilder.(Halbiert)
Gehen wir davon aus du dir zusätzlich jedes 2te Bild sparen kannst (versuchs) dann wären wir schon bei 90.So würdest du langsam aber sicher in NORMALE Bildraten kommen.(Geviertelt)Ausserdem solltest du die Drehung der Asteroiden mit der Refreshrate der Graka syncronisieren,dann siehst schon wesentlich flüssiger aus.(Die Sprünge beim animieren entfallen) cu Linux |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Benutze Sprites. Für die Kollisionsabfrage kannst du einfache Kreise, also Entfernung berechnen und wenn die kleiner ist als ein bestimmter Wert, dann gibts Kollision. Das merkt eh niemand. Wenn du eine Kollision Mit einem Raumschiff oder so haben willst, kannst du ja immer noch einen Kreis in ein Bild zeichnen und dann ImagesCollide benutzen.
Noch ein Vorteil von Sprites: Du kannst die Meteoriten auch noch ohne zusätzliche Ladezeiten in der Größe verändern. |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann werde ich mich wohl auf 180 Bilder beschränken und die Bewegung etwas schneller machen. | ||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
360 Einzelne Animationsstufen zu nehmen ist sehr unrealistisch.
Viel weniger müßten auch genügen. Wenn es bei langsamen Rotieren unsauber wirkt, lass es ein wenig schneller rotieren. Du kannst auch 2D mit 3D kombinieren. Du kannst das Spiel überwiegend als 2D Spiel progremmieren aber in 3D Fenster laufen lassen und die Asteroiden machst du als 3D Objekt. Das ist extrem speicher sparend und vollkommen sauber animiert. |
||
ZaRaK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mach aus den asteroiden einfach nen kleines video und lass die ablaufen :> | ||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ ZaRaK
Du meinst, evtl als animiertes GIF? Währe vielleicht auch eine Lösung, dann wäre es aber wieder schwierigmit unterschiedlichen Drehgeschwindigkeiten. Egal, ich habe mich jetzt für 180 Einzelbilder entschieden, die ich einmal vorberechne und dann als neue BMP speichere! Dann mus der User später eben 5MB Speicherplatz opfern. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
PeerBetreff: 360° Bilder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab in meinem Spiel Starcommander Raumschiffe mit 360° Drehung verwendet!. Ging richtig gut!
Download hier Im Download ist der Source enthalten. Und wenn man die Bilder als png speichert sind sie auch richtig schön klein! |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kennst du Astrorock? Das ist ein hammergeiler Asteroids-Clon. Die Grafiken sind 2D (lief auf meinem P75 und Win95 damals sehr flüssig) - jedoch waren die Grafiken gerendert. Ein Asteroid hatte sich um 3 Achsen gedreht (langsam!) und hatte sicher 32 frames pro umdrehung gehabt - sonst wäre das Spiel bei 1MB VRAM wohl unspielbar ![]() http://store.ifd.com/product_i...ucts_id=67 (hier ist sogar 2000er Version - wobei ich glaube, dass frühere besser ausgesehen hat) |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Ensign Joe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] RotateImage ?
|
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo, dieses Astrorock sieht echt cool aus. Vielleicht mache ich es auch so, dass man ein größeres Spielfeld hat und dann gescrollt wird, wenn man zum Bildschirmrand kommt. Das bringt glaube ich noch mehr Fun, als nur eine Bildschirmgröße zu benutzen.
Jetzt habe ich auch ungefähr einen Plan, wie's weitergeht. Ich werde mein Raumschiff auch mit Schutzschilden ausstatten. Dann baue ich noch Gegner ein. Wenn man die Abschießt, gibt's Extras. Da wären z.B. Schildverstärker, Raketen, Extraleben oder auch Mienen denkbar. Das Schwierigste dabei werden mal wieder die Grafiken und die Special-Effekts. *seufz* |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Kekskiller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei StarTrash ahtte ich das Problem erst auch, habe mich dann
aber für RotateImage entschieden, da ich das Spiel auch downloadbar machen wollte. Obwohl, wenn man den TFormFilter einschaltet, dann sieht das schon viel flüssiger aus, frisst aber viel mehr Zeit in sich hinein. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group