Skocz do zawartości

gnysek

Administratorzy
  • Postów

    9 812
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    141

Treść opublikowana przez gnysek

  1. można, jak najbardziej. Surface zapewne zapisuje się w "%LOCALAPPDATA%/NazwaGry".
  2. Jest jeszcze takie rozwiązanie - utworzyć surface, dać surface_set_target() przed pierwszym rysowanym elementem (czyli jakieś wysokie depth), oraz kolejny obiekt z surface_reset_target() z niskim depth i wtedy wyrenderujesz to co chcesz dokładnie na surface i będzie przeźroczyste tło. Żeby nie bawić się w przesuwanie koordynatów z 0,0 do miejsca które chcesz, możesz użyć camera_apply() - ale wtedy kamera na tę jedną klatkę musi zaczynać się tam, gdzie ma zaczynać się screen. Będzie z tym troche zabawy, ale GM na pewno pozwala na generowanie przeźroczystych PNG, bo generowałem tak kiedyś stripy z fontem.
  3. GMCLAN meetup - 20 lat GMCLANu!
  4. Próbowałeś korzystać a application_surface i to ten surface zapisywać? Ten surface będzie mieć chyba rozmiar jaki trzeba.
  5. 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
  6. 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.
  7. Zastanawia mnie rozmiar gry, tam jest zdekompresowana muzyka, że aż tyle?
  8. 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".
  9. Dałem 5/5 Gra dziwnie zwalnia w wersji GX, chociaż licznik FPSów prawie ciągle pokazuje maks, dziwna sprawa...
  10. gnysek

    PGA+GIC 2022

    do
    Spotkanie GMCLANowej braci w trakcie Poznań Game Arena i Game Industry Conference w Poznaniu.
  11. @Konrad-GM a to nie przez to, że za mało osób pobrało ten plik i zgłasza jako false-positive?
  12. Jak będę miał chwilę, żeby się przełączyć z linuxowej pracy na Windowsa to pobiorę, ale bardzo mi się podoba, wbrew pozorom jest tutaj dużo zaawansowanych problemów zrealizowanych i nawet miałeś czas bawić się w różne "smaczki", które dodają grze "tego czegoś", jak drzwi które się otwierają jak do nich strzelasz, łuski, wykrzyknik jak przeciwnik nas zauważy, minimapka, nie mówiąc o kucaniu za skrzynkami, tego nawet Borek nie miał w Aliensach O grafice można dyskutować (chociaż to i tak top tego co tu widujemy :P), ale od strony programistycznej - robota 10/10 jak na nasze community. Na palcach jednej ręki wyliczę osoby, które robią coś tak doszlifowanego.
  13. Może zamiast checksumy sprawdzają rozmiary obrazka ?
  14. @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.
  15. Faktycznie, wygląda świetnie, ale jeszcze lepiej by wyglądało, gdyby dało się linię zrobić po całości dookoła rąk i brody:
  16. Jak rozumiem, chcesz wycentrowany tekst, ale chcesz też, aby wyświetlał się tak, jakby brakujące litery były nieczytelne. To w sumie nie jest takie trudne, trzeba pobrać szerokość pełnego tekstu, podzielić go na dwa (czyli wziąć połowę) i zacząć rysować tekst wyrównany do lewej, na pozycji gdzie ma być środek, minus właśnie ta połowa. Czyli np.: var w = string_width(pelny_tekst); draw_set_halign(fa_left); draw_text(x - w/2, y, krotszy_tekst);
  17. Znalazłem dziś gierkę w GM podobną do Dywersanta https://forum.yoyogames.com/index.php?threads/malachi.96772/
  18. Do 3D najlepsze będą Unity i Unreal W GameMakerze to raczej coś w stylu pierwszych dwóch Diablo:
  19. Szczupłe postaci poruszają rękami i nogami tak samo, jak te co mają 150kg, przybliżyłbym im łokcie, dłonie, kolana i stopy do środka symetrii.
  20. Jak dla mnie to jest odtwarzacz wideo.
  21. Obecny stabilny GM nie korzysta z najnowszej wersji .NET, a bodaj z czwartej. Dopiero wersja 2022.5 będzie korzystać z .NET 6. Także wygląda, że to zbieg terminów.
  22. Przeszukałem sieć, ale jedyny wynik na ten temat to... ten temat w którym teraz odpisuję. Wygląda, ze nikt nie miał takiego problemu. Spróbowałbym po prostu wszystkich standardowych rozwiązań na znikające centrum powiadomień. Raczej nie winiłbym za to GameMakera, ale bardzo możliwe, że winny jest np. .NET, który przy okazji jest instalowany. Wejdź w "Dodań i usuń programy" i posortuj je po dacie, może spróbuj przeinstalować .NET. Btw., doinstalowałeś wszystkie aktualizacje z Windows Update dla .NET?
  23. Świetnie to wygląda, jak typowa nie-disneyowa bajka z lat '90. W sumie jedyne co mi się nie podoba, to font, ale fanów visual novelek kreską na bank ta gra przyciągnie. Zauważyłem też na ostatnim screenie, że pojawiają się dialogi dwóch postaci na raz - bardzo fajnie, np. Cinders i Solstice od TeeGee takiego czegoś nie miały, a mogłoby to zwiększyć immersję (tam zamiast tego, postać która mówiła była rozjaśniana).
  24. gnysek

    timer

    Zakładając, że A to ilość sekund, przez którą gracz może jeszcze grać, np. 8520 sekund: liczba godzin: A div 3600 liczba minut: A div 60 mod 60 liczba sekund: A mod 60 I możesz wywalić prawie połowę kodu i ifów. Natomiast rysowanie wygląda wtedy tak: function draw_remaining_time(seconds) { _s = ""; if (seconds >= 3600) { _s += string(seconds div 3600) + " hours, "; } if (seconds >= 60) { _s += string((seconds div 60) mod 60) + " minutes, "; } return _s + string(seconds % 60) + " seconds"; }
×
×
  • Dodaj nową pozycję...