Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Game Maker Domäne. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

janni

Zenturio

  • »janni« ist der Autor dieses Themas

Beiträge: 22

  • Private Nachricht senden

1

Freitag, 30. September 2005, 21:20

Sand programmieren

Hi,

ich habe bereits Sand programmiert, frei fallende Sandkörner, die am Boden liegen bleiben und sich anhäufen, und bei Wegfall des Bodens dann weiter runter fallen.

Funktioniert alles bestens.

Problem:
Da jedes Sandkorn ein Object ist, wird bei einigen tausend Körnern plötzlich alles sehr sehr langsam bis zum Stillstand. Ich muss aber Millionen Körner schaffen, um daraus ein Spiel zu machen.

Frage? Wie schaffe ich das???

Agnahim

Vergoldete D-Mark

Beiträge: 342

Game Maker Version: 6 registriert

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

2

Freitag, 30. September 2005, 21:29

Ein erster Schritt wäre schonmal, nicht gebrauchte Körner zu deaktivieren, der GM bietet ja Funktionen dazu an.
Alternativ würde ich vorschlagen, dass du nicht das Objekt-System des Gms benutzt, der ja Sprites zur Kollisionsprüfung heranzieht und das ist für Pixel (sofern das bei dir zutrifft) nicht gerade effektiv, sondern das sebst berechnest.

Eine Optimierungsmöglichkeit, die bei beiden systemen funktionert ist die Körner evtl zu gruppieren und wenn sie ganz bedeckt sind o.ä. wie ein großes zu berechnen, spart je nach größe der Grupp einen Haufen Abfragen.

Um es richtig Optimieren zu können, wäre es von Nutzen, zu wissen, was genau du mit dem Sand vorhast usw.

nico525

Topfdämon

Beiträge: 256

  • Private Nachricht senden

3

Freitag, 30. September 2005, 21:56

evtl wäre hier auch ein partikeleffekt angebracht weiß aber nicht...

Zitat

Nicht das Programm macht den Künstler, sondern der Künstler das Programm.


Rechtschreibfehler (c) by me

Speedy^

Kaugummi

  • »Speedy^« wurde gesperrt

Beiträge: 90

  • Private Nachricht senden

4

Freitag, 30. September 2005, 22:21

naja wenn du jeden sandkorn als object machst ist das klar aber es muss doch nen partikel also partikel geben oder musste mal die ganzen partikel durch gucken vielleicht ist ja eins dabei

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Speedy^« (30. September 2005, 22:22)


nico525

Topfdämon

Beiträge: 256

  • Private Nachricht senden

5

Freitag, 30. September 2005, 22:29

du könntest ja auch punkte drawen lassen un ddann verschwinden sie wieder und kommen bei nem x-1 wieder wäre aber wohl auch net flüssiger

Zitat

Nicht das Programm macht den Künstler, sondern der Künstler das Programm.


Rechtschreibfehler (c) by me

janni

Zenturio

  • »janni« ist der Autor dieses Themas

Beiträge: 22

  • Private Nachricht senden

6

Freitag, 30. September 2005, 22:40

Drawen braucht die gleichr Rechenzeit

Das mi dem Punkte Drawen hab ich auch schon versucht,sobald ein sandkorn liegt, wird das Objekt gelöscht und ein Punkt gedrawd.

Das Interssante dabei: Auch gedrawte Punte benötigen die gleiche Rechenzeit wie ein Object.

King Andre

Gevatter Tod

Beiträge: 677

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

7

Freitag, 30. September 2005, 22:42

Das ist kein Wunder, da GM das eigntlich nur in deinen RAM zeichent. Zusätzlich schickt es an den Proessor einen Befehl, dass er das "Bild" im Ram auf den Bildschirm zeichnen soll.

janni

Zenturio

  • »janni« ist der Autor dieses Themas

Beiträge: 22

  • Private Nachricht senden

8

Freitag, 30. September 2005, 22:48

hmm...

Ja, man müsste dann irgendwie die Pixel ins Hintergrunbild fest rein kopieren, so dass die Pixel Teil des kompletten Hintergrundbild werden.

Dragoon

Foreneigener Hausdrache

Beiträge: 714

Game Maker Version: 6 registriert

Selbsteinschätzung: GML Experte

  • Private Nachricht senden

9

Samstag, 1. Oktober 2005, 13:56

ich habs immer so gemacht: zuerst ist es ein 32*32 grosses objekt. wenn es aufgeteilt wird werden daraus 4 16*16 objekte wenn wieder welche davon aufgeteil werden wird dann sind ses 4 8*8 dann 4 4*4 etc....
Dragoon
int (*x(*x(int))[5])(int*);
Confused? Yes, it's C!