I am Lord Opublikowano 22 Sierpnia 2022 Udostępnij Opublikowano 22 Sierpnia 2022 Ktoś wie jaka może być przyczyna tego że Tileset ustawiony w room editorze nie zgrywa się z tym który się wyświetla w grze? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Sierpnia 2022 Udostępnij Opublikowano 23 Sierpnia 2022 Już nie ważne, okazało się że restart IDE pomogło. Na następny dzień błąd się naprawił. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 25 Sierpnia 2022 Administratorzy Udostępnij Opublikowano 25 Sierpnia 2022 @I am Lord Widziałem wczoraj dokładnie ten sam błąd opisany na angielskim discordzie gamemakerowym i wygląda, że to nie był przypadek - aktualizuje się sprite, ale nie tileset. Rozwiązaniem jest podobno zaznaczenie checkboxa w tilesecie (disable sprite export) i potem ponowne zaznaczenie. Błąd jest zgłoszony, ale stabilna dostaje chyba wydanie we wtorek/środę, więc może być ciężko z naprawieniem tego przed 2022.8, trafi pewnie do bety za tydzień i do 2022.9 oraz LTS. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 27 Sierpnia 2022 Udostępnij Opublikowano 27 Sierpnia 2022 Widzę że ze spritami jest to samo. Nie modyfikowałem sprite w edytorze w IDE a w grze jest nadal stary. Restart pomógł dopiero. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 29 Sierpnia 2022 Administratorzy Udostępnij Opublikowano 29 Sierpnia 2022 Może zamiast checksumy sprawdzają rozmiary obrazka ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 29 Sierpnia 2022 Udostępnij Opublikowano 29 Sierpnia 2022 Miało tam być że zmodyfikowałem a nie (nie modyfikowałem). A błąd się pojawił jak kliknąłem kompilację i gdzieś tam w jej trakcie przerwałem bo coś na szybko zauważyłem. Z tilesetem też tak zrobilem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 9 Września 2022 Udostępnij Opublikowano 9 Września 2022 Nie wiem jak o to zapytać w googlach po angielsku, więc zapytam na gmclanie po polsku. Jak przesłać odwołanie do adresu zmiennej w pamięci a nie przypisanej wartości do funkcji. np. mam w obiekcie create: sndPlayer = 1; //to ma robić coś w deseń Sound Instance ID step: play_sound(sndSound1, 1, 1, sndPlayer); a w funkcji: function play_sound(snd, gain = 1, pitch = 1, sound_player = -1) { if(sound_player != -1) if(!audio_is_playing(sound_player)) {sound_player = audio_play_sound(snd, 1, false, gain,0, pitch); return true;} } No to i tak odtwarza dźwięk co klatkę, zamiast czekać aż się zakończy, bo pewnie przesyła wartość zmiennej czyli 1. Jak zrobię na sztywno, czyli tak: function play_sound(snd, gain = 1, pitch = 1) { if(!audio_is_playing(sndPlayer)) {sndPlayer = audio_play_sound(snd, 1, false, gain,0, pitch); return true;} } No to działa elegancko. Chyba, że gmlu czegoś takiego nie ma, bo z tego co kojarzę to jakieś pointery to w c++ są Nie chce robić zmiennych globalnych, bo wiele obiektów ma zmienną sndPlayer. Szukam czegoś w stylu get_variable_address(sndPlayer) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 9 Września 2022 Administratorzy Udostępnij Opublikowano 9 Września 2022 Nie bardzo rozumiem co to ma do rzeczy ze wskaźnikami audio_is_playing przyjmuje albo ID dźwięku, albo id instancji dźwięku, zwróconej przez audio_play_sound. W twoim (pierwszym) kodzie: snd => id assetu dźwięku sound_player => id instancji odtwarzania dźwięku Może chodzi Ci o efekt, który uzyskasz pisząc: if(!audio_is_playing(sound_player) and !audio_is_playing(snd)) Btw. domyślnie nie zalecam ustawiania wartości 1. Najlepiej "undefined". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 11 Września 2022 Udostępnij Opublikowano 11 Września 2022 Jak dla mnie wygląda to na shadowing zmiennych, puszczasz wartość `-1` w argumentach: function play_sound(snd, gain = 1, pitch = 1, sound_player = -1) <--- tutaj Definiujesz to jako zmienną lokalną funkcji (nie instancji), a potem zamieniasz jej wartość tutaj: sound_player = audio_play_sound Wygląda mi to na zwyczajny shadowing, a ta zmienna ma scope funkcji a nie instancji w której ta funkcja jest odtwarzana, zwyczajnie `sound_player` zawsze jest `-1` (zakładając, że podstawiasz do niej wartość -1 z innej zmiennej podczas jej wywołania, bądź pozostawiasz argument "pusty", który jest zastępowany wartością domyślną, `-1`). Pewnie szukasz czegoś w rodzaju: variable_instance_set (yoyogames.com) variable_instance_get (yoyogames.com) Ewentualnie po prostu zwracaj ID (wartość po wywołaniu audio_play_sound) odtworzonego dżwięku zamiast posiłkować się taką "adresacją". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 12 Września 2022 Udostępnij Opublikowano 12 Września 2022 Cytat Pewnie szukasz czegoś w rodzaju: variable_instance_set (yoyogames.com) variable_instance_get (yoyogames.com) O! Bardzo prawdopodobnie, że tego właśnie szukałem. Robiłem też return sound_player zamiast true, ale to nic nie dało. Na razie zrobiłem to po normalnemu, czyli tak jak Gnysek napisał, ale chciałem to sobie zrobić bardziej elastycznie. Prościej mówiąc, chcę uniknąć pisania za każdym razem if(!audio_is_playing(sndPlayer)) a dodatkowo kiedyś też miałem problem właśnie z tym przesyłaniem zmiennych, gdzie zmienna w funkcji i instancji miała być tą samą. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 12 Września 2022 Administratorzy Udostępnij Opublikowano 12 Września 2022 Ale jak każda instancja ma inny dźwięk, to jego id w zmiennej zupełnie wystarczy - wywołując skrypt np. za pomocą with() możesz ustawić kontekst instancji z której kod się wykona i wtedy "widzi" jej lokalne zmienne, nie trzeba ich przekazać w argumencie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 13 Września 2022 Udostępnij Opublikowano 13 Września 2022 tak tak, problem mam z tym, że ja w funkcji nie wiem jaka jest nazwa tej zmiennej w instancji. Niektóre mają sndPlayer a inne inaczej, dlatego chciałbym przesyłać odwołanie do zmiennej. Odwołanie, a nie przypisanie, bo chciałby też wiedzieć kiedy ta zmienna jest wykorzystywana (audio_is_playing). No nie potrafię tłumaczyć albo za dużo wymyślam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 13 Września 2022 Administratorzy Udostępnij Opublikowano 13 Września 2022 Dobra, teraz zrozumiałem. Np. obj_a ma zmienną sndPlayer, a obj_b ma zmienną sndEnemy i chcesz odtwarzać właśnie je, ale zawsze mają inne nazwy. Tyle, że tę nazwę też gdzieś musisz przetrzymywać (np. sndVariabke = "sndEnemy"), więc chyba lepiej po prostu ujednolicić nazwę zmiennej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
H2S04 Opublikowano 9 Maja Udostępnij Opublikowano 9 Maja Mam pytanie z innej beczki, otóż posiadam kod ekwipunku, czyli rysowanie slotów, oraz przenoszenie przedmiotów, łączenie ich itp. Jednak napisałem kod w DrawGui zamiast step, jak bardzo może wpłynąć to na grę? Oczywiście kod działa tylko po kliknięciu myszą oraz gdy EQ jest włączone. Pozdrawiam PS. Tak wiem, że kod powinienem przenieść do stepa, bo on obsługuje logikę gry i jest wykonywany co ilość klatek, a Draw jest do rysowania, bo wykonywany jest ciągle, jednak ciekawi mnie to, zanim napiszę kod od nowa przenosząc do StepEvent Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Maja Administratorzy Udostępnij Opublikowano 10 Maja 12 godzin temu, H2S04 napisał(a): Jednak napisałem kod w DrawGui zamiast step Ja zazwyczaj też tak robię, chociaż faktycznie logikę lepiej byłoby mieć w Step. Z mojego jednak doświadczenia, skoro nie masz tego kodu w step, to even step wykona się o tyle szybciej, a draw o tyle samo dłużej Możesz użyć profilera w debuggerze, albo zwykłego show_debug_overlay, żeby zobaczyć jaki to ma wpływ na FPS - może się okaże, że masz całkiem spory zapas (spory zapas przy grze 60FPS to znaczy, że wspomniana funkcja pokazuje tak z 300-400FPS). Tak naprawdę, w najnowszych wersjach języka GML, zamiast rozdzielać kod na step/draw, lepiej już napisać strukturę-konstruktor, która ma w sobie statyczne funkcje draw/step i je wywoływać w jakiejś instancji. Zaletą tego rozwiązania jest, że można sobie wtedy różne własności GUI (jak wybrany element, pozycję kursora/obwódki, podświetlenia elementów itp.) zapisać w takiej strukturze jako wewnętrzne zmienne, które nie przeszkadzają instancji (można użyć tych samych nazw) i które wtedy łatwiej używać (step wylicza zmienne dla draw). 12 godzin temu, H2S04 napisał(a): Tak wiem, że kod powinienem przenieść do stepa, bo on obsługuje logikę gry i jest wykonywany co ilość klatek, a Draw jest do rysowania, bo wykonywany jest ciągle Nie do końca prawda. Jeśli gra ma 60 FPS, to znaczy, że masz 60 razy wykonany event step a po nim event draw. Oba są wykonane 60 razy, w GM nie ma tak, że przeskakuje klatki i wtedy będzie więcej stepów. Dlatego tak niepopularny w GM jest delta timing, bo gdyby ten rozjazd był z automatu, trzeba by w każdej grze go używać, nawet w Catch the Clown. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Chell Opublikowano 10 Maja Autor Filar Społeczności Udostępnij Opublikowano 10 Maja 2 godziny temu, gnysek napisał(a): Jeśli gra ma 60 FPS, to znaczy, że masz 60 razy wykonany event step a po nim event draw. Oba są wykonane 60 razy, w GM nie ma tak, że przeskakuje klatki i wtedy będzie więcej stepów. Dlatego tak niepopularny w GM jest delta timing, bo gdyby ten rozjazd był z automatu, trzeba by w każdej grze go używać, nawet w Catch the Clown. delta timing rozwiązuje też inny problem - jeżeli Twoja gra ma chodzić w 60 fpsach, a komputer gracza faktycznie doi 15 klatek na sekunde, i nie masz poprawki na delta timing, to gracz gra w slow mo - pocisk wroga który leciałby 1s leci 4s itd 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ę