Skocz do zawartości

gnysek

Administratorzy
  • Postów

    9 827
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    144

Treść opublikowana przez gnysek

  1. Jest zasobożerne, natomiast sposób optymalizacji zależy od tego, co tam się dzieje. Nie wiemy czemu tych sprawdzeń jest tak wiele, ale skoro są co 1,5 sekundy, to zacząłbym od zastanawiania się, czy wszystkie muszą robić to w tej samej sekundzie. Może mogą robić to po kolei - w każdym kroku jeden lub kilka? 1,5 sekundy przy 60 FPS to 90 eventów step, zatem niemal wspomniana setka. Nie wiem czy to się przyda, ale podam ogólny kod na wykonywanie kodu co klatkę obrazu przez n instancji danego obiektu (w przykładzie: 3): // CREATE: obecnie = 0; ile_co_klatke = 3; // STEP: var liczba_instancji = instance_number(nazwa_obiektu); for(var i = obecnie; i < min(liczba_instancji, obecnie + ile_co_klatke); i++) { with(instance_find(nazwa_obiektu, i)) { // instance_find() pozwala wybrać n-tą instancję danego obiektu // tutaj kod, który chcemy wykonać - jesteśmy w "with", więc kod wykonuje się w kontekście wybranej instancji // może być też skrypt, lub odwołanie do eventu, np. user event tejże instancji } } obecnie = i; // ponieważ wykonało się "i++", wartość będzie o 1 większa niż mniejsza z liczb w funkcji min() // nie zwiększamy tej wartości w pętli, gdyż zaburzyłoby to wynik funkcji min() if (obecnie == liczba_instancji) { obecnie = 0; }
  2. 1) myślę, że w dzisiejszych czasach przydałby się jakiś tutorial. Niby się etapy rozwijają po kolei, ucząc, ale trzeba scrollować i szukać co można było jeszcze kliknąć, a gra mogłaby to podać na tacy - z drugiej strony, nie będę go wymagał w prototype 2) planujecie wyjście na komórki? etap na ostatnim screenie nie wygląda jakby na nie pasował, tak samo sterowanie.
  3. Mi akurat styl graficzny się podobał, najmniej pasował moim zdaniem interfejs, który trącił trochę latami '90, a font był tak dobrany, jakby miała to być gra wojenna, a nie o księżniczce. Zobacz jaka jest różnica w Cinders od TeeGee - zwykły szeryfowy font i cienka rameczka dookoła tekstu, a jakoś milej dla oka: https://store.steampowered.com/app/293680/Cinders/ .
  4. Jak mawiają na zachodzie, RTFM - https://manual.yoyogames.com/Settings/Building_via_Command_Line.htm . Niestety, wymaga to wersji Enterprise.
  5. Dokładnie, tak to działa. Czasem taka pierdołka okazuje się mieć kolosalne znaczenie dla całej gry.
  6. Świetna inicjatywa, szkoda tylko trochę, że żaden z nich nie jest w GameMakerze - ale to też nie jest tak, że są do niczego nieprzydatne - bowiem kod czy PHP czy JS w swojej logice nie jest jakoś różny i czytając te gotowe rozwiązania można spokojnie przenieść to do GMLa - sam w tym roku już przenosiłem kilka razy JSowy kod (teraz, gdy runner HTML5 jest dostępny jako open source, a przecież implementuje on kod GMLa na JS, tym łatwiej jest go odwrócić w drugą stronę). No i zawsze to jakieś źródło pomysłów, jakie łatwe przykłady na GMCLAN można by stworzyć.
  7. O, nietypowe, nie każdy się dzieli swoim kodem w ten sposób
  8. Z takimi rzeczami jest jak z gitarą basową. Normalnie nikt nie zwraca uwagi na bas w piosenkach, ale weź zabierz gitarę basową i każdy nagle zauważy. Tutaj pewnie będzie tak samo - niby nikt nie zwróci uwagi (ale tylko dlatego, że po prostu taki ruch będzie naturalny), ale jakbyś go wyłączył w połowie gry, to od razu przykumają
  9. w sumie się podśmiewaliśmy, ale jak zobaczyłem kod źródłowy mp_potential_step w HTML5 to od razu mam ochotę go przepisać do GML i sobie dodatkowo dostosować do własnych potrzeb, więc są zalety FOSS
  10. Patrz pan, GameMaker dziś udostepnił open-source swój runner w HTML5, Enigmę będzie można w końcu zrobić kompatybilną z najnowszym GMem https://github.com/YoYoGames/GameMaker-HTML5
  11. Kurczę, coś tu bardzo źle się zadziało: https://www.kickstarter.com/projects/phns/court-of-crowns-a-historical-drama-visual-novel Dorzuciłem od siebie, ale to chyba nie za wiele pomoże.
  12. Nałożycie się na kampanię planszowego Heroes 3, ciężko będzie
  13. W nowszej, to znaczy jakiej ? To jakaś tajemnica?
  14. To wciaz te gry co nie działają na Windowsach nowych, niż 7? (przypomnę, że mielismy od tego czasu 8, 10 i 11...)
  15. Wygląda już całkiem grywalnie, na poziomie rogalików/dungeon crawlerów które można spotkać na Steam. Powiedziałbym, że takich gier jest milion, więc ciężko się wybić - ale ile z nich ma dinozaura? Jak w grze będzie więcej wykręconych i szalonych pomysłów, to wbrew pozorom - może na siebie zarobić.
  16. można, jak najbardziej. Surface zapewne zapisuje się w "%LOCALAPPDATA%/NazwaGry".
  17. 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.
  18. GMCLAN meetup - 20 lat GMCLANu!
  19. Próbowałeś korzystać a application_surface i to ten surface zapisywać? Ten surface będzie mieć chyba rozmiar jaki trzeba.
  20. 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
  21. 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.
  22. Zastanawia mnie rozmiar gry, tam jest zdekompresowana muzyka, że aż tyle?
  23. 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".
  24. Dałem 5/5 Gra dziwnie zwalnia w wersji GX, chociaż licznik FPSów prawie ciągle pokazuje maks, dziwna sprawa...
×
×
  • Dodaj nową pozycję...