Forum Tibia.pl

Forum Tibia.pl (http://forum.tibia.pl//index.php)
-   Inne (http://forum.tibia.pl//forumdisplay.php?f=19)
-   -   Engine Tibii (http://forum.tibia.pl//showthread.php?t=15255)

Alchemiko 26-10-2004 17:45

Engine Tibii
 
Temat może niepotrzebny, ale czemu nie podyskutować o tym.

Mam ty na myśli Engine Tibii.
Otóż: Cała tibia składa się z "kwadracików", każdy item, każde podłoże, wszystko ma swój odpowiednik w postaci małego kwadracika.

Teraz patrząc na to z innej strony, skoro są to zwykłe obrazki, które są dostępne w pliczku, nie potrzeba żadnego animowania tego, żadnego generowania tekstur, ani modeli. Wszystko jest tak, jakby zebrał te kwadraciki i posklejał je w jeden obrazek.

Nie trudno z tego wywnioskować, że sam Engine Grafiki jest bardzo ubogi i polega on tylko na wyświetlaniu odpowiednich obrazków.

Rozumiem, że łącze może być obciążone, gdyż ciągle dostarczane są informacje o położeniu tych obiektów na ekranie.

Ale w jaki sposób sam engine ustawiający te kwadraciki zżera micałą moc obliczeniową maszyny?

I to niezależnie, czy jest to Duronik 1200, czy może P4 2400, zawsze idzie cała moc obliczeniowa, na klienta, który tej mocy powinien zabierać o 97% mniej

Sam jestem programistą, więc wiem coś o tym.

Jakie jest wasze zdanie na ten temat?

Mr LaMeR 26-10-2004 17:50

EeeEEee tego.... Ważne że działa ;)

Khan 26-10-2004 17:58

Cytuj:

Temat może niepotrzebny, ale czemu nie podyskutować o tym.

Mam ty na myśli Engine Tibii.
Otóż: Cała tibia składa się z "kwadracików", każdy item, każde podłoże, wszystko ma swój odpowiednik w postaci małego kwadracika.

Teraz patrząc na to z innej strony, skoro są to zwykłe obrazki, które są dostępne w pliczku, nie potrzeba żadnego animowania tego, żadnego generowania tekstur, ani modeli. Wszystko jest tak, jakby zebrał te kwadraciki i posklejał je w jeden obrazek.

Nie trudno z tego wywnioskować, że sam Engine Grafiki jest bardzo ubogi i polega on tylko na wyświetlaniu odpowiednich obrazków.

Rozumiem, że łącze może być obciążone, gdyż ciągle dostarczane są informacje o położeniu tych obiektów na ekranie.

Ale w jaki sposób sam engine ustawiający te kwadraciki zżera micałą moc obliczeniową maszyny?

I to niezależnie, czy jest to Duronik 1200, czy może P4 2400, zawsze idzie cała moc obliczeniowa, na klienta, który tej mocy powinien zabierać o 97% mniej

Sam jestem programistą, więc wiem coś o tym.

Jakie jest wasze zdanie na ten temat?

Cytuj:

EeeEEee tego.... Ważne że działa
heheheheheheh - to dobre :D :D :D


Osobiscie sądze ze całą pamięć zżera klient, ktory ma za zadanie wypompowywać z neta tyle transfa ile wlezie. To powoduje obciążenie procka.

Alchemiko 26-10-2004 18:42

Cytuj:

Oryginalnie napisane przez Khan
Osobiscie sądze ze całą pamięć zżera klient, ktory ma za zadanie wypompowywać z neta tyle transfa ile wlezie. To powoduje obciążenie procka.

W sumie, też możliwe, chyba się zagłębię w kod klienta.
Jednakże skoro Tibia jest już niemałą grą, to CipSoft powinien pomyśleć o tym Engine, bo skoro bez względu na maszynę zabiera 100% jego mocy, to gdzie tutaj logika?

Większość gier ma ustalone wymagania, poniżej których nie odpali się., a powyżej których działa ładniej. Z Tibią jest inaczej, gdyż na P166MMX, odpali się, ale nic poza tym nie działa, o zalogowaniu się nie wspomnę :-) Na szybszych maszynach działa ok, ale zabiera zbyt wiele mocy obliczeniowej.

Disco Bear 26-10-2004 19:03

TIbia jest jakaś dziwna
U mnie (celeron 800) wyciąga max 20 fps (nie wiem czemu)
U qmpla (proc 400mhz 4x gorsza karta graficzna) wyciąga wiecej klatek.


Co do obciążania proca to też jest to dziwne, ale spróbuj ustawić sobie mniejsza wartść "max fps". Wtedy nie ciągnie tak "mocy".
Jednakże jest to dziwne bo wyświetlając 25fps kwardacików w małej ilości kolorów znacznie bardziej obciąża procka niż np filmy (ktore chodzą też 25fps)

Angel of Death 26-10-2004 19:34

Eh juz kiedyś był podobny temat i ktos napisał że Cip Soft nie umie pisać programów , i miał racje chyba :p

Koko 26-10-2004 20:03

Gdzie można zobaczyć ile jest FPS bo ja tej opcji nie zauważyłem jakoś...?

Earl 26-10-2004 20:09

@Autor - dlatego zzera cala moc procka ze nie tylko wyswietla grafe ale takze przetwaraza dane o tych itemkach. Wiesz ile itemkow widzisz jednorazowo na ekranie..... A kazdy ma mase wlasciwosci. A do tego idzie strasznie procko-żerna komunikacja..... i tyle

Angel of Death 26-10-2004 20:11

Cytuj:

Oryginalnie napisane przez Koko
Gdzie można zobaczyć ile jest FPS bo ja tej opcji nie zauważyłem jakoś...?

Wchodzisz w options ->Graphics ->Advanced i na dole masz suwak ;)
Earl nie pisz głupot X( ( no może masz trochę racji ale...)

Bastek 26-10-2004 20:22

alt+f8 zeby wejsc do klatek na sekunde podczas gry ^^

Androj 26-10-2004 21:06

Cytuj:

Eh juz kiedyś był podobny temat i ktos napisał że Cip Soft nie umie pisać programów , i miał racje chyba http://forum.tibia.pl/images/smilies/tongue.gif
Niezupełnie miał rację...

Cytuj:

Co do obciążania proca to też jest to dziwne, ale spróbuj ustawić sobie mniejsza wartść "max fps". Wtedy nie ciągnie tak "mocy".
Tibia standardowo chce wyciągnąć całą moc z naszego procesora. Dzięki temu jest więcej fps i gra chodzi płynniej. U mnie np. jeśli mam limit ustawiony na max, to gra chodzi bardzo płynnie, 75+ fps, ale za to mam lagi i wszystko inne wolno chodzi. Dlatego zmniejszyłem sobie limit do 30 fps. Nie ma lagów, a chociaż chodzi trochę gorzej, i tak jest duuużo lepiej niż na moim starym Pentrium 100 ;p (czasami 1,5 fps >.<).

Cytuj:

A do tego idzie strasznie procko-żerna komunikacja..... i tyle
No, gadanie najwięcej zżera mocy. Rozumiem, że nie używasz gadu-gadu itp bo ci to 95% mocy żre jak z kimś gadasz? ...

p.l 26-10-2004 21:18

może specjalnie jest tak zrobione żeby zupełnie zamulało przy dwóch klientach (MC)? :D

Sadamq 26-10-2004 21:28

Do Autora Tematu :
Napisałeś coś o kwadracikach. I sądzisz że jesteś programistą? Powinieneś wiedzieć że te " Kwadraciki" to są Sprite'y o wymiarach 32/32. Nie sklejają się one w jeden wielki obraz, tylko są one wyświetlane. Co może zamuylać kompa ? Prawdopodobnie to że ok. Na głównej mapie Mainlandu może być z 20,000 tysięcy sprite'ów ? Każdy z nich może zmienić swoje połorzenie. Tym bardziej może nastąpić dogrywanie informacji o nich a wtedy klient pobiera jescze więcej mocy obl. aby jak najszybciej rozwiązać ten problem. Dodatkowo każdy obiekt posiada ok. 5 - 6 własnych zmiennych ( A napewno jest więcej ) i często następują na nich operacje. Dodatkowo, Cipsoft ukrył wszystkie sprite'y w jednym pliku ( Nie Exe ) . I specyficznie je zkompresował. Dlatego też dogrywanie nowych grafik, musi trwać owiele dłużej niż pobranie zwykłęgo sprite'a z katalogu. Chodzi mi oto, że taki plik musi zostać zdekompresowany do czystej postaci, a następnie umieszczony na mapie. Przypuszczalnie Cipsoft zrobił usuwanie wgranego sprite'a zaraz po jego zmianie ( Czyt. Niema go jeżeli się z niego nie korzysta. ) . Dlatego te operacje muszą być wykonywane na okrągło itd. itd. Tyle że nic by się niedziało w przypadku 1 sprite'a . No baaa nawet 20 - 100. Ale 20,000 to już jest przesada ;)

