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

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

181

10.10.2009, 12:51

Zitat von »"fred2507"«

meiner meinung nach eignen sich vektorgrafiken zur bearbeitung da viel besser als pixelorientierte zeichenprogramme.
.

Das würde ich so zu 100% unterschreiben und Inkscape ist ohnehin ein geniales Programm!

Sizzla

Frischling

Beiträge: 72

Wohnort: Klagenfurt

  • Private Nachricht senden

182

11.10.2009, 03:12

Zitat von »"fred2507"«


weiß nicht ob das nen richtigen namen hat. level sind halt als bilder gespeichert, kollision ist pixelbasiert mithilfe der coll.png. zum erstellen der level nutzte ich inkscape und ein grafiktablett. meiner meinung nach eignen sich vektorgrafiken zur bearbeitung da viel besser als pixelorientierte zeichenprogramme.
vorteil der weißen linien ist der minimierte rechenbedarf für die kollision, nachteil ist ein etwas höherer speicherverbrauch, welcher sich aber auch in grenzen hält, wenn man wie ich nur positionen der weißen pixel in einem array speichert und nicht alle pixelwerte.
selbst das größte level (level 6) benötigt so nur 64-128 MB Ram, und die hat ja mittlerweile wohl jeder.


Danke für die detailierte Erklärung :)
Mich interessiert sehr die 2D Programmierung, deshalb kann ich diese Infos gut gebrauchen.
Künstliche Intelligenz ist leichter zu ertragen als natürliche Dummheit !
--------------------------
http://www.kasser-manuel.com

idontknow

unregistriert

183

11.10.2009, 21:09

Wie setzt du das ganze dann um? (mit der Kollision)
Berechnest du aus der coll.png anhand der weißen Linie die relative Position (zum eigentlichen Levelbild) der Kollisions-Linie? oder wie?

Wäre nett mich interessieren diese Programmierdetails da ich acuh etwas mit 2D machen möchte ;).

DAs Projekt ist sehr nice macht fun, auch wenn ich nicht soo weit komme ~~.
Muss ich mal suchten wenn ich Zeit habe :D

mfg

184

11.10.2009, 21:17

Level 3 geschafft ohne einen gegner zu töten :D
Metal ist keine Musik sondern eine Religion.

185

11.10.2009, 21:54

das levelbild und die coll.png sind deckungsgleich. wies weiter geht, habe ich schon mal geschrieben:

Zitat von »"fred2507"«



in der coll.png sind weiße linien zu erkennen. diese weißen pixel werden beim start des levels in ein array geladen,dann die coll.png released. füge ich nun der position des spielers ein geschwindigkeitsvektorü hinzu, überprüft ein algo, ob sich an der stelle mit einem gewissen radius kein weißer pixel befindet. erst dann wird die neue spielerposition gesetzt. soweit ganz einfach, doch was ist wenn der weg ungerade mit steigungen ist? das ist schon ein wenig komplizierter. befindet sich der spieler am boden und bewegt sich zur seite, wird eine stelle geprüft, die ein wenig über dem zielpixel liegt. ist diese stelle pasierbar wir die stelle darunter geprüft und immer so weiter, bis entweder normalhöhe wieder erreicht wurde oder eine kollision aufgetreten ist, an die der spieler dann gesetzt wird. bsp: der spieler soll sich am boden ein pixel nach rechts bewegen. ich prüfe dann die stelle ein pixel rechts und drei pixel oben vom spieler.
wenn keine kollision prüfe ich ein pixel rechts und zwei pixel oben vom spieler.
wenn keine kollision prüfe ich ein pixel rechts und ein pixe oben vom spieler.
wenn keine kollision prüfe ich ein pixel rechts vom spieler.
tritt aber eine kollision auf so wird nicht weiter geprüft. hoffe das prinzip des "treppensteigens" ist nun klar. runterwärts neigung ist nicht so kompliziert, das übernimmt die gravitation.



also, idontknow, eine relative position zum levelbild gibt es nicht, da deckungsgleich.

Zitat von »"Fabian Kock"«

Level 3 geschafft ohne einen gegner zu töten :D


[sarkastisch] wahnsinn! [/sarkastisch]

idontknow

unregistriert

186

12.10.2009, 19:33

hmm. Das heißt du prüfst das gesamte Array ab?
der grenzt du das ein? Wenn ja wie?

mfg

187

14.10.2009, 11:32

Zitat von »"idontknow"«

hmm. Das heißt du prüfst das gesamte Array ab?
der grenzt du das ein? Wenn ja wie?

mfg


das gesamte pixelarray wird beim ladevorgang abgetastet. davor noch wird ein boolsches array mit der levelgröße angelegt. wird beim abtasten ein weißer pixel entdeckt, wird der bool an der entsprechenden stelle im boolarray eingeschaltet.
ein schon recht großes meiner level (8192*2048 pixel) braucht so nur sehr wenig speicher.
beweiß:
8192 * 2048 * 1 bit = 16777216 bits
16777216 bits / 8 = 2097152 bytes
2097152 bytes /1024 /1024 = 2,00 mb
info: im heap beträgt die größe eines bool werts im array nur ein bit.

fazit: 2 mb für die kollision eines großen levels geht doch in ordnung, oder?

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

188

14.10.2009, 12:23

jop durchaus ;)

189

14.10.2009, 19:28

Wieso 2,097152 mb. Du musst durch 1024 teilen, also kommen exakt 2 mb heraus. Und ja durchaus okay.

190

14.10.2009, 20:38

Zitat von »"Hamster->"«

Wieso 2,097152 mb. Du musst durch 1024 teilen, also kommen exakt 2 mb heraus. Und ja durchaus okay.


verdammt, flüchtigkeitsfehler

Werbeanzeige