Witamy, Gość. Zaloguj się lub zarejestruj.
09.09.2010 11:58:17
Aktualności: Ukazał się nowy wpis: Po sznurku do kłębka

Serwer jest aktualnie wyłączony na czas nieokreślony.
Ether Fields Project - Forum  |  Forum Publiczne  |  Aktualne Postępy  |  Wątek: Końcówka sesji 0 użytkowników i 1 Gość przegląda ten wątek.
Strony: 1 [2] Drukuj
Autor Wątek: Końcówka sesji  (Przeczytany 622 razy)
Shingen
Full Member
***

Karma: 1
Offline Offline

Płeć: Mężczyzna
Wiadomości: 105


Proszę o [potępianie] mnie :D


« Odpowiedz #15 : 08.03.2010 16:55:28 »

ta, i może jeszcze zróbcie z EF grę turową...
na pewno przyciągnie to wielu graczy... :roll:
Zapisane
Sagaceil
Ekipa EtherFields
MuttaFikka Member
*

Karma: 11
Offline Offline

Płeć: Mężczyzna
Wiadomości: 998


Inżynier sztabowy


WWW
« Odpowiedz #16 : 09.03.2010 10:07:34 »

Wreszcie posprzątałem w oknie ustawień, gdzie już porobił się niezły burdel.



Zapisane

to Jaa to bugi w grze
Sagaceil
Ekipa EtherFields
MuttaFikka Member
*

Karma: 11
Offline Offline

Płeć: Mężczyzna
Wiadomości: 998


Inżynier sztabowy


WWW
« Odpowiedz #17 : 09.03.2010 23:40:44 »

Przekompilowałem dziś EF'a na nowiutkie biblioteki graficzne dosłownie wydane parę dni temu. Zauważycie pewnie pobranie nowego dll'a: allegro44.dll. Możecie w związku z tym  wykasować starą wersję allegro42.dll .

Naprawiłem też cholerny błąd, który się trzymał kurczowo silnika od jego początków : gdy załadowało mapę i ją używało silnik ustawiał segmentom czas ostatniego użycia. Jeśli segment był nie aktywny ponad 5 minut, to zwalniało pamięć. Mogło się jednak stać ( nadal szukam przyczynę ), że usuwany był segment, który aktualnie jest gdzieś widoczny. Efekt : potok segmentów zawiera wskaźnik , do usuniętego elementu ....


Gra się wykrzaczała. Napisałem automatycznego detektora wadliwych wskaźników w potoku, więc jeśli zostanie usunięty segment, który znajduje się w potoku, automatycznie będzie on stamtąd usunięty nie powodując żadnych błędów. Ten bug był w grze od prawie roku ( odkąd piszę silnik ) i był prowodyrem wszystkich 99% nagłych i niespodziewanych crashy. Od najnowszego update'a powinniście zdecydowanie odczuć podwyższoną stabilność gry. Gdy robiłem testy gra chodziła bez przerwy ponad 13 godzin bez żadnych wycieków pamięci ani crashy ( pewnie można byłoby testować dłużej, ale po prostu komp mi się już przegrzewał Cheesy:D ).
Zapisane

to Jaa to bugi w grze
Shingen
Full Member
***

Karma: 1
Offline Offline

Płeć: Mężczyzna
Wiadomości: 105


Proszę o [potępianie] mnie :D


« Odpowiedz #18 : 10.03.2010 01:49:46 »

pewnie to działało tak, że "data ostatniego użycia" była ustawiana tylko w momencie, w którym fragment mapy był ładowany, bez odnawiania jej co chwilę, gdy się ją widziało...

i tak, wszyscy kochamy ten błąd... Cheesy'

zerujesz wskaźniki po zwolnieniu pamięci?
Zapisane
Sagaceil
Ekipa EtherFields
MuttaFikka Member
*

Karma: 11
Offline Offline

Płeć: Mężczyzna
Wiadomości: 998


Inżynier sztabowy


WWW
« Odpowiedz #19 : 10.03.2010 09:15:37 »

