|
[MMF2] Spadająca płynność przemieszczania obiektów |
| Autor |
Wiadomość |
Ludwig
Plutonowy
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomógł: 2 razy Posty: 96
2294 Prestiż
|
Wysłany: 11-08-2013, 22:36 [MMF2] Spadająca płynność przemieszczania obiektów
|
|
|
Witam!
Problem jak w temacie. Zastanawiam się czym może być to spowodowane i jak temu zaradzić.
Załączam link do pliku by pokazać o co mi chodzi:
http://www.sendspace.pl/f...135f7b8785fc21f
Obsługa:
Klikając na różowe płytki zaznaczamy je.
Klikając w ich pobliżu przemieszczamy je.
Spacją tworzymy nowe w pozycji kursora.
Z góry wszystkim dziękuję.
[ Dodano: 11-08-2013, 22:43 ]
Zapomniałem dodać ze przy 10 obiektach do przemieszczania (różowe płytki) obiektów aktywnych nie ma tak wcale dużo. Mniej niż 100 XD
[ Dodano: 12-08-2013, 00:25 ]
Kolejna sprawa. Wszystko zaczyna zwalniać przy większej ilości płytek. Mimo że znaczniki ruchu działają bezproblemowo, a aktywna płytka powinna mieć zawsze pozycje tego znacznika. |
|
|
|
 |
Fadex
Legenda #4; #12; #18; #20; #21; #27
 
Główny edytor: 
Pojedynki: nie
Pomógł: 105 razy Posty: 1773
51612 Prestiż
|
Wysłany: 12-08-2013, 00:44
|
|
|
Mając sam plik exe jedyna pomoc jaką możesz uzyskać to:
No, faktycznie, spowalnia.
Skoro nie ma dużo obiektów aktywnych, to z pewnością jest wykonywane za dużo zbędnych obliczeń które sprawiają owe spowolnienie. Bez wglądu w kod to jedyne co jestem w stanie powiedzieć. |
_________________ If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat |
|
|
|
 |
Ludwig
Plutonowy
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomógł: 2 razy Posty: 96
2294 Prestiż
|
Wysłany: 12-08-2013, 08:19
|
|
|
Jedyne obliczenia jakie są wykorzystywane przy tym ruchu to wyliczanie wektora przemieszczenia. Wektory są zliczane w zależności od położenia dwóch detektorów użytych do tego ruchu i kierunku w którym się klika. Wszystko to dwie linijki prościutkich obliczeń wrzuconych do zmiennych detektorów.
Pozycja wybranej różowej płytki ustawiona w taki sposób by jej pozycje X i Y miały zawsze pozycje jednego z detektorów przemieszczania.
Sama płynność aplikacji prawdopodobnie nie spada bo pewnie widać było by to po spowolnieniach detektorów, a te działają optymalnie płynnie.
Może chodzić o sam dobór zdarzeń odpowiedzialnych za pozycje różowej płytki?
Dodam jeszcze każda różowa płytka to 7 obiektów aktywnych
Już myślałem że wszystko idzie zgodnie z planem, a tu taki numer
Pomocy!!! |
|
|
|
 |
Fadex
Legenda #4; #12; #18; #20; #21; #27
 
Główny edytor: 
Pojedynki: nie
Pomógł: 105 razy Posty: 1773
51612 Prestiż
|
Wysłany: 12-08-2013, 08:38
|
|
|
Jeśli nie jest to jakieś super tajne to najszybciej będzie jeśli dasz kod (a najlepiej całe mfa - wtedy od razu będę w stanie powiedzieć co jest zrobione nie tak i czy można jakoś lepiej). Nie za bardzo podoba mi się to, że jedna płytka składa się z siedmiu obiektów - zgodnie z logiką powinna się składać z jednego obiektu poza tym możesz ustawić gdzieś licznik który będzie wskazywał na liczbę fpsów i będziesz wiedział od razu czy to cała gra zwalnia czy tylko ten ruch. |
_________________ If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat |
|
|
|
 |
