Простое преобразование игры в Silverlight, на что рендерить? - PullRequest
2 голосов
/ 10 ноября 2010

У меня была небольшая игра (написанная на C #), которую я создавал со временем (запущен в vb6 / bitblt), которую я хотел бы преобразовать в Silverlight, чтобы дать мне хороший интересный проект для изучения платформы .

У меня простой вопрос (игра на основе тайлов) Мне нужно что-то сделать. Как это выполняется в Silverlight, когда все стоит, у меня есть несколько спрайтов и листов листов, и мы переносим каждую плитку на поверхность (Picturebox)

Является ли концепция такой же в Silverlight, нам нужно использовать Picturebox в качестве поверхности? Каковы функции рендеринга? Внешние Libs? Я видел функцию WritableBmp. Может ли кто-нибудь указать мне правильное направление, чтобы начать работу?

==========================

Спасибо за ответы, еще немного информации об игре.

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

С учетом сказанного, кто-нибудь знает какие-либо образцы, которые имитируют то, о чем мы говорили?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2010

Если вам нужен контроль над каждым пикселем на экране, вы можете сделать WriteableBitmap . Вы должны создать Grid с одной строкой и одной ячейкой, добавить элемент Image в эту ячейку и установить для Image.Source значение WriteableBitmap.

Если вам не нужен контроль над каждым пикселем, но вам нужно расположить вещи (изображения, текст и т. Д.), Используя абсолютные координаты, используйте Canvas .

Если вам не нужен контроль над абсолютными координатами и вы просто хотите, чтобы пользовательский интерфейс располагал листы в строках и столбцах, используйте Сетка или UniformGrid , с плиткой в ​​каждой ячейке. .

Одна вещь, о которой следует помнить, поскольку вы начинаете работать с Silverlight, знайте, что рендеринг в Silverlight (и WPF) сильно отличается от мира VB6, Win32 и WinForms.

В старом мире, чтобы рисовать вещи, вы переопределяли какой-то метод Paint, а затем вызывали API для его рисования в X, Y.

Напротив, в новом мире вы декларативно говорите: «Используйте этот контейнер для отображения этих данных». Совсем другая модель, другой образ мышления.


Редактировать Хорошо, после просмотра вашего обновления я рекомендую вам использовать Canvas. Вы можете расположить что-нибудь на холсте, используя координаты {X, Y}. Я думаю, что это будет хорошо работать для 2d-игры на основе тайлов. Например, поищите игру с плиткой Silverlight, например, Silverlight Tile Engine .

2 голосов
/ 10 ноября 2010

Вы должны использовать WriteableBitmap .Он был разработан только для таких ситуаций.

В качестве примера того, как его использовать, вы можете взглянуть на мою простую библиотеку игр на основе спрайтов: SilverTile .Is использует WriteableBitmap в качестве поверхности рендеринга и работает достаточно хорошо.

Если вы хотите написать все с нуля, вам следует взглянуть на проект WriteableBitmapExtensions .Он предоставляет вам методы расширения, которые упрощают работу с WriteableBitmap.

Редактировать: О, и это напомнило мне, что мне нужно обновить код в Codeplex.Свяжитесь со мной, если вы хотите более свежую версию кода вместе с некоторыми примерами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...