tak, oczywiście. zawsze jak coś daje delete, to ustawiam wskaźnik na NULL. nie mogę sobie pozwolić na takie przeoczenia w tak ogromnym systemie jak nasz silnik. Bo potem znalezienie problemu graniczy z cudem ( wymaga długiego szukania ).
Zapisane

to Jaa to bugi w grze
Shingen
Full Member
***

Karma: 1
Offline Offline

Płeć: Mężczyzna
Wiadomości: 105


Proszę o [potępianie] mnie :D


« Odpowiedz #20 : 10.03.2010 12:25:06 »

nie wiem na czym dokładnie polega mechanizm "wyświetlania" mapy, bo się w 3D nie bawię (jeszcze Cheesy), ale przypadkiem nie wystarczyłoby sprawdzać przed "wyświetleniem" fragmentu mapy, czy wskaźnik nie jest przypadkiem wyzerowany?
i gdyby był, to omijać po prostu komendę "wyświetl" (Grin)
może to by wystarczyło, żeby gra nie wykrzaczała się z tym błędem?

próbowałeś robić debugging? oczywiście konkretnie w celu wykrycia tego błędu
Zapisane
Sagaceil
Ekipa EtherFields
MuttaFikka Member
*

Karma: 11
Offline Offline

Płeć: Mężczyzna
Wiadomości: 998


Inżynier sztabowy


WWW
« Odpowiedz #21 : 10.03.2010 15:03:46 »

Nie zupełnie tak to wygląda. Jest powiedzmy na to tablica, do której są wrzucane wskaźniki do segmentów mapy - te które są widoczne. Tablica jest aktualizowana gdy ruszymy się o metr lub poruszymy kamerą o więcej jak 1 stopień. Bajer więc polega na tym, że tablica nie jest uzupełniana za każdym razem obiegu pętli. Liczniki jak najbardziej są aktualizowane dla każdego segmentu na bieżąco - bo dzięki tablicy mamy listę segmentów do wyrenderowania. Kiedy tablica jest uzupełniana jak najbardziej jest sprawdzanie zeorwych wskaźników, lecz gdy jakiś się pojawi uznawane jest to zapotrzebe doładowania mapy.

Debugger nie działa poprawnie w przypadku EF'a gdyż jest on wielowątkowy, a dla multi threading debugger przy crashy wyrzuca ostatni wpis stosu instrukcji niekoniecznie należący do błednego miejsca lecz do działającego równolegle wątku. Wogóle śmieszna sprawa z tymi wątkami.

Mamy program, w którym są dwa wątki ( niezależnie od tego głównego main ). Gdy w jednym z nich damy " int k = 0 / 0; " oczywiście wypieprzy błąd. Lecz błąd crashuje tylko działający wątek. Każdy inny działa dalej. Wink Dlatego czasem w grach czy innch programach gdy jest critical error nadal gra muzyka ( lub się zacina bo nagle wątek przestaje dostawać aktualne dane ).
Zapisane

to Jaa to bugi w grze
Shingen
Full Member
***

Karma: 1
Offline Offline

Płeć: Mężczyzna
Wiadomości: 105


Proszę o [potępianie] mnie :D


« Odpowiedz #22 : 10.03.2010 16:22:51 »

mhm, no to chyba nie pomogę, powodzenia ;]

PS: może zmienisz sposób zwalniania miejsca, że będzie się zwalniało nie po 5 minutach od ostatniego użycia, tylko np. po oddaleniu się od niego o ileś-tam metrów?
Zapisane
Sagaceil
Ekipa EtherFields
MuttaFikka Member
*

Karma: 11
Offline Offline

Płeć: Mężczyzna
Wiadomości: 998


Inżynier sztabowy


WWW
« Odpowiedz #23 : 10.03.2010 16:40:18 »

Mogę teoretycznie dać, że zwalnia zasoby, jeśli segment jest nieużywany od 5 minut i jest dalej jak parametr FarView. Ma to sens nawet.
Zapisane

to Jaa to bugi w grze
Strony: 1 [2] Drukuj 
Ether Fields Project - Forum  |  Forum Publiczne  |  Aktualne Postępy  |  Wątek: Końcówka sesji
Skocz do:  



Powered by SMF 1.1.9 | SMF © 2006-2009, Simple Machines LLC