Ludwig
Plutonowy
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomógł: 2 razy Posty: 96
2294 Prestiż
|
Wysłany: 12-08-2013, 08:55
|
|
|
Oczywiście nie jest tajne
Mało komu chce się paprać w czyichś wypocinach XD Więc dziękuje już za samą próbę.
http://www.sendspace.pl/f...c33b4c0fda2bf18
Powtarzam, że jestem clickowym analfabetom
[ Dodano: 12-08-2013, 10:29 ]
Fps nie spada, a to że każda płytka to 7 obiektów aktywnych też nie wpływa na fps. Nie mam pojęcia gdzie jest błąd . |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 12-08-2013, 18:52
|
|
|
Napisz jeszcze raz, dokładnie, co jest negatywnym efektem, a jak powinno wyglądać normalnie.
Poza tym masz ustawione 100 fps w Runtime Options, a V-Sync jest zaznaczony. V-Sync na większości LCD zredukuje fps do 60, chyba że zaznaczysz Machine Independent Speed. |
|
|
|
 |
Ludwig
Plutonowy
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomógł: 2 razy Posty: 96
2294 Prestiż
|
Wysłany: 12-08-2013, 19:03
|
|
|
To wygląda tak jak by płytki nie nadążały za znacznikiem przemieszczenia. Widać to szczególnie przy ich większej ilości. Wtedy opóźnienia już całkiem bugują ruch , ale płynność gry nie spada.
To z synchronizacją pionową i fpsami to pozostałości mojej próby "walki" z tym problemem na zasadzie: a może zadziała.
Kiedyś stosowałem podobne rozwiązania i jako tako się sprawdzały, a teraz coś nie gra.
Chciałbym żeby te różowe płytki (po kliknięciu zmieniające się w czerwone) płynnie zmieniały pozycje, tak jak to robi obiekt który powinien za to odpowiadać (ten zielony z brzydkimi strzałkami). |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomogła: 259 razy Posty: 3447
33795 Prestiż
|
Wysłany: 12-08-2013, 19:33
|
|
|
Może ustawiaj pozycje obu obiektów w jednym zdarzeniu? Albo rozwiń wszystkie grupy i zamień warunek w zdarzeniu #21 z Every na Always?
Najważniejsze, to dokładnie opisać problem, bo ja go po prostu nie widzę. |
|
|
|
 |
Ludwig
Plutonowy
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomógł: 2 razy Posty: 96
2294 Prestiż
|
Wysłany: 12-08-2013, 19:45
|
|
|
Co do pierwszego to masa roboty by mnie czekała, ale ostatecznie i tego się podejmę.
Co do drugiego to już próbowałem i nie zadziałało. Oba warunki działają identycznie.
Tak żeby ułatwić ewentualne poszukiwania to istotne są tu obiekty takie jak:
znacznik ruchu (pusty w środku niebieski heks)
Płytka przemieszczenia (zielony heks z brzydkimi strzałkami)
Płytka armii (różowy heks)
i ich pozycje x, y i zmienne A, B i C.
[ Dodano: 12-08-2013, 21:09 ]
Najlepiej widać to co opisałem na pierwszym pliku jaki załączyłem (mam tam tak ustawione warstwy, że problematyczny obiekt widać).
Należy stworzyć spacją tak ponad 10-20 różowych płytek.
Następnie wybrać jedną, klikając na nią i kliknąć w jej pobliżu, na niebieskie pole.
Powinna zacząć się przemieszczać, albo raczej żabkować.
Przy czym fps jest ok. |
|
|
|
 |
Fadex
Legenda #4; #12; #18; #20; #21; #27
 
Główny edytor: 
Pojedynki: nie
Pomógł: 105 razy Posty: 1773
51612 Prestiż
|
Wysłany: 12-08-2013, 21:36
|
|
|
Rozwiązanie dość oczywiste. Wini zdarzenie numer 97, warunek "pick one of" należy postawić na samym dole.
Dlaczego?
W obecnej sytuacji najpierw wybierana jest jedna, całkowicie losowa płytka. Następnie sprawdzane jest, czy wybrana płytka ma wartość C równą 3. A następnie czy płytka spełniająca oba te warunki zachodzi na ten obiekt ze strzałkami (płytka przemieszczenia?). Naturalnie jeśli płytek jest mało to dość często losowo wybrana płytka będzie spełniać ten warunek. Ale już przy dwudziestu jest to szansa 1/20 - czyli średnio co 20 klatek płytka przesunie się na miejsce kursora, co jest zupełnie bez sensu.
Oczywiście samo sprawdzanie zachodzenia na siebie obiektów w tym zdarzeniu to błędna technika, powinno być to zrobione przez przypisanie do siebie wartości identyfikacyjnych dwóch obiektów i manewrowanie w ten sposób - wtedy na pewno nie pomylą się dwa obiekty, nawet jeśli będą zachodzić w tej samej chwili na płytkę przemieszczenia.
To tyle, wybacz że tak późno, dopiero wróciłem do domu |
_________________ If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat |
|
|
|
 |