Do tego sam kod tibii jest bardzo dupnie napisany. Często nie widać nicków, ponieważ poprostu się nie dograły itd. Dlatego w żadnym przypadku nie wzoruj się na Cip Sofcie...

Alchemiko 27-10-2004 01:33

Cytuj:

Oryginalnie napisane przez Sadamq
Napisałeś coś o kwadracikach. I sądzisz, że jesteś programistą? Powinieneś wiedzieć, że te " Kwadraciki" to są Sprite'y o wymiarach 32/32. Nie sklejają się one w jeden wielki obraz, tylko są one wyświetlane. Co może zamulać kompa? Prawdopodobnie to, że ok. Na głównej mapie Mainlandu może być z 20,000 tysięcy sprite'ów? Każdy z nich może zmienić swoje położenie.


Z całym szacunkiem, ale chyba nie uważasz, że te 20 000 obrazków wyświetla się naraz?!? Gdyby chciał policzyć cały main + wysepki, rook, no porostu całą mapkę, 20tyś. to zupełnie za mało. Ale jednocześnie się tyle nie wyświetla (nawet gdyby, to i tak nie zabierze to całej mocy kompa :-) )

Napisałem kwadraciki, bo chciałem, aby każdy mnie jasno zrozumiał, fakt, mogłem napisać bitmapy w rozdzielczości 32x32 w 256 kolorowej palecie barw z przezroczystością tworzoną przez RNG, (ale, po co to pisać, jak i tak każdy wie, o co chodzi?)

Jeżeli chodzi o przetwarzanie tego, to operacja na obrazku w palecie 256 wcale nie jest takie prockożerne. Popatrz na inne gry, które wykorzystują o wiele bogatszy Engine z rozbudowaną i intergralną mapą, o dźwięku, Wykorzystaniu DirectX, OpenGL itp. to już nie wspomnę. W tych grach ustawiasz sobie detale i nie zżera ci całej mocy!



Cytuj:

Oryginalnie napisane przez Sadamq
Cipsoft ukrył wszystkie sprite'y w jednym pliku ( Nie Exe ) . I specyficznie je skompresował. Dlatego też dogrywanie nowych grafik, musi trwać o wiele dłużej niż pobranie zwykłego sprite'a z katalogu.

O tym napisałem, że wszystkie grafiki są dostepne pod ręką klienta, wiadomo, że nie wpakujesz wszystkich grafik do Exeka, wtedy to by już w ogóle zwalili ten Engine


Cytuj:

Oryginalnie napisane przez Sadamq
Przypuszczalnie Cipsoft zrobił usuwanie wgranego sprite'a zaraz po jego zmianie ( Czyt. Niema go, jeżeli się z niego nie korzysta.)

Nie

Hegemmon 27-10-2004 13:02

It is so easy!
 
Ekh, chciałem na to odpowiedzieć ale widzę, że już to zrobiono, nawet kilka razy ;)
Jeśli chcesz aby twój procesor trochę odpoczą to wejdż w opcje/grafika/ zaawansowane i tam suwak ustawna minimum. Miwtedy wykorzystanie procka spada do niecałych 40%.
Cytuj:

może specjalnie jest tak zrobione żeby zupełnie zamulało przy dwóch klientach (MC)? http://www.tibia.pl/forum/images/smilies/biggrin.gif
Nie zupełnie. To chyba nie działa tak. Słyszałem o ludziach co mają po 5 tibii na raz i jakoś sobie radzą. Nie jestem programitą więc nie potrafię tego wyjaśnić. poza tym kiedy odpalisz przytibii jeszcze jakiś program co zjada troche procka to przydział na tibie spada :P

skoro zmniejszajac jakosc animacji procek odpoczywa to problem nie lerzy tutaj w grafikach. poza tym to bylo by glupie bo grafiki to pliki a nie jakies polecenia dla procesora.

