Создание Roguelike в Silverlight (или WPF)

Я раздумывал над идеей создания сетевой игры Roguelike с использованием Silverlight (или, может быть, просто настольной игры с использованием WPF).

Если вы не знаете, что такое Roguelike, то это тип графической ролевой игры, в которой графика отображается с использованием текста. Поскольку графический движок относительно прост, вы можете потратить свое время на создание функций в игре, и один человек может быстро создать что-то интересное.

Например, типичный экран может выглядеть примерно так (@ - это игрок, # - стена, другие символы - это монстры, лестницы и предметы):


(источник: thangorodrim.net)

Я опытный разработчик ASP.Net и только начинаю работать с Silverlight. Есть ли особый подход, который я должен использовать для этого?

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

Но я действительно не хочу возиться с DirectX прямо сейчас - я надеюсь, что WPF может привести меня туда, где мне нужно быть, без большой кривой обучения.

Есть предположения?

Обновление: Итак, это оказалось довольно сложной задачей. Я пробовал много разных подходов, и мне наконец удалось заставить его на самом деле рендерить достаточно быстро, но я думаю, что для того, чтобы он быстро вспыхивал, вам, вероятно, следует создать карту спрайтов шрифта, который вы хотите использовать, и работать с этим вместо этого. попытки использовать любой из встроенных средств рендеринга шрифтов. Я этого не делал.

Когда я закончил работу с основным движком рендеринга, у меня возникли некоторые раздражающие артефакты, связанные с особенностями рендеринга шрифтов (даже шрифты с фиксированной шириной иногда бывают немного шириной ...), и когда я, наконец, решил это, я обнаружил libtcod, очень впечатляющий рогалик-движок с оболочкой C #. Это все для консоли. Я немного поигрался с ним, и я был потрясен.

Начиная с версии 1.5.1, все, что я коснулся в libtcod, отлично работает, за исключением ввода с помощью мыши и одного из режимов ввода с клавиатуры (который, я думаю, они недавно отказались от этого), но все, что вам нужно для создания рогалика, есть там, и который включает в себя несколько алгоритмов прямой видимости, поиска пути и даже создания подземелий. Визуально он довольно продвинутый. Вы когда-нибудь видели такой RL?

http://doryen.eptalys.net/files/screenshot0014.png

Короче говоря, можно создать roguelike с Silverlight, но я бы не ожидал, что это будет легко, если у вас уже нет сильного опыта Silverlight или разработчика игр. Вам придется заново изобретать некоторые серьезные колеса, и даже с мощным набором инструментов, позволяющим сосредоточиться на игровом процессе, недостатка в делах нет.


person Brian MacKay    schedule 10.12.2009    source источник
comment
Как все прошло? Вы - # 1 результат поиска в Google по запросу: silverlight roguelike   -  person ashes999    schedule 14.09.2011
comment
@ Ashes999 И это принесло мне почти 300 просмотров. :) Сделаю обнову.   -  person Brian MacKay    schedule 14.09.2011


Ответы (3)


WPF должен справиться с этим довольно легко.

Silverlight, вероятно, будет работать, но у него нет такого же аппаратного ускорения, которое обеспечивает WPF, поэтому производительность будет ниже.

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

person Reed Copsey    schedule 10.12.2009

Это единственный мошенник, который я видел до сих пор, завершенный в .NET - похоже, на основе WPF

http://roguedotnet.com

person glowysourworm    schedule 20.11.2012

Вы должны сделать это довольно легко с библиотеками XNA для silverlight. Они должны позволять вам создавать как минимум 2D-графику с хорошей скоростью, пригодной для игр.

person sh_code    schedule 29.01.2012