Skocz do zawartości

Konrad-GM

Użytkownicy
  • Postów

    2737
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    40

Zawartość dodana przez Konrad-GM

  1. Konrad-GM

    Opera GX Game Jam

    Nawet się cieszę, że trafiłem z bratem do top 100, jak na dłuuugą przerwę od GMa, ale raczej do top 8 się nie dostaniemy 😆
  2. Też tak trochę zgniłem jak to zobaczyłem
  3. "Strona nie istnieje" - możliwe, że masz ją zapisaną jako draft, upublicznij grę i powinna być widoczna
  4. Potestowałem trochę, pobiegałem, porzucałem granatami i o ile nie pojawił mi się ten bug przez większość czasu, tak na niego jednak trafiłem, przynajmniej nie jest tak jak w poprzednim demie gdzie każdy granat zostawiał rozbłysk
  5. W The Ascent jest przycisk podnoszący celownik, może zrobienie podobnego celowania byłoby wystarczające? Normalny tryb to celownik zawieszony na jednej płaszczyźnie, ale np trzymając alt/ppm można by celować po raytracingu z kamery, wtedy celowanie w konkretny punkt też byłoby możliwe. Edit: Może z celownikiem laserowym też inaczej by się grało
  6. Ja testowałem na swoim lapku z gtx 1070 max-q, intel i7 7700hq.
  7. Też mam tego buga z nieznikającą eksplozją po granacie, wali po oczach niemiłosiernie, aż do tego stopnia, że unikałem granatów Moim zdaniem gra ma potencjał, ma ciekawą mechanikę, przyjemnie się likwiduje przeciwników, ładnie i spójnie się komponuje, ale czasami sterowanie jest dość toporne jakby sterowało się czołgiem. Dodatkowo celowanie koniecznie do poprawy, jest nieintuicyjne i czasami nie wiadomo gdzie nasz gostek celuje - może zablokowanie celownika do płaszczyzny byłoby lepsze? Może to kwestia level designu, ale czasami elementy otoczenia znikają i pojawiają się dość chaotycznie i ciężko się orientować. Jak dla mnie gra bomba, trochę szlifów w sterowaniu, level design i mógłbym grać bez przerwy.
  8. Bo ją sam przyśpieszasz, wywal tą linię i z głowy.
  9. Nie rozumiem, a to nie odtwarza się w całości czy jak, a ta animacja trwa aż 5 sekund? Może wystarczy tylko sprawdzanie, czy stoi na ziemi? `if !place_free(x, y+1) g = 1.0;`
  10. `if obj_trampolina == false && place_meeting(x,y,par_entity)` serio?
  11. To dodaj zmienną `start` w Create obj_trampolina. Jeżeli ten obiekt dziedziczy z innego obiektu Create, to na początku skryptu użyj event_inherited() to wtedy Create rodzica również zostanie wywołany. Nie, bo zmienna `start` będzie widoczna tylko i wyłącznie w tym bloku kodu, jak tylko go opuści to zostanie usunięta - nie będzie miała żadnej wartości, ani true ani false, przestanie kompletnie istnieć. Polecam przejrzeć: https://docs.yoyogames.com/source/dadiospice/002_reference/001_gml language overview/variables/index.html - w tym podartykuły instance variables oraz local variables.
  12. W kodzie Step nie masz ustawianej flagi `start = true` więc technicznie flaga nigdy się nie zmienia. Wstaw `start = true` zaraz pod `alarm[0] = room_speed * 5`. Dodatkowo w Step nie sprawdzasz czy `start == false` żeby uruchomić blok odpowiedzialny za skok. Np. `if start == false && place_meeting(x,y,par_entity) {`.
  13. Tak, jest to jak najbardziej poprawne. obj_trampolina zmienia grawitację tylko wyłącznie kiedy dotknie par_entity, imo najlepiej byłoby przywrócić wartość w Step par_entity kiedy opadnie już na ziemię.
  14. Dlatego nie ustawiaj tej wartości w create Wiesz w ogóle do czego służy blok with i dlaczego właśnie tam ustawiasz hspd i vspd instancji par_entity? Czy nagle wszystkie obiekty na ekranie skaczą wraz z graczem?
  15. Ale nie dziedziczą tych samych stanów, każda instancja tworzy własną wersję zmiennej `g` (jedynie na podstawie obiektu par_entity).
  16. A to zmienna `g` jest zmienną globalną?
  17. W takim razie musisz dodać Alarm w obiekcie obj_trampolina, np. dodaj zdarzenie Alarm[0] i w nim wstaw blok kodu resetujący flagę `start = false`. Generalnie polega to na tym, że teraz Animation End nas nie interesuje, tylko czas, więc w Animation End możesz zatrzymać animację `image_speed = 0` ale nie zmieniaj flagi `start` - to zrobi Alarm[0] po 5 sekundach. No ok, ale teraz ustawiasz zmienną `g = 0.5` w instancji obj_trampolina, zamiast w par_entity, dlatego to nie zadziała. Ustaw grawitację w instancji par_entity, przecież od tego masz blok `with instance_place(x,y,par_entity)` który tak jak hspd i vspd ustawi również zmienną `g` tylko wyłącznie w instancji par_entity dotykającej trampoliny. Natomiast resetować grawitację musisz w kodzie par_entity, bo obj_trampolina nie ma pojęcia o stanie obiektu par_entity po X czasie, jak np. czy po dwóch sekundach par_entity stoi na ziemi, czy jeszcze fruwa. Dodatkowo w bloku `if place_meeting(x,y,par_entity)` (ale nie w `with instance_place(x,y,par_entity)`) ustawiaj Alarm, jeżeli cooldown ma trwać 5 sekund - `alarm[0] = room_speed * 5`. Mnożymy room_speed (1 sekunda) z wartością 5, to otrzymamy 5 sekund.
  18. A to masz na myśli cooldown? Że gracz może ponownie użyć trampoliny PO 5 sekundach jej użycia, czy jedynie podczas trwania animacji, ale która jest odtwarzana CO 5 sekund? No grawitacją steruj już w Step par_entity, w kodzie gdzie sprawdzasz czy obiekt stoi na ziemi ustawiaj pierwotną wartość grawitacji `gravity = 1.0`. A ustawienie połowy grawitacji ustawiaj w kodzie, gdzie sterujesz trampoliną i ustawiasz graczowi prędkość odbicia, czyli w Step obj_trampolina, w bloku if place_meeting. Jak masz if place_meeting w obj_trampolina, to tam przy okazji możesz też odtworzyć dźwięk.
  19. Przejrzałem dokumentację i faktycznie nie ma tego zdarzenia, to musisz w takim razie ustawiać flagę w miejscu, gdzie uruchamiasz animację. To już zależy jak będzie działać w tym wypadku, w if z place_meeting możesz ustawiać grawitację i resetować ją w kodzie Step par_entity jak "stoi" na ziemii. return nie musi przyjmować wartości, w tym wypadku przerwie całe zdarzenie Step. Jeżeli masz więcej bloków ze skryptami, to możesz użyć break, to powinno przerwać pojedynczy blok.
  20. Kod w Step obj_trampolina zostaw, dodaj flagę `start` w Create trampoliny, ustaw ją na `true` w zdarzeniu Animation Start a `false` po zakończeniu animacji (w zdarzeniu Animation End). Dodatkowo kod w Step wzbogać o sprawdzanie flagi start np. dodając na początku `if (start == false) return;`. Jeżeli ma wolniej opadać, to tak, pozostaje modyfikacja grawitacji. Możesz też np. zresetować grawitację (z np. 0.5 do 1.0) po dotknięciu podłoża.
  21. Zachowuj stan trampoliny w zmiennej, np. jakąś flagę i steruj nią podczas animacji w zdarzeniach Animation Start oraz Animation End. W kodzie odbicia przed place_meeting sprawdzaj, czy flaga jest True i tyle. Możesz odpalić dźwięk w zdarzeniu Animation Start.
  22. Ustaw room_speed na 30, ale, żeby zminimalizować różnice animacji/chodzenia między innymi komputerami to niestety pozostaje liczenie delty. Delta to nic innego jak czas jaki upłynął między poprzednią wyświetloną klatką a aktualnie rysowaną, w gm8 niestety nie ma wbudowanej zmiennej delta_time, musisz takową policzyć samemu: // Create global.previous_time = current_time global.delta_time = 1.0 / room_speed // Begin Step global.delta_time = (current_time - global.previous_time) / 1000.0 global.previous_time = current_time Możesz to wrzucić w jakiś kontroler i niekoniecznie w każdym obiekcie liczyć deltę osobno. Teraz, żeby np. bohater poruszał się ze "stałą" prędkością na dwóch kompach, to można zrobić coś takiego: // Liczymy jak daleko poruszył się gracz od ostatniej klatki // Zakładając, że używasz lenghtdirów (ale nie musisz), mnożymy prędkość gracza przez deltę x += lengthdir_x(global.delta_time * player_speed, direction) y += lengthdir_y(global.delta_time * player_speed, direction) Nie polecam sprawdzać "jak szybki jest dany komputer", bo to nie jest użyteczne w tym wypadku. Dodatkowo limit fps (maksymalny) w GM ustawiasz zmienną room_speed, także nie ma potrzeby sprawdzania ile maszyna wyciąga, bo jeżeli będzie wolniejsza to i tak magicznie nie przyśpieszy to działania, tutaj w main loopie nie ma akurat czego optymalizować
  23. Na moje oko wygląda to na z-fighting, precyzji z-buffera w GM nie można zmienić, ale zakładam, że i tak jest ustawiony na 24bity. Niestety pozostaje zmniejszenie maksymalnej odległości rysowania na mniejszą, albo zrobić niewielką przestrzeń między nakładającymi się teksturami, bądź w ogóle nie rysować nakładających się ścian.
  24. Mi nie działa wklejanie obrazków, pokazuje się tylko komunikat "Wykorzystano całą dozwoloną przestrzeń dla załączników" i tyle
×
×
  • Dodaj nową pozycję...