Rafgart pisze:
8) W ciagu ostatnich dwoch-trzech tygodni pracowalismy tylko i wylacznie nad identyfikacja lagow procesu Arkadii (w zwiazku z tym iles innych rzeczy jest rozgrzebanych). Duzo wiecej zrobic sie nie da. A przynajmniej nie bez merytorycznych uwag, ze z czyms jest problem.
Byc moze tym postem wyjde na ignoranta; nie wiem jak od strony technicznej rozwiazane jest ladowanie obiektow postaci, ekwipunku, i w ktorym momencie sprawdzany jest ich stan, oraz jak wiele informacji ladowanych jest podczas wejscia na lokacje. Niemniej... co jesliby cache'owac najbardziej prawdopodobne kolejne stany lokacji?
Z tego co rozumiem najbardziej obciazajace jest;
1) ladowanie wielu obiektow naraz podczas szybiego poruszania sie pomiedzy lokacjami - obiekty musza byc zaladowane do srodowiska, ktorym jest lokacja? Po czym ustalane sa relacje miedzy tymi obiektami?
2) Skrypty naduzywajace np. odmiany - wielokrotne odwolania, do wielu obiektow, wymagajace wywoalania kosztownej funkcji po stronie Arkadii?
Poprzez cache'owanie, rozumiem:
W przypadku spelnienia min. kryteriow - np. 'przez lokacje przechodzi druzyna 5-cio osobowa', taka lokacja tworzy ukryty obiekt, ktorym jest kopia - zapis stanu tej druzyny / lokacji
Zalozmy, ze lokacja moze posiadac takie 3 scache'owane stany duzych 'obiektow', ktore sie na niej znalazly. Moglaby je utrzymywac przez np. 40 sekund do ponownego wykorzystania. W momencie wejscia na lokacje nowego obiektu, sprawdzana bylaby np. suma kontrolna, i w przypadku zgodnosci, aktualizowane bylyby atrybuty typu: kondycja, zmeczenie itd, po czym ten obiekt bylby ujawniany. (Latwo tez tworzyc wariacje co do stanu druzyny - np. brakuje 1 postaci - i przetrzymywania ich stanow gotowych do zaladowania).
To samo tyczy sie zapytan o odmiane. Ostatnie zapytania moglyby byc przetrzymywane przez jakis czas, i jesli powtarza sie wywolanie odmiany, sprawdzana jest np. lista ostatnich 30 odwolan i zwracany obiekt z odmiana. Ponownie, sumy kontrolne, czy nawet przejscie przez tablice stringow imion w mianowniku, powinno byc diablo szybkie, zwlaszcza, jesli uda sie zapewnic przetrzymywanie tego obiektu w pamieci RAM.
Oczywiscie, zachodzi kwestia wykorzystania pamieci, stad tez wszystko rozchodzi sie o to, jak 'duze' obiekty sa cache'owane i jak dlugo utrzymywane. Ogolna idea: przetrzymywac w pamieci, w szybkich strukturach, obiekty na ktorych ponowne wywolanie w krotkim czasie jest duza szansa.
Pomysl jest luzny i powyzsze propozycje z pewnoscia sa bardzo odlegle od optymalnych rozwiazan. Chodzi o ogolny zamysl.
Edit: Kondycja: podobnie - postacie zapisuaj sie do listy kondycji obiektow znajdujacyh sie na lokacji. W przypadku odwolania przez inna postac do kondycji wybranej postaci, lub wszystkich na lokacji - czy nawet wspolnej listy dla calego muda, zwracany jest stan tego obiektu (listy/ tablicy) zamiast pojedynczych odwolan do wszystkich postaci znajdujacych sie na lokacji. Niech postacie zapisuja swoje zmiany zmeczenia/ kondycji itd, do tych struktur, przetrzymywanych w RAM. Odwolania do nich powinny b. bardzo szybkie i malo obciazajace dla serwera.