- Registriert
- Jan. 2006
- Beiträge
- 704
Hey Leute,
Ich habe aber festgestellt, dass es für mich einfacher ist bei der Entwicklung von solchen Algorithmen sich hauptsächlich um die Funktion zu kümmern, als um die Struktur des Quellcodes. Das und die Optimierung können dann später folgen ...
Daher ist auch z.B. die Tastaturgeschichte nur so rudimentär implementiert und ich mische auch heavyweight und lightweight Komponenten ...
Nun noch zwei Fragen, zu denen ich auch ein Paar Denkanstöße gebrauchen könnte:
* Ein "Stripe" zeichnet sich also durch eine Höhe und einer Position von oben aus und ist einen Pixel breit. Wenn man sich jetzt im Raum dreht und z.B. sich eine Wand (z.B. 6|3) anschaut hat die eine Dicke. Wo kann ich steuern, wie dick die Wand ist? Und wie bekomme ich jetzt meine Textur auf die Wand? D.h. technisch ist mir das schon klar, ich meine aber wie ich immer den richtigen Pixel-Streifen finde, sodass am Ende auch die ganze Textur lückenlos/sprunglos dargestellt wird? (War das verständlich?)
* Wie sorge ich für mehr "Differenzierung" in der Ansicht? D.h. die Wände und Co. werden ja korrekt gerendert. Aber das Auge vermischt eben die Ecken, wo zwei gleichfarbige Wände orthogonal aufeinander stehen. Wie kann ich z.B. alle südlichen oder nördlichen Wände dunkler einfärben. Also feststellen, ob es sich bei dem aktuellen Ray um ein nördliches oder südliches handelt?
Jetzt muss ich mich nur noch um das ordentliche Rendering kümmern und eine kleine Storyline entwickeln ... da bin ich ja FAST schon fertig!
Beste Grüße & Danke für die Unterstützung,
Gruß,
CPU
Danke! Auch wenn es erst nach dem dritten Ansatz funktioniert hat ...e-Laurin schrieb:Herzlichen Glückwunsch, dass du das hinbekommen hast!
Ich muss selber mal sehen, dass ich dafür die Zeit finde, denke aber, dass es machbar sein sollte (wenn auch nicht heute oder morgen)!e-Laurin schrieb:Wenn du ein Tutorial dazu machst, werde ich mir das definitiv durchlesen. Mit Nacharbeiten wird es da bei mir schwerer; ich habe ein paar eigene Projekte in der Warteschlange. Meeh, der Tag hat zu wenig Stunden.
Ich denke, dass das Ergebnis relativ genau ist und genau genug für diesen Spieltypus.e-Laurin schrieb:Das mit den Linien hängt damit zusammen, dass du eine begrenzte Anzahl Strahlen losschickst. Es sind nicht genug, um jeden Winkel einer Fläche oder einer Wand beliebig genau abzutasten. Also entweder lässt du es so, oder du wirfst mehr Strahlen raus (zB in Halbgradschritten).
Naja, übersichtlich ist der Code ja noch nicht, weil zu einem großen Teil noch viel Debug-Kram mit drin ist.e-Laurin schrieb:In deinem Code hat sich wieder viel getan. Die ganzen kleinen Methoden hast du eliminiert und Codeabschnitte hast du mit einem Kommentar versehen. Es ist doch so gleich viel übersichtlicher.
Oh, sorry. Ich sehe das ganze hier als eine "Demo" und nicht ein richtiges Spiel oder Programm. Ich habe jetzt den Algorithmus implementiert und er funktioniert und dann kann ich jetzt mich ransetzten und mir ein Klassengerüst erdenken, worein ich dann später den Algorithmus kopieren werde.e-Laurin schrieb:Was ich aber noch anmerken möchte:
- Es zählt als Best Practice, wenn man globale und lokale Variable an den Anfang der Klasse und Methode setzt. So hat man einen zentralen Ort. Bei dir sind sie im Moment noch gerne in der Gegend verteilt, weswegen andere Leute etwas länger nach der Deklaration suchen.
Ob man das so machen will, ist eine reine Stilfrage.
Ich habe aber festgestellt, dass es für mich einfacher ist bei der Entwicklung von solchen Algorithmen sich hauptsächlich um die Funktion zu kümmern, als um die Struktur des Quellcodes. Das und die Optimierung können dann später folgen ...
Daher ist auch z.B. die Tastaturgeschichte nur so rudimentär implementiert und ich mische auch heavyweight und lightweight Komponenten ...
Klar!e-Laurin schrieb:- Da der Code nun funktioniert, und sich am Algorithmus nicht mehr wesentlich etwas verändern wird, wird es langsam Zeit für Doc Comments.
Siehe Grund oben!e-Laurin schrieb:- Die Sichtbarkeiten sind etwas komisch gesetzt. Es ist ein buntes Durcheinander von public, protected, private und package. Da solltest du noch einmal drüber gehen.
Nun noch zwei Fragen, zu denen ich auch ein Paar Denkanstöße gebrauchen könnte:
* Ein "Stripe" zeichnet sich also durch eine Höhe und einer Position von oben aus und ist einen Pixel breit. Wenn man sich jetzt im Raum dreht und z.B. sich eine Wand (z.B. 6|3) anschaut hat die eine Dicke. Wo kann ich steuern, wie dick die Wand ist? Und wie bekomme ich jetzt meine Textur auf die Wand? D.h. technisch ist mir das schon klar, ich meine aber wie ich immer den richtigen Pixel-Streifen finde, sodass am Ende auch die ganze Textur lückenlos/sprunglos dargestellt wird? (War das verständlich?)
* Wie sorge ich für mehr "Differenzierung" in der Ansicht? D.h. die Wände und Co. werden ja korrekt gerendert. Aber das Auge vermischt eben die Ecken, wo zwei gleichfarbige Wände orthogonal aufeinander stehen. Wie kann ich z.B. alle südlichen oder nördlichen Wände dunkler einfärben. Also feststellen, ob es sich bei dem aktuellen Ray um ein nördliches oder südliches handelt?
Jetzt muss ich mich nur noch um das ordentliche Rendering kümmern und eine kleine Storyline entwickeln ... da bin ich ja FAST schon fertig!

Beste Grüße & Danke für die Unterstützung,
Gruß,
CPU
Zuletzt bearbeitet:
(Ich habe die zweite Frage geändert, da ich die Lösung schon erübrigt hat!)