Skocz do zawartości

Niewyraźny ekran i czcionka w menu gry - GM:S


Cygnus

Rekomendowane odpowiedzi

Cześć wszystkim, (Game Maker Studio)

 

Problem jest tego typu,że normalnie jak uruchamiam swoją grę jest wszystko ,ładne menu gry,które zrobiłem,czcionka napisów też wszystko dobrze,wchodzę do gry też jest ok,ale kiedy z gry wyjdę,żeby wrócić do głównego menu,to moje menu staje się nie wyraźne,czcionka jakaś postrzępiona,bardzo brzydko to wygląda,w czym jest problem?

Odnośnik do komentarza
Udostępnij na innych stronach

Prawdopodobnie gdzieś w grze zmieniasz aspect ratio. Pokaż 2 screenshoty z menu. Jeden jak jest dobrze i drugi jak jest źle. Wtedy zobaczymy co to może dokładnie być.

 

I proszę Cię, przestać dopisywać do tematów to długie "Game Maker Studio". Temat ma służyć do szybkiego zidentyfikowania wątku. Szczegóły takie jak te podawaj w samym poście. Tak samo z opisem tematu, jest on całkiem zbędny.

Odnośnik do komentarza
Udostępnij na innych stronach

Coś jest na rzeczy.

Wczoraj u mnie w projekcie też zauważyłem problem AA czcionki.

W moim przypadku (nie testowałem tego) podejrzewam, że kłopot pojawia się po użyciu

 

draw_set_halign(fa_right)

draw_set_valign(fa_bottom)

 

Po tym, tekst przestaje być AA.

 

U ciebie jednak widać, że nie tylko tekst zmienił jakość.

Spróbuj zrobić flusha.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak jak włączam swoją grę wszystko ładnie wygląda całe menu gry,a jak wejdę do gry i na moment z niej wyjdę do menu głównego,no to jak widzicie na screenach jak to wygląda,to samo jest jak gram no i zginę w grze,i wtedy przechodzę do pokoju Game Over i tak samo się dzieje brzydka niewyraźna czcionnika postrzępiona jak tam..

Odnośnik do komentarza
Udostępnij na innych stronach

Więc potrzeba nam więcej danych. O wiele więcej.

 

Pierwsze prostsze: Sprawdź czy gdziekolwek w tym nie twoim kopiowanym kodzie masz słowa jak "view_wport", "draw_set_alpha_test" albo "application_surface". Możesz w GM:S wybrać z menu u góry opcję przeszukania wszystkich obiektów.

 

Drugie: Podaj nam wartości view_hview[0] i view_hport[0] w trzech przypadkach. Na początku w działającym menu, w grze, a potem w zepsutym menu.

 

Wystarczy że gdzieś w draw dodasz:

GML
draw_text(mouse_x,mouse_y,"view_hview[0]: "+string(view_hview[0])+"#view_hport[0]: "+string(view_hport[0]))
Odnośnik do komentarza
Udostępnij na innych stronach

No to sprawdź, czy nie zmieniasz w roomie z grą ustawień :) Np. w zakładce views. Albo kodem.

 

Views w rommie menu mam tak ustawione:

 

zaznaczone mam ptaszkiem:

 

Clear Background with Windows Colour

 

Clear display buffer with window Colour

 

resztę mam odznaczone

 

room menu ma rozdzielczość 1920x1080

Odnośnik do komentarza
Udostępnij na innych stronach

Threff ja jestem grafikiem w grze i od scenariusza prostych kodów,zastępuje kolegę,kod jest głównie nasz wspólny,ale to nie ja nad tym siedzę,po prostu przypadek losowy teraz się trafił,że muszę coś zrobić w grze parę rzeczy dlatego tak potrzebuje pomocy...Dobra mniejsza o tym to dla ścisłości

 

mam na pewno

 

"view_wport"

Odnośnik do komentarza
Udostępnij na innych stronach

Wstaw najlepiej screena ustawień wszystkich roomów. W zakładce gdzie się ustawia views.

 

Nie mam teraz jak wstawić,bo mi serwer coś nawala i nie mogę chwilowo się do niego podłączyć...tych pokoi to ja mam sporo już..

na pewno mam tak,że pokoje menu są wszystkie w rozdzielczości 1920x1080 natomiast pokoje gry,to są w różnej wielkości najczęciej długie dość bo 19200x800

 

dobra może łatwiej kodem będzie

o to kod z obj_global_controller:

 

BEGIN STEP

GML
///Window

if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 {

view_wport[0] = window_get_width();

view_hport[0] = window_get_height();

view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0];

surface_resize(application_surface,view_wview[0],view_hview[0]);

//display_set_gui_size(view_wview[0],view_hview[0]); //wersja alternatywna

display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa

}

 

 

obj_game_controller

 

CREATE

 

GML
///Setup

global.pScore = 0;

global.life = 5;

global.coins = 0;

 

globalvar spawnX, spawnY;

