Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

11

30.04.2014, 12:30

Also bewegt sich der Spieler (bzw. dessen Farbe) oder ist überall wo der Spieler war seine Farbe, also eine Art "Spur"? Wenn die Farbe des Spielers keine Spur hinter sich herzieht, wäre es relativ einfach zu machen.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

30.04.2014, 12:35

So wie ich es verstanden habe, zieht er eine Spur. Aber man kann ja inkrementell bei jeder Bewegung mit dem bisherigen Anteil verrechnen. Würde ich jedenfalls so machen. Wahlweise geht's vielleicht auch mit einem Shader relativ performant alle Anteile zu berechnen. Auf der CPU würde ich das jedenfalls nicht empfehlen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

13

30.04.2014, 14:12

Ja, es ist eine Schleimspur.
Das wäre eine Idee. Dann müsste ich aber trotzdem noch jeden Frame 50x50px pro Spieler überprüfen.

Wichtig zu beachten ist:
Es reicht wirklich wenn ich das am Ende ein einziges Mal machen. Ich brauche diese Auswertung nur ein einziges Mal machen, wenn das Spiel vorbei ist. Da ist die Anstrengung doch eigentlich nicht nötig, die Performance ist in dem Fall eher unrelevant, sprich es darf ruhig ein bisschen Zeit vergehen, es kommt nicht auf jede Millisekunde an.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

30.04.2014, 14:22

Besser x*50*50 als gleich 800*600 (oder mehr, k.A. wie groß Dein Feld ist).

Edit:
Ach Du willst das nur einmalig machen? Ja dann zieh Dir die Textur wieder von der GPU auf die CPU und zähl dann. Das ist ja ein ganz spezieller Anwendungsfall. Ich dachte es geht hier um eine live-Auswertung in jedem Frame.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

15

30.04.2014, 14:51

Das kann ich auch immer noch machen. :)

Aber wie mach ich das denn genau, wie hole ich mir das Texture wieder in die CPU? Andersrum ist das ja ganz leicht.
Oder wie hole ich mir einen Teil der Bilds zurück, um die 50x50 nur auszuwerten...?

Gruß

Jannik

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

30.04.2014, 16:39

Das kann ich auch immer noch machen. :)
Kannst Du eben nicht. Das Ziehen der Textur von der GPU auf die CPU dauert so lange, dass das Spiel dann nicht mehr flüssig läuft. Daher ist es *jetzt* wichtig zu wissen, *was* Du eigentlich tun willst.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

17

30.04.2014, 19:32

Du hast mich falsch verstanden, ich wollte damit sagen, dass ich das ja erstmal auf die leichte Tour machen kann und das am Ende ein Einziges mal machen kann, und auf die andere bessere Live-Variante später zurückkommen könnte.

Aber nehmen wir mal die Live-Version, mein Problem ist trotzdem das selbe, ich habe einen Spieler, der an einer bestimmten Position steht und an genau dieser das Rechteck unter ihm analysieren muss, und dafür muss ich da ja irgendwie rankommen. Und das geht ja doch nur über die Textur, wenn ich vorher wie ein wilder mit RenderFillRect am machen und tun war?

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

18

30.04.2014, 20:26

Wie BlueCobold bereits sagte, ist es nicht so gut in der Textur rumzustochern beziehungsweise sie als Datenspeicher zu verwenden.
Ich frage mich ob ein Array oder so etwas sinnvoll wäre, da dies dann fast bzw. größer als 1 MB wäre (kommt auf die Auflösung an). Trotzdem wäre ein Zugriff da drauf vielleicht schneller.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

19

30.04.2014, 20:27

Das ist aber genau das, was ich kritisiere. Wenn Du es live jeden Frame berechnen willst, solltest Du tunlichst die Finger davon lassen es über eine Textur zu machen, eben weil der Download von der GPU auf die CPU nicht in Echtzeit zu machen ist.

@birdfreeyahoo: 1MB ist nichts. Eine Textur mit 32Bit ist bei 512*512 Pixeln auch schon 1MB groß. So what.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

20

01.05.2014, 11:17

Also, nun denn, wie soll ichs dann machen?

a. Alles in ein Surface mit ein paar ifs bemalen, und am Ende dann zu einer Texture umwandeln und rendern?
b. Oder doch das Array nehmen und das nebenbei befüllen sowie abprüfen?

Werbeanzeige

Ähnliche Themen