Небольшие уточнение планов.
Урока по работе с клавиотурой скорее всего не будет, особо описывать нечего. Хотя может и появится общий урок по «прикручиванию» Input’a к игровому циклу, но явно не втом порядке который зарание планировался.
(07.07.2008) В качестве сетевых технологий на 90% будет только WCF. По следующим причинам: достаточно новая технология, нет необходимости заморачиватся программированием уровня сокетов.
(09.07.2008) Грусно но вот что получается когда учишься одновременно с написанием, оказывается что Silverlight в данный момент поддерживает только BasicHttpBinding тип привязки, а мне нужен NetTCPBinding. Так что буду ковырять все подряд.
Работа с базами данных будет через LINQ, в качестве примера сервера будет MS SQL Server 2005 Express(бесплатный и быстрый).
Если у Вас возникнут сомнения по поводу быстродействия этой связки, то смею Вас уверить они безосновательны – в инете множество подтверждений по этому поводу. И это пока не наше дело. Из своего опыта могу добавить только правильно подобраные алгоритмы это 95% всей оптимазации. Так что не замарачивайтесь по поводу быстродействия.
Blend User Guide
Выгрузил может кому пригодится.
Исходники
Прошу прощения за мелкие листинги, данный блогхостинг не позволяет безплатно менять 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 («рогаликов») ничего более захватывающего не видел. Но к сожалению пока не видел нормального сетевого геймплея для рогаликов, так что надобудеть ченить изобретать, да и я не сильный програмист. Ладно к чему небудь прийдем – может удастся найти золотую середину.
Добавить комментарий
Добавить комментарий
Добавить комментарий