|
|
|
|
[MMF2] Ruch przez FastLoopa dla wybranego obiektu? |
| Autor |
Wiadomość |
AlexJ
Plutonowy
 
Pomógł: 2 razy Posty: 86
2018 Prestiż
|
Wysłany: 13-05-2007, 17:01 [MMF2] Ruch przez FastLoopa dla wybranego obiektu?
|
|
|
Witam. Robię grę (Toga, w MooSock), no i natknąłem się na taki, dość poważny problem :o :
Może coś pomocny opis:
1. Cały świat gry jest podzielone na mapy, z których przechodzi się do następnych map. Rozmowę "słyszą" tylko użytkownicy znajdujący się na tej samej mapie (fragmencie mapy całej gry, która składa się z poszczególnych, dość małych, ale za to rozbudowanych mapek) - to jest zrobione.
2. System detekcji przeszkód będzie po stronie klienta (chyba detektorki, nie chce mi się myśleć nad takimi algorytmami skomplikowanymi :mad: ).
3. Chodzenie JUŻ DZIAŁA tak, że klient wysyła do serwera twój login (rozpoznawanie postaci po loginie), i przyszłą pozycję oraz ew. kąt. Wtedy serwer wysyła do innych na tej mapie nową pozycję, kąt, szybkość poruszania (ilość loopów startowanych na setną sekundy). Tyle, że narazie jest skokowe i nie wiem jak zrobić pętlę dla każdego użytkownika, która za pomocą (działającego już, ale tylko na twojej postaci) silnika ruchu płynnie i z przyśpieszaniem itp. poruszy postacią.
Opis problemu:
Ruch postaci polega na pętlach, a gdy serwer już wyśle do tych do których trzeba, to nie wiem, jak zrobić, żeby jedna pętla mogła zmieniać pozycję X różnych obiektów (wybranego po loginie) na X("Obiekt")+round(sin(kąt przypisany do postaci)*4) i pozycję Y na Y("Obiekt")+round(cos(kąt przypisany do postaci)*4). Można łatwo wybierać, jakimi użytkownikami poruszać i to chyba by działało dodając oprócz zdarzenia pętli porównaj do value zmiennej obiektu "move"=1 i wtedy ustaw pozycję X na X+round(sin(zminna obiektu "dir"))*4)i Y na Y+round(cos(zminna obiektu "dir"))*4). Tyle, że do tego jeszcze trzeba ilość loopów na setną sekundy różną dla każdego usera (obiektu-postaci) i przyśpieszanie (serwer wysyła jeszcze info, czy to dalsza część ruchu z jaką prędkością lub czy to start ruchu).
Jedyny pomysł, jaki mi się nasówa do zrobienia tego, to zrobienie z 600 różnych pętli i przypisywanie do nich obiektów (dodatkowo, jest kilka "rodzin" obiektów).
Może ktoś wie jak to zrobić? Może jak by było na cośtam start loop pobierz zmienną "user" obiektu i na loop zmienna "user" obiektu i value obiektu "move"=1? Pilne!
[ Dodano: 20-05-2007, 13:06 ]
Teraz wszystko jest lepiej wytłumaczone! Niech że ktoś pomoże... . |
_________________ Error 404: Błąd. Opisu nie znaleziono.
PS. Oryginalne, nie?
C++'s Cool. |
|
|
|
 |
Fanotherpg
Porucznik I'm livin' proof
 
Główny edytor: 
Drugi edytor: 
Pojedynki: tak
Skype: 
Pomógł: 8 razy Posty: 821
14370 Prestiż
|
Wysłany: 20-05-2007, 14:21
|
|
|
| A nie możesz zrobić, że przesyłana jest pozycja X i Y do której jakiś gracz zmierza (np zapisana w wartości tego gracza) i po stronie klienta obiekt sam dąży dzięki odpowiedniej szybkości i kierunkowi do tego miejsca? |
_________________ Indie since 1997. |
|
|
|
 |
AlexJ
Plutonowy
 
Pomógł: 2 razy Posty: 86
2018 Prestiż
|
Wysłany: 20-05-2007, 14:56
|
|
|
| No tak właśnie jest, tylko problem tkwi w zrobieniu pętli, która by poruszała PŁYNNIE z różnymi prędkościami obiekt... Czyli trzeba by wiele pętli, różną dla każdego obiektu. Mi do łba przychodzi jedynie przypisywanie obiektu do pętli... Obiekty są wybieranie po Alterable String'u User... Jak mówiłem, obecnie silnik działczy na zasadzie przesyłania komendy z username'em, nową pozycją X i Y oraz kątem (taki bajer do obracania animacją bohatera). Później, jak będą różne obiekty aktywne dla różnych ras będę musiał albo zrobić wysyłanie jeszcze rodzaju obiektu (co jest łatwiejsze w sumie) albo zczytywanie ew. po stronie klienta z AssArray rasy postaci zapisywanej przy pojawianiu się usera. |
_________________ Error 404: Błąd. Opisu nie znaleziono.
PS. Oryginalne, nie?
C++'s Cool. |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 20-05-2007, 15:14
|
|
|
| AlexJ napisał/a: | | problem tkwi w zrobieniu pętli, która by poruszała PŁYNNIE z różnymi prędkościami obiekt... |
Uruchamiając pętlę np. 25 razy (czyli TGFowa prędkość 200), ustaw wartość B obiektu na jego wartość A (prędkość). Do zdarzenia zmiany pozycji w ruchu dodaj warunek B>0 i za każdym poruszeniem zmniejszaj B o 1. Skutek? 25 pętli, ale prędkość taka, jakby pętli było A (od 0 do 25). |
|
|
|
 |
AlexJ
Plutonowy
 
Pomógł: 2 razy Posty: 86
2018 Prestiż
|
Wysłany: 20-05-2007, 16:10
|
|
|
Wieeelkie dzięki . Już robiłem na podobnej coś , ale nie pamiętam co. Tutaj na to nie wpadłem.
Ale jak, że ta pętla startuje cały czas 30x i do zdarzenia on loop "pęlta" dam jeszcze wartość MOVE obiektu "Obiekt"=1, X("Obiekt") jest inna niż wartość X obiektu "obiekt" i/lub Y("Obiekt") jest inna niż wartość Y obiektu "obiekt" to ustaw pozycję X("Obiekt") na X("Obiekt")+round(sin(WartośćStopień("Obiekt"))*4) i ustaw pozycję Y("Obiekt") na Y("Obiekt")+round(cos(WartośćStopień("Obiekt"))*4). Tak to będzie działało? Nie chcę na marne próbować. xD. |
_________________ Error 404: Błąd. Opisu nie znaleziono.
PS. Oryginalne, nie?
C++'s Cool. |
|
|
|
 |
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|