Reklama
Strona 2 z 2 PierwszaPierwsza 12
Pokazuje wyniki od 16 do 27 z 27

Temat: unikalne podziemia dla jednego gracza?

  1. #16
    Mickey Mouse

    Domyślny

    Cytuj zakius napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    klient nie wymaga żadnych zmian
    Zależy od sposobu, w jaki chcesz to zrobić, tak jak napisałem równie dobrze można napisać prostą wersje w samym lua, z drobnymi zmianami cpp tak jak ma vestia czy jest u mnie na serwerze, a możesz napisać cały system instancji, który tworzy channele, trzymające różne mapy na tych samych pozycjiach, a dane odbierane przez gracza byłyby zależne od tego na którym channelu się znajduje, w ostatnim przypadku skoro uważasz, że nie wymaga żadnej edycji jak chcesz odbierać dodatkowe pakiety dotyczące samych channeli?

  2. #17
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    po co dodatkowe pakiety?
    filtrowanie po stronie serwera i tyle, jeśli ktoś jest w instancji to wysyła i odbiera tylko rzeczy znajdujące się w instancji, z resztą i tak coś podobnego jest zastosowane dla niewidzialnych GMów, ale na mniejszą skalę
    tutaj byłoby konieczne trzymanie kopii danego fragmentu mapy dla każdej instancji, zapisywać to w pozycji jako piąty wymiar (obecnie tibia wykorzystuje już 4), ale on by nie był przekazywany do klienta, bo gracza to zupełnie nie interesuje
    ale może myślisz o zrobieniu czegoś, czego nie rozumiem i faktycznie by się przydały, ale naprawdę nie wiem do czego, ja kiedyś to dość dogłębnie przemyślałem i akurat do tego żadnych zmian w kliencie ani edytorze map nie potrzeba, chociaż oczywiście można to zrobić

    łatwiejszym sposobem może być kopiowanie fragmentu mapy na wolną przestrzeń na głównej mapie i wysyłanie po prostu pozycji z odpowiednim offsetem, znacznie mniej zmian w kodzie, chociaż dość upierdliwe może być odnajdywanie wolnych miejsc na mapie
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  3. Reklama
  4. #18
    Avatar Ziker
    Data rejestracji
    2005
    Wiek
    33
    Posty
    106
    Siła reputacji
    19

    Domyślny

    Cytuj zakius napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    po co dodatkowe pakiety?
    filtrowanie po stronie serwera i tyle, jeśli ktoś jest w instancji to wysyła i odbiera tylko rzeczy znajdujące się w instancji, z resztą i tak coś podobnego jest zastosowane dla niewidzialnych GMów, ale na mniejszą skalę
    tutaj byłoby konieczne trzymanie kopii danego fragmentu mapy dla każdej instancji, zapisywać to w pozycji jako piąty wymiar (obecnie tibia wykorzystuje już 4), ale on by nie był przekazywany do klienta, bo gracza to zupełnie nie interesuje
    ale może myślisz o zrobieniu czegoś, czego nie rozumiem i faktycznie by się przydały, ale naprawdę nie wiem do czego, ja kiedyś to dość dogłębnie przemyślałem i akurat do tego żadnych zmian w kliencie ani edytorze map nie potrzeba, chociaż oczywiście można to zrobić

    łatwiejszym sposobem może być kopiowanie fragmentu mapy na wolną przestrzeń na głównej mapie i wysyłanie po prostu pozycji z odpowiednim offsetem, znacznie mniej zmian w kodzie, chociaż dość upierdliwe może być odnajdywanie wolnych miejsc na mapie
    Zgadzam się w dużym stopniu, a po krótkim zastanowieniu powiedziałbym wręcz, że nie ma potrzeby trzymania fragmentu mapy w instancji (zakładając, że dany fragment jest taki sam dla każdego z graczy), a jedynie informacji o przedmiotach na danym fragmencie. W końcu wszystko, co jest wyświetlane w kliencie wynika z danych wysyłanych przez serwer. Oczywiście dawno nie grzebałem w silnikach, więc nie do końca pamiętam czy istnieje separacja między mapą jako mapą (tj. rzeczami, których nie da się przesuwać - ściany, floor, itp.), a przedmiotami na niej. Jeśli jednak jest to odseparowane od siebie, wystarczy w instancji "trzymać" to drugie. Do tego oczywiście "mapa" spawnów wyizolowana dla każdej z instancji.

    Wszystko to można wykonać po stronie serwera. W kodzie źródłowym na pewno, nie wiem jak w lua (jak wspomniałem, dawno się nie bawiłem tym, także nie mam pojęcia jakie obecnie możliwości oferują skrypty). Skoro klient wyświetla dane wysłane przez serwer, wysyłamy tylko to, co dotyczy danego gracza. Nie ma mowy o kopiowaniu mapy i przenoszeniu w puste miejsce - wszyscy mogą biegać w tym samym miejscu, po prostu dostają swoją "wersję" danych, zgodną z tym, co robili w swoim dungeonie :)

    Dla party również nie ma problemu, te informacje również serwer przechowuje, więc można automatycznie po wejściu na dany fragment, użytkowników z party zidentyfikować z tą samą instancją. W tym przypadku trzeba jeszcze rozważyć kilka dodatkowych sytuacji i odpowiednio się nimi "zająć", tj. dodawanie użytkowników do party będąc już "na instancji" czy też opuszczanie party.

    Jeszcze inna kwestia to deady czy próby wylogowania się na instancji.

  5. #19
    Avatar Mega Filip
    Data rejestracji
    2011
    Położenie
    Leszno
    Posty
    3,013
    Siła reputacji
    15

    Domyślny

    Na vestii wygląda to tak, że na mapie jest chyba 5 slotów na generowane instancje. Zawsze jest tak samo duża, dajmy na to 100x100sqm. Przed rozpoczęciem gracze teleportowani są na wysepke gdzie pokazany jest postęp generowania instancji, trwa około minuty

  6. #20
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    Cytuj Ziker napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Zgadzam się w dużym stopniu, a po krótkim zastanowieniu powiedziałbym wręcz, że nie ma potrzeby trzymania fragmentu mapy w instancji (zakładając, że dany fragment jest taki sam dla każdego z graczy), a jedynie informacji o przedmiotach na danym fragmencie. W końcu wszystko, co jest wyświetlane w kliencie wynika z danych wysyłanych przez serwer.
    w sumie jak tak teraz myślę to jest to do zrobienia, wszystkie elementy mapy stałe, a elementy ruchome w swoich instancjach, to może działać, kolizje, pathfinding, wyszukiwanie przeciwników po prostu wykonujemy na wydzielonej grupie elementów znajdujących się w pozycji {x, y, z, stack, i} i działa
    pozostaje kwestia zmiennych elementów mapy, no ale da się ogarnąć
    i nawet nie tyle mapa spawnów co timery

    w lua nie da rady aż takich czarów, bo nie masz takiej kontroli nad wnętrznościami silnika

    jak najbardziej jest to wykonalne na wiele sposobów i dzięki że mi pokazałeś w sumie jak to znacząco usprawnić

    a co do kopiowania mapy w puste miejsce to po prostu wydaje mi się najmniej pracochłonną metodą, jednak również najgorszą
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  7. #21

    Data rejestracji
    2007
    Wiek
    29
    Posty
    9,025
    Siła reputacji
    23

    Domyślny

    Tylko teraz pytanie czy autorowi na pewno chodziło o to, o czym dyskutujecie.
    Chcesz mieć możliwość wyświetlenia tej jaskini dla kilku różnych graczy, tak, aby kilku graczy mogło chodzić po tej jaskini, ale dla każdego była by to unikalna, alternatywna xD, jaskinia. Czy może jednak jest to normalna mapa bez instancji, tylko prosty skrypt, który nie wpuszcza nikogo więcej jeżeli już ktoś tam jest?

  8. #22
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    przeczytaj pierwszy post
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  9. #23
    Avatar Ziker
    Data rejestracji
    2005
    Wiek
    33
    Posty
    106
    Siła reputacji
    19

    Domyślny

    Cytuj zakius napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    w sumie jak tak teraz myślę to jest to do zrobienia, wszystkie elementy mapy stałe, a elementy ruchome w swoich instancjach, to może działać, kolizje, pathfinding, wyszukiwanie przeciwników po prostu wykonujemy na wydzielonej grupie elementów znajdujących się w pozycji {x, y, z, stack, i} i działa
    pozostaje kwestia zmiennych elementów mapy, no ale da się ogarnąć
    i nawet nie tyle mapa spawnów co timery

    w lua nie da rady aż takich czarów, bo nie masz takiej kontroli nad wnętrznościami silnika

    jak najbardziej jest to wykonalne na wiele sposobów i dzięki że mi pokazałeś w sumie jak to znacząco usprawnić

    a co do kopiowania mapy w puste miejsce to po prostu wydaje mi się najmniej pracochłonną metodą, jednak również najgorszą
    Służę pomocą :) Myślę, że sama implementacja tego wcale nie byłaby czasochłonna. No i zgodzę się z kwestią timerów spawnu (być może mówimy nawet o tym samym, po prostu źle to nazwałem). Kwestia jedynie śledzenia tych zmian i wyłapaniu kilku zdarzeń (wejście w dane miejsce, wyjście, niekoniecznie musi to być TP, mogą to być schody nawet). Poza oczywiście samą modyfikacją tego, co jest wysyłane. Choć może nawet nie modyfikacja, po prostu dodatkowy krok w procesie mapowania danych do wysłania (koniec końców socket dostaje dane, nie wie czy to dane dla "wszystkich" graczy, którzy widzą dany obszar, czy może dostosowane pod tego konkretnego).

    Jako, że lubuję się w rozwiązaniach generycznych, jestem w stanie sobie wyobrazić nawet możliwość elastycznego tworzenia takowych "miejsc":
    1. W edytorze map możliwość dodawania "dungeon zone" (tak jak robimy protection zone) i oznaczania identyfikatorem.
    2. Odczyt tego przez silnik gry.
    3. Dodanie kilku funkcji dostępnych z poziomu skryptów, które inicjalizowałyby instancje o konkretnym ID, dla konkretnego gracza i obsługiwały inne zdarzenia z nią związane.
    4. Kwestia podpięcia danego TP/schodów/zejścia czy nawet tile pod skrypt (patrz punkt 3.) i to samo przy "wychodzeniu" z instancji.

    Oczywiście to już nieporównywalnie większa ilość rzeczy do zrobienia, włącznie z modyfikacją schematu otmb i dostosowanie parsera do nowych możliwości. No, ale zawsze można się podjąć, jeśli ktoś ma dużo czasu :) Być może przy okazji udałoby się usprawnić otmb (choć oczywiście mówię "może", bo na tą chwilę nie pamiętam nawet w jaki sposób tworzona jest ta struktura)

    P.S.
    Trochę płyniemy, a autora tematu nie widać :)
    Ostatnio zmieniony przez Ziker : 07-05-2017, 11:59

  10. #24

    Data rejestracji
    2012
    Położenie
    Lublin
    Wiek
    28
    Posty
    923
    Siła reputacji
    12

    Domyślny

    A tak wyjade z pytaniem, czy obecne w tibi tp na bossy po taskach (te od tego Adama z port hope) nie działają jak instancje? Zawsze się zastanawiam czy ktoś może wbić w czasie walki z bossem w znaczeniu:
    Ja robię bosa a a za sekundę ktoś wchodzi w tp i też to robi ale my się nie spotkamy. Proszę o @Smoke ; jak coś
    Cytuj Rahilux napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    w sumie cyc 2 łapy to 2x bije
    tak samo wolf 1 szczęka 1 ugryzienie
    Cytuj Pies_Pluto napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Ladujesz manasy na full zakladasz ssa zeby cie menele nie zdjeli na sudden bottle

  11. #25
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    @Smoke ; masz blokadę wejścia jak ktoś jest w środku
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  12. #26
    Avatar Black Keeper
    Data rejestracji
    2005
    Posty
    483
    Siła reputacji
    19

    Domyślny

    P.S.
    Trochę płyniemy, a autora tematu nie widać :)
    czytam cały czas :)
    popytałem się na OTLandach i dostałem sugestię -> https://github.com/otland/forgottens...ript.cpp#L3966

    Jeszcze inna kwestia to deady czy próby wylogowania się na instancji.
    Tutaj to już zależy od zasad serwera. Ja preferuję mechanikę z klasycznych hack'n'slashów, po zalogowaniu do serwera zawsze mamy respawn w mieście.


    Jeszcze jest kwestia jak takie mapy będą "generowane". O to co chciałbym zrobić: gracz wchodzi na specjalny tile (może to być TP, dziura jakaś bądź schody). Serwer wyciąga informację z teleportu o nazwie pliku z mapą, np. "dungeon_rats001", poczym w folderze z mapami tworzy jej kopię "dungeon_rats001_ZbysiuKnight" kiedy wszystko zostanie przygotowane to serwer wrzuca ZbysiaKnighta na taką mapę. Kiedy ZbysiuKnight będzię miał chęć opuszczenia mapy to po prostu kieruje się do jej wyjścia. Kopia mapy będzie wciąż istniała na serwerze chyba, że gracz wyloguje się to wtedy mapka zostanie skasowana. Respawny? Na takich mapach nie byłoby respawnów. Czyścimy dungeona i wychodzimy. Jeżeli chcemy aby znowu pojawiły się tam monstery musimy od nowa zalogować się na serwer.
    Takie instancje mogą mieć negatywny wpływ na społeczność serwera, mniejszy kontakt z graczami itp.



    EDIT: znalazłem troszkę teorii na wikipedi
    In massively multiplayer online games, an instance is a special area, typically a dungeon, that generates a new copy of the location for each group, or for certain number of players,
    https://en.wikipedia.org/wiki/Instance_dungeon
    Ostatnio zmieniony przez Black Keeper : 07-05-2017, 19:16

  13. #27
    Avatar Ziker
    Data rejestracji
    2005
    Wiek
    33
    Posty
    106
    Siła reputacji
    19

    Domyślny

    Cytuj Black Keeper napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    czytam cały czas :)
    popytałem się na OTLandach i dostałem sugestię -> https://github.com/otland/forgottens...ript.cpp#L3966


    Tutaj to już zależy od zasad serwera. Ja preferuję mechanikę z klasycznych hack'n'slashów, po zalogowaniu do serwera zawsze mamy respawn w mieście.


    Jeszcze jest kwestia jak takie mapy będą "generowane". O to co chciałbym zrobić: gracz wchodzi na specjalny tile (może to być TP, dziura jakaś bądź schody). Serwer wyciąga informację z teleportu o nazwie pliku z mapą, np. "dungeon_rats001", poczym w folderze z mapami tworzy jej kopię "dungeon_rats001_ZbysiuKnight" kiedy wszystko zostanie przygotowane to serwer wrzuca ZbysiaKnighta na taką mapę. Kiedy ZbysiuKnight będzię miał chęć opuszczenia mapy to po prostu kieruje się do jej wyjścia. Kopia mapy będzie wciąż istniała na serwerze chyba, że gracz wyloguje się to wtedy mapka zostanie skasowana. Respawny? Na takich mapach nie byłoby respawnów. Czyścimy dungeona i wychodzimy. Jeżeli chcemy aby znowu pojawiły się tam monstery musimy od nowa zalogować się na serwer.
    Takie instancje mogą mieć negatywny wpływ na społeczność serwera, mniejszy kontakt z graczami itp.



    EDIT: znalazłem troszkę teorii na wikipedi
    In massively multiplayer online games, an instance is a special area, typically a dungeon, that generates a new copy of the location for each group, or for certain number of players,
    https://en.wikipedia.org/wiki/Instance_dungeon
    Jak śledzisz to wybaczone :)

    Cóż, myślę, że nie do końca chyba mimo wszystko zrozumiałeś, także pozwolę sobie sprostować. Mapa jest ładowana do pamięci, nie ma więc potrzeby robienia fizycznej kopii pliku, ponieważ ta mapa, po załadowaniu, to nic innego jak bajty zapisane w RAMie. Więc "kopię" takiej mapy robi się poprzez sklonowanie obiektu / tablicy (na poziomie języka programowania, na poziomie pamięci robi się po prostu kopię fragmentu pamięci w innym miejscu tej pamięci) i i tam ją trzyma jako instancję :) Mam nadzieję, że to nieco Ci przybliży o czym mowa. Dodatkowo mapa respawnu (mapa jest tutaj pojęciem kolokwialnym, chodzi o zbiór obiektów reprezentujących potwory) musi być również utworzona dla instancji osobno, żeby serwer wiedział, gdzie są potwory na danej instancji.

    Link wygląda interesująco, wychodzi na to, że można wczytać mapę przy pomocy lua (ja się zatrzymałem na prostych skryptach w czasach Tibii 7.x, jak widać możliwości skryptów poszły bardzo do przodu), ale nie wiem czy całość uda się zaimplementować bez ingerencji w silnik gry :)

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Deriana.Hopto.Org || evo 8.6 || Unikalne Systemy || Join Now!
    Przez grubyeloelo w dziale Tematy serwerów
    Odpowiedzi: 1
    Ostatni post: 20-02-2015, 18:16
  2. Sprzedam Portfolio graficzne unikalne zakodowane
    Przez Pelikan w dziale Giełda
    Odpowiedzi: 0
    Ostatni post: 05-06-2014, 22:32
  3. [8.6]Ashengard.net - sprawdź unikalne funkcję
    Przez Slyad w dziale Tematy serwerów
    Odpowiedzi: 14
    Ostatni post: 12-09-2013, 18:08
  4. Unikalne serwery - Czy postawienie tego ma sens?
    Przez Alex Fortune w dziale Open Tibia Server
    Odpowiedzi: 3
    Ostatni post: 15-09-2012, 17:11
  5. Unikalne szklanki z butelek po piwie
    Przez AoH w dziale Artyści
    Odpowiedzi: 73
    Ostatni post: 25-06-2012, 01:05

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •