Skocz do zawartości

gnysek

Administratorzy
  • Postów

    9 805
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    137

Odpowiedzi opublikowane 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. Ś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ć.

  4. 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ą :)

  5. Godzinę temu, Chell napisał:

    facet całe swoje forumowe życie poświęcił na FOSS

     

    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 :P

  6. W dniu 17.09.2022 o 17:40, SimianVirus7 napisał:

    Wróciłem do robienia dinozaura z bronią po dłuższej przerwie.

    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ć.

  7. 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.

  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".

×
×
  • Dodaj nową pozycję...