Skocz do zawartości

Threef

Moderatorzy
  • Postów

    2 911
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    14

Treść opublikowana przez Threef

  1. Threef

    Mira

    A dziękujemy za screeny. :) Ładnie, ładnie.
  2. Hmm... Wszystkie bullet time, slow motion i zatrzymanie czasu ja zawsze rozwiązuje poprzez jedną zmienną odpowiadającą za szybkość czasu. Jeżeli zrobisz sobie globalna zmienną i będziesz przez nią przemnażał wszystko to efekt potrafi być świetny. GML (gdzie w create) global.timeSpeed=1 GML (step obiektu) speed=spd*global.timeSpeed Dzięki temu ustawienie global.timeSpeed=0 zatrzyma poruszanie wszystkiego, global.timeSpeed=0.5 spowolni obiekty dwukrotnie, a global.timeSpeed=2 sprawi że czas będzie płynąć 2 razy szybciej.
  3. Tak. Nie używać particli tylko napisać własny system który będzie rysować cząsteczki.
  4. Fajny temat. Powodzenia! Może znajdę godzinkę żeby coś sklepać :P
  5. Threef

    Gryf Game Jam

    Hej. Nadarza się okazja do napicia z administracją! Pomagam w organizacji Game Jamu w Szczecinie (Tak wiem na drugim krańcu świata) 9-11 czerwca i chcę was zaprosić. W planach jest darmowy wstęp, wypad na piwo, sponsorowane jedzenie, tworzenie gier przez weekend, a nawet nagrody. Będę też próbował wyciągnąć na piwo Ranmusa i Borka! Więc zapraszam! Jedyny problem to dojazd i limit 60 uczestników. Zostawiam link do eventu na Faceboczku https://www.facebook.com/events/372579773142576/
  6. Nie widzę żeby błąd który ci się wyświetla GML if (a=linelenght){ był w kodzie który podajesz.
  7. Dla mnie wystarczającą nagrodą jest ekran na koniec mapy że zebrałem 2 z 3 znajdziek. O ile sama gra jest na tyle dobra że nie wyłączę jej po minucie.
  8. Nie jest źle. Jedyne kroki optymalizacyjne jakie mogę zaproponować to: 1. Pozbycie się place_free(x+spx,y+i) i zastąpienie tego czystą matematyką. Masz bloki wyrównane do siatki. x mod SZEROKOSCSIATKI = Pozycja relatywnie do bloku. Jeżeli boczki masz tylko w kilku wariantach i powierzchnia jest linią prostą to możesz zapamiętać ich punty y1 i y2 a potem interpolacją liniową określać pozycję ;) Pseudokod będzie wyglądał mniej więcej tak: Ustalmy że szerokość siatki to stałe 32px i bloczki mają origin na [0,0] Dla czerwonego bloczku najbardziej z prawej strony na twoim screenie wartości będą. GML y1=16 y2=0 Jeżeli gracz stoi gdzieś na tym bloku to jego pozycja y wyniesie: GML //b to blok b=instance_position(x, y, obj) if(instance_exists(b)) { y=b.y+lerp(b.y1,b.y2,(x%32)/32) } Jedyny problem to wykrycie z którym blokiem zachodzi kolizja. 2. Kolejny prostszy sposób, ale wykluczający pierwszy, to zmniejszenie ilości instance. W room editor możesz rozciągnąć prostokątne bloczki by zajmowały więcej pól ale było ich mniej. Spójrz na swój screen. postać stoi na 8 identycznych bloczkach. Wystarczyłby tam jeden rozciągnięty.
  9. Nie ma. Sprzedaż została zakończona wraz z premierą GM:S2
  10. Dam Ci jeszcze jedno rozwiązanie: sprite_add() pozwala na pytanie URL do grafiki. Wtedy pobiera ja z internetu. Oczywiście trzeba pobieranie obsłużyć i sprawdzić czy się pobrało i użytkownik musi mieć internet, ale jest to jakieś rozwiązanie.
  11. Cześć. Sytuacja wygląda tak. Grafiki wrzucone jako sprite i background będą wciśnięte na texturepages w GM. To też sprawia że żadna kompresja nie ma sensu ponieważ się ponownie kompresowane na texturepages. To też oznacza że przy wymiarach jakie podajesz każda grafika będzie na osobnym texturepages. To nie jest koniecznie złe rozwiązanie ale do tego wrócimy. Wrzucanie grafik do included files i dodawanie ich przez sprite_add() sprawia że są dodawane jako osobne texturepages. Nie sprawdzałem nigdy ale możliwe jest że zachowują swoją kompresję... ale wręcz przeciwnie. Może GM musi re rozkompresować i wrzuca do pamięci jako nowy texturepages bez jakiejkolwiek kompresji... albo kompresuje swoim sposobem i dlatego jest to wolne. Przy tym sposobie musisz umiejętnie operować na tych plikach. Wczytywanie ich i usuwanie ich za każdym razem gdy są potrzebne jest głupie powinny być wczytywane zanim będą potrzebne a usuwane gdy już na pewno nie będą potrzebne. Ale wróćmy do domyślnego wrzucania grafik do sprite. GM zadba o to aby były zapisane w wygodny dla niego sposób i skompresuje je (słabo ale jednak). Nie pamiętam czy wszystkie zostają wczytane na początku gry, ale na pewno są wczytywane przy próbie ich użycia. W GM Mamy dostępną funkcję draw_texture_flush() która usuwa z pamięci wszystkie texturepages. Ponowne użycie jakiejś sprawia jej natychmiastowe wczytanie. W ten sposób możesz kontrolować ich wczytywanie.
  12. Moje pytanie jest takie: Czy potrzebujesz wiedzieć czy zaszła kolizja czy może odbić te obiekty jakby do kolizji doszło? W pierwszym wypadku możesz najzwyklej sprawdzić ich pozycje z przesunięciem. W drugim wariancie możesz płakać że zdecydowałeś się na Box2D
  13. A robiłeś jakieś sprite_add(), sprite_duplicate(), surface_create()? Jeżeli tak to mają one odpowiednie funkcje do kasowania jak sprite_delete(). Jeżeli nie robiłeś to nic nie usuwaj. Może tworząc przeciwnika ma on jakieś tablice których potem nie usuwasz? Tablicę usuwasz przypisując jej 0 jako wartość.
  14. Nie ma dużych skoków we wzroście wiec raczej to nie grafiki. Albo tworzysz jakieś struktury lub tablice których nie usuwasz... ale, ce jest bardziej prawdopodobne, tworzysz obiekty (pociski?) które tworzą jakieś struktury a potem usuwasz te obiekty bez niszczenia struktur.
  15. Najlepszą rzeczą jest ponumerowanie kart. Jeżeli każdej karcie przypiszesz numer od 1 do 52 to po numerze będziesz mógł wiedzieć jaka to karta. W ten sposób przypisujesz im numer ID. Teraz wystarczą Ci zadania na listach używając tych numerów ID.
  16. Eventy draw są troszkę niezależne od innych eventów. Tak, twoja zmienna jest ustawiona ale na coś co nie ma własnego y. Warto się zawsze zabezpieczać sprawdzając czy obiekt/instance istnieje. A to wygląda jakbyś przypisał p=obj_Player stworzył drugi obj_Player i usunął pierwszy. Albo tak jakbyś dezaktywował ten obiekt. Powodów może być wiele a na pewno jednym z nich jest bałagan w kodzie. Masz nieskończoną pętlę gdzieś w create. Gra utknęła na evencie create i nie doszła jeszcze do draw aby coś pokazać.
  17. A u mnie pasek życia bossa. A w raz z nim wszystko inne w silniku co pozwala na edycję atrybutów przeciwników z poziomu edytora aby można było każdego przeciwnika zamienić w bossa.
  18. Szybkim rozwiązaniem będzie użycie: http://www.gmlscripts.com/script/instance_nth_nearest ale... to co podałeś powinno działać. Jeżeli nie działa to masz bałagan w kodzie. Nie przeniesie to wszystkich instancji tylko ten jeden wykonujący kod. I nic nigdy nie ma prawa wykonać się w tym samym momencie!
  19. Threef

    Galeria Grafik

    To jest fajne. Te grafiki po bokach odciągają uwagę. Zmień jeszcze font na dole by nie był rozmiaru nagłówka i będzie bardzo pro. Wczytywał bym.
  20. Edit: Już mam. -_- Przeczytajcie to zrozumiecie. Debil ze mnie. Czy czegoś nie rozumiem. W jednym obiekcie (depth = -1) w draw robię: GML shader_set(shaderek); draw_surface(surface,(room_width-surface_get_width(surface))/2,(room_height-surface_get_height(surface))/2) shader_reset() Wszystko działa tu dobrze. Teraz w drugim obiekcie (depth = 0) rysuję inne elementy. draw_text(), draw_sprite(). I to już nie działa. To co dzieje się w shaderze sprawia że reszta elementów gry nie jest już rysowana. Jeżeli będę rysował sam surface bez przepuszczania go przez shader to wszystko będzie się dobrze rysować. Any ideas? Wytłumaczenie będzie jeszcze lepsze.
  21. Threef

    Galeria Grafik

    Vader bardzo symetryczne. Widzę że to nie jest mirror ale ogólny kształt jest prawie idealnie symetryczny. Wątpię czy taką pozę można gdziekolwiek wykorzystać. :/
  22. Więc liga zakończona? Gratuluję wszystkim! Mój głos idzie na grę Cupid zrobioną przez Fratel.
  23. A może zaokrąglaj? GML //Move out of collision while (place_meeting(x, y, other)) { x -= xoff //Move the instance out of collision y -= yoff other.x += xoff //Move the other instance out of the collision other.y += yoff x = round(x) y = round(y) other.x = round(other.x) other.y = round(other.y)
×
×
  • Dodaj nową pozycję...