Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Plugin ,który zmniejszy lagi :)


DEDi GodApple

Rekomendowane odpowiedzi

Opublikowano

ClearLag sam je powoduje, nie radzę jego instalacji.

Gdzieś czytałem opinie wraz z dowodami pingu, tps timingiem i wyszło na to że CLG tworzy większe lagi niż miałoby go nie być.

 

Możesz zrobić CMDBloki z komendą z WG gdzie czyści itemy, jest to lżejsze niż CLG

3119414338767251395862.png


Chcesz coś ode mnie?


Pisz @JackS inaczej nie odpowiem bo nie śledzę tematów


Sygnaturki na zamówienie

Opublikowano

spigot sam w sobie ma masę usprawnień które ograniczają lagi, dodatowo możesz się pobawić ustawieniami, zmienjszych ilosc aktualizacji, spowolić hoppery czy inne rzeczy, wszystko co ciekawe znajdziesz w spigot.yml.

Nie da się tak po prostu zrobić pluginu na zmniejszenie lagów, zawsze coś na tym ucierpi.

1438614356923701010629.png

 

Opublikowano

@OtekPlay

 

albo tak jak zrobili goście od CnaryModa gdzie przepisali cały silnik serwera na C++ i zrobili multithreading, niestety była to robota od nowa, przy każdej nowej wersji więc zostawili to chyba przy 1.2

Walnij "Lubie to", to nie boli.

mca.pngczu.

Opublikowano

@misio345

 

 

Java jest wygodna, i zostane przy niej jak dlugo mi sie podoba :D , Znam tez C++ piszac ten silnik w C++ potrzebowalbym 2x wiecej czas :D

Opublikowano

@OtekPlay

 

Owszem, jest wygodna, i jeśli właściwie użyta nawet dobra, ale to co zrobił Mojang do "właściwego" użycia nie należy, bo używa zawsze tylko 1 wątku, zamiast "do oporu", a w C++ goście zrobili silnik właśnie używający do oporu, i tak jak mówisz, więcej czasu im to zajęło, ale działało

Walnij "Lubie to", to nie boli.

mca.pngczu.

Opublikowano

@OtekPlay

 

Owszem, jest wygodna, i jeśli właściwie użyta nawet dobra, ale to co zrobił Mojang do "właściwego" użycia nie należy, bo używa zawsze tylko 1 wątku, zamiast "do oporu", a w C++ goście zrobili silnik właśnie używający do oporu, i tak jak mówisz, więcej czasu im to zajęło, ale działało

Ale zrobienie mc w wielu wątkach nie jest takie proste... 

Już głupi system I/O map może napierniczyć więcej problemów niż ...

A mała lista z nich

  1. Zapis chunków, mc przechowuje chunki po 32x32, jak zapiszesz 2 chunki na raz... (z 2 wątków) to twoja mapa prędzej czy później się jebnie.
    • Zmiana systemu map, o tyle o ile może wydawać się dobrym pomysłem, to jednak... na jaki system? 1 chunk na plik jest strasznie powolny a do tego zapiernicza cały dysk.
    • Dobrym rozwiązaniem może być ograniczenie wielo-wątkowości, do właśnie takich obszarów, czyli jeden obszar pliku, nie może być używany przez więcej niż 1 wątek, ale 1 wątek może obsługiwać kilka obszarów.
  2. Wszelkie aktualizacje bloków wywołane jakąś akcją, np wybuch TNT, ruch pistona, mechanizmy redstone:
    • Po 1, duży wubuch może zlagować cały jeden wątek, czyli i tak zlaguje całkiem spory obszar, bo trudno będzie nagle zmienić iloma regionami zajmuje się dany wątek.
    • Po 2. "Granice wątków" taki piston poruszający się między 2 regionami, posiadającymi inny wątek(lub wybuchające TNT), musisz wtedy synchronizować się z drugim wątkiem i dokonać update drugiego regionu, z innego niż jego własny wątek, co znacznie wpłynie na wydajność. (negatywnie oczywiście)
    • I co z redstone? tutaj wystąpi podobny problem co z pistonami, tylko często nawet bardziej wymagający i bardziej prawdopodobny.
  3. I podobnie z entity:
    • O ile prawdopodobieństwo że ktoś postawi często używanego pistona, idealnie na granicy 2 regionów jest dość małe, to co z entity?

      One też muszą być aktualizowane przez odpowiedni wątek, a entity na granicy regionów od 2 wątków... to będzie normalność, będzie ich tam sporo. Co oznacza częste przenoszenie entity między regionami i częste powody do sychronizacji z drugim wątkiem.

  4. Pluginy...
    • Nawet jak już dasz radę ominąć problemy tam, to znacznie utrudnisz tworzenie pluginów, bo nagle twórca będzie musiał jakoś zadbać by jego komenda edytowała bloki i entity tylko z odpowiednego wątku, czyli ciągłe wymogi synchronizacji z jednym z wątków mapy.

      Powodzenia z tworzeniem użytecznego API

