Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
10.01.2001, 15:41
nofL



Erstmal gleich zum Anfang:
Ich kann zwar (auch wenn nicht gerade umwerfend) ein wenig C++ coden, bin jedoch im HL-Coding noch nicht so bewandert, da ich kein MSVC++ besitze. Einiges konnte ich jedoch auch schon hier im Forum aufschnappen und verstehe allmählich die Grenzen und Tücken von HL.

So nun mal eine Herausforderung für euch Coder:
Ich weiss, dass das Thema Spiegel schon mindestens 1000mal angesprochen wurde, doch es lies mir einfach keine Ruhe. Ich habe mir die kompliziertesten Wege ausgedacht und musste sie immer wieder verwerfen, weil sie, wenn es überhaupt jemand schaffen sollte, einen Programmierer mindestens ein halbes Jahr beschäftigen würde.
Also fing ich ganz einfach an. Denken wir an den alten Mapper-Trick in dem man einfach denn gewollten Raum spiegelverkehrt angrenzend baut. Da bleibt das Problem der Models, sie werden leider nicht gespiegelt.
Jetzt seid ihr dran liebe Coder. Meine Idee ist, dass man das Playermodel einfach auch zweimal macht (Ok die Monster werden dann halt nicht gespiegelt, aber das lässt sich mit jeweils diesen Models wohl auch machen.) Das 2.Playermodel wird beim Levelstart erstellt und in irgend einer Ecke des Levels "gelagert". Wenn der Player dann denn Raum oder Bereich im "Blickfeld"(das wäre dann ein eigens für dies gecodetes Entity) des Spiegels betritt fragt dieses Entity jeweils die Animation, die Blickrichtung und die Position(xyz) des Playermodels ab. Nun wird der Gegenwert für das 2.Model über einen Origin-Brush, welcher an der Stelle ist an dem der Spiegel sein soll, berechnet:
-Der z, also höhenwert, bleibt gleich
-Bei x und y wirds wohl ein wenig schwerer:
Ich habe mir gedacht, dass man eine Linie senkrecht durch denn Origin und den Player legt. Nun fragt man die Distanz zwischen Player und Origin Brush ab, verdoppelt sie und trägt diese auf die Linie auf(Anfangspunkt der Distanzabtragung=Player) => Standort des 2.Models.
Bild
Um die Blickrichtung des 2. Models festzulegen zieht man von der Player-Blickrichtung 180° ab.

Der Spiegel der so gecodet werden kann ist bestimmt nicht das tollste da es noch viele Probleme (r_speeds, Platzprobleme,...usw) gibt, doch ich finde es ist immerhin ein Anfang. Wer perfekte Spiegel will, muss wohl oder übel auf eine andere Engine wechseln.

So, vieleicht habe ich was vergessen, aber das würde mir dann irgendwann schon wieder in den Sinn kommen.
Hoffe natürlich, dass ich jetzt einige Coder ein wenig warm gemacht habe und bin auf die Ergebnisse (galube, dass es jemand so oder vielleicht auch anders schafft) gespannt.

cu
NoFL

Edit:
Ach irgendwie geht das Bild net, hier die Adresse:
http://www.fortunecity.de/lachsack/otto/148/spiegelhl.gif
Nicht drauf klicken, sondern im Browser eingeben!

--

zum Seitenanfang zum Seitenende Profil || Suche
001
10.01.2001, 16:00
user3427



Diese Lösung hat einen offensichtlichen Nachteil: Der Spieler könnte sich selbst sehen, einen anderen Spieler würde er aber an der falschen Stelle sehen, weil sich das Model nach deiner Lösung immer da befindet, wo der Spieler der Jeweiligen Figur sein Model sehen würde.
Es müsste dann für jeden Spieler jeweils ein Model für jeden anderen Spieler geben (wenn man überhauot Models erstellen kann, die für den einen Spieler sichtbar sind und für den anderen nicht). Das wären bei 10 Spielern bereits 100 Models (Im Extremfall, wenn alle in den Spiegel gucken). Ich denke die Performance-Probleme dadurch wären gewaltig.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
10.01.2001, 17:48
[PE]Spinator



Wenn ein Spieler1 vor dem Spiegel steht, dann steht sein Parallel-Model auf der anderen Seite davon und es ist spiegelverkehrt... Wenn ein anderer in den Spiegel schaut, dann steht das model auch für den anderen Spieler(2) an der richtigen Stelle, nämlich auf der anderen Seite des Spiegels parallel zum Spieler1. Es spielt keine Rolle von welchem Blickwinkel man das betrachtet, d.h. es braucht nicht 100 sondern nur 10 zusätzliche models auf 10 Spieler, und die Models können für alle sichtbar sein...