a co do tego wyswielania tych 20k grafik to delikatnie mowiac jest to bezedura(;)) 20k to chyba zamalo nawet na samego rooka. W komputerze sa informacje jedynie o otoczeniu bo gdyby do kompa przesylano informacje o calej mapie to tworzylo by to niewiarygodne mozliwosci dla cheterow. wtedy na pewno powstalby jakis program do teleportacji czy cos w tym stylu. Nie wspomne tez o fakcie iz przesylanie jednego pakietu informacji zajelo by kilka ladnych godzin :P

MayGyver 27-10-2004 13:28

100% procka (niewazane czy Celeron 600MHz czy Athlon 3200+) zzera tylko pod winxp, pod 98 nie ma takiej sytuacji
kod klienta jest zwalony

u mnie na D1000 GF2MX400
przy odpalonych 4 klientach moglem spokojnie grac na jednym z nich
reszta to uh-makerzy
podczas testowania odpalilem 9 klientow i zalogowalem sie na kazdym
5 FPS na kazdym z nich ale dzialalo

kolejna sprawa
kiedys bylo tak ze to procek odpowiadal za wyswietlanie grafiki 2D
nie widzialem kodu klienta ale jest mozliwosc iz nadal w jakis sposob odpowiada on za jej wyswietlanie
dlatego w niektorych przypadkach po wymianie karty graficznej na lepsza nie widac zwiekszenia ilosci FPSow

MatKus 28-10-2004 11:28

Gremlink : Studio .NET ma to do siebie, że korzysta ze zwalonego pomysłu microsoftu pod tytułem .NET, który im zdeczko nie wyszedł. Te same programy pisane bardziej tradycyjnymi metodami działają o wiele lepiej.

Jeśli chodzi o klienta - wybacz, ale coś tu jest nie tak z optymalizacją. Jakim cudem Tibia ma u mnie po 40-60 fps, a quake 3 ma w 90-150. Chyba nie powie mi ktoś, że tibia jest bardziej skomplikowaną i mocożerną grą ;)

Co do obciążenia łącza - tu CipSoft już nie zrobił tak złej roboty. :P Owszem, można by jeszcze nieco zmniejszyć ilośc przesyłanych danych, ale nie wiele. Dla przykładu - jeśli chodzi o rozmiar mapy, to dla klienta nie ma to żadnego znaczenia, klient dostaje informacje o zmiania mapki tylko, gdy się ruszasz, i klient wie tylko o mapie o 2 kratki za ekranem, dalej już nie wie, co jest grane, i go to nie interesuje.

Co do doczytywania grafik - zapewniam, że nie jest to coś, co może zajmować tyle czasu. Plik tibia.spr nie jest skompresowany w żaden sposób, więc wczytanie nawet wszystkich grafik powinno trwać moment.

Niestety prawda jest taka, że jak się bliżej przyjżeć klientowi tibii to faktycznie można dojść do wniosku, że cipowie nie umieją pisać programów. Tam nawet nie ma tak podstawowych elementów, jak listy dynamiczne. Plecaków max 15, bo tyle jest zaprogramowane. Osób na liście battle max 64, bo tyle jest zaprogramowane. max (no właśnie nie pamiętam ile) obiektów na krtace mapy, i jak rzucisz więcej to stare znikają, bo tak jest zaprogramowane (i nie ma to nic wspólnego z obciążeniem łącza!)
Jeśli serwer jest napisany podobnie, jak klient, to odnoszę wrażenie, że przy tej samej mocy mógł by pomieścić z 50x tyle osób jednocześnie na serweie, gdyby ktoś lepszy się za to zabrał.

ZuRu 28-10-2004 11:49

Prędkość gry zależy od:
1. Procka - software rendering - badziewie i nigdy za dużo klatek nie będzie
2. grafiki - DirectX ( pewnie tak, coć nigdzie tego nei sprawdzałem choć może OpenGl :P ) - tutaj dobra karta wyciąga dużo klatek
Generalnie gry są tak pisane, że software rendering robi się do dupy a hardware działa dobrze.
Do Tibii wystarczy już GeForce 2 ( tylko nie jakiś okrojony ) i 900MHz procesor z tym, że grafa jest dużo ważniejsza.
Co do zużycia procka to tak jak pisano wyżej MAX FPS wymusza takie zużycie - swojego rodzaju benchmark. Ludzkie oko jest w stanie zaobserwować max 24klatki/sekunda. więc ustawienie, z drobną nadwyżką- np. 26 czy 28 w zupełności wystarcza, wyższe wartości są tylko marnowaniem mocy procka i są niezuważalne. Jeśli ktoś jednak twierdzi, że to nieprawda i widzi różnice w płynności między np. 26 a 40 klatek to może to go przekona - Eletronic Arts w C&C:Generals ustawił max 24 klatki i więcej gra nei wyciąga bo.. po co.

