我一直在玩弄使用 Silverlight 构建基于 Web 的 Roguelike 游戏(或者可能只是使用 WPF 的桌面游戏)的想法。
如果您不知道 Roguelike 是什么,它是一种图形 RPG,其中图形使用文本呈现。由于图形引擎相对简单,您可以花时间在游戏中构建功能,并且一个人可以快速构建一些有趣的东西。
例如,典型的屏幕可能看起来像这样(@ 是玩家,# 是墙,其他字符是怪物、楼梯和物品):
(来源:thangorodrim.net)
我是一位经验丰富的 ASP.Net 开发人员,我刚刚开始使用 Silverlight。我应该为此采取一种特殊的方法吗?
为了提供一些背景知识,在 Winforms 中,大多数标准方法都太慢了——文本最终更新为可见的、难看的闪烁。我在想与 Canvas 相关的事情可能是合适的,但更好的是以某种方式将屏幕绘制到缓冲区中,然后立即将其翻转到屏幕上,使其立即可见。
但我现在真的不想乱用 DirectX - 我希望 WPF 可以让我在没有大的学习曲线的情况下到达我需要的地方。
有什么想法吗?
更新:所以这变得非常具有挑战性。我尝试了很多不同的方法,我终于能够让它真正渲染得足够快,但我认为要让它快速燃烧,你可能应该构建一个你想要使用的字体的精灵图并从中工作尝试使用任何内置字体渲染的东西。我没有那样做。
当我完成核心渲染引擎时,我最终得到了一些与字体渲染怪癖相关的令人讨厌的工件(即使是固定宽度的字体有时也有点宽......),当我最终解决这个问题时,我发现了libtcod,它是一个非常令人印象深刻的 roguelike 引擎,它有一个 C# 包装器。这都是基于控制台的。我玩了一点,我被吹走了。
从 1.5.1 开始,除了鼠标输入和一种键盘输入模式(我认为他们最近放弃了)之外,我在 libtcod 中接触的所有东西都很好用,但是你需要制作 roguelike 的所有东西都在那里,并且这包括几种视线、寻路,甚至地牢生成算法。它在视觉上相当先进。你见过这样的RL吗?
http://doryen.eptalys.net/files/screenshot0014.png
简而言之,使用silverlight 构建roguelike 是可能的,但除非你已经拥有强大的silverlight 或游戏开发背景,否则我不会指望它会很容易。你将重新发明一些严肃的轮子,即使有一个强大的工具包可以让你专注于游戏玩法,也有很多事情要做。