«Задело»

В связи с тем что собирался делать онлайновую игрушку ушел в серверную часть.

Это на чистом С# без всякой оптимизации, такчто я думаю с месяцок блога не будет пока не «въеду полностью»

Небольшие уточнение планов.

Урока по работе с клавиотурой скорее всего не будет, особо описывать нечего. Хотя может и появится общий урок по «прикручиванию» Input’a к игровому циклу, но явно не втом порядке который зарание планировался.

(07.07.2008) В качестве сетевых технологий на 90% будет только WCF. По следующим причинам: достаточно новая технология, нет необходимости заморачиватся программированием уровня сокетов.

(09.07.2008) Грусно но вот что получается когда учишься одновременно с написанием, оказывается что Silverlight в данный момент поддерживает только BasicHttpBinding тип привязки, а мне нужен NetTCPBinding. Так что буду ковырять все подряд.

Работа с базами данных будет через LINQ, в качестве примера сервера будет MS SQL Server 2005 Express(бесплатный и быстрый).

Если у Вас возникнут сомнения по поводу быстродействия этой связки, то смею Вас уверить они безосновательны – в инете множество подтверждений по этому поводу. И это пока не наше дело. Из своего опыта могу добавить только правильно подобраные алгоритмы это 95% всей оптимазации. Так что не замарачивайтесь по поводу быстродействия.

Blend User Guide

Выгрузил может кому пригодится.

http://rapidshare.com/files/126495791/Blend.zip.html

Исходники

Прошу прощения за мелкие листинги, данный блогхостинг не позволяет безплатно менять CSS или хотя бы размер шрифта.

Будем что-то думать, может поменяю стиль.

Урок:5 Пытаемся работать с изображениями (Мысли о анимации)

Собственно назвать это уроком можно с большой натяжкой, так – больше общие замечания по работе с изображениями в Silverlight.

Итак, изображения, на самом деле это одна из самых слабых сторон Silverlight ‘a. Возможностей тут не так уж много. Давайте их посмотрим.

Так как Silverlight оперирует с объектами и их свойствами, битмап на страницу можно добавить только двумя способами:

· 1) Добавив объект Image

· 2) Использовав ImageBrush уже на существующем объекте

Отсюда все возможности и ограничения по работе с битмапами.

Далее »

Урок 4: Игровой цикл. Часть 3 (Процедурная анимация в Silverlight’e и игровой цикл)

Собственно если вы уже понимаете анимацию Silverlight’a на базе xaml, то процедурная анимация точно для вас не составит труда.

Как случай чистой xaml анимации, так и случай чистой процедурной анимации на C# в реальной жизни по отдельности очень редко встречается. Но для полноты эксперимента мы обязаны их рассмотреть. Так что давайте для начала попробуем создать таймер. Вот что у нас получилось в файле page.xaml.cs:

   1:   Page : Canvas
   2:      {
   3:          Storyboard animation_timer; // объявляем экземпляр таймера Storyboard
   4:          public Page()
   5:          {
   6:              InitializeComponent();
   7:  
   8:              animation_timer = new Storyboard(); // создаем наш таймер
   9:              this.Resources.Add("animation_timer", animation_timer); // добавляем его в ресурсы страницы
  10:              animation_timer.Begin(); // собственно запускаем его
  11:          }
  12:      }

Далее »

Урок 4: Игровой цикл. Часть 2 (Silverlight анимация и xaml)

Ладно продолжем.

Анимация с использованием Blend’а, красиво, легко, но, к сожалению, в случае написания игр не сильно жизнеспособна. Поэтому попытаемся поковырять анимацию руками. Будем ковырять DoubleAnimation как самую распространенную.

Далее »

Урок 4: Игровой цикл. Часть 1 (Простейшая анимация и немного теории)

Тут меня попросили начать с «прикручивания» SQL базы. Но, к сожалению, это, наверное, одна из самых обширных тем, поэтому, надобно подумать с чего начать чайнику, какой сервер поставить, как проще создать БД. Дело в том, что, скорее всего, работать с БД в Silverlight’e будем через LINQ. Если кому ОЧЕНЬ надо почитать, то смотрите здесь. Просто через LINQ нельзя модифицировать и создавать БД :-( вроде как прочитал такую информацию. Поэтому сами понимаете тут «надо покумекать». Хотя я прекрасно понимаю что «прирули» SQL к Silverlight’y даже на том уровне что знаем – то при желании можно создать клон БК или чего ни будь подобное. Кроме того я не вижу ни одного возможного применения баз данных в Silverlight’е при использованием их вместе на одной машине. Поэтому, по любому, вам необходимо будет задействовать или веб-сервисы (WCF) или работу с сокетами для прямого обращения к базе. А это работа с сетью. Так что пойдем по порядку – возможно делая небольшие отступления. Хочется заметить, что существует возможность, что до меня успеет разобраться с этим другой человек – может он и поможет нам с уроком в данном блоге.

К делу. Итак, игровой цикл, в народе известный как геймлуп (Gameloop) и анимация. В связи с тем, что эти темы ОЧЕНЬ тесно связаны – обе задействуют таймеры, мы начнем с анимации, а именно с работы с таймером и изображениями.

В Silverlight’e можно создать два типа таймеров, а именно Storyboard (System.Windows.Media.Animation) и DispatcherTimer (System.Windows.Threading). Что именно использовать мнения разделяются. Некоторые, аргументируя тем, что Storyboard легче «хакнуть» рекомендуют использовать DispatcherTimer. Другие же, рекомендуют наоборот – Storyboard уповая на его более широкие возможности.

Лично для меня окончательно поставил точку в этом вопросе Adam Kinney из Microsoft’а в своем блоге. Суть всего этого, что Storyboard во-первых более стабилен для различных ОS и браузеров. Во- вторых DispatcherTimer имеет меньшую разрешающую способность, чем Storyboard (правда у меня не получилось это протестить – и тот и другой выдают на пустом цикле максимум 63-65 fps, кстати, буду благодарен за пример с более высокими показателями). Ну и, в-третьих – функциональность: DispatcherTimer еще можно использовать для организации игрового цикла, но вот делать в Silverlight’е его средствами анимацию – это просто себя не уважать: сложно и поддерживает только процедурную анимацию, при этом теряется просто две трети всех возможностей анимации Silverlight’а.

Далее »

Форум

Всем сюда silverlight.ru.

Планы

Следующая запись зделана на 90% для себя. Планы по урокам:

1) Игровой цикл

2) Работа с клавиатурой

3) Работа с битмапами и тайлами в Silverlight’e 2.0

4)  Простейший чат на сокетах (работа с сетью)

5)  Прикручиваем SQL базу

Все может  изменится – на данный момент вроде все поочереди.

К сожалению пока не решил на чем делать упор на сетевых технологиях или на геймплее. Если на сетевых то идеальнее подходит что-то космическое типа Космических рейнжеров или 2D EVEOnline. Там достаточно прозрачная сетевая модель которая позволяет делать элементарную кластеризацию. (Знаю о чем говорю). Если на геймплее то после работы с битмапами уйдем в сторону roguelike games («рогаликов») ничего более захватывающего не видел. Но к сожалению пока не видел нормального сетевого геймплея для рогаликов, так что надобудеть ченить изобретать, да и я не сильный програмист. Ладно к чему небудь прийдем – может удастся найти золотую середину.

Следующая страница »