Co do rozwiązania kwadracikowatego to jest to raczej jedno z nielicznych rozwiązań które mogą się tutaj sprawdzić - Ultima też jest kwadracikowa !!! - chodzi o to, że:
- jest bardzo dużo graczy, któży generują duży ruch
- są lagi

Jakie są teog konsekwencje? Lagi nieumożliwiają operowanie na obiektach tylko na konkretnych lokacjach. Inaczej nigdy by w nic nie tarfiało.
A duża ilość graczy zmusza do uproszczenia prakietów. Inaczej łącze by się zapchało.
Dlatego klient komunikuję na zasadzie.

Postac(nr postaci, pozyciaX, pozycjaY) - > fn_Ruch(nowaX,nowaY)
coś w tym stylu. Dzięki temu procek serwera się nie zapycha.
Animacje na ekranie są tylko miłym dodatkiem, a gra tak naprawde dzieje się jak w mudzie - na cyferkach i literkach.
Nie ma co się dziwić nawet Anarchy online jest tak zrobione :P - widać jak się walczy.

p.s. Tibia wygląda mi na napisaną w Delphi :P

Matfiej 28-10-2004 13:11

@MatKus być może klient jest tak zasobożerny, gdyż przejął większość przetwarzania informacji, celem zmniejszenia obciążenia łącza. Więc musi sobie wszystko poprzeliczać (ale i tak chyba im coś nie wyszło).

@ZuRu mi to nie wygląda na Delphi, chyba że to ktoś wybrał delphi do napisania tego na chybił trafił.

Alchemiko 28-10-2004 14:59

@ZuRu, Tibia jest napisana w Visual C++, to, że dane przesyłane są w postaci "cyferek" jak to nazwałeś, to jest normalne, jak wyobraziłbyś sobie przesył informacji pod inną postacią?

Co do wymagań, które napisałeś, to karta graficzna nie odgrywa tutaj zbytniej roli, (po co ci akcelerator 3D w grze 2D?)

FPS - ludzkie oko widzi ok. 25, ale przy grasz akcji (np. strzelanki, wyścigi, etc.) widać różnicę między 25, a 30, już powyżej raczej nie?

Nie bez powodu PAL ma 25klatek a NTSC 30 (filmy są lepszej jakości)


@Matfiej, nie przeczę, ale chodzi tu też o zależność jakości działania do mocy obliczeniowej maszyny.

Na komputerze (przyjmijmy): Duron 1200, 128DDR działa z taką samą wydajnością, jak na: Athlon 2000, 512DDR

Pominąłem Szybkośc Ramu i Bufor Procka, gdyż nie o to chodziło.
A grafika, to jest wykorzystywana w b. małym stopniu, więc może być nawet jakaś Riva 16MB


@Gremlin, Tibia była jako praca maturalna? WoW, skąd wyciągnąłeś to info? :-) Nie przeczę oczywiście, ale nawet mnie to zaskoczyło i zmniejszyło moje zdziwienie tak słabym klientem


Podobny efekt zużycia całej mocy obliczeniowej zaobserwowałem przy wykorzystaniu swojego narzędzia do testowania wydajności sieci (najwięcej mocy obliczeniowej zawiera pętla odpalona jako osobny proces w tle)

Aby dać innym programom pierwszeństwo przed Tibią, i uzyskać „więcej” zasobów systemowych, można obniżyć priorytet samej Tibii (w Win z serii NT):

[Alt] + [Ctrl] + [Del], szukamy na liście Tibia*****, klikamy PPM (Prawy Przycisk Myszy), wybieramy „Ustaw Priorytet” i klikamy „Poniżej normalnego”

Tibia stanie się programem o niższym priorytecie wykonywania, niż inne aplikacje, jednakże problem jej mocożerności pozostaje nadal


Wszystkie czasy podano w strefie GMT +2. Teraz jest 11:54.

Powered by vBulletin 3