Sutikku Opublikowano 23 Listopada 2015 Udostępnij Opublikowano 23 Listopada 2015 Wykminiłem to właśnie po tym co Uzjel napisałem. Czasem to w życiu okazuje się wystarczy myśleć, eh. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 25 Listopada 2015 Udostępnij Opublikowano 25 Listopada 2015 a myślałem, że rysowanie na surface nie zabiera pamięci, dopiero samo jego rysowanie już tak:/ Dobra zostawię narazie tilesy tak jak są. Jak będę zmieniał testowego rooma już na tego właściwego( większego) i zobaczę jakiś znaczący spadek wydajności to machnę własny edytor ( pomysł na niego już mam ale nie chciałbym siedzieć nad tym nie potrzebnie) Odkopię temat ale swego czasu bardzo pomocne przy tworzeniu ogromnych lokacji były dla mnie artykuły o "Gigantach świata 2d" na stronie epomoce.pl GML http://www.epomoce.pl/spisgieromega.php?Lewy=1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 25 Listopada 2015 Udostępnij Opublikowano 25 Listopada 2015 Przejrzałem sobie, na pierwszy rzut oka wydaje się ciekawe a po przeczytaniu nie wiem za bardzo jak to ma pomóc,niewiele rozumiem- do jakiego programu to się odnosi,o co tu w ogóle chodzi? http://www.epomoce.pl/ladujpodstrone.php?p...mp;parametr2=16 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 25 Listopada 2015 Udostępnij Opublikowano 25 Listopada 2015 mam dziwny problem W create obiektu enemy1_body mam kod GML own_head=instance_create(x,y,enemy1_body_head) own_head.cialo=self.id A w create obiektu enemy1_body_head mam GML image_angle=cialo.image_angle mimo to, widzi błąd w obiekcie enemy1_body_head - mianowicie nie ma takiego obiektu jak cialo :( co zrobić @EDIT: ok, dałem to drugie do stepa i działa, ale dlaczego nie działa w create? I w ten sposób w stepie wykonuje ci zbędny kod co krok. Spróbuj w create obiektu enemy1_body_head ustawić alarm[0]:=1; a do alarmu wrzuć przypisanie image_angle=cialo.image_angle. Jeśli to pomoże to oznacza, że pierwsza linijka obiektu body tworząca głowę tworzy obiekt, który od razu wykonuje kod ze swojego create a przypisanie own_head.cialo=self.id w body następuje później. Obsługa JSON jest tylko w Studio. Ale w poprzednich GM było już ds_map_write() i ds_map_read(). I tego użyj. Jest niesamowicie łatwo, wygodnie, i bezproblemowo. Tylko nie ma plusu struktury drzewa. Z tym, że w GM 8.1 był zupełnie inny format zapisu danych (dla laika nieczytelny), natomiast te funkcje w GM:S zapisują już w formacie JSON (czytelny niemal jak zwykłe ini) i zapisy są niekompatybilne. Ponawiam bo nadal nie mam pojęcia o co chodzi "W pewnym momencie gry (jeszcze nie odkryłem dokładnie w którym) gra zaczyna zwalniać- cały czas mam 60/60 nagle z każdą kolejną mapą spada kilka fps.Jeżeli zresetuje grę dana mapa która spowolniła już np do 40fps ma już normalnie 60/60- tak więc proces następuje wraz z czasem grania- i tutaj kluczowy element i pytanie używam sobie "show_debug_overlay" i wraz ze spadkiem fps drastycznie rośnie mi żółty pasek , według opisu funkcji to : "Yellow - The time required for the draw event" Co to oznacza w praktyce? Praktycznie nie używam funkcji draw (poza jakimś wyświetlaniem fps itp).Co może spowalniać? " Ktoś wie? Trop: sprawdź czy plik wykonywalny pod task managerem zużywa coraz więcej pamięci w windowsie. Ja tak kiedyś miałem jak źle zwalniałem pamięć przy ładowaniu kolejnych backgroundów z pliku u używaniu surfejsów. Przejrzałem sobie, na pierwszy rzut oka wydaje się ciekawe a po przeczytaniu nie wiem za bardzo jak to ma pomóc,niewiele rozumiem- do jakiego programu to się odnosi,o co tu w ogóle chodzi? http://www.epomoce.pl/ladujpodstrone.php?p...mp;parametr2=16 Chodzi o samą filozofię budowania ogromnych światów. Sprawa sprowadza się do wyświetlania w jednym czasie tak naprawdę tylko jednego rooma o wielkości Viewa a reszta jest przechowywana w tabelach. Podczas "przesuwania" ekranu tak naprawdę przesuwasz same obiekty generując je na bieżąco na podstawie danych w tabelach. Przykłady w artykułach są dla Delphi ale polecam przeczytać całość i zaadaptować dla swoich potrzeb. Budując świat w ten sposób można praktycznie zrobić grę o przeogromnej mapie na przysłowiowy wyświetlacz z pralki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 25 Listopada 2015 Udostępnij Opublikowano 25 Listopada 2015 Z tym, że w GM 8.1 był zupełnie inny format zapisu danych (dla laika nieczytelny), natomiast te funkcje w GM:S zapisują już w formacie JSON (czytelny niemal jak zwykłe ini) i zapisy są niekompatybilne. W dalszym ciągu ds_map_write() zapisuje w nie czytelnym formacie. Nie chce mi się teraz testować ale dokumentacje mówi: NOTE: The returned string is not a human readable string, but rather a dump of the contents of the data-structure Wcześniej to był ciąg znaków nie wiem czy same cyfry czy cyfry wymieszane z literami, ale to był nie czytelny format. Czy jest kompatybilny? Nie wiem, nie mam czasu przetestować. Pewne jest to że ds_map_write() nie zapisuje jako JSON. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 25 Listopada 2015 Udostępnij Opublikowano 25 Listopada 2015 W dalszym ciągu ds_map_write() zapisuje w nie czytelnym formacie. Przerabiałem to już jakiś czas temu w edit nr 2, gdy konwertowałem HS i SAVE z GM 8.1 na HTML5. Dla przykładu treść HigScore z mojej produkcji po zapisie ds_map_write() z GM:S GML {"width":6,"height":4,"body":["Zuzia umyła auto","Xperia html5 firefox","Zuzia","Retrospect Workshop","android gr","żźćąśęółńŃŁÓĆŹŻĄŚĘ Da", 851,751,688,637,614,599,3,5,2,5,4,1, "B:130.59 K:18.42 U:738.84 Br:640 Bt:257 Tl:22.35","B:123.88 K:17.16 U:644.38 Br:1578 Bt:232 Tl:23.75","B:129.84 K:51.51 U:609.23 Br:1922 Bt:692 Tl:21.75", "B:115.81 K:41.72 U:563.02 Br:2403 Bt:564 Tl:26.27","B:109.97 K:35.05 U:538.94 Br:2469 Bt:442 Tl:26.20","B:137.58 K:11.54 U:472.95 Br:3295 Bt:155 Tl:19.35"]} Więc format jak najbardziej czytelny. W GM 8.1 to był ciąg cyfr. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
lew_leo Opublikowano 26 Listopada 2015 Udostępnij Opublikowano 26 Listopada 2015 czy mogę użyć logo GM na ekranie startowym mojego projektu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 26 Listopada 2015 Udostępnij Opublikowano 26 Listopada 2015 Tak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
H2S04 Opublikowano 26 Listopada 2015 Udostępnij Opublikowano 26 Listopada 2015 Mam problem z tworzeniem budynku... Zamiast jednego tworzy się ich od cholery. Liczba dochodzi do 20 :/ Info z kodu budynku: Information about object: o_Gbuild Sprite: s_OreGraber Solid: false Visible: true Depth: 0 Persistent: false Parent: Children: Mask: No Physics Object Create Event: execute code: can = false; col = c_white; direction = 0; Step Event: execute code: image_angle = direction; x = mouse_x; y = mouse_y; if place_free(x,y){ can = true; col = c_white; } else { can = false; col = c_red; } Mouse Event for Left Pressed: execute code: if can = true{ instance_create(x,y,o_Gbuilding); instance_destroy(); } Mouse Event for Glob Right Pressed: execute code: instance_destroy(); Draw Event: execute code: draw_sprite_ext(sprite_index,0,x,y,1,1,direction,col,1); Po końcu alarmu ma stworzyć się ten obiekt: Information about object: o_Graber Sprite: s_OreGraber Solid: true Visible: true Depth: 0 Persistent: false Parent: Children: Mask: No Physics Object Create Event: execute code: direction = 0; type = 0; select = false; index = 0; x += choose(0,128,256,512)// kod by sprawdzić czy tworzy się więcej jak jeden. Step Event: execute code: if select = true{ instance_create(x+128,y,o_Gtype); } Mouse Event for Left Pressed: execute code: select = not select; Mouse Event for Glob Right Pressed: execute code: select = false; Draw Event: execute code: if select = true{ //draw_rectangle_colour(x-68,y-68,x+68,y+68,c_green,c_green,c_green,c_green,1); draw_sprite_ext(s_select,image_index,x,y,1,1,0,c_white,0.5) draw_sprite_ext(s_arrow,0,x+128,y,1,1,direction,c_black,0.5) } draw_sprite_ext(sprite_index,type,x-10,y+10,1,1,direction,c_black,0.2); draw_sprite_ext(sprite_index,type,x,y,1,1,direction,c_white,1); draw_text_colour(x,y,index,c_white,c_white,c_white,c_white,1); Pozdrawiam. EDIT: Dobra przeszukałem wszystko i problem znalazłem. Dopiero ogarnąłem to, że tworzyło mi się kilka ikonek budowy budynku, po kliknięciu wszystkie się aktywowały... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kso Opublikowano 27 Listopada 2015 Udostępnij Opublikowano 27 Listopada 2015 To kod tworzenia plomieni, chcę by plonień pokazywał się przez sekunde i przez sekundę nie, próbowałem na wiele sposobów, ale zawsze jak dochodziło do 0 to wieża przestawała działać, jak to zrobić ? GML if (timer1 <= 0) { if (object_exists(obj_flamethrower)) { instance_deactivate_object(obj_flamethrower) } timer1 = 60; } else { timer1 -= 1; repeat (3) { instance_create(x+32,y, obj_flamethrower); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 27 Listopada 2015 Udostępnij Opublikowano 27 Listopada 2015 Przede wszystkim tworzysz za dużo obiektów, a potem je deaktywujesz i nigdy więcej nie używasz, po co? GML if (timer1 <= 0) { with(obj_flamethrower) { instance_destroy();} timer1 = 60; } else { timer1 --; repeat (3) { instance_create(x+32,y, obj_flamethrower); } } Jak zablokować grę w poziomie? Żeby nie dało się na androidzie obracać? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kso Opublikowano 27 Listopada 2015 Udostępnij Opublikowano 27 Listopada 2015 Chciałem zobaczyć, jak ta opcja działa. Problem wciąż zostaje, jaki warunek zrobić, by przez sekunde nie tworzyło obj_flamethrower ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 27 Listopada 2015 Udostępnij Opublikowano 27 Listopada 2015 Zapomniałem o tym XD GML if (timer1 <= 0) { with(obj_flamethrower) { instance_destroy();} timer1 = 120; } else if timer1<=60{ repeat (3) { instance_create(x+32,y, obj_flamethrower); } } timer1 --; Dzięki tej opcji w obiekcie1 możesz wykonać kod w obiekcie2 :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kso Opublikowano 27 Listopada 2015 Udostępnij Opublikowano 27 Listopada 2015 ale ja durny... Dzięki !! :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 27 Listopada 2015 Udostępnij Opublikowano 27 Listopada 2015 Jak zrobić przesuwanie ekranu w androidzie tak jak to wygląda w 99% wszystkich komórkowych aplikacji(np przy podglądzie zdjęć).Tzn przesuwam palcem w lewo i ekran przesuwa się w prawo.Mam obiekt za którym podąża view ale nie mam żadnego pomysłu jak uzyskać podobny efekt edit.ogarnąłem temat, jakby ktoś szukał rozwiązania to GML if (dragging) { // actual dragging logic: view_xview = drag_x - (mouse_x - view_xview) view_yview = drag_y - (mouse_y - view_yview) // make sure view doesn't go outside the room: view_xview = max(0, min(view_xview, room_width - view_wview)) view_yview = max(0, min(view_yview, room_height - view_hview)) } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 30 Listopada 2015 Udostępnij Opublikowano 30 Listopada 2015 Czy akcesor Map[? "Key"] jest szybszy od ds_map_find_value ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 30 Listopada 2015 Udostępnij Opublikowano 30 Listopada 2015 Jak zablokować grę na androida w poziomie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hgter Opublikowano 30 Listopada 2015 Udostępnij Opublikowano 30 Listopada 2015 Musisz wejść w global settings i tam w zakładce androida masz możliwość wyboru w jakich ułożeniach ekranu będzie działać (4 do wyboru) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 30 Listopada 2015 Udostępnij Opublikowano 30 Listopada 2015 @I am vader: mają jednakową szybkość Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 1 Grudnia 2015 Udostępnij Opublikowano 1 Grudnia 2015 Chce żeby obiekt po zbliżeniu się do innego obiektu stawał się niewidzialny GML if (distance_to_object(obj_eye)<150){image_alpha=0} else image_alpha=1 Proste , banalne i działa. Ale tych obiektów które mają się zmienić w ten sposób jest sporo rodzajów i nie chcę w każdym pojedynczym wklejać tego kodu. W pierwszej kolejności spróbowałem w kodzie obj_eye (czyli tego który uruchamia niewidzialnośc) GML if (distance_to_object(obj_mobile_parent)<150){with obj_mobile_parent image_alpha=0} else with obj_mobile_parent image_alpha=1 skutek- nic się nie dzieje,zero efektu Następnie próbowałem w parencie wszystkich obiektów które mają się zmieniać- nie działa nic, kiedy dorzucę event_inherited() - także nic się nie dzieje.Kod działą tylko i wyłącznie użyty bezpośrenio w stepie danego obiektu co bardzo mi nie odpowiada.Dodam że użycie jakiejkolwiek innej funkcji zamiast image_alpha działa dobrze np GML if (distance_to_object(obj_mobile_parent)<150){with obj_mobile_parent instance_destroy()} Problem dotyczy tylko image_alpha Ktoś wie o co tu chodzi? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kso Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 GML ///boss if object_exists(obj_boss) { if (obj_boss.image_index = 6) { if place_meeting(x,y+1,obj_block_yellow) { with obj_boss image_index=0; } } if (obj_boss.image_index = 7) { if place_meeting (x,y+1,obj_block_blue) { with obj_boss image_index=1; } } if (obj_boss.image_index = 8) { if place_meeting(x,y+1,obj_block_green) { with obj_boss image_index=2; } } if (obj_boss.image_index = 9) { if place_meeting(x,y+1,obj_block_red) { with obj_boss image_index=3; } } if (obj_boss.image_index = 10) { if place_meeting(x,y+1,obj_block_bluee) { with obj_boss image_index=4; } } if (obj_boss.image_index = 11) { if place_meeting(x,y+1,obj_block_purple) { with obj_boss image_index=5; } } } Czemu, gdy obj_boss znika wywala mi błąd ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 Podaj treść błędu. I spróbuj użyć instance_exists, zamiast object. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kso Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 Działa. Jaka jest różnica między object_exists a instance_exists ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 "This function returns whether an object with the specified index exists or not. Note that this checks to see if an object is present in the resource tree, and not actually in the game room. For that you should use the function instance_exists. " Zakładam, że to do użycia przy dynamicznych obiektach, które się tworzy i usuwa w locie, aby się upewnić, że dany istnieje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kso Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 Jeszcze takie pytanie, jak object spada, załóżmy znika(rozbił się) i chcę by pojawił się w tym miejsce gdzie zaczął spadać, jakies komendy użyć ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 @Ignatus: Funkcja distance_to_object(x) działa poprawnie, jeżeli za x wstawisz ID instancji obiektu lub słowo specjalne "other". Jeżeli jako x wstawisz nazwę obiektu (czyli ID obiektu), to funkcja wyliczy odległość od tylko jednej instancji tego obiektu (prawdopodobnie tej, która powstała jako pierwsza). Zakładam, że istnieje tylko jedna instancja obiektu obj_eye i że obj_mobile_parent jest nazwą obiektu, a nie zmienną przechowującą ID pewnej instancji obiektu. Wtedy kod GML if (distance_to_object(obj_mobile_parent)<150){with obj_mobile_parent image_alpha=0} else with obj_mobile_parent image_alpha=1 wyliczy odległość od instancji obiektu obj_eye do pierwszej powstałej instancji obiektu obj_mobile_parent, i jeśli spełni warunek, to zmieni image_alpha WSZYSTKIM instancjom obiektu obj_mobile_parent. Następujący kod: GML with(obj_mobile_parent) image_alpha=(distance_to_object(other)>150) wykonywany w stepie obiektu obj_eye zrobi to, czego wymagasz. (a przynajmniej powinien : |) @kso: Jeśli to platformówka, to możesz zapisywać w obiekcie ostatnią pozycję, na której obiekt stoi na platformie czy na czymkolwiek, a w momencie rozbicia powracać do tej pozycji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kso Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 a nie ma innego spodobu? Akurat nad tym obiektem nie ma nic ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 Są zmienne xstart i ystart. jak zrobisz x=xstart; y=ystart to ustawi ci pozycję na startową z room. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 Amaterasu- dziękuje za odpowiedź ale mój problem nie tyczy się tego że nie działa "distance_to_object" lub że akcja odnosi się do wszystkich obiektów danego rodzaju a nie tylko do tej jednostki która wpadnie w "zasięg"- problem polega na tym że każda inna akcja działa poza zmianą image_alpha- przy tym zupełnie nic się nie dzieje. Problem teoretycznie rozwiązałem używając visible GML with obj_mobile parent if (distance_to_object(obj_eye)<100){visible=0} else visible=1 I działa bez problemu tak jak powinno ale nie ukrywam że wolałbym żeby to przechodzenie w niewidzialność było płynne,np poprzez GML image_alpha-=.1 ale jak to zrobie nic się nie dzieje (jak zrobię image_alpha=0 w tym kodzie- także nie działa) Mówiąc w skrócie jak użyję w jakimkolwiek "odnośniku" image_alpha to nigdy nic się nie dzieje.Gdzie jest błąd? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Grudnia 2015 Udostępnij Opublikowano 2 Grudnia 2015 może błąd w funkcji draw_sprite_ext? przypisałeś może własną zmienną do alphy i zapomniałeś :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się