Więc zrobienie tego...

1438614356923701010629.png

 

Opublikowano

@GotoFinal

 

 

Ale zrobienie tego, jest mozliwe i sie nie wyprzesz :D

nie możliwy jest 4 punkt, tworzenie pluginów pod taki silnik będzie 10x trudniejsze, znacznie miej osób da sobie z tym rade.

 

Oczywiscie istnieje wiele możliwości by to uprościć, zamiast world.setBlock(x/y/z, type) zrobić world/setBlocks(BlockUpdate)

i ta metoda juz sama podzieli na wątki i zrobi wszystko jak trzeba.

 

Entity można zrobić tak by ich zmienianie w innego wątku nie powodowało większych problemów, a bardziej wymagające zmiany automatycznie synchronizować.

 

Ale wszystkiego nie ogarniesz :P Ludzie dalej będą używać HashMap we wełasnych pluginach, pomimo że to co wykonują, też jest wielowątkowe i może jebnąć.

 

 

A jak ktoś zrobi... to może się okazać że uzywanie tego na dwu-rdzeniowym procku z hostingu gunwo.pl tylko spowolni serwer.

I silnik będzie miał sens tylko na 16+ rdzeniowych maszynach które sobie poradzą z tym wszystkim.

 

A wydajnośc i tak może być niezbyt zadowalająca z powodu tych wymaganych synchronizacji, wszystko da się zrobić, ale nikt tego sam nie zrobi, i zajmie to masę czasu, bo kod NMS mozna sobie w dupe wsadzić, nie edytujesz go tak by był wielowątkowy. Czyli dodatkowy milion linijek :P

To jest projekt dla kogoś komu się naprawdę nudzi i komu odpierdoliło xD

1438614356923701010629.png

 

Opublikowano

 @GotoFinal

 

Fakt faktem dla randomow bukkit bylby czarnia magia, lecz kto dluzej w tym siedzI nie widze problemu aby cos takiego napisal ;p[pp

Opublikowano

 @GotoFinal

 

Fakt faktem dla randomow bukkit bylby czarnia magia, lecz kto dluzej w tym siedzI nie widze problemu aby cos takiego napisal ;p[pp

jak ma kilka lat wolnego czasu, lub tak z ~10 osób z doświadczeniem powyżej 4-5 lat, to może i tak.

 

Zabawy z wielowątkowością to już nie jest nic "zabawnego", to ze ktoś używał asyncTaska do robienia czegoś w bukkcie to nie znaczy że cokolwiek o tym wie.

Większość tutaj nawet nie wie co to lock, jak działa słówko synchronized, kiedy go używać, jak go używać i kiedy używac locków zamiast niego, volatile, jak można dostać się prawie że do pamięci i ręcznie ją edytować, co znaczy skrót cas, co to są operacje atomowe i po co się przydają.

Już nie pisząć o tych prostych rzeczach, jak poprawne wysyłanie pakietach, czyli operacje na bajtach.

 

Więc jak wiesz sporo o tym wszystkim, i masz te 10 lat wolnego czasu, to nie ma sprawy, pisz :D

 

 

A tak ogólnie to schodzimy z tematu, więc chyba czas to skończyć :P 

1438614356923701010629.png

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...