//View

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;

 

 

END STEP

 

GML
///View

if view_wview[0] != gvW || view_hview[0] != gvH {

var tempW, tempH;

tempW = view_wview[0];

tempH = view_hview[0];

 

if gvW/view_wport[0] >= gvH/view_hport[0] {

view_hview[0] = lerp(view_hview[0],gvH,.3);

view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0];

} else {

view_wview[0] = lerp(view_wview[0],gvW,.3);

view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0];

}

 

view_xview[0] -= (view_wview[0]-tempW)/2;

view_yview[0] -= (view_hview[0]-tempH)/2;

}

 

if view_wview[0] > room_width {

view_wview[0] = room_width;

view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0];

}

if view_hview[0] > room_height {

view_hview[0] = room_height;

view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0];

}

 

if instance_exists(gvObj) {

gvX = min(max(0,gvObj.x+gvOffX-view_wview[0]/2),room_width-view_wview[0]);

gvY = min(max(0,gvObj.y+gvOffY-view_hview[0]/2),room_height-view_hview[0]);

 

gvOffX = 0;

gvOffY = 0;

}

 

view_xview[0] = round(min(max(0,lerp(view_xview[0],gvX,.15)),room_width-view_wview[0]));

view_yview[0] = round(min(max(0,lerp(view_yview[0],gvY,.15)),room_height-view_hview[0]));

 

gvW = gvWStart;

gvH = gvHStart;

 

//Backgrounds

for(i=0;i<8;i++) {

if background_visible == true || background_foreground == true {

//Horizontal

if background_width != room_width {

background_x = view_xview[0]/(room_width-view_wview[0])*(room_width-background_width);

}

//Vertical

if background_height != room_height {

background_y = view_yview[0]/(room_height-view_hview[0])*(room_height-background_height);

}

}

}

 

Room start

 

GML
///View

globalvar gvXStart, gvYStart, gvWStart, gvHStart, gvObjStart;

gvXStart = view_xview[0];

gvYStart = view_yview[0];

gvWStart = view_wview[0];

gvHStart = view_hview[0];

gvObjStart = view_object[0];

 

if instance_exists(gvObj) {

view_xview[0] = min(max(0,gvX),room_width-view_wview[0]);

view_yview[0] = min(max(0,gvY),room_height-view_hview[0]);

}

 

DRAW GUI

 

GML
///Draw player HUD

draw_set_color(c_white);

draw_text(32, 88, string(" Score: " + string(global.pScore)));

var __guiW = display_get_gui_width(), __guiH = display_get_gui_height();

 

draw_sprite(spr_healthbar,0,0,0);

draw_text(32, 64, string(" Lives: " + string(global.life)));

draw_text(32, 120, string(" Coins: " + string(global.coins)));

if instance_exists(par_player) {

hpHUD = lerp(hpHUD,par_player.hp,.5);

maxHpHUD = par_player.maxHp;

 

with obj_player {

var _offset;

_offset = 0;

 

draw_set_font(fnt_pwrup);

draw_set_valign(fa_bottom);

draw_set_halign(fa_center);

draw_set_color(c_white);

draw_texture_flush();

 

if pwrupSpd > 0 {

draw_sprite_ext(spr_pwrup_speed,0,__guiW-26,29+35*_offset,1,1,0,c_gray,.5);

draw_text(__guiW-26,29+35*_offset,string(ceil(pwrupSpd/room_speed)));

_offset++;

}

if pwrupStr > 0 {

draw_sprite_ext(spr_pwrup_strength,0,__guiW-26,35+35*_offset,1,1,0,c_gray,.5);

draw_text(__guiW-26,35+35*_offset,string(ceil(pwrupStr/room_speed)));

_offset++;

}

if pwrupJmp > 0 {

draw_sprite_ext(spr_pwrup_jump,0,__guiW-26,28+35*_offset,1,1,0,c_gray,.5);

draw_text(__guiW-26,28+35*_offset,string(ceil(pwrupJmp/room_speed)));

_offset++;

}

}

} else {

hpHUD = lerp(hpHUD,0,.5);

}

 

draw_sprite_part(spr_healthbar,1,4,0,91/maxHpHUD*hpHUD,32,4,0);

Odnośnik do komentarza
Udostępnij na innych stronach

GML
surface_resize(application_surface,view_wview[0],view_hview[0]);

//display_set_gui_size(view_wview[0],view_hview[0]); //wersja alternatywna

display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa</span>

To są linijki które odpowiadają za to że później wszystko jest rozjechane. Po prostu sami zmieniacie rozmiar rysowanej powierzchni gry (application_surface) wg rozmiaru okna gry. Potem w menu wszystko jest skopane i rozciągnięte.

 

Żeby wszystko było w porządku musisz to zresetować do "domyślnych" rozmiarów.

W create twojego menu czy gameover w jakimś obiekcie daj znów:

GML
surface_resize(application_surface,view_wview[0],view_hview[0]);