--

This post was written using Opera 7.0 (http://www.opera.com)

zum Seitenanfang zum Seitenende Profil || Suche
003
10.01.2001, 17:53
[MXM]Dark



Äh, das Bild geht immer noch nich...

wenn man das mit Single-Player maps und kleinen Räumen macht, könnte das sogar klappen, ...

cu [MXM]Dark

--

...Vergiss niemals die Dunkelheit...
---
Sword Warriors Mod
--

zum Seitenanfang zum Seitenende Profil || Suche
004
10.01.2001, 17:58
nofL



Ja sorry das mit dem Bild läuft irgendwie nit :-(

Und eigentlich habe ich es auch nur für SP gedacht! ansonsten wirds wirklich nicht so doll.

Eben ein Spiegel mit vielen Einschränkungen aber ich dachte es ist immerhin ein Anfang.

cu
NoFL

--

zum Seitenanfang zum Seitenende Profil || Suche
005
10.01.2001, 18:02
Another1



Mhh, garnicht so schwer denke ich, das kann man ja ohne probleme alles clientside machen!! dann hat es 0.00% server ping sonstwas erweiterung und man kann ja jedem spieler offen lassen, ob er ws spiegeln will oder nit, also, wirklich nit so schwer!

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
006
10.01.2001, 21:44
SpineBuster



jo another1, dann mach mal, lol

Die Half-Life Engine ist überhaupt nicht dafür ausgelegt und ausserdem, wozu braucht man Spiegel?
Normalerweise benutzt man einen von OpenGL speziel zur Verfügung gestellten Buffer, ich glaube es war der Stencil Buffer . Der ist optimiert dafür, dass man Spiegel(Reflections) erzeugt und selbst das ruckelt manchmal schon ein wenig, wenn viele Objekte verfügbar sind.

Ich halte das nicht für sinnvoll, wenn man das machen soll mans halt, aber die Idee ist trotzdem kreativ ;)

--

zum Seitenanfang zum Seitenende Profil || Suche
007
10.01.2001, 21:54
Another1



mmhh, is wirklich nit soo schwer! nur ein func_mirror, mirror achse eingeben und da haste dein mirror

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
008
10.01.2001, 22:44
SpineBuster



aargh!

Ja, es ist nicht schwer aber ist laaaaaaangsam, verdammt.

--

zum Seitenanfang zum Seitenende Profil || Suche
009
11.01.2001, 01:09
Another1



wieso laaaangsam ? genau einfach die doppelte anzahl von triangles/ model das gespiegelt wird, das is doch alles!

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
010
11.01.2001, 12:12
nofL



Ja es wird in grossen Räumen bestimmt langsam (besonders wenn viele Mosdels gespiegelt werden müssen) aber ich denke es bringt schon nur zB. ein Spiegel auf einer kleinen Toilette erheblich Atmosphäre mit sich.

cu
NoFL

--

zum Seitenanfang zum Seitenende Profil || Suche
011
11.01.2001, 14:35
Prefect



Also, eure dummen r_speeds-Argumente sind _völlig_ sinnlos. Es sollte doch jedem vernünftigen Menschen klar sein das NATÜRLICH mehr Rendererzeit benötigt wird wenn man Spiegel einbaut.

Und Spiegel sollten nicht optional sein, denn sie können sich auf's Gameplay auswirken (du siehst deine Gegner hinter dir im Spiegel...). Und ja, jede Spiegelimplementation wollte clientseitig sein.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
012
13.01.2001, 11:42
nofL



Will das denn niemand versuchen? Ach kommt schon...
Wisst ihr noch was damals diese Pics vom Opera-Mod für Wind gemacht haben? Ein Spiegel wäre doch ein Werbegag für jeden Mod!
Haut euch mal rein...

cu
NoFL

PS. Ich will doch nicht das meine Idee einfach nicht ausgeführt wird, nur weil ich nicht so gut im coden bin. Zeigt was ihr könnt!!! :-)

--

zum Seitenanfang zum Seitenende Profil || Suche
013
13.01.2001, 12:43
Another1



@Prefect: Hab ich was anderes gesagt?
@NoFL, ich werd mich mal ransetzen: (für www.confidentialmod.com)

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche