Autor Wątek: Gra w przestrzeni 4D  (Przeczytany 14412 razy)

Offline Kos

  • Użytkownik
    • kos.gd

# Sierpień 19, 2009, 12:39:12
Zastanawiałem się ostatnio, czy byłoby możliwe zrobienie Descento-podobnej gry ze swobodnym ruchem, ale - dla odmiany - nie w pełnym 3D, ale w pełnym 4D. :D Widziałem w necie animacje tesaraktu obracającego się w czterech wymiarach, wyglądało to naprawdę fajnie. Jestem bardzo ciekawy, jak wyglądałby teren 4D (tunele?), renderowany na bieżąco i rzutowany na 2D tak samo, jak rzutujemy 3D na 2D.

Sam rendering nie sprawiłby tu chyba kłopotu. Trzeba byłoby nieco pokombinować i robić trochę operacji, które nie są przez karty graficzne obsługiwane w sposób natywny - pięcioelementowe wektory, macierze 5x5, mnożenie tego wszystkiego. Wierzę, że dałoby się to na upartego zrobić w shaderach, choć z pewnością byłoby mniej wydajne.
Reszta renderingu chyba bez zmian. :)

A sam gameplay... Hm, Spójrzmy na Descenta. Będąc w pełnym 3D, dawał graczowi 6 stopni swobody (3x ruch + 3x obrót), ale do gry wystarczała połowa: yaw, pitch i ruch przód/tył w aktualnej rotacji (oczywiście roll oraz strafe też się przydawały, ale dało się bez nich wygodnie poruszać).

Chwila zastanowienia: Ile mamy w ogóle stopni swobody w przestrzeni 4D? Ruch - oczywiście 4. Obrót... No właśnie. W 3D są 3, w 2D jest 1. A w 4D? W ile stron możemy się obracać?
Pomyślmy: W 3D, mając osie X, Y, Z, możemy określić obrót wokół każdej z tych osi. W 2D, mając osie X i Y, obracamy się... Wokół osi Z? Zaraz, WTF? :D

Inne podejście, spójrzmy sobie na macierze obrotu na współrzędnych jednorodnych.

2D, macierz 3x3: Nazwijmy sobie kolumny i wiersze następująco: "a b 1". Wybieramy wiersze "a" i "b", kolumny "a" i "b", wybieramy ich 4 przecięcia i wstawiamy tam tradycyjne cos/sin/-sin. Wychodzi jedna możliwa macierz obrotu.

3D, macierz 4x4: Oznaczamy: "a b c 1". Wybieramy wszystkie możliwe kombinacje dwóch wierszy&kolumn z trzech, olewając jedynkę. Mamy zatem 3 pary: (a,b), (b,c) i (a,c). Dla każdej pary wybieramy przecięcia i uzupełniamy je w taki sposób, jak przy 2D - wychodzą nam 3 podstawowe macierze obrotu.

4D? Analogicznie: macierz 5x5, kolumny "a b c d 1". Możliwe kombinacje to (a,b), (a,c), (a,d), (b,c), (b,d), (c,d) - jeśli analogia jest poprawna, to możemy sobie rozpisać 6 wzorów macierzy, które będą wygladać jak elementarne macierze obrotu. Dobrze kombinuję? :)


W każdym razie, 6 to sporo, bo musimy to jakoś mapować na input gracza. W Descenta dało się fajnie grać mając na myszce 2 osie z 3 - ile osi obrotu potrzebowalibyśmy mieć, by móc się w miarę swobodnie obracać w przestrzeni 4D?

« Ostatnia zmiana: Sierpień 24, 2009, 17:48:36 wysłana przez Kos »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Kuba D.

  • Użytkownik

# Sierpień 19, 2009, 12:47:09
Jakby nie patrzeć to gry 4D od dawna istnieją gdyż 4 wymiarem jest czas ;) A manipulacja czasoprzestrzenią już od dawna gości w grach.

Offline bananu7

  • Użytkownik
    • komiks RFMN

# Sierpień 19, 2009, 12:54:45
Moj kumpel jakis czas temu zaczynał prace nad grą 4D na linuchu w trybie tekstowym. Z tego co wiem zrobił tesserakt ^^. Ale nie czyta tego forum, może go namówię żeby przedstawił. Wiem że to miał być trójwymiarowy przekrój przez 4D rzutowany na 2D.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Sierpień 19, 2009, 13:02:05
Cytuj
Zastanawiałem się ostatnio, czy byłoby możliwe zrobienie Descento-podobnej gry ze swobodnym ruchem, ale - dla odmiany - nie w pełnym 3D, ale w pełnym 4D. :D
Kiedyś robiłem coś podobnego dla testu - latało się dookoła 4-wymiarowej kostki i było z tym sporo bólu głowy. Generalnie trzeba było mieć matematyczną świadomość, na co się patrzy i że wszystko ma o jeden wymiar więcej. Przykładowo, z 4-wymiarowej kostki nie wylatywało się na zewnątrz przez płaszczyznę, a przez sześcian. :)

Wizualizacja była dość prosta: 4D było rzutowane z perspektywą na "ekran" 3D, który był wirtualnym sześcianem (ekran można było obracać o niewielki kąt, żeby łatwiej złapać głębię - inaczej bez okularków 3D ani rusz).

Cytuj
Pomyślmy: W 3D, mając osie X, Y, Z, możemy określić obrót wokół każdej z tych osi. W 2D, mając osie X i Y, obracamy się... Wokół osi Z? Zaraz, WTF? :D
Coś za mało nad tym pomyślałeś. :) Rachunek jest prosty: możemy obracać się w dowolnej płaszczyźnie (XY dla 2D, XY, XZ i YZ dla 3D), więc w ogólności dla N wymiarów mamy N(N-1)/2 możliwych płaszczyzn obrotu (co dla przypadku 4D wynosi 6). :)

Cytuj
Jakby nie patrzeć to gry 4D od dawna istnieją gdyż 4 wymiarem jest czas ;)
To jest mocno naciągana logika, bo ten "czwarty wymiar" ma się nijak do pozostałych trzech. Jeżeli ktoś się nie zgadza, niech pokaże jak przeprowadzić obrót w płaszczyźnie XT. ;)

Offline Karczas

  • Użytkownik
    • DevBlog

# Sierpień 19, 2009, 13:05:48
Cytuj
Jeżeli ktoś się nie zgadza, niech pokaże jak przeprowadzić obrót w płaszczyźnie XT
Zmieniasz współrzędne i cofasz/przenosisz w czasie ?  ::)

Offline Kuba D.

  • Użytkownik

# Sierpień 19, 2009, 13:12:42
Cytuj
To jest mocno naciągana logika, bo ten "czwarty wymiar" ma się nijak do pozostałych trzech. Jeżeli ktoś się nie zgadza, niech pokaże jak przeprowadzić obrót w płaszczyźnie XT.
Gdyby czas nie płynął to byś żadnego obrotu nie uświadczył ;)

Offline Charibo

  • Redaktor

# Sierpień 19, 2009, 13:13:55
Cytuj
Zastanawiałem się ostatnio, czy byłoby możliwe zrobienie Descento-podobnej gry ze swobodnym ruchem, ale - dla odmiany - nie w pełnym 3D, ale w pełnym 4D. :D
Kiedyś robiłem coś podobnego dla testu - latało się dookoła 4-wymiarowej kostki i było z tym sporo bólu głowy. Generalnie trzeba było mieć matematyczną świadomość, na co się patrzy i że wszystko ma o jeden wymiar więcej. Przykładowo, z 4-wymiarowej kostki nie wylatywało się na zewnątrz przez płaszczyznę, a przez sześcian. :)
Zupełnie z ciekawości: nie miałbyś gdzieś jeszcze tego na dysku? :)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Sierpień 19, 2009, 13:16:37
Cytuj
Zmieniasz współrzędne i cofasz/przenosisz w czasie ?
No właśnie nie wiadomo jak. Jakby się dało, to długopis po obróceniu trwałby przez 10cm i miał kilka lat długości. :P

Gdyby czas nie płynął to byś żadnego obrotu nie uświadczył ;)
Na kartce czas nie płynie, a nie mam żadnych problemów z obracaniem narysowanych na niej figur. ;)

Cytuj
Zupełnie z ciekawości: nie miałbyś gdzieś jeszcze tego na dysku? :)
Pewnie gdzieś mam, ale musiałbym poszukać (i to nie na dysku, który mam w tej chwili w kompie). :)

Offline Kuba D.

  • Użytkownik

# Sierpień 19, 2009, 13:23:19
No właśnie nie wiadomo jak. Jakby się dało, to długopis po obróceniu trwałby przez 10cm i miał kilka lat długości. :P
To że nie wiadomo jak to nie znaczy że nie da rady :D

Na kartce czas nie płynie, a nie mam żadnych problemów z obracaniem narysowanych na niej figur. ;)
Ale płynie(?) podczas gdy Ty obracasz te figurki (zakładam że nie potrafisz go zatrzymać ale tu mogę się mylić ) :D

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Sierpień 19, 2009, 13:25:45
Ale płynie(?) podczas gdy Ty obracasz te figurki (zakładam że nie potrafisz go zatrzymać ale tu mogę się mylić ) :D
To, że czas płynie podczas gdy Ty rozwiązujesz zadanie z matematyki nie znaczy, że czas w jakikolwiek sposób występuje w tym zadaniu.

Offline yorp

  • Użytkownik
    • ProfessionGG Project

# Sierpień 19, 2009, 13:39:28
czasoprzestrzen jest cztero wymiarowa tylko, dlatego ze rozwiazywanie problemu w czasie i przestrzeni wymaga 3 rownan dla przestrzeni i 1 dla czasu, stad macierz robi sie 4 wymiarowa (moze byc oczywiscie wiecej tych rownan, a nikt nie mowi o takich ukladach, że ma 100 wymiarow ), nt. jezeli 4 wymiary uscislimy i powiemy tak jak byc powiedziane powinno: przestrzen cztero-wymiarowa (a przez przestrzen rozumiemy tylko i wylacznie ta analityczno-geometryczna), to czasoprzestrzen jest troj wymiarowa z parametrem.

Cytuj
Zmieniasz współrzędne i cofasz/przenosisz w czasie ?
No właśnie nie wiadomo jak. Jakby się dało, to długopis po obróceniu trwałby przez 10cm i miał kilka lat długości. :P

Nie moge sie z toba zgodzic KK, bo:
Cytuj
(1960 - 1983) XI Generalna Konferencja Miar (1960) zdefiniowała metr jako długość równą 1 650 763,73 długości fali promieniowania w próżni odpowiadającego przejściu między poziomami 2p10 a 5d5 atomu 86Kr (kryptonu 86).
jezeli tak przyjmiemy to przy falach z dlugosci spokojnie mozesz przejsc w czas, albo
Cytuj
Jest to czas równy 9 192 631 770 okresom promieniowania odpowiadającego przejściu między dwoma poziomami F = 3 i F = 4 struktury nadsubtelnej stanu podstawowego 2S1/2 atomu cezu 133Cs
i tu mozesz przejsc przez okres na dlugosc (promieniowanie jest fala), chociaz oba te przyklady sa sztuczne ;)
Cytat: Krzysiek K.
Gdyby czas nie płynął to byś żadnego obrotu nie uświadczył ;)
Na kartce czas nie płynie, a nie mam żadnych problemów z obracaniem narysowanych na niej figur. ;)
- ale kartke papieru obracasz w czasie ;)

//edit drugi cytat odnosi sie do sekundy

Offline Kuba D.

  • Użytkownik

# Sierpień 19, 2009, 13:40:17
Ale płynie(?) podczas gdy Ty obracasz te figurki (zakładam że nie potrafisz go zatrzymać ale tu mogę się mylić ) :D
To, że czas płynie podczas gdy Ty rozwiązujesz zadanie z matematyki nie znaczy, że czas w jakikolwiek sposób występuje w tym zadaniu.
Ale ma zasadniczy wpływ na powstanie/ bądź nie powstanie takiego zadania. Gdybym się cofnął w czasie i "podążył inną drogą" to bym takiego zadania nigdy na oczy nie widział i siłą rzeczy miałoby to wpływ na to zadanie.Gdybym z kolei przeniósł się w przyszłość to takie zadanko by już na biurku leżało rozwiązane a może i ocenione ;)

Ale tak na serio to myślę że gra 4D to raczej dla nas, z gatunku Homo sapiens ( zakładam że taki byłby targetem), raczej nie byłaby prosta do ogarnięcia rozumem. Chociaż może gdyby tak giercować w takie coś po 20h na dobe to może by się zmieniło nasze postrzeganie świata, ale co potem ? Krzyk w mediach że gry wypaczają psychikę ;)

Offline yorp

  • Użytkownik
    • ProfessionGG Project

# Sierpień 19, 2009, 13:45:21
a monitory przestaliby robic plaskie tylko zaczeli przestrzenne ;)

Offline K'Aviash

  • Użytkownik

# Sierpień 19, 2009, 13:47:14
a monitory przestaliby robic plaskie tylko zaczeli przestrzenne ;)
to ty masz płaski monitor ?  ;)

Offline Kos

  • Użytkownik
    • kos.gd

# Sierpień 19, 2009, 14:17:06
Wizualizacja była dość prosta: 4D było rzutowane z perspektywą na "ekran" 3D, który był wirtualnym sześcianem (ekran można było obracać o niewielki kąt, żeby łatwiej złapać głębię - inaczej bez okularków 3D ani rusz).
A mi chodzi o coś, co nie będzie takim hackiem, tylko "normalnym" perspektywicznym (?) rzutem 4D na 2D.
Milestone: Znaleźć wzór na taką macierz perspektywy 5x5 :)

Cytuj
Cytuj
Pomyślmy: W 3D, mając osie X, Y, Z, możemy określić obrót wokół każdej z tych osi. W 2D, mając osie X i Y, obracamy się... Wokół osi Z? Zaraz, WTF? :D
Coś za mało nad tym pomyślałeś. :) Rachunek jest prosty: możemy obracać się w dowolnej płaszczyźnie (XY dla 2D, XY, XZ i YZ dla 3D), więc w ogólności dla N wymiarów mamy N(N-1)/2 możliwych płaszczyzn obrotu (co dla przypadku 4D wynosi 6). :)
Bach, widzisz - zakorzeniło mi się "obrót wokół osi" zamiast "obrót na płaszczyźnie", to i się zgubiłem. :) Ale macierzowe rozumowanie chyba miałem +- dobre, przynajmniej w sprawie końcowych macierzy?

Cytuj
Cytuj
Jakby nie patrzeć to gry 4D od dawna istnieją gdyż 4 wymiarem jest czas ;)
To jest mocno naciągana logika, bo ten "czwarty wymiar" ma się nijak do pozostałych trzech. Jeżeli ktoś się nie zgadza, niech pokaże jak przeprowadzić obrót w płaszczyźnie XT. ;)
Z tym może być ciężko, ale w Braidzie robili jakieś cuda typu związanie pozycji X i T gracza :-)