Pull to refresh

Игровой цикл в Silverlight

Silverlight *
Sandbox
В этой статье, опишу использование в Silverlight игрового цикла. Функции, которая содержит всю логику по работе с анимацией и обработки действий пользователя, влияющие на анимацию. На примере управление машинкой.

Кликните на картинке, что бы посмотреть пример

Silverlight имеет отличную поддержку анимации. Дергаешь свойства в Blend, ставишь ключики. И все работает, контролы реагируют на действия пользователя. Программно, через Storyboard, анимация изменения свойства из состояния А в состояние Б, без происшествий по середине, тоже делается легко. Но когда дело доходит до сложной анимации (физика, расчет столкновений, динамическое изменение анимационной кривой), то реализация анимации через Storyboard значительно усложняет код или вообще не возможна.
Читать дальше →
Total votes 34: ↑24 and ↓10 +14
Views 4.2K
Comments 27

Игровые циклы или ЭлектроКардиоГама

Game development *
Translation
Игровой цикл — это пульс каждой игры. Ни одна игра не будет работать без этого. Однако, к несчастью каждого нового разработчика игр, в сети нет хороших статей, в которых уделено достаточное внимание этой теме. Но не печальтесь, потому как только что вы получили возможность прочитать единственную в своем роде статью, уделяющую вопросу игровых циклов заслуженное внимание. По долгу службы мне часто приходится иметь дело с большим количеством кода мелких мобильных игр. И я каждый раз удивляюсь сколь много существует реализаций игрового цикла. Вы тоже можете удивиться как можно для такой, казалось бы простой, вещи можно придумать множество имплементаций. А ведь можно! И в статье я постараюсь рассказать о достоинствах и недостатках наиболее популярных вариантов игровых циклов. Также я постараюсь описать наилучший на мой взгляд вариант реализации игрового цикла.
(Thanks to Kao Cardoso Félix this article is also available in Brazilian Portuguese) (Thanks for me, in Russian also, прим. перев.)
Читать дальше →
Total votes 59: ↑57 and ↓2 +55
Views 49K
Comments 62

TPL + DLR = Многопоточный скриптинг

Ruby *.NET *Game development *
Я давно хотел поизучать «TPL» (Task Parallel Library) и «DLR» (Dynamic Languages Runtime). Для этого мне нужна была конкретная и, желательно, достаточно актуальная задача. В одном из моих переводов рассказывалось о так называемых «игровых циклах». Рассмотренная там тема для меня довольно интересна сама по себе и к тому же связка TPL+DLR подходит для той задачи как нельзя лучше, на мой взгляд. Так я пришел к идее о реализации легковесного асинхронного скриптового движка, который можно было бы относительно легко прикрутить к разным приложениям (в том числе к играм). Ядро движка я решил реализовать на C#. Выбор между динамическими языками в моем случае даже и не стоял. Я для этих целей уже давно облюбовал Ruby. Какое-то время я вынашивал идею, время от времени размышляя о ней на досуге.
Теперь решил выложить первые результаты
Total votes 9: ↑8 and ↓1 +7
Views 4.4K
Comments 2

Игровой цикл

Development of mobile applications *
Sandbox
Очень важно, какой тип игры вы создаете. Если игра динамическая, нам нужно всё время обновлять картинку на устройстве. Это значит, что сначала нужно создать её, применив новые координаты объектов, а затем вывести на экран. Наше зрение устроено так, что если мы будем делать это меньше, чем за 0,04 с, то нам будет казаться движение объектов непрерывным. Но объекты могут быть разными по сложности прорисовки, а устройства, на которых вы играете – разными по быстродействию.

Может так случиться, что на одних планшетах или мобильниках наше приложение будет «летать», так что пользователь не будет даже успевать играть, а на других – будет тормозить так, что пользователь, скорей всего, удалит её со своего устройства. Возникает мысль, проходить один игровой цикл за 0,04 с (25 кадров (циклов) в секунду) на всех устройствах. Всё было бы хорошо, если бы все устройства могли это сделать. Представьте, что у вас 10 динамических объектов в игре, которые взаимодействуют между собой, порождая новые объекты, например, взрыв при столкновении. Также надо не забыть воспроизводить звуки и реагировать на включения пользователя в игру. Я уже не говорю о реалистичной графике окружающего мира.

Что же делать, если наше устройство не успевает в какой-то сцене создать игровой цикл? Решений несколько, ниже рассмотрено одно из них.

Создаем игровой цикл

Читать дальше →
Total votes 19: ↑10 and ↓9 +1
Views 10K
Comments 3