Версия за печат

Натиснете тук за да видите темата в оригиналния си формат

Българското Game Maker общество [Само за четене / Архив] _ Ръководства и Примери _ независимо от лага поддържайте скоростта еднаква!

Публикувано от: яверт 12:24:48, 29-May-2010, Saturday

Нито концепцията, нито кода са мои, но това е нещо твърде полезно да бъде подминато.
С две думи чрез този метод нещата ще се движат с еднаква скорост независимо от лага.... винаги!
И е изключително прост, всеки може да го приложи. Какво трябва да се направи:
1.В първата стая на играта, в контрол обекта при създаването му се инициализира една глобална променлива global.gamespeed=1;
2.После тази променлива трябва да се обновява всяка стъпка в begin step на контрола за съответната стая:

Код
if fps>1
   {
   global.gamespeed=fps/room_speed;
   }

3.За всяко нещо, което се движи, или се променя постоянно, се разделя на тази глобална променлива, за да се поддържа тази скорост:
Код
//това са само примери
speed=10/global.gamespeed;
friction=0.5/global.gamespeed;
image_speed=2/global.gamespeed;//изключително важно, за да изглежда и анимацията наред
//ако нещо се увеличава всяка стъпка, то това правило важи и за него
health+=3/global.gamespeed;
edikvositam+=10/global.gamespeed;

И това е само. Толкова просто.
Има едно изключение и това са алармите. Те не могат да бъдат повлияни от този метод. За това може да се използва тяхната алтернатива в код.
Delta timinga не е оправдание да занемарите играта да бъде неоптимизирана да се влачи с едва 20 кадъра в секунда. Ще стане насечена и определено неприятна за игра. Този метод е само за случаите когато някой има по-стар компютър, или има лаг поради многото пуснати програми.

Публикувано от: Hella_from_Hell 13:22:44, 29-May-2010, Saturday

Добре де ама ако всичко се влияе от тази променлива няма ли играта да сече умишлено?
В смисъл то движението хубаво ще се запази едно и също, но така форсираш играта ти да бави повече като процеси.

Публикувано от: яверт 13:27:29, 29-May-2010, Saturday

Не мога да те разбера какво имаш впредвид. Очевидно метода е достатъчно добър, щом се използва широко.
форираш? Какъв е този глагол? Аман от чужди думи.

Публикувано от: Hella_from_Hell 13:35:48, 29-May-2010, Saturday

Форсираш имах в предвид. Много ми се яде и ям букви днес.

Мисълта ми беше че като го слагаш това на всяка променлива играта ти ще стане по-"тежка". Таймингът ще си остане същият, но предполагам ще се появи допълнителен FPS лаг. Друг е въпросът колко голям ще е той. Може и да е почти нищожен, но влияние определено ще оказва някакво.

Публикувано от: яверт 13:41:42, 29-May-2010, Saturday

Не, не се насилва играта по този начин.

Цитат
но влияние определено ще оказва някакво.

Видиш ли, това ще се отрази върху скоростта:
Код
var a;
if fps>1 global.gamespeed=fps/roomspeed;
repeat(200) a=5/global.gamespeed;

Ако някой не вярва, че това ще му смъкне скоростта с поне 5 кадъра в секунда, може да го пробва.

Публикувано от: Angel 15:51:12, 28-June-2011, Tuesday

Еми реших да го пробвам,и резултата е кофти unsure.gif ,установих откъде е проблема, и тои е че GM fps-то се ъпдейтва на една секунда и това прави голям проблем,но намерих едно dll което изчислява фпс-то до 0,000001 секунди и всичко е ок с него smile.gif http://gmc.yoyogames.com/index.php?showtopic=325201

Публикувано от: svetljjjo 17:53:55, 29-July-2012, Sunday

някой има ли го тоя длл че от рапит шаре са го махнали вече
ако някой го има да го качи някъде да може да се сваля

Powered by Invision Power Board
© Invision Power Services