Skocz do zawartości

Jedna szybkość gry na innych komputerach


Rekomendowane odpowiedzi

Hej

Gdy odpaliłem moja grę na kompie u kolegi z 15 fps nagle wskoczyło do 60 fps!!, w grę nie dało sie grać.. wszystko działało za szybko.

Na moim kompie max fps to 15 i tak gra sie dobrze.

jak to ograniczyć? , czy wystarczy w roomie wpisać speed =15  i wtedy wszędzie na szybkich kompach będzie te 15 ?

czy idzie dać obiekt z kodem co będzie pilnować prędkości gry, by nie przekroczyła danego progu?

 

pozdro

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

A jaka wersja GameMakera ? W studio 2 ustawiasz prędkość w game properties, nie ma speeda per room.

 

No i skoro wyskoczyło u kolegi 60FPS, to znaczy, że u niego działa normalnie a u Ciebie zamula :)

Odnośnik do komentarza
Udostępnij na innych stronach

W dniu 26.05.2021 o 22:58, gnysek napisał:

A jaka wersja GameMakera ? W studio 2 ustawiasz prędkość w game properties, nie ma speeda per room.

 

No i skoro wyskoczyło u kolegi 60FPS, to znaczy, że u niego działa normalnie a u Ciebie zamula :)

Właśnie niestety gm8, ale muszę w nim skonczyć projekt, bo konwersja na gm2 nie wchodzi w grę.

Muszę znaleźc złoty środek, by gra działała na słabych i mocnych kompach, tak by fps był w granicach 15-30.
Czytałem coś o delta time, ale nie wiem jak to ugryźć.

 

Dawno dawno temu jak programowałem w assemblerze aby spowolnić program stosowało sie pętele opóźniające z instrukcją NOP .

ale muszę mieć jakiś odnośnik czasowy do danego komputera na którym gra będzie odpalana.

Myślę nad czymś takim by :

1.sprawdzić jak szybki jest dany komputer

2.jeżeli za szybki to spowolnic odpowiednio do 30 fps stosując w kodzie coś co będzie odpowiednio zamulac kompa.

3.jeżeli za wolny to poprostu wyświetlic napis, że procek nie daje rady :D

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

4 godziny temu, Ice Cube napisał:

Właśnie niestety gm8, ale muszę w nim skonczyć projekt, bo konwersja na gm2 nie wchodzi w grę.

Muszę znaleźc złoty środek, by gra działała na słabych i mocnych kompach, tak by fps był w granicach 15-30.
Czytałem coś o delta time, ale nie wiem jak to ugryźć.

 

Ustaw room_speed na 30, ale, żeby zminimalizować różnice animacji/chodzenia między innymi komputerami to niestety pozostaje liczenie delty.

 

Delta to nic innego jak czas jaki upłynął między poprzednią wyświetloną klatką a aktualnie rysowaną, w gm8 niestety nie ma wbudowanej zmiennej delta_time, musisz takową policzyć samemu: 

// Create
global.previous_time = current_time
global.delta_time = 1.0 / room_speed

// Begin Step
global.delta_time = (current_time - global.previous_time) / 1000.0
global.previous_time = current_time


Możesz to wrzucić w jakiś kontroler i niekoniecznie w każdym obiekcie liczyć deltę osobno.

 

Teraz, żeby np. bohater poruszał się ze "stałą" prędkością na dwóch kompach, to można zrobić coś takiego:

// Liczymy jak daleko poruszył się gracz od ostatniej klatki
// Zakładając, że używasz lenghtdirów (ale nie musisz), mnożymy prędkość gracza przez deltę
x += lengthdir_x(global.delta_time * player_speed, direction)
y += lengthdir_y(global.delta_time * player_speed, direction)

 

4 godziny temu, Ice Cube napisał:

Myślę nad czymś takim by :

1.sprawdzić jak szybki jest dany komputer

2.jeżeli za szybki to spowolnic odpowiednio do 30 fps stosując w kodzie coś co będzie odpowiednio zamulac kompa.

3.jeżeli za wolny to poprostu wyświetlic napis, że procek nie daje rady :D

Nie polecam sprawdzać "jak szybki jest dany komputer", bo to nie jest użyteczne w tym wypadku. Dodatkowo limit fps (maksymalny) w GM ustawiasz zmienną room_speed, także nie ma potrzeby sprawdzania ile maszyna wyciąga, bo jeżeli będzie wolniejsza to i tak magicznie nie przyśpieszy to działania, tutaj w main loopie nie ma akurat czego optymalizować ;) 

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ę...