display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa</span>

Odnośnik do komentarza
Udostępnij na innych stronach

wpisałem to do obj_global_controler

 

 

Begin STEP

 

GML
///Window

if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 {

view_wport[0] = window_get_width();

view_hport[0] = window_get_height();

view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0];

surface_resize(application_surface,view_wview[0],view_hview[0]);

//display_set_gui_size(view_wview[0],view_hview[0]); //wersja alternatywna

display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa

}

surface_resize(application_surface,view_wview[0],view_hview[0]);

display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa</span>

 

Jak na razie nic to nie pomogło:/

Odnośnik do komentarza
Udostępnij na innych stronach

Oczywiście że nie pomogło bo nie wpisałeś tego co Ci dałem tylko znów to co było. Rozmiar okna jest inny od rozmiaru tego co widzisz w grze. W twoim wypadku będzie się pewnie różnił o piksel albo nawet 6.

 

Wklej dokładnie to co dałem. Musisz zresetować do domyślnego widoku.

Odnośnik do komentarza
Udostępnij na innych stronach

Nawet stworzyłem oddzielny obiekt

 

w Create dałem ten kod:

 

GML
surface_resize(application_surface,view_wview[0],view_hview[0]);

display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa</span>

 

 

to jak umieściłem ten obiekt na planszach menu i game over,to teraz wygląda to ohydnie brzydko czcionka i ekran rozszarpany

Odnośnik do komentarza
Udostępnij na innych stronach

Pytanie teraz czy usunąłeś resztę? Wygląda na to że nie i teraz wszystko ma inne rozmiary.

 

Dodaj jeszcze

GML
view_wport[0]=view_wview[0]

view_hport[0]=view_hview[0]

albo po prostu wyłącz view jeżeli nie jest potrzebny. Oczywiście nie zapominając o ustawieniu ponownie application_surface.

 

Ogółem twój problem bierze się z tego że wartości window_get_width(), window_get_height(), view_wport[0], view_hport[0], view_wview[0], view_hview[0], oraz rozmiary application_surface i GUI są różne. Musisz zacząć śledzić te wartości tj. debugować je, i sprawdzać czemu w poszczególnych wypadkach są złe. Wtedy dopiero możesz się zastanawiać czym to jest spowodowane.

Odnośnik do komentarza
Udostępnij na innych stronach

Kurcze Thref weź mi dokładnie powiedz,gdzie to mam wpisać,bo wpisałem to w nowym obiekcie który stworzyłem

czyli obj_poprawa:

 

CREATE

 

GML
surface_resize(application_surface,view_wview[0],view_hview[0]);

display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa</span>

 

view_wport[0]=view_wview[0]

view_hport[0]=view_hview[0]

 

 

I ten obiekt dodałem do menu i do game over,ale jak to tam umieściłem,to znowu jest brzydki ekran:/

Odnośnik do komentarza
Udostępnij na innych stronach

Jak pisałem wcześniej, musisz sprawdzić wartości wszystkich tych zmiennych we wszystkich warunkach gdy dzieje się coś źle oraz dobrze.

 

Dopiero wiedząc co jest nie tak będzie można cokolwiek zaradzić, teraz strzelamy na ślepo. Dobrze wiem co powoduje problem ale nie mamy pojęcia gdzie i czemu. Nawet nie wiem czy twoje menu jest w zwykłym Draw czy w GUI, ale wydaje mi się teraz że nie masz w tych room ustawionych view. Dlatego zmień wszystko z tego twojego nowego obiektu na:

GML
surface_resize(application_surface,room_width,room_height)

display_set_gui_maximise()

 

To wciąż jest strzelanie na ślepo! Potrzebujemy danych!

 

Odnośnik do komentarza
Udostępnij na innych stronach

Ja nawet za dużo obiektów w samej scenerii gry nie mam bo jeden cały kod obiektu wysłałem to był obj_global_controller, w scenerii grze mam jeszcze takie obiekty:

 

obj_game_controller

obj_room_controler

obj_fade

obj_przejscie7

 

i to wszystko jeśli chodzi o obiekty w sceneriach gry(roomach)

 

w pokoju menu,to mam ten nowy obiekt,który stworzyłem czyli obj_poprawa,oraz obj_fade

w pokoju game over jest obj_poprawa i obj_game_over_stop

 

 

I tak to wygląda...

Odnośnik do komentarza
Udostępnij na innych stronach

Faktycznie Threef jest jeszcze problem w pokoju game over jak zginę to oczywiście przekierowuje mnie do roomu game over,ale czcionka tam nie wyraźna jest,i jak nacisnę bo tam mam ustawione r restart to ok bo zaczynam plansze od nowa,a jak nacisnę escape,bo tak też ustawiłem wracam do głównego menu i znowu jest to postrzępione,ale już tylko tu i w game over...ale nie ma już tego problemu jak jestem w grze i wyjdę z gry do głównego menu...

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...