Problem z wersją Relase projektu

0

Ludziska, pomocy!
Zkompilowałem wersję finalną projektu w Visual Studio 2008. Zmieniłem z Debug na Release i zostawiłem standardowe ustawienie "any CPU". Na moim kompie gra (bo projekt to prosta gierka 2D w C# i Windows Forms) chodzi ok. Problem jest jak odpalam na innym (testowałem na dwóch rożnych): gra chodzi tak, jakby timer tykał w większych odstępach czasowych. Wszystko dzieje się płynnie tylko dużo wolniej. Zużycie procka nie jest duże, więc nie jest to spowodowane tym, że musi zrobić dużo rzeczy podczas obsługi tyknięcia. Co może być powodem takiego zachowania i jak temu zapobiec?

0

a co jaki czas masz tick timera? ktorej klasy timer uzywasz?
resolution zalezy od hardware

0

Tick timera mam ustawiony na 50 ms. Jest to timer Form'a

0

Czyli tego najgorszego i najbardziej niedeterministycznego?
Może jednak użyć jakiegoś pewniejszego mechanizmu...

0

To jaki mechanizm byś mi doradził?

0

msdn ma odpowiedzi na prawde na wiele pytan :)
http://msdn.microsoft.com/en-us/library/aa964692.aspx
poczytaj, wyciagnij wnioski...

0

do gier używa się pęli czasu rzeczywistego a nie jakichś timerów...
pętla jest tutaj najpewniejszym mechanizmem.

0

Czyli żeby się cały czas kręciła pętla? Może to dokładne ale chyba nieoptymalne...

1

Może to dokładne ale chyba nieoptymalne

[rotfl]

Odwrotnie - to rozwiązanie niezbyt dokładne i wymagające odpowiedniego wyliczania i obsługi zmiany czasu (ale na to są sposoby), za to najbardziej optymalne ze wszystkich możliwych.

Do gier używa się pętli. Zawsze.

0

Wyliczenie polega mniej więcej na tym że zakładamy ile czasu ma iteracja na wykonanie się, i mierzymy jej czas.
Następnie odejmujemy od założonego maksymalnego czasu, tą rzeczywistą w jakiej wykonała się iteracja i pozostały czas - śpimy, a jeśli jakimś sposobem się nie zmieściliśmy w czasie to pomijamy przykładowo następne renderowanie na rzecz samych obliczeń.

No i taka pętla musi mieć obsługę komunikatów. Ale powiem Ci że się opłaca "tak kombinować". Swojego czasu jak skrobałem pewną grę, to po przejściu z timera na pętlę wydajność wzrosła prawie dwa razy.

0

Timery są fajne, gdy potrzebne np. raz na sekundę. 50 ms to już jest bardzo ciasny timer, i mamy gwarantowane że się nie wyrobi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1