Skocz do zawartości

SimianVirus7

Użytkownicy
  • Postów

    264
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    31

Treść opublikowana przez SimianVirus7

  1. Dodałem trochę efektów i jak dla mnie spoko. Chociaż z kolizjami nadal jakoś tak nie do końca mi pasuje ? DUG5.mp4
  2. Ja pierwszy raz (jak często w gmie...) ruszyłem surface. Próbuje zrobić coś na podobieństwo destrukcji z wormsów. Trzy-cztery dni już to robię ;-; w końcu coś się ruszyło, że w miarę to działa (pierwsze dwa dni spędziłem na tym, że do substract muszę używać c_white, a używałem c_black) Dino_wall_destroy1.mp4
  3. Dokładnie, ale nie pomyślałbym, żeby dać dwa razy lengthdira ? kozacki sprite i kozacka animacja idle B) Dziękuje, ale przyznaje się bez bicia, że to nie moje ? dino to jakieś darmówki z itcha, a bronie były za 2$
  4. No tak... to po prostu działa, dziękuje ? Co prawda będę musiał operować sprite_set_offset() przy np. skalowaniu ale chyba damy radę.
  5. Nie mogę dopasować pocisku do lufy. Dodaje, odejmuje od x/y i wszystko się rozjeżdża. Z tego co rozumiem, to lengthdir_x/y to punkt styku linii x/y. Chyba, że jest jakiś sposób, dzięki któremu mogę ustawić punkt spawnu pocisków relatywnie do położenia i kąta broni. Na razie mam tak: oPistol - STEP dir = point_direction(oPlayer.x, oPlayer.y, mouse_x, mouse_y) x = oPlayer.x-2 + lengthdir_x(10, dir); y = oPlayer.y-20 + lengthdir_y(10, dir); //zmieniaj strony if(digit_between(dir, 90, 270)) image_yscale = -abs(image_yscale); else image_yscale = abs(image_yscale); image_angle = dir; i obliczenia do pocisku lx = x + lengthdir_x(40, dir); ly = y + lengthdir_y(40, dir); //rysuj gdzie powstanie pocisk draw_sprite_ext(sBullet, 0, lx , ly, 1, 1, dir, c_white, 1) //rysuj broń draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha); Origin broni (chyba ważne do tego): Co daje mi to:
  6. Patrzyłeś lerp()? Czyli coś w stylu aktualne = lerp(aktualne, docelowe, 0.5) //0.5 - siła z jaką ma obracać
  7. Faktycznie pierwszy filmik wyjaśnił nieco zasadę działania, z dalszych mniej rozumiem ale sprawdzałem na szybko. Jak przysiądę w weekend to dam znać co ogarnąłem.
  8. Dzień Dobry, Robiąc prototyp użyłem wbudowanego w gm algorytmu a* i działa świetnie ale chciałbym dodać do gry drogi, które przyspieszają poruszanie się. Wyczytałem, że do tego najlepiej wykorzystać algorytm dijkstry ale nie potrafię nic z tego zrozumieć. Znaczy, zamysł i ogólną mechanikę tak, ale jak już zakodować to średnio. Jestem na samym początku, czyli tworzę grid (16x16) i przypisuje w komórki wartości. Wartości są minusowe, bo ma wybierać drogę o najmniejszej ilości ruchu (punktów). Trawa: -1 Droga: -3 Kamień: 100 Generalnie ma to wyglądać tak, że ma wybierać, czy iść drogą, czy szybciej będzie "na szage" przez trawę, czy może kawałek przez trawę, żeby dojść do drogi i po niej kontynuować do celu. Wiem tyle, że każda kratka ma porównywać punkty z kratką sąsiednią i wybierać najmniejszą wagę. Nie studiowałem, więc takie algorytmy są mi kompletnie obce, a w technikum mieliśmy tylko graf który łączył kilka punktów, a nie cały macierz. (Wiem, że na necie jest kilka poradników, ale też nie bardzo się w nich odnajduje)
  9. To może mieć zmienną np. doJump = false; i zrobić collision_line na te kilka pixeli w dół od gracza i jeśli wykrywa podłoże oraz vspd > 0 to daje doJump = true; a w kodzie zamieścić coś takiego if (PresskeyJump or doJump) && jumps>0 { image_index=0; if jumps>1 vspd = -jspd;else vspd = -jspd*.8; jumps-=1; // doJump = false; }
  10. Nigdy nie grałem w gry typu Visual Novel, nigdy nie miałem zamiaru zagrać w gry typu Visual Novel, bo po prostu mnie nie pociągały, tym bardziej nigdy bym nie pomyślał, że tego typu gra może mnie wciągnąć, a wciągnęła ? Serio, nawet dzisiaj w robocie o niej myślałem ? Początek był nudny i chciałem już wyłączyć (pewnie przez moje sceptyczne podejście), ale później główna bohaterka zasiadła na tronie i gra dopiero się zaczęła. To może zapiszę w postaci plusów i minusów, tak będzie szybciej i klarowniej. + Charyzmatyczna bohaterka (zdziwiłem się, że po tak krótkim czasie, postać z gry indie, może zyskać sympatie w oczach gracza) + udźwiękowienie, efekty dźwiękowe w dialogach (nie wiem, czy to reguła w grach VN, ale spodobała mi się ta koncepcja) + fabuła (zawsze myślałem, że VN kręci się wokół romansów, a tu proszę, intryga i do tego ciekawa) + postać Erica(?) ? +- grafika (nad wyraz prosta ale spójna i ta spójność do mnie przemawia) - mam wrażenie, że interfejs jest trochę surowy - brak trybu pełnoekranowego w wersji Windows (no chyba, że ctrl + caps lock + enter, ale to takie trochę "wymuszone" rozwiązanie ?) - nie wiedziałem, że można grę zapisać przez większość czasu, później odkryłem, że jest w opcjach, więc może gdzieś ten przycisk dać na widoku. Ogólnie, rewelacja!
  11. SimianVirus7

    Opera GX Game Jam

    Mnie osobiście podobało się "Nettie & Settie Save The Internet", ale tak jak Gnysek mówi, to ma za długie intro. Gdyby to wyrzucić i dać samą rozgrywkę to całkiem całkiem. Mnie generalnie już nie pasowały gry które miały menu, powinny startować od razu w trybie jednego gracza, a drugi powinien mieć możliwość dołączenia w każdej chwili.
  12. Kod na pierwszy rzut oka wygląda dobrze. Dwie sprawy: 1) Prawdopodobnie twój pierwszy dźwięk po prostu ma cisze na końcu i pomimo, że nic nie słychać to on wciąż jest odtwarzany - dlatego słyszysz to opóźnienie. Albo w drugą stronę, twój drugi dźwięk ma cisze na samym początku. Możesz swój plik dźwiękowy wrzucić w darmowy program Audacity i zobaczyć długość utworu i jaka jest jego "budowa". 2) Z tego co pamiętam game maker nie potrafi odtwarzać dwóch dźwięków mp3 na raz. Jedynie w formacie ogg i wav jest taka możliwość. Aczkolwiek to nie powinno być problemem akurat w tej konkretnej sytuacji, napisałem to tak żebyś wiedział na przyszłość. Ps: = przypisuje wartość do zmiennej == porównuje wartości (stosowane w if'ach) Wiem, że tak czy siak będzie działać ale fajnie wyuczyć się dobrego nawyku
  13. Zależnie od sytuacji, rozwiązań jest kilka. Ja np. do odtwarzania muzyki w tle wykorzystywałem kolejki. // ------------ CREATE ------------ // sounds = ds_queue_create(); //Stwórz kolejke z utworami mediaplayer = noone; //Stwórz odtwarzacz tej kolejki ds_queue_enqueue(sounds, Sound1, Sound2); //Przypisz dźwięki do kolejki // ------------ STEP ------------ // //jeśli mediaplayer nie odtwarza muzyki oraz kolejka posiada elementów więcej niż zero if(!audio_is_playing(mediaplayer) and ds_queue_size(sounds)>0) { //przypisz mediaplayer dźwięk i jednocześnie usuń go z kolejki mediaplayer = ds_queue_dequeue(sounds); //odtwórz przypisany dźwięk audio_play_sound(mediaplayer, true, false); } // (Opcjonalnie) // jeśli kolejka odegra wszystkie przypisane dźwięki, przypisz jej nowe if(ds_queue_size(sounds) == 0) { ds_queue_enqueue(sounds, Sound3, Sound4); //Przypisz dźwięki do kolejki } // ------------ DESTROY ------------ // //Zwolnij pamięć gdy obiekt zostanie zniszczony ds_queue_destroy(sounds);
  14. SimianVirus7

    Opera GX Game Jam

    Zaskakujące jak niektórzy są kreatywni. Tyle gier, jeden temat, a tyle możliwości.
  15. Porozrzucałem wszędzie te granaty, kombinowałem z nimi, wrzucałem je tam gdzie ten błąd mi wcześniej wystąpił i... no i git, nic się złego nie dzieje (tzn. ludzie umierają od wybuchu, a tak to wszystko w porządku). Czy można jakoś restartować grę oprócz alt+f4? strasznie to uciążliwe jest
  16. Gtx 970, i7-8600 (z ciekawych rzeczy to mam dx12 ready ale żadna gra z dx12 mi nie odpala)
  17. Zrobiłem dzisiaj swój pierwszy system cząsteczek (tak wiem, tyle lat w gm'ie a ja dopiero cząsteczki tknąłem :P). Mam pytanie. Przy pewnej zmiennej cząsteczki mają zmienić swój kierunek lotu. Czy można już istniejącym cząsteczkom cokolwiek modyfikować? Z tego co czytałem, to nie. Na razie pasuje mi rozwiązanie typu part_particles_clear(pSystem) i zastąpienie ich nowymi ale cząsteczki znikają momentalnie, a chciałbym, żeby alpha najpierw zleciała do zera, coś jakby funkcja miała nazywać się part_particles_clear_with_alpha(pSystem) Ktoś ma na to radę?
  18. Po wybuchu granatu zostaję efekt rozbłysku na obiektach i dosłownie razi w oczy Tutaj wybuchł z 15 sekund temu. Jest to na samym początku w jakimś barze. Podoba mi się mordobicie ziomków jak się ich chwyci ?
  19. Cóż, chyba już wiem o co Ci chodzi. Ja zrobiłem to samo w swojej grze, czyli, że pocisk ma lecieć w miejsce w którym gracz był, kiedy był wystrzelony czar. Dla osiągnięcia takiego efektu, stworzyłem osobny obiekt "oTarget". Pojawiał się on podczas strzału w miejscu gracza i do niego odwoływał się pocisk przy obliczaniu x,y (w górnym przykładzie, wylicza on dystans odwołując się do oPlayer.x/oPlayer.y); Mniej więcej tak wyglądałby pseudokod: if(strzal == true) { var _target = instance_create(oPlayer.x, oPlayer.y, oTarget) //wpisuje go do zmiennej, żeby nim manipulować var _pocisk = instance_create(x, y, oPocisk); _pocisk.target_x = _target.x; //przypisz dla pocisku współrzędną x celu _pocisk.target_y = _target.y; //przypisz dla pocisku współrzędną y celu } i wtedy każde wyliczenia odwołują się do target_x/target_y a nie do oPlayer.x/oPlayer.y U siebie dodałem jeszcze, że jak pocisk ma kolizje z oTarget (tym przypisanym), to traci prędkość i znika po czasie. Efekt wyszedł taki: (Obiekt oTarget nie ma sprite, dlatego go nie widać)
  20. No witam! Jeśli chodzi Ci mniej więcej o taki efekt: To miałem to samo pytanie w 2018r. Zrobiłem to za pomocą Konrada-GM i mój kod wyglądał mniej więcej tak: CREATE pocisku: ///Caly kod inicjializacji strzelania // wirtualna pozycja do wyliczenia "wygiecia" ghost_x = x //to jest tak naprawde xstart ghost_y = y //to jest tak naprawde ystart ale później będzie manipulacja tych dwóch zmiennych // strona lotu czaru // 1 - prawa strona // -1 - lewa strona var _pd = point_direction(x, y, oPlayer.x, oPlayer.y); if(_pd > 90 and _pd < 270) wing = -1 else wing = 1 //prawo lub lewo // poczatkowy dystans do celu start_distance = point_distance(xstart, ystart, oPlayer.x, oPlayer.y); //wybierz czy pocisk ma leciec gora czy dolem way = choose(true, false); STEP pocisku: // liczymy aktualna odleglosc var distance = point_distance(ghost_x, ghost_y, oPlayer.x, oPlayer.y); var angle = point_direction(ghost_x, ghost_y, oPlayer.x, oPlayer.y); var angle90 = angle + 90 * wing; //90 - sila zagiecia // glowna funkcja przesuniecia var factor = sin((distance / start_distance) * pi); var maxlen = sqr(log2(start_distance)); var offx = lengthdir_x(maxlen * factor, angle90); var offy = lengthdir_y(maxlen * factor, angle90); // poruszamy obiektem w kierunku celu var spd = irandom(7)+2; ghost_x += lengthdir_x(spd, angle); ghost_y += lengthdir_y(spd, angle); // Zaginamy if(way) //w=true leci gora { x = ghost_x + offx; y = ghost_y + offy; } else //w=false leci dolem { x = ghost_x - offx; y = ghost_y - offy; } Jeżeli chcesz obszernego wytłumaczenia, to poczytaj odpowiedź od @Konrad-GM, bo nieźle mi to wtedy wytłumaczył.
  21. Może to jest właśnie to, czego potrzebuje, bo zwykle nie kończę swoich gier. Co do filmiku to wygląda mega klimatycznie i trochę creepy szczególnie z tymi gibającym się "cosiem" w tle i rykiem... jelenia? Ja wykorzystałem gm'a do trochę innych celów, mianowicie do przedstawienia graficznego statusu anteny radiowej, wszystko utrzymane w klimatach rpgowych Będąc u klienta program automatycznie łączy się z anteną i spisuje dane. Jest to trochę przekłamanie, że robi to gm, bo robi to python, który po protokole tcp wysyła dane do gm'a a ten je ładnie przedstawia. Sztuka dla sztuki, tak myślę. (C# mnie drażni, a python jest tekstowy... zwykle)
  22. Używa się tego w gmie? Oprócz szyfrowania to nie widzę zastosowań.
  23. Tak, tam jest błąd. Ten argument7 przeszkadza. Plus, ten kod działa w miarę ok tylko wtedy, kiedy grubość konturu nie przekracza liczby 2. Po przekroczeniu tej wartości kontur ma braki w rogach, bo rysuje on tylko góra/dół, lewo/prawo. Niemniej plusem jest wydajność, bo zawiera tylko 5 kroków kodu. Najprościej będzie to zrobić for'em, z rysowaniem 360 stopni. Nie wiem jak z wydajnością tego, tutaj starzy wyjadacze mogą się wypowiedzieć. Jakby nie było, jest tutaj 361 kroków do wykonania. Myślę, że jeśli chodzi o optymalizacje, to najlepiej shadery, ale tego jeszcze nie potrafię. for(var i=0; i<360; i++) { draw_set_colour(_coloroutline); draw_text_ext_transformed(_x + lengthdir_x(_strong, i), _y + lengthdir_y(_strong, i), _text, _sep, _w, _xscale, _yscale, _angle); } draw_set_colour(_colortext); draw_text_ext_transformed(_x, _y, _text, _sep, _w, _xscale, _yscale, _angle);
  24. Co oznacza operator >>? W dokumentacji napisane, że przesuwa w prawo albo w lewo, a w praktyce jak to wygląda? To to samo co x-=5? mp_grid_add_cell(grid, x>>5, y>>5);
  25. Ja tam nie wiem co macie do tego loga, mnie się podoba
×
×
  • Dodaj nową pozycję...