Ludwig
Plutonowy
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomógł: 2 razy Posty: 96
2294 Prestiż
|
Wysłany: 12-08-2013, 21:49
|
|
|
Jaaaaa !!! Dzięki Ci bardzo!! Dokładnie o to mi chodziło!
Działa bez zarzutu, dokładnie tak jak chciałem.
Teraz mogę przestać drapać się w głowę dopalając kolejną fajkę i przestać patrzeć ciągle w ten sam ekran.
Prace wznowione.
Wiem, że to nachodzenie się obiektów to beznadzieja i muszę to poprawić. To rozwiązanie tymczasowe, ale z tym powinienem sobie poradzić. Mam nadzieje... XD
I takie z dupy pytanie: Przy ilu obiektach aktywnych gra zacznie faktycznie zwalniać?
Jeszcze raz dziękuje za pomoc i kolejną cenną wiedzę! |
|
|
|
 |
Fadex
Legenda #4; #12; #18; #20; #21; #27
 
Główny edytor: 
Pojedynki: nie
Pomógł: 105 razy Posty: 1773
51612 Prestiż
|
Wysłany: 12-08-2013, 21:52
|
|
|
Przy ilu obiektach? To zależy od mocy procesora i od wielkości tych obiektów. Przy obecnym osprzętowaniu (i nieco starszym) - proponowałbym zamknięcie się w ilości 500 obiektów. Chyba że masz najnowszą oryginalną wersję MMFa, która wspiera HWA - wtedy wystarczy wybrać tryb wyświetlania Direct 3D 9 i cieszyć się tysiącami obiektów aktywnych na ekranie . Jednak jeśli można gdzieś ograniczyć liczbę obiektów aktywnych to najlepiej jest to zrobić. |
_________________ If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat |
|
|
|
 |
Ludwig
Plutonowy
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomógł: 2 razy Posty: 96
2294 Prestiż
|
Wysłany: 12-08-2013, 22:00
|
|
|
Niestety moja gierka będzie posiadała przerażająco dużo obiektów aktywnych.
Co prawda są niewielkich rozmiarów i zachodzi między nimi stosunkowo mało interakcji. Samych takich drzewek pojawi się na pewno ponad 200 na planszy, a i jeszcze cienie... arghhhh jednak chce uzyskać ładny izometryczny efekt.
Pewnie jedne z moich kolejnych pytań będą dotyczyć jak zwiększyć fps bo HWA nie mam |
|
|
|
 |
Fadex
Legenda #4; #12; #18; #20; #21; #27
 
Główny edytor: 
Pojedynki: nie
Pomógł: 105 razy Posty: 1773
51612 Prestiż
|
Wysłany: 12-08-2013, 22:05
|
|
|
Oczywiście drzewa mogą być obiektami tła, tych można stawiać bardzo dużo bez obaw o spadek fps można też wklejać pewne nieruchome obiekty aktywne do tła żeby oszczędzić na ich liczbie. |
_________________ If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat |
|
|
|
 |
Ludwig
Plutonowy
 
Główny edytor: 
Drugi edytor: 
Pojedynki: być może
Pomógł: 2 razy Posty: 96
2294 Prestiż
|
Wysłany: 12-08-2013, 22:21
|
|
|
Te zmartwienia zostawiam na później (prawdopodobnie postępując błędnie). Myślę, że i te problemy Ty czy inni użytkownicy tego forum mi pomogą.
Pozdrawiam. |
|
|
|
 |
|
|