Вернуться   Биткоин Форум > - Wiki
16 августа 2013, 9:58:15 AM   # 1
 
 
Сообщения: 1484
Цитировать по имени
цитировать ответ
по умолчанию Re: Есть ли здесь кто-нибудь что-нибудь знаете о FPS и временного шага ограничения в программировании?

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Так что я прогрессирующий через мое обучение, когда речь идет о программировании и я могу получить базовые вещи вверх и работать, но я действительно хочу, чтобы мои вещи все работает гладко, у меня есть пример исходного код и объяснение временного шага (назойливая лаг и т.д. в игры) и ограничение кадров в секунду. Я понимаю механику они объяснили позади, как все это работает, но у меня возникают проблемы со зрением, как я мог бы реализовать его в свой собственный код свободно, как я делаю со всеми основными вещами, я думаю, что нужно более основное английское объяснение того, что это происходит потому, что я вижу, что многие из функций C ++ или SFML включают много классов и объектов по имени, или они являются команды, которые я путая с классами, потому что я все пытаюсь выяснить, где они были объявлены.

Может быть, мне нужно взглянуть на некоторые из этих команд в отдельности, так что я знаю точно, что они делают? Я думаю, что это то, что происходит, во всяком случае, вот код, я работаю с, я был бы признателен за любую помощь вы можете дать мне фиксируя это будет означать, что я смогу сделать мои игры красиво и гладко, и оптимизировать их должным образом, и мы все знаю, что игровая индустрия нуждается в намного больше этого.

Мой код

котировка

#включают
#включают
#включают

Int основных ()
{

    Окно С.Ф. :: RenderWindow (SF :: видеорежим (800, 600), "");

    INT healthstats = 1;


    научная фантастика :: Шрифт Arial;
    если (! arial.loadFromFile ( "arial.ttf" ))
    {}

    здоровье научной фантастики :: RectangleShape (научная фантастика :: Vector2f (healthstats, 5));
    health.setFillColor (научная фантастика :: Цвет :: Cyan);
    health.setPosition (20, 10);


в то время как (window.isOpen ())
{
    если (научная фантастика :: Клавиатура :: isKeyPressed (научная фантастика :: Клавиатура :: A))

    {
        health.setScale (healthstats, 5);
        healthstats = healthstats - 1;
    }

    иначе если (научная фантастика :: Клавиатура :: isKeyPressed (С.Ф. :: Клавиатура :: D))
    {
        health.setScale (healthstats, 5);
        healthstats = healthstats + 1;
    }

событие С.Ф. :: Event;
в то время как (window.pollEvent (событие))
{

если (Event.type == С.Ф. :: Event :: Closed)
window.close ();
}
        window.clear ();
        window.draw (здоровье);
        панель();

    }
    возвращать 0;
}



Пример кода для фиксации и задержки шага времени из книги

котировка

аннулируются игры :: Run ()
{
SF :: Часы часы;
научная фантастика :: Время timeSinceLastUpdate = SF :: Время :: Нулевая;
в то время как (mWindow.isOpen ())
{
processEvents ();
timeSinceLastUpdate + = clock.restart ();
в то время как (timeSinceLastUpdate > TimePerFrame)
{
timeSinceLastUpdate - = TimePerFrame;
processEvents ();
обновление (TimePerFrame);
}
рендеринга ();
}
}


Статья книга SFML я купил связан меня, чтобы помочь объяснить вещи лучше:

http://gafferongames.com/game-physics/fix-your-timestep/


Пример исходного кода из статьи

котировка

    двойной Т = 0,0;
    Const дважды дт = 0,01;

    двойная CURRENTTIME = hires_time_in_seconds ();
    двойной аккумулятор = 0.0;

    Государственный предыдущий;
    Государственный ток;

    в то время как (! бросить курить)
    {
         двойной newTime = время ();
         двойная frameTime = newTime - CURRENTTIME;
         если (frameTime > 0.25)
              frameTime = 0,25; // Примечание: максимальное время кадра, чтобы избежать спирали смерти
         CURRENTTIME = newTime;

         аккумулятор + = frameTime;

         в то время как (аккумулятор >= Дт)
         {
              previousState = CurrentState;
              интеграции (CurrentState, т, дт);
              T + = дт;
              Аккумулятор - = дт;
         }

         Const двойной альфа = Накопитель / дт;

         Государственное состояние = CurrentState * альфа + previousState * (1,0 - альфа);

         рендеринга (состояние);
    }

Lethn сейчас офлайн Пожаловаться на Lethn   Ответить с цитированием Мультицитирование сообщения от Lethn Быстрый ответ на сообщение Lethn


Как заработать Биткоины?
Без вложений. Не майнинг.


16 августа 2013, 11:37:47 AM   # 2
 
 
Сообщения: 2058
Цитировать по имени
цитировать ответ
по умолчанию Re: Есть ли здесь кто-нибудь что-нибудь знаете о FPS и временного шага ограничения в программировании?

Получил 1806 Биткоинов
Реальная история.





В этом коде:
аннулируются игры :: Run ()
{
SF :: Часы часы;
научная фантастика :: Время timeSinceLastUpdate = SF :: Время :: Нулевая;
в то время как (mWindow.isOpen ())
{
processEvents ();
timeSinceLastUpdate + = clock.restart ();
в то время как (timeSinceLastUpdate > TimePerFrame)
{
timeSinceLastUpdate - = TimePerFrame;
processEvents ();
обновление (TimePerFrame);
}
рендеринга ();
}
}
"TimePerFrame" является константой, что вы должны установить на любые ваши потребности игры, например, если вам нужен постоянный фреймрейт 50 кадров в секунду, вы должны установить его на 20 (при условии, что часы возвращает значения в миллисекундах, я думаю, что это делает, но я не очень знакомы с SFML).

Затем с каждой итерации цикла, он смотрит на то, как долго это было, так как в последний раз состояние игры последнего обновления, и если это было больше, чем 20 мс (или что-то вы установили для TimePerFrame), он запускает обновление () функция (возможно, несколько раз, если ваш рендеринг фреймрейт медленнее, чем ваша игра фреймрейт, поэтому необходимо обновлять несколько раз за кадр).

Функция обновления (), где вы делаете действительное обновление состояния игры, например, увеличивающимся положение подвижных объектов, применяя вред здоровью, то, что вы должны произойти в вашей игре.

Наконец, после того, как все, что делают (), где вы кладете фактический рендеринг (экран для рисования) код. Более продвинутая версия этого кода (который вы не должны пытаться, пока вы не получите основы работы) будет иметь визуализации () принимает timeSinceLastUpdate в качестве аргумента, и использовать его, чтобы сделать интерполяции движущихся объектов (т.е. не рисовать их там, где они есть, но где они будут timeSinceLastUpdate миллисекунды с этого момента, что позволяет для более плавной анимации, но так как вы только Рисование они в другом положении, а не на самом деле перемещение их, ошибки округления не будут накапливаться).

Одна из основных проблем с этим кодом, что вам нужно знать о том, что это будет динамический тупик (технический термин для того, что упоминается в статье как "спираль смерти") Если TimePerFrame меньше, чем время, необходимое для запуска функции обновления (). Не устанавливайте TimePerFrame слишком низко!
Foxpup сейчас офлайн Пожаловаться на Foxpup   Ответить с цитированием Мультицитирование сообщения от Foxpup Быстрый ответ на сообщение Foxpup

16 августа 2013, 12:08:55 PM   # 3
 
 
Сообщения: 1484
Цитировать по имени
цитировать ответ
по умолчанию Re: Есть ли здесь кто-нибудь что-нибудь знаете о FPS и временного шага ограничения в программировании?

Спасибо за то, что foxpup объяснение было удивительным, я начну экспериментировать сейчас и посмотрим, что произойдет.
Lethn сейчас офлайн Пожаловаться на Lethn   Ответить с цитированием Мультицитирование сообщения от Lethn Быстрый ответ на сообщение Lethn



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW