Od jakiegos czasu pisze sobie gre mmorpg, tak z nudow zeby zobaczyc czy mi sie uda i czegos sie nauczyc przyokazji. Sam silnik graficzny dziala bez zarzutow, mapa sie ladnie scrolluje, animowane postacie, kolejka zdarzen (animowany scroll innych graczy po mapie), itd. Nawet dumny jestem z tego.
Ale problem zaczyna sie kiedy odpalam to na starszej maszynie, przy kilku niezaleznie poruszajacych sie graczach po mapie robi sie pokaz slajdów. Moj silnik dziala mniej wiecej tak:
- Layer[0] = odrysowana mapa (wliczony 'margines' po kazdej stronie do scrollowania)
- Layer[1] = siatka z innymi graczami
- Buffer = Bufor z dwoma Layerami
Przy wywolaniu Game.Draw, dwa Layery leca do Buffera i z Buffera ekran ktory jest widoczny - bez marginesow - leci na TPaintBox.
Za kazdym razem kiedy wywoluje Game.Scroll uruchamiany zostaje Timer i wszystko sie odrysowuje kilka razy z Timera. Tak samo przy zmienianiu kolejki zdarzen np. scroll playera o jakims id na mapie to wywolywana jest kilkadziesiat razy funkcja do odrysowania wszystkiego i wyrzucenia bufora na PaintBox.
Działa. O dziwo calkiem szybko... Ale moglo by na starych maszynach dzialac rownie szybko.
Ma ktos pomysl jak to inaczej rozwiazac? Zamiast wywolywaniu Draw za kazdym razem kiedy potrzeba mozna by tylko updatowac Bufor i wyrzucac go na PaintBox w jakims Timerze...
Ma ktos jakies doswiadczeniu w pisaniu takich rzeczy?
PS. Mam nadzieje ze jasno to okreslilem, nie mam teraz mozliwosci wrzucenia kodu...