LolikZabijaka Opublikowano 4 Kwietnia 2020 Udostępnij Opublikowano 4 Kwietnia 2020 Cześć, pisałem już wcześniej o tym, ale odpowiedzi nie uzyskałem. Jakiś czas temu zrobiłem konwersję silnika gry z gm8 na gms 1.4, poprawiłem drobne błędy, aby gra chciała się uruchomić, niestety, po uruchomieniu produkcja mocno straciła wizualnie, zrobiła się pikseloza, pełno różnych "wtrąceń" i ogólnie dziwne rozmycie, co może być przyczyną, gdzie szukać problemu? Pokazuję screeny: Gra na GM8 Gra na GMS1.4 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 4 Kwietnia 2020 Udostępnij Opublikowano 4 Kwietnia 2020 OK sporo widzę już. Zobacz swoje fonty. Musisz dodać brakujące znaki. Rozpixelowane sprite mogą być z wielu powodów. Albo są za duże i musiały być zeskalowane w dól by texturepage mieścił się w rozmarze. Albo masz jakiś dziwny rozmiar okna/view. Albo zapisujesz je na surface i tu problemów moze być jeszcze więcej (np rozmiar nie 2^x) Albo masz po prostu wygładzanie krawędzi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 4 Kwietnia 2020 Autor Udostępnij Opublikowano 4 Kwietnia 2020 Skalowanie ustawiłem na MAX, 8192x8192, jeśli chodzi o surface, to nie używam, poza tym problem dotyczy też titlesów, rozmiar okna i view tak jak w oryginale, rozmiar okna 1280x720, taki sam obszar widzenia. Antyaliasing włączony, ale gdy nie jest aktywny, to wygląda to jeszcze gorzej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 5 Kwietnia 2020 Udostępnij Opublikowano 5 Kwietnia 2020 8192x8192 to trochę brzmi jak problem. Przez takie ustawienie pewnie większość tekstur leci na ten texturepage... a twoja karta graficzna nie może go obsłużyć i skaluje go wewnętrznie. Gdzieś tam masz przycisk w ustawieniach projektu by podejrzeć texturepage. Zobacz czy wszystkie zdeformowane grafiki nie są przypadkiem na jednym wspólnym Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 5 Kwietnia 2020 Autor Udostępnij Opublikowano 5 Kwietnia 2020 Znalazłem(częściowe) źródło problemu. Miałem wgrane stare Pole Tekstowe, które kiedyś zrobił Gnysek, to ono pierdzieliło mi całą grafikę, usunąłem dziadostwo i wygląda okej, jednak niektóre spritesy nadal mają jakieś wtrącenia innych kolorów, np. krew ma zielone piksele, a drzewa niebieską obwódkę, ogólnie obiekty, których image_angle jest zmiennie, te krzaczą się najczęściej(nie wszystkie) Gdzie szukać rozwiązania ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 5 Kwietnia 2020 Administratorzy Udostępnij Opublikowano 5 Kwietnia 2020 Pre-multilpy alpha zrób na każdym sprite. Przesiadanie się dziś z GM 8 na GMS 1.4 jest jak przesiadanie się z Windowsa XP na 7. I nie rób grafik większych, niż rozmiar tekstury, albo je podziel wtedy na szerokość tekstury właśnie. To wygląda też, jakbyś jakiś tryb na GPU włączył z kodu. Przejrzyj dobrze, czy gdzieś takich rzeczy nie robisz (ustawiani interpolacji, blendingu itp.) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 6 Kwietnia 2020 Autor Udostępnij Opublikowano 6 Kwietnia 2020 Te pre-multiply robi się jakimś kodem, czy w ustawieniach sprite'a ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 7 Kwietnia 2020 Administratorzy Udostępnij Opublikowano 7 Kwietnia 2020 Ostatni przycisk w okienku z miniaturkami sprite: https://docs.yoyogames.com/source/dadiospice/001_advanced use/more about sprites/editing sprites.html Generalnie, nie ma takiej opcji, żeby był spadek wydajności w GMS 1.4, jeśli gra jest dobrze zrobiona. Za dużo rzeczy tam robiłem, żeby nie stwierdzić, że od GM 8.1 jest wszystko kilka razy szybsze i bardziej zoptymalizowane. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 8 Kwietnia 2020 Autor Udostępnij Opublikowano 8 Kwietnia 2020 Ok, znalezione, teraz pytanie, każdy jeden sprite muszę osobno tak dobijać ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 9 Kwietnia 2020 Administratorzy Udostępnij Opublikowano 9 Kwietnia 2020 Jeśli to pomogło to tak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 10 Kwietnia 2020 Autor Udostępnij Opublikowano 10 Kwietnia 2020 Będę pisać w tym wątku, nie ma sensu robić nowego, temat "wizualny" niemal rozwiązany, dalsze pytanie będzie już stricte optymalizacyjne: 1. Jest sobie taki oto kodzik: if wyg2<5{ s_lydka1=s_wer_lyda_pr1 } if wyg4<5{ s_lydka2=s_wer_lyda_pr1 } } Generalnie kod działa poprawnie, ale zamiast robić s_lydka1=sprite_bla_bla, chcę zrobić, żeby s_lydka1=drugi subimage sprite_bla_bla. Nie wiedziałem, jak to napisać Mam nadzieję, że rozumiecie xd Nie mam pojęcia w jakiej funkcji to zawrzeć, próbowałem sprite_get_texture, ale wychodziły jakieś niestworzone rzeczy xd 2. W grze jest kilka rodzajów pocisków, załóżmy, że 3. Pistoletowy, karabinowy, pośredni, wszystkie są dziećmi obiektu "Parent pocisków" Niestety problem pojawia się przy ustawianiu parametru wroga, ponieważ oberwanie z każdego rodzaju pocisku przynosi inne skutki(takie było założenie) - zadaje inne obrażenia, a w przypadku zejścia - inny rodzaj obiektu ciała. Jest to o tyle upierdliwe, że z każdym rodzajem pocisku muszę robić osobną kolizję. Pytanie brzmi: Czy można ustawić kolizję z "Parentem pocisków" i potem w kodzie ustawić, że jeśli trzepnie go pośredni, to dzieje się jedno, a jak dostanie z karabinowego, to drugie? Podziękował Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 10 Kwietnia 2020 Udostępnij Opublikowano 10 Kwietnia 2020 1. CO? Subimage to subimage. Wykorzystujesz go przy samym rysowaniu. Jeżeli chciałbyś jakość łatwo wskazać na inny sprite który jest po kolei to dam fajny tip: Jak masz w drzewku po sobie sprite: s_wer_lyda_pr1 i s_wer_lyda_pr2 to do tego drugiego możesz się odnosić jako var sprite = s_wer_lyda_pr1 +1 Bo tak na prawdę nazwy assetów to też zmienne trzymające ID w kolejności z drzewka 2. Najlepiej jest sprawić że tworzony pocisk będzie miał w sobie zmienną z typem. Więc w createpocisku pistoletowego dajesz "type = 0", dla karabinowego "type = 1", etc. Potem w kolizji sprawdzasz zwyczajnie if(other.type == 0) { //Jestem pistoletowy } if(other.type == 1) { //Jestem karabinowy } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 13 Kwietnia 2020 Administratorzy Udostępnij Opublikowano 13 Kwietnia 2020 s_lydka2=s_wer_lyda_pr1; s_lydka2_sub = 2; /// draw draw_sprite(s_lydka2, s_lydka2_sub, x, y); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 15 Kwietnia 2020 Autor Udostępnij Opublikowano 15 Kwietnia 2020 Temat ze spritesami załatwiony. Następne zagadnienie dotyczy AI, jest mały problem, mianowicie mamy taki kodzik: STEP przeciwnika: pocisk.direction = point_direction(x,y,gracz_par.x,gracz_par.y); Pocisk tworzy się w taki sposób, że przeciwnik w ułamku sekundy(jeden step) obraca się w stronę gracza i niemal zawsze we mnie trafia, mimo że unikam strzałów. Trafia mnie średnio 9 na 10 razy, nie sposób tego uniknąć i teraz: Załóżmy, że dam mu w create zmienną maksymalnego kąta obrotu na jeden STEP, dajmy na to 0.25 stopnia. Jak zaimplementować w kodzie, aby w momencie interakcji z graczem przeciwnik obrócił się płynnie i celował we mnie z pewnym błędem(załóżmy 15 stopni) i przede wszystkim, żeby nie robił tego tak szybko, tylko najpierw we mnie "wymierzył" pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 15 Kwietnia 2020 Udostępnij Opublikowano 15 Kwietnia 2020 Najprzyjemniejszy sposób jaki ja znalazłem to: rotspeed = 8 direction += angle_difference( direction, point_direction(x,y,gracz_par.x,gracz_par.y) ) / rotspeed Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 15 Kwietnia 2020 Administratorzy Udostępnij Opublikowano 15 Kwietnia 2020 Wymierzanie, to zabawa alarmami/zmiennymi które je zastąpią. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się