NukeBoards - Kreatywność przede wszystkim
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  DownloadDownload
RejestracjaRejestracja  ZalogujZaloguj

Odpowiedz do tematu
Poprzedni temat :: Następny temat
[MMF2] Spadająca płynność przemieszczania obiektów
Autor Wiadomość
Ludwig 
Plutonowy


Główny edytor: Fusion 2.5
Drugi edytor: MMF2
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: MMF2 Dev
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.

:P

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: Fusion 2.5
Drugi edytor: MMF2
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: MMF2 Dev
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 :P 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: Fusion 2.5
Drugi edytor: MMF2
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: Fusion 2.5 Dev
Drugi edytor: Construct
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: Fusion 2.5
Drugi edytor: MMF2
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: Fusion 2.5 Dev
Drugi edytor: Construct
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: Fusion 2.5
Drugi edytor: MMF2
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: MMF2 Dev
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 :P
_________________
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: Fusion 2.5
Drugi edytor: MMF2
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: MMF2 Dev
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 :P . 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: Fusion 2.5
Drugi edytor: MMF2
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: MMF2 Dev
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: Fusion 2.5
Drugi edytor: MMF2
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.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

PSK Cytaty Klikibaza - kopia wszystkich klików Klikipedia - encyklopedia o tworzeniu gier Discord KlikCzat Zaproszenie Wielkie Muzeum Klikowe

Powered by phpBB modified by Przemo © 2003 phpBB Group