AdamW Opublikowano 30 Czerwca 2014 Udostępnij Opublikowano 30 Czerwca 2014 Witam serdecznie, W związku z tym, że GM:Studio Standard zostało niedawne udostępnione za darmo, postanowiłem przeportować mój projekt. Niestety pojawił się dziwny problem który nie do końca rozumiem, bo GM:Studio nie używałem. Sprawa wygląda tak że roomy mają różnego rozmiaru View'y, a same View'y w tychże roomach są też na starcie gry odpowiednio ustawiane w zależności od ustawień. W GM8 wszystko działało ok, kiedy przechodziłem do rooma w którym view miał inne wymiary, okno się przeskalowywało i wszystko cacy, tak samo room_set_view poprawnie ustawiało rozmiary view w trakcie gry. Wygląda na to że w GM:Studio coś się mocno pozmieniało i działa to bardzo dziwnie. Okno gry nie dopasowuje się do rozmiaru view i w dodatku dzieją się straszne rzeczy z rysowaniem (jakieś takie dziwne prostokąty i czarne pola): Jak powinno wyglądać: Oto co próbowałem zrobić: Mam pierwszy room rIntro (640x480, view tak samo), w nim jest wszystko OK, następnie przechodzi do rLogin (400x300, view tak samo), ale niestety okno dalej jest rozmiaru 640x480, view natomiast skaluje się tak by wypełnić całe okno (nie ma jednak takich klockow z rysowaniem jak w roomach z grą :P). Próbowałem dodać coś takiego w Room Start obiektu kontrolującego grę (persistent): GML if ( room == rLogin ) { window_set_size(400, 300); surface_resize(application_surface,400,300); } ... żadnego efektu :) Nie mam pojęcia co się dzieje i szczerze mówiąc nie mam pomysłu jak temu zaradzić. Będę bardzo wdzięczny za pomoc od kogoś kto siedzi dłużej w GM:Studio. Pozdrawiam :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 30 Czerwca 2014 Udostępnij Opublikowano 30 Czerwca 2014 GMS rozmiar okna ustala pierwszy room i nigdy nie może się już zmienić. To takie ograniczenie w stosunku do GM8.1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
AdamW Opublikowano 30 Czerwca 2014 Autor Udostępnij Opublikowano 30 Czerwca 2014 Chcesz powiedzieć że nie da się zrobić teraz gry która pracuje w różnych rozdzielczościach ;0? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 30 Czerwca 2014 Udostępnij Opublikowano 30 Czerwca 2014 Da się, ale nie można tego zmieniać podczas gry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 30 Czerwca 2014 Udostępnij Opublikowano 30 Czerwca 2014 Funkcja window_set_size zmienia rozmiar okna aplikacji, view_wview i view_hview zmieniają rozmiar widoku gry. Nie da się zmienić rozdzielczości ekranu, o ile dobrze rozumiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 30 Czerwca 2014 Udostępnij Opublikowano 30 Czerwca 2014 Ale nadal window_set_size działa tylko w 1 roomie. Potem już nie można zmieniać rozmiaru o ile dobrze pamiętam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 30 Czerwca 2014 Udostępnij Opublikowano 30 Czerwca 2014 Właśnie sprawdziłem, działa dla każdego rooma. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 30 Czerwca 2014 Administratorzy Udostępnij Opublikowano 30 Czerwca 2014 Ale trzeba pamiętać o resize application_surface też :) Edit: a w ogóle to w tutorialach i demach z menu startowego GM:S mozna pobrac przykład zmian rozdziałki chyba. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
AdamW Opublikowano 30 Czerwca 2014 Autor Udostępnij Opublikowano 30 Czerwca 2014 Dobra, czyli żeby ustalić rozmiar ekranu PO wczytaniu z pliku konfiguracyjnego w pierwszym roomie, to muszę ustawić room_set_view dla każdego rooma oraz window_set_size w PIERWSZYM roomie, dobrze rozumiem? w Game Start da radę? Swoją drogą te śmieszne kwadraty biorą się stąd że te grafiki były ładowane z zewnątrz. Z tego co czytam to w GM:Studio jest to gorsze rozwiązanie i lepiej trzymać wszystko w projekcie (zobaczymy ile będzie ważył i się ładował/zapisywał :D), bo się robią różne takie hocki klocki. @Amaterasu: moje próby wywoływania window_set_size spełzały na niczym :P Używasz najnowszego GM:S? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DangBean Opublikowano 1 Lipca 2014 Udostępnij Opublikowano 1 Lipca 2014 Dobra, czyli żeby ustalić rozmiar ekranu PO wczytaniu z pliku konfiguracyjnego w pierwszym roomie, to muszę ustawić room_set_view dla każdego rooma oraz window_set_size w PIERWSZYM roomie, dobrze rozumiem? w Game Start da radę? Swoją drogą te śmieszne kwadraty biorą się stąd że te grafiki były ładowane z zewnątrz. Z tego co czytam to w GM:Studio jest to gorsze rozwiązanie i lepiej trzymać wszystko w projekcie (zobaczymy ile będzie ważył i się ładował/zapisywał :D ), bo się robią różne takie hocki klocki. @Amaterasu: moje próby wywoływania window_set_size spełzały na niczym :P Używasz najnowszego GM:S? Niestety w wersji 1.2 GMS zmiana rozmiaru działała, od 1.3 kaszani produkując zmętnienie obrazu. Nie da się przeskalować view tak aby rozmiar się zmienił, a jeden piksel pozostał jednym pikslem - zawsze cośtam interpoluje. Zgłaszałem buga, ale mają inne pilniejsze. Trzeba czekać... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 1 Lipca 2014 Udostępnij Opublikowano 1 Lipca 2014 A jak przed skalowaniem wyłączysz texture_set_interpolation(false)? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lipca 2014 Administratorzy Udostępnij Opublikowano 1 Lipca 2014 Ja nie widziałem żadnego problemu z blurem, może coś źle robisz ? Co prawda skrypt który wszystko mi ustawia ma 100 linijek żeby policzyć proporcje GUI/VIEW/DISPLAY/WINDOW ale działa. Trzeba: zmienić rozmiar okna zmienić rozmiar view (można za pomocą room set view i pętli i= 0; while(room_exists(i)) {room_set_view(...); i++} ) w tym również port size zmienić rozmiar gui albo skorzystać z display_set_gui_maximise zmienić rozmiar application_surface (tylko 1.3) i sprawdzić jak jest ustawione keep aspect ratio bo to w 1.2 i w 1.3 działa inaczej (przez application surface). Zresztą application surface tez mozna rysować jak się chce i gra moze miec rozdziałkę HD, viewy 320x240, a surface będzie rysowany ręcznie przeskalowany. Fajny jest np. ten wpis na blogu: http://yoyogames.com/tech_blog/45 I tu jest świetny temat na ten temat, właśnie do 1.3: http://gmc.yoyogames.com/index.php?showtopic=565614 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DangBean Opublikowano 1 Lipca 2014 Udostępnij Opublikowano 1 Lipca 2014 zmienić rozmiar application_surface (tylko 1.3) Wielkie dzięki Gnysek! Tego mi brakowało: GML surface_resize(application_surface, display_get_gui_width(), display_get_gui_height()); :) Teraz romb wyglada jak romb, a nie jak zęby od piły! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lipca 2014 Administratorzy Udostępnij Opublikowano 1 Lipca 2014 No nie wiem czy na rozmiar gui to dobry pomysł, to raczej GUI do czegoś powinno byc rozszerzane (moze window size?) i ten surface tez, żeby jaj nie było :) Co do rombu poczekaj na kolejny update EAP, gdzie będzie wygładzanie vertexów, to bedzie mozna dopiero fajnie kształty malować: Z ząbkami: Bez: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
AdamW Opublikowano 4 Lipca 2014 Autor Udostępnij Opublikowano 4 Lipca 2014 Okej, tak wygląda mój skrypt wywoływany w Game Start: GML if ( argument1 == r1024x768 ) { for (e=0; e<argument0; e+=1) { if ( global.LocationsTable[e,3] > 0 ) room_set_view(global.LocationsTable[e,3],0,1,0,0,1024,768,0,0,1024,768,512,384,-1,-1,oSelfPlayer); } room_set_view(rLogin,0,1,168,0,1024,768,0,0,1024,768,512,384,-1,-1,noone); room_set_view(rCharacterCreate,0,1,168,0,1024,768,0,0,1024,768,512,384,-1,-1,noone); window_set_size(1024,768); display_set_gui_size(1024,768); surface_resize(application_surface, 1024, 768); } else if ( argument1 == r1360x768 ) { for (e=0; e<argument0; e+=1) { if ( global.LocationsTable[e,3] > 0 ) room_set_view(global.LocationsTable[e,3],0,1,0,0,1360,768,0,0,1360,768,680,384,-1,-1,oSelfPlayer); } room_set_view(rLogin,0,1,0,0,1360,768,0,0,1360,768,680,384,-1,-1,noone); room_set_view(rCharacterCreate,0,1,0,0,1360,768,0,0,1360,768,680,384,-1,-1,noone); window_set_size(1360,768); display_set_gui_size(1360,768); surface_resize(application_surface, 1360, 768); } Viewy się już ładnie ustawiają, ale nadal okno jest rozmiaru 1360x768, gdy ustawimy rozdziałkę 1024x768 (tak jak domyślnie rozmiar pierwszego rooma) i za chiny nie chce się pomniejszyć. (zamiast tego są czarne pasy z boku) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DangBean Opublikowano 4 Lipca 2014 Udostępnij Opublikowano 4 Lipca 2014 Viewy się już ładnie ustawiają, ale nadal okno jest rozmiaru 1360x768, gdy ustawimy rozdziałkę 1024x768 (tak jak domyślnie rozmiar pierwszego rooma) i za chiny nie chce się pomniejszyć. (zamiast tego są czarne pasy z boku) Wydaje mi się, że problem polega na tym, iż kolejne roomy muszą być ustawione tak samo jak pierwszy, a tego pierwszego nie da się ustawić za pomocą room_set_view - "can be used to define a view within any room in your game except the current one". Trzeba siermiężnie: GML view_xport[0] = 0; view_xview[0] = 0; view_yport[0] = 0; view_yview[0] = 0; view_hport[0] = w_h; view_hview[0] = w_h; view_wport[0] = w_w; view_wview[0] = w_w; view_enabled = true; view_visible[0] = true; window_set_size(w_w, w_h); surface_resize(application_surface, w_w, w_h); //a teraz kolejny room: room_set_view(room_game, 0, true, 0, 0, w_w, w_h, 0, 0, w_w, w_h, 0, 0, 0, 0, -1); room_set_view_enabled(room_game, true); //itd.</span> 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ę