最初做《金X》使用silverlight它是由于右手锯的深蓝色silverlight游戏开发教程,在这里,好评,写得很好的教程!基于这样的思想游戏覆盖。你可以给游戏开发商新提供的非常多的思维方式指导。

但在我个人发展、金宣布X在过程中。陆续发现有一些silverlight的大坑。这里给大家分享一下,防止大家犯反复错误。

1、DateTime数据结构的处理

在游戏中,假设想使用DateTime数据结果来存时间的话。一定要慎用DateTime.ToString和DateTime.Parse方法。在不同的windows机器下,非常可能出来的结果不是预想的那样。原因是每台windows的机器的时间格式是能够配置的。那么ToString和Parse方法默认使用的时间格式是与操作系统设置相关的。而有一些恶心的所谓操作系统优化程序,把操作系统时间格式从标准的yyyy-mm-dd hh:MM:ss改为了如“星期X”这样。

导致的问题就是,调用DateTime.ToString()后,转出来会把年月日时分秒信息所有丢掉。而仅仅剩下“星期X”的数据,之后再调用Parse这个字符串的时候就完蛋了。导致的client现象就是直接白屏,整个silverlight应用程序崩掉。

所以在使用 DateTime的时候,务必须要指定时间格式。

使用DateTime.ToString("{时间格式}") 和DateTime.ParseExact方法。

2、Button等控件的IsTabStop属性

假设在游戏中使用各种silverlight原生控件,然后有一堆界面使用Visibility来实现隐藏和展示的话。建议将全部控件默认的IsTabStop属性给干掉,否则会出现的问题是,一个界面隐藏掉了,玩家按空格或者回车等键的时候,会触发Button的Click事件或者其它控件的各种响应事件。出现不必要的逻辑。

3、字体、字体库

不要以为使用默认字体就会万事大吉。

silverlight的默认字体会使用Lucida Sans Unicode,而在非常多盗版或者阉割下的windows下,这个字库都被删了,导致的问题是直接白屏。应用程序崩溃。

眼下我的应用程序使用的默认字体是SimHei,会略微少见缺字库的问题。假设应用程序包的大小不敏感,还是能够默认把字库带到XAP包里。

4、关于Dispatcher.BeginInvoke

新手会用上瘾。原因是能够解决非UI线程操作UI的问题。所以新手会无论三七二十一,全部地方须要涉及操控UI控件的的都用。

实际上须要理解一下这个函数的原理,实际上我对它的理解就是把一段代码托管到下一帧渲染的回调来执行,所以这里会有一帧的延迟。那么在你的游戏逻辑里,可能导致的现象会是屏幕闪烁,或者会导致游戏逻辑不必要的错误。

比方你写物品栏的逻辑,当用户点击一个物品时。隐藏物品栏而且使用该物品。假设你把隐藏物品栏的逻辑放到BeginInvoke里。那么可能导致的错误是用户在这一帧结束前疯狂点击这个物品,那么会触发很多次使用物品……诸如此类错误,均须要注意。

你应该仅仅在非UI线程操作UI的时候使用这个函数。切忌乱用。

5、代码安全

不做不论什么安全的XAP包是全然裸体呈现给玩家的。出于安全考虑,你须要做代码混淆。

眼下算好用的一个工具是 SmartAssembly(出Reflector的公司出的)。可是它可能会有致命问题:加密后的XAP包在某些windows机器下会訪问出错!client看到的现象是莫名其妙的说SmartAssembly加密过期了。(也可能是我用的破解版,可是付费的话,实在不是有特别好的渠道啊,并且好像也不廉价。

6、资源文件安全

不要以为将资源文件封装到dll里(Resource方式)就安全了。用Reflector照样一览无余。须要你自己写加密!

7、存档文件安全

在IsolatedStorage中。无论是自己创建的文件还是ApplicationSettings。都是不加密的。被篡改的风险非常大,你须要自己做验证机制。

并且如今给silverlight用户最大的困扰是,360等清理缓存默认是将silverlight应用程序空间给勾上的,而如今大部分的用户都喜欢直接点默认清理缓存,会导致将你的IstolatedStorage下的东东所有清理。你须要务必给你的用户说明确这点,让他们将360里的设置勾去除。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/hrhguanli/p/4647363.html

silverlight游戏在坑内发展相关推荐

  1. 网络同步在游戏历史中的发展变化(二)—— Lockstep与帧同步

    前言: 网络同步属于游戏开发中比较重要且复杂的一部分,但是由于网上的资料内容参差不齐,很多人直接拿别人的结论写文章,导致很多人对这一块的很多概念和理解都是错误的.本文参考了大量的相关论文和资料(三十篇 ...

  2. Silverlight游戏设计(Game Design):(八)三国策(Demo) 之 “江山一统”①

    教程中无数次提到<三国>系列,那段荡气回肠的过去一直深刻烙印于心.我深爱中国的历史,因此我从不去公开评论政治,因为它是我的母亲:我执着于策略游戏,闲暇时爱不离手的依旧是NDS中的<三 ...

  3. Silverlight游戏设计(Game Design):(十五)如果还有梦(完)

    Silverlight游戏设计系列到此就全部结束了,原先计划至少为大家献上5个最有影响力的Demo,由于近期生活及工作的原因让我感到实在疲惫不堪因而未能如愿,还望大家见谅. Silverlight在游 ...

  4. Silverlight 游戏开发小技巧:角色升级特效

    这次我们将使用Projection完成一些有趣的RPG游戏中常用的特效:升级和传送点特效,我们不需要请特效师制作复杂绚丽的特效,而是只需要他们提供关键的几张图片或者设计样式,如果了您有本领教会他们使用 ...

  5. Silverlight游戏设计(Game Design):(五)面向对象的思想塑造游戏对象

    传说,面向对象的开发模式最初是因为程序员偷懒而不小心诞生的.发展至今,人们从最初的热忠于讨论某某语言是否足够面向对象到现在开始更广泛的关注面向对象的思想而不是具体内容.面向对象的思想其实并不深奥,它存 ...

  6. Hilo开发H5小游戏踩坑笔记

    第一次开发小游戏,用的是Hilo框架.由于项目开发时间比较紧张,对游戏和CANVAS都没有了解过.代码虽然写的很烂,但是还是记录下踩过的坑吧!本文为碎碎念模式,并不深入,写错的地方希望多多指点. 一. ...

  7. Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程

    事前准备 最近给游戏添加了苹果的内购,这一块的东西也是刚刚做完,总结一下,其实这里不管是游戏还是我们普通的App添加内购这一块的东西都是差不多的,多出来的部分就是我们Lua和OC的交互的部分,以前刚开 ...

  8. 解析区块链游戏与GameFi的发展历程

    前言 游戏行业在最近二十年左右呈现了增长的态势.预计至 2021 年,全球游戏产业整体规模将达到 1758 亿美元,游戏玩家规模约达到 30 亿人.端游.页游.手游以及当前火热的链游轮番上阵,将游戏行 ...

  9. 网络同步在游戏历史中的发展变化(三)—— 状态同步的发展历程与基本原理(上)...

    前言: 网络同步属于游戏开发中比较重要且复杂的一部分,但是由于网上的资料内容参差不齐,很多人直接拿别人的结论写文章,导致很多人对这一块的很多概念和理解都是错误的.本文参考了大量的相关论文和资料(花了半 ...

最新文章

  1. nfs client高性能参数设置
  2. go语言panic机制的原理
  3. 《RabbitMQ 实战指南》第四章 RabbitMQ进阶(上)
  4. scala读取mysql文件_9. Scala操作外部数据 文件读取,xml,Excel,MySQL
  5. oracle中制作副本,创建表的副本并在创建时为其提供约束
  6. python json key_最全总结 | 聊聊 Python 数据处理全家桶(配置篇)
  7. 经典同步问题二——哲学家进餐问题
  8. 第七章:Servlet
  9. Xcode打包ipa的步骤
  10. Oracle的nls_sort和nlssort()函数排序功能
  11. Exploring $ORIGIN - 探索 $ORIGIN
  12. 平面设计基础(PS)知识点总结
  13. BRCA1、BRCA2基因突变的检测方法与流程
  14. 去中介化的租房EOS DAPP,实现租客与房东互赢
  15. 4-20mA电流光纤中继器的原理和应用
  16. 峰瑞资本李丰:共享经济如何改造专业且非标准化的服务业
  17. Python里面的编码问题真的让人快疯了.. Python乱码 b'\x1f\x8b\x08\x00\x00\x00\x00\x00\...'
  18. 电脑资料如何转移到新电脑?教你3种数据迁移技巧
  19. 【二次开发教程】Ai-WB2系列的eclipes搭建环境教程
  20. 专访:台湾这家设计公司如何hold住甲方爸爸?

热门文章

  1. 又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析
  2. 【BZOJ 1036】 树的统计count
  3. 图片区域帧差法识别物体_matlab
  4. Zend Framework实例教程三
  5. Linux用户管理详解大结局(下)
  6. 软件测试 学习之路 CSS (二)
  7. linux中vim编辑器_为什么Vim爱好者喜欢Herbstluftwm Linux窗口管理器
  8. linux如何卸载内核模块_如何加载或卸载Linux内核模块
  9. 学生开源项目_吸引学生加入您的开源项目的9种方法
  10. (41)css 三大隐藏属性