Przechadzając się po JinnoM1 i szukając czegoś tam w okolicznych sklepach stwierdziłem, że wyszukiwarka itemów byłaby zbawieniem zarówno dla mnie jak i wszystkich sprzedających. Czasem można dostać istnej cholery gdy akurat nikt na serwerze nie ma danej ulepy, albo połowa pożądanych przedmiotów znajduje się w sklepach pod nazwami typu "sprzedam rzeczy".
Dlaczego by to miało działać?
Wyszukanie jednej rzeczy liniowo powiedzmy pośród 300 sklepów przez 300 graczy jednocześnie wymaga max 300*300*8*5 = 3600 000 iteracji, co dla nawet najgorszego komputera jest znikomym obciążeniem. Dodatkowo można dać graniczenie czasowe 1min między wyszukiwaniami celem dodatkowej ochrony wydajności. Następnym krokiem ku polepszeniu algorytmu może być trzymanie w każdym sklepie posortowanej struktury wykluczającej (tzw set) itemów w nim występujących, co skróci czas wyszukiwania w omówionej sytuacji nawet do 450 000 operacji, ale nieznacznie wydłuży czas kupowania w sklepie i tworzenia sklepu (o jakieś milisekundy) i powiększy zużycie pamięci na serwerze, więc jest to opcjonalne i do przemyślenia.
Jak by to miało wyglądać?
Najprościej. Przez pierścień teleportacji. Po wpisaniu frazy wyświetla się lista itemów których nazwa zaczyna się od / zawiera dany tekst. Budowa tej listy powinna leżeć po stronie clienta, wydaje mi się, że nie ma potrzeby obciążać tym serwera, szczególnie że na dysku użytkownika można stworzyć adekwatną strukturę do tego (drzewo trie z referencjami na itemy na swoich końcach?). Po kliknięciu w dany item na liście, wszystkie sklepy w których przedmiot jest obecny zmieniają kolor tekstu na np żółty. Co wyszukiwanie oczywiście wszystkie sklepy należy wstępnie "odżółcić".
Dlaczego to jest aż takie fajne?
Ponieważ przyśpieszy handel bez specjalnego wpływu na ceny produktów. Nie jest to zabieg inwazyjny w gospodarkę serwera, a znacznie zaoszczędzi czas wszystkich graczy, zmniejszy ilość sklepów i sprawi że gra będzie przyjemniejsza
Nigdy nie hostowałem serwera MT2, więc nie wiem jak wygląda to od środka, ale patrząc po takich dokonaniach jak sklepy offline i tak funkcjonalna waluta, jestem przekonany, że wykonanie tego nie będzie wielkim wyzwaniem
A wy co myślicie?