Silverlight Tips of the Day 系列翻译与领悟#3
Silverlight Tip of the Day #3: Silverlight Game Support, Limitations and Workarounds
在探索用Silverlight开发游戏的技术时我越过了一些障碍然后发现了一些解决方法。我打算用这个blog来记录这些问题以节约你探索类似问题的时间。此外,我在本章中放了一些其他Silverlight游戏教程的链接资源。
如果你发现其他更多资源,请告诉我,我会贴出来!谢谢。
游戏资源
- Silverlight Games 101 by Bill Reiss
- Refactor by Joel Neubeck.
- Silverlight Game Programming Tutorial by Matthew Casperson
- 2D Game Development by Mike Gold.
- Andy Beaulieu
- Silverlight Games by Roger Guess
- Developer Fusion
Silverlight支持范围
- JPG 和PNG 文件格式。
- 透明 PNG 文件。
- 鼠标和键盘输入
- 音效
- 通过网格元素来设计游戏UI。
- 定时器 (动画, 游戏循环等使用)
- 透明度纹理混合。
- 支持Socket/TCP编程来达到多人网络游戏的效果。
- 事件(点击事件等)
- 动画 - 使用定时器代替帧的WPF模型。
- Visual Studio的调试支持。
Silverlight现在不支持什么
- GIF 或者 BMP 文件格式。
解决方法: 使用 PNG (或者 JPG) 文件。
- 从大图像中创建子区域图像。 (就像传统rpg游戏中走动的人物有多帧放在同一张文件中,然后取某个区域的图片做为显示的部分)
解决方法: 你有两个选择:
- 对你想显示的区域设置裁剪区。
- 把每个图片独立存成一个文件。不幸的是这样对动态精灵图片,意味着有一堆独立的文件,难于管理。
- 把文件保存在本地 - 因为关系到安全问题,Silverlight 2没有提供保存支持。将来可能会支持 SaveFileDialog 。 如果支持了,我会通知你们。我自己是需要这个功能的(为了我的地图编辑器)!
解决方法: 保存在Web服务器上。参考Michael Sync的 blog: http://michaelsync.net/category/silverlight 中的"Uploading with Silveright 2 Beta 1 and WCF"
- 浮点值坐标 - 如果你用一个个格子图片来组成一张地图, 当你滚动地图的 X 和 Y 坐标 一个小数值, 你会看到格子中间有一根线。
解决方法: 使用Round函数取整。
- 每个象素位图编辑,位图过滤(颜色矩阵等)以及效果 (污点,发光等)。
解决方法: 通过透明度你可以做一些非常cool的效果,例如地图格子间的平滑的过渡纹理混合。 参考这个 教程 例子。
- 3D渲染 – Silverlight 2没有任何3D支持。但是,可以看Silverlight 3中的 Tip of the Day #71 。你可以很高兴地看到3D在计划中。
解决方法: 有一些非常好的模拟3D的引擎和demo。例如:
- 不允许共享资源。例如在多个矩形中共享SolidColorBrush。 如果你有1000个矩形他们每个都需要一个独立的刷子。
- Textbox等的文本对齐方式。
解决方法: 你不得不编程来居中文本。