Skocz do zawartości

Cała aktywność

Kanał aktualizowany automatycznie     

  1. Dzisiaj
  2. Tak jest umieszczony zawsze na scenerii...nie mam żadnych alarmów w tym obiekcie.. Kurcze nadal nie działa..co prawda nie ma teraz żadnych błędów,ale dalej jest,że od razu przechodzi Mi do planszy highscore lub game over..kurcze co jest nie tak:/ Obj_game_controller CREATE czas = 3*room_speed; //mnożenie wartości przez room_speed ///Ustawienia globalne image_speed = 0; global.editPlayerSlot = -1; zebraniu ich odpowiedniej ilosci // zmienne ponizej sa dodane do creation code pokojow global.pScore = 0; global.coins = 0; global.Saved = true; globalvar spawnX, spawnY; global.Zabitych[0]=0; //Pierwszy typ npc global.Zabitych[1]=0; //Drugi typ npc global.Zabitych[2]=0; //Trzeci typ npc global.Zabitych[3]=0; //Czwarty typ npc ///Widok globalvar gvX, gvY, gvW, gvH, gvObj, gvOffX, gvOffY; gvX = view_xview[0]; gvY = view_yview[0]; gvW = view_wview[0]; gvH = view_hview[0]; gvObj = view_object[0]; gvOffX = 0; gvOffY = 0; ///HUD hpHUD = 0; maxHpHUD = 0; /// Wyszukaj poziom trudności i ustaw odpowiednio życie i szanse //easy difficult if global.difficulty = "easy" { global.hp = 100; global.life = 7; } //medium difficult if global.difficulty = "medium" { global.hp = 100; global.life = 5; } //hard difficult if global.difficulty = "hard" { global.hp = 100; global.life = 3; } Obj_game_controller STEP ///kontroler odpowiedzialny za giniecie bohatera if (global.life==0 and czas==0) { game_end(); if(global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s=highscores[|ds_list_size(highscores)-1]; //Czy punkty kwalifikuja sie na top 10 if(ds_list_size(highscores)<10 || s[?"score"]<=global.pScore) { room_goto( rm_save_score ); } else //jesli nie kwalifikuje sie na top 10 { room_goto( rm_game_over ); } } else //jesli nie kwalifikuje sie do highscore { room_goto( rm_game_over ); } } czas = max(0, czas-1); //odliczaj do zera obj_player CREATE /// Glowne deklaracje zmiennych Bohatera ////////////////////////////// ///////ZMIENNE STALE////////// ///////////////////////////// ///Ustawienia event_inherited(); zbieranie=true; eksplozja = false; zasiegEksplozji = 22; silaEksplozji = 10; //czas = 3*room_speed; //mnożenie wartości przez room_speed daje Ci sekundy global.damage=0; //zmienna odzpowiedzialna za obrazenia zadawane po upadku z duzej wysokosci global.hp = 100; global.hit=0; //zmienna odpowiada za obrazenia kuli i miganie maxHp = 100; zegarAtaku = 0; odejmij = 0; //zmienna potrzebna do przesuwanie skrzynki w end step atakBierzacy = 0; global.zegarObrazen = 0; kierunekPlywania = 0; wysKierunek = 0; silaSkoku = 0; czasSkoku = 0; drabina = false; rs_timer = 0; //licznik czasowy w grze tlen=10;//ilosc tlenu //Moce specjalne pwrupSpd = 0; pwrupStr = 0; pwrupJmp = 0; //Pozycja odrodzenia Anatola i wywolanie skryptu widoku centralnego na graczu spawnX = x; spawnY = y; centerViewOnMe(); //zachowanie pozycji gracza przy checkpointach if (global.checkpointR == room) { x = global.checkpointx; y = global.checkpointy; } start_x = x; start_y = y; //funkcja dodaje HUD gracza na planszach bossowych if instance_exists(obj_game_controller) obj_game_controller.visible=1 else instance_create(0,0,obj_game_controller); //zamrazanie bohatera zamroz = false; zamroz_x = x; zamroz_y = y; playerSlot = 1; //ustalamy slot dla gracza numer 1 kierunekPlywaniaGamepad = 0; obj_player STEP ///Zycia i dopalacze dodatkowo zabieranie zyc za upadek z bardzo duzej wysokosci //Bohater dostajac obrazenia to miga //miganie dodane specjalnie dla kuli kiedy wartosc zmiennej globalnej hit jest rowna 1 //Bohater miga otrzymujac obrazenia okreslone w pulapce kula oraz innych elementach zadajacych obrazenia global.zegarObrazen-=1 if global.zegarObrazen>0 || global.hit=1 image_alpha=0.7+lengthdir_x(0.3,current_time) else image_alpha=1; if (global.hp <= 0) { global.life-- instance_destroy(); instance_create(x,y,obj_player_ginie) with (instance_create(x,y,obj_entity_die)) { sprite_index = spr_player_die01; image_speed=(image_number/room_speed)/ 2//Czas zanim bohater sie odrodzi image_xscale = other.image_xscale; respawnObject = obj_player; respawnX = spawnX; respawnY = spawnY; physics = true; respawn = true; image_alpha=0 } audio_play_sound(dzwiek_anatol_ginie, 1, false); //odtwarzamy dzwiek gdy bohater ginie } //Dopalacze if pwrupSpd > 0 { //Efekty if pwrupSpd mod 2 == 0 { if image_xscale > 0 { part_type_orientation(pArrow,0,0,0,0,0); part_type_direction(pArrow,0,0,0,0); } else { part_type_orientation(pArrow,180,180,0,0,0); part_type_direction(pArrow,180,180,0,0); } part_type_colour1(pArrow,c_lime); part_particles_create(partSystem,x-image_xscale*16,y-irandom(70),pArrow,1); } //Odliczanie do konca mocy specjalnej pwrupSpd -= 1; } if pwrupStr > 0 { //Efekty image_blend = merge_colour(image_blend,c_red,0.11); //Odliczanie pwrupStr -= 1; } if pwrupJmp > 0 { //Efekty if pwrupJmp mod 2 == 0 { part_type_orientation(pArrow,90,90,0,0,0); part_type_direction(pArrow,90,90,0,0); part_type_colour1(pArrow,c_yellow); part_particles_create(partSystem,x-16+irandom(32),y,pArrow,1); } //Odliczanie pwrupJmp -= 1; } obj_player_ginie CREATE vspeed = -10 gravity = 0.5
  3. Może źle użyłeś alarmu, albo nadpisałeś jakiś. Jak chcesz zrobić po swojemu, czyli zmiennymi, to zrób tak: Create: czas = 3*room_speed; //mnożenie wartości przez room_speed daje Ci sekundy Step: ///kontroler odpowiedzialny za giniecie bohatera if (global.life==0 and czas==0) { game_end(); if(global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s=highscores[|ds_list_size(highscores)-1]; //Czy punkty kwalifikuja sie na top 10 if(ds_list_size(highscores)<10 || s[?"score"]<=global.pScore) { room_goto( rm_save_score ); } else //jesli nie kwalifikuje sie na top 10 { room_goto( rm_game_over ); } } else //jesli nie kwalifikuje sie do highscore { room_goto( rm_game_over ); } } czas = max(0, czas-1); //odliczaj do zera I rozumiem, że obj_game_controller jest cały czas aktywny, tak? no, bo jeśli nie, to odliczanie też nie jest aktywne, wtedy musisz to zrobić w innym, aktywnym obiekcie
  4. Simianie ten twój sposób na wydłużenie tzw pauzy za nim pojawi się pokój highscore lub game over nie działa.. Próbowałem też zrobić tak jak niżej,ale to samo się dzieje co u Ciebie.. jest objaw,że życia się kończą i gra się nie kończy;-)tylko pokazuje przy ilości żyć x-1 itd.. obj_game_controller Create czas=0; step ///kontroler odpowiedzialny za giniecie bohatera if (global.life==0 and czas>=2*10) { game_end(); if(global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s=highscores[|ds_list_size(highscores)-1]; //Czy punkty kwalifikuja sie na top 10 if(ds_list_size(highscores)<10 || s[?"score"]<=global.pScore) { room_goto( rm_save_score ); } else //jesli nie kwalifikuje sie na top 10 { room_goto( rm_game_over ); } } else //jesli nie kwalifikuje sie do highscore { room_goto( rm_game_over ); } }
  5. Raczej coś takiego: obj_player_ginie Create: obj_game_controller.alarm[0] = 3*room_speed; //Nastaw alarm dla obj_game_controller obj_game_controller Create: alarm[0] = -1; Alarm[0]: //Jestem komentarzem w kodzie, aby alarm zostal aktywny Step: ///kontroler odpowiedzialny za giniecie bohatera if (global.life==0 and alarm[0] = -1) // wlacz kontroler gdy alarm[0] wylaczy sie (przedtem nastaw go, na odliczanie) { game_end(); if(global.pScore >= 5000) //Sprawdz czy wynik nadaje sie do highscore { var s=highscores[|ds_list_size(highscores)-1]; //Czy punkty kwalifikuja sie na top 10 if(ds_list_size(highscores)<10 || s[?"score"]<=global.pScore) { room_goto( rm_save_score ); } else //jesli nie kwalifikuje sie na top 10 { room_goto( rm_game_over ); } } else //jesli nie kwalifikuje sie do highscore { room_goto( rm_game_over ); }
  6. W drugim przypadku zrobiłem tak dałem warunek przed przejściem do pokoju highscore,ale raz to działa lub wywala mnie całkiem z gry(zbiorę 5000pkt i następuje zapis wyniku lub nie zbiorę tych punktów i pojawia się plansza game over) Miało to być tak,że wyniki do top 10 mają zaczynać się od 5000 punktów obj_game_controller step ///kontroler odpowiedzialny za giniecie bohatera if (global.life=0) { game_end(); var s=highscores[|ds_list_size(highscores)-1]; //Czy punkty kwalifikuja sie na top 10 if(ds_list_size(highscores)<10 || s[?"score"]<=global.pScore) { if(global.pScore >= 5000) room_goto( rm_save_score ); } else { room_goto( rm_game_over ); } } Jeśli chodzi o pierwszy przypadek odnośnie tzw pauzy na 2-3 sekundy za nim przejdzie do pokoju highscore i pokoju game over to alarm[0] = 3*room_speed. mam dać w Create? czy w stepie?
  7. No na te dwa problemy są bardzo proste rady. 1. Żeby od razu nie przechodził do tablicy wyników, stwórz alarm 2-3 sekundowy, który będzie robił za pause. "If (global.life == 0 and alarm[0] = -1) {//kod}". Przed tym sprawdzeniem musisz dać gdzieś alarm[0] = 3*room_speed. 2. A tutaj sam sobie odpowiedziałeś w pytaniu. Skoro ma być spełniony warunek, że od 5000 scoruf ma się dodawać wynik, no to daj ten warunek gdzieś. Warunki to if'y. If(score >= 5000)
  8. Wczoraj
  9. Cześć wszystkim, Mam taki nietypowy problem. Otóż..w momencie,kiedy mój bohater ginie i kończy się gra następuje zapis do tabeli wyników(gra sprawdza czy wynik nadaje się do top 10),ale dziwnie to wygląda,bo gra się kończy bohater ginie i od razu następuje zapis do tabeli wyników. Jest to za szybko..chciałbym to wydłużyć chociaż o 2-3 sekundy. Czyli bohater ginie kończy się gra...mijają 2 sekundy i pojawia się tabela wyników.. podejrzewam,że tu trzeba chyba użyć room_speed ale już mi się pierdzieli. I jeszcze jedna sprawa jak zrobić żeby był spełniony taki warunek,że musi być zebrane 5000 score żeby nastąpił zapis i od tego liczone top 10 wyników,bo teraz co chwile mi zapisuje wyniki top 10 bez względu ile mam zebranych punktów...niech jest jakaś minimalna granica obj_game_controller step ///kontroler odpowiedzialny za giniecie bohatera if (global.life=0) { game_end(); var s=highscores[|ds_list_size(highscores)-1]; //Czy punkty kwalifikuja sie na top 10 if(ds_list_size(highscores)<10 || s[?"score"]<=global.pScore) { room_goto( rm_save_score ); } else { room_goto( rm_game_over ); } } obj_Player Step ///Zycia i dopalacze dodatkowo zabieranie zyc za upadek z bardzo duzej wysokosci //Bohater dostajac obrazenia to miga //miganie dodane specjalnie dla kuli kiedy wartosc zmiennej globalnej hit jest rowna 1 //Bohater miga otrzymujac obrazenia okreslone w pulapce kula oraz innych elementach zadajacych obrazenia global.zegarObrazen-=1 if global.zegarObrazen>0 || global.hit=1 image_alpha=0.7+lengthdir_x(0.3,current_time) else image_alpha=1; if (global.hp <= 0) { global.life-- instance_destroy(); instance_create(x,y,obj_player_ginie) with (instance_create(x,y,obj_entity_die)) { sprite_index = spr_player_die01; image_speed=(image_number/room_speed)/ 3//Czas zanim bohater sie odrodzi image_xscale = other.image_xscale; respawnObject = obj_player; respawnX = spawnX; respawnY = spawnY; physics = true; respawn = true; image_alpha=0 } audio_play_sound(dzwiek_anatol_ginie, 1, false); //odtwarzamy dzwiek gdy bohater ginie } Z góry dziękuje za pomoc;-)
  10. Ostatni tydzień
  11. Przetestuj różne ustawienia, które najlepiej będą działać dla Twojego projektu. Tutaj nie ma najlepszego, jedynie słusznego wyboru, staraj się, żeby wykonywać jak najmniej tzw. "draw calls", jeżeli chcesz optymalizować rendering oczywiście. Rozmiar tekstur do potęgi dwójki ma na celu zoptymalizowanie rysowania jak i zachować kompatybilność z prawie każdym GPU. Większość nowszych GPU wspiera tekstury NPOT, ale najwyraźniej GM idzie bardziej w kompatybilność sprzętową.
  12. No dobra to bezpiecznie jak będę przy scenerii obecnie co mam 4096x1536 podzieloną na małe kawałki oraz texture page ustawione na 4096x4096 Tła też są podzielone,bo początkowo miały rozmiar tyle co sceneria 4096x1536,a obecnie trzy tła mają rozmiary każdy po 2048x768. Ja obecnie korzystam z GMS 1.4 jest tam interpolacja,ale kurcze nie wiem jakie wybrać najlepsze ustawienia. obecnie mam tak ustawione: Czy zawsze każde tło musi mieć rozmiar kwadratu?? 2048x2048? 1024x1024 4096x4096?
  13. Nie zostaną pewnie nawet podzielone na texture pages, bo dwie tekstury 3840x2160 (i więcej oczywiście) nie mieszczą się w atlasie o rozmiarze 4096x4096. Chyba, że inne sprite dołączą się do tego samego texture page. Tła musiałyby być podzielone na 2048x2048 (a właściwie to 2046x2046, ale to poniżej dlaczego), żeby zmieściły się 4 w jednym atlasie, bądź po prostu trzymaj się rozmiarów 4096x4096 na tła. To już decyzja którą sam musisz podjąć mając na uwadze wymagania projektu. Jeszcze pozostaje kwestia obramowania - jeżeli zmieścisz więcej jak jedną teksturę na atlasie, to pozostaje problem z wrapowaniem pikseli przy interpolacji. Defaultowo GM2 używa opcji 'clamped' co rozwiąże Ci większość problemów z interpolacją pikseli. A więc wynikowy rozmiar wrzucony do texture page i tak będzie większy niż 3840x2160 (zapewne zostanie rozszerzony do 3842x2162): Opcję tę można wyłączyć wymuszając ładowanie tła na oddzielnym texture page. Pamiętaj również, że jak tekstura będzie większa jak texture page, to zostanie zeskalowana w dół.
  14. Gra jest robiona na systemy Windows a później na Switcha.Nie robię na Android i IOS wiec nie powinno być problemu;-) Dzięki za informacje. To jeszcze jedno pytanie..trzymając się rozmiarów texture page 4096x4096 jeśli stworzyłbym pokoje o rozmiarach 7680x4320 oczywiście pocięte na małe fragmenty i tła pocięte na rozmiar 3840x2160(połowa scenerii 7680x4320) to tekstury zostaną przydzielone do 8194x8194 czy do 4096x4096? to jest istotne pytanie,bo w końcu zostaną podzielone żeby nie zajmowały tak wielkich rozmiarów.
  15. 1. Tekstura i tak zapewne zostanie przydzielona do texture page 4096x4096, ale trzymałbym się pociętych tekstur, żeby w razie zmniejszenia texture page (każdy export ma inny limit) GM nie rzygał błędami przy kompilacji. 2. Nie widzę przeciwwskazań. 3. Texture page jest inaczej zwanym atlasem tekstur, a rozmiar ograniczony jest na każdy export ponieważ niektóre GPU nie obsłużą Ci tak dużych rozmiarów tekstur. https://docs2.yoyogames.com/source/_build/1_overview/3_additional_information/texture_pages.html
  16. Mam kilka pytań... Trochę słabo,że GMS 1.4 ma ograniczenia jeśli chodzi o Backgrounds Pytanie 1 Mam teraz 3 duże tła o wymiarach scenerii 4096x1536 na każdą plansze. Nawet jak je podzielę na pół to zajmą 6 backgroundów każdy po 2048x768 to też sporo,ale chyba do przełknięcia. texture page mam ustawioną na 4096x4096 pytanie 2 Sprite wrogów i bohatera mogę spokojnie ustawić na maks 128x128? bo obecnie jest ustawiony na 50x50,ale jest zbyt mały. Pytanie 3 Możecie mi to do końca wyjaśnić odnośnie wielkości texture page. Jak mam teraz ustawioną na 4096x4096 to rozumiem,że na daną plansze nie mogę przekroczyć jej rozmiarów tak? czy bardziej tyczy się to łącznie wszystkich obiektów na danej planszy tzn że mam tła załóżmy już podzielone na te 2040x768 i na planszy jest ich trzy w takim rozmiarze do tego wszelakie sprity wrogów o rozmiarach do 128x128 i bohater w też w tych rozmiarach i podobnie pułapki przeszkody.i to może przekroczyć texture page? suma wszystkich tych obiektów na danej planszy?
  17. Game Maker Studio 2

    Potwierdzam. Trzeba chwilę poświecić na usunięcie tych funkcji które GM buduje jako kompatybilne (np. teraz instance_create wymaga podania layera, więc GM tworzy funkcję _instance_create() i zmienne globalne, z depthem itp.) - oczywiście można je zostawić, ale jak się usuwa jakiś obiekt to trzeba przepisywać tablicę z listą tych "starych". Nie mniej każda gra w 100% powinna działać w GMS2, a po optymalizacji na nowe funkcje śmigać jeszcze bardziej.
  18. Game Maker Studio 2

    Co jak co, ale importowanie z GM 1.4 do GMS 2.X działa naprawdę spoko. Ja importowałem Almorę ( 30 tyś linii kodu ) i w sumie wszystko działało od razu - bez błędów. Oczywiście spędziłem ponad 2 miesiące na poprawianie funkcji na nowe + przebudowanie świata na system warstw, ale teraz jest pięknie
  19. Game Maker Studio 2

    Dzięki Chłopaki za informacje.Przekaże mu.
  20. Game Maker Studio 2

    Backgrounds wyrzucili z drzewka zasobów oraz usunęli powiązanie z tłami API background_index, background_colour itd.. Przy imporcie tła powinny być skonwertowane na warstwy i w razie używania backgroundowych API, powinno Ci automatycznie podmienić również kod na API warstw. https://help.yoyogames.com/hc/en-us/articles/231719468-Porting-A-GMS-1-4-Game-To-GameMaker-Studio-2
  21. Game Maker Studio 2

    Wszystko powinno działać, nawet tła. Zostaną skonwertowane do sprites i wstawione na layerze typu "background".
  22. Mam takie pytanie do was... Kolega mój ma wersję gms 2.0 i obecnie sprzecza się ze mną,że nie da się uruchomić bezbłędnie projektu z gms 1.4 w gms 2.0 bo kolega ma problem z background i twierdzi,że tego nie da się naprawić. Jest jakaś rada na to? wszystko mu działa po za tłami.
  23. A tu...dobra teraz już wiem Gnysek Ty to jesteś Kozak bez kitu;-)
  24. Jaki przykład ? Pola X i Y - trzeba wpisać wartość i tyle:
  25. Animowana mgła 2D

    Konrad-Gm wielkie dzięki..o coś takiego mi chodziło:-) PS.Fajny motyw z Jazz Jazzrabbit;-)
  26. Ok czyli trzeba ustawić x i y backgroundów ;-) przyznam,że tego jeszcze nie robiłem. pokazałbyś jakiś przykład? Kurcze zyskałbym jeszcze więcej klatek w grze. A duża sceneria taką co napisałem pocięta na małe fragmenty nie będzie stanowić przeszkody dla gms 1.4?
  27. Animowana mgła 2D

    Jest to prosty shader, wystarczy większość kodu po prostu skopiować do fragment shadera. Port zrobiony w 5min: https://gmclan.org/up1717_16_FogShader.html
  28. w GMS2 da sie bez problemu. W GMS 1.x możesz ustawić bodaj 8 różnych backgroundów, i podać ich X i Y, więc też da radę. w GMS2 nie będzie to obciążeniem, bo tam nie ma backgroundów tylko ustawiasz sprity na layerze sprite (bez obiektów)
  1. Pokaż więcej aktywności
×