最初做《金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里的设置勾去除。

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

silverlight游戏在坑内发展的更多相关文章

  1. Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得 --转

    Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得 通过前6节的Demo制作演示,大家应该已经相当熟悉这款Silverlight-2D游戏场景 ...

  2. Cocos 2d-X Lua 游戏添加苹果内购(二) OC和Lua交互代码详解

    这是第二篇 Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程 这是前面的第一篇,详细的说明了怎样添加内购项目以及填写银行信息提交以及沙盒测试员的添加使用以及需要我们注意的东西,结 ...

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

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

  4. 腾讯游戏DBA团队的发展自白

    BA这个岗位跟仓管员很像,就是每天给别人发点货,别人在你这儿放点货,DBA工作就是把货尽快给送出去或者让人家尽快放进来.当然,还有一份重要的工作,就是让仓库里摆放的货物尽可能整齐,这也是仓管员的本职工 ...

  5. H5小游戏的坑点小结

    坑点: 1) iOS 9.1 的safari中,在onTouchBegan方法中调用cc.audioEngine.playEffect播放音效是没有效果的,如果在onTouchEnded调用则是正常的 ...

  6. Egret 生成 自带EUI 的微信小游戏 踩坑!

    1. 首先,再次被网上一大堆屎一样的资料搞得浪费了我一天时间.各种坑. 2. 本文先讲一种正确的方式,然后再列举坑. 去www.egret.com下载最新的引擎,我的最新版本是5.2.2. 然后就会被 ...

  7. 一次httpserver优化的经验和教训(silverlight游戏 - 金庸群侠传X0.5上线记)

    金X因为被推荐到ACFUN游戏排行第一名.并同一时候在17YY.7K7K.U77.17173等各大小游戏站点上线.迎来了在线用户数量的爆炸式增长.眼下各大站点使用外链方式.也就是实际链接到金X官网的s ...

  8. [Unity3D]Unity3D游戏开发Android内嵌视图Unity查看

    ---------------------------------------------------------------------------------------------------- ...

  9. win7 架设php环境运行H5游戏的坑坑坑坑

    解决办法: 修改php.ini  文件 session.save_path = "D:/H5_Game" 指向所用的根目录 环境 windows7 x64  + php7.0.8

随机推荐

  1. 重操JS旧业第十弹:闭包

    闭包是js最难理解,也是最蛋疼的一个名词,仿佛只可意会不可言传一样,有人说闭包说白了就是函数嵌套,也有人说闭包就是函数能够访问函数外部的变量,而内部的外部访问不了: 貌似都非常有道理,其实仔细想来只不 ...

  2. Storm流计算从入门到精通之技术篇(高并发策略、批处理事务、Trident精解、运维监控、企业场景)

    1.Storm全面.系统.深入讲解,采用最新的稳定版本Storm 0.9.0.1 :   2.注重实践,对较抽象难懂的技术点如Grouping策略.并发度及线程安全.批处理事务.DRPC.Storm ...

  3. 基于visual Studio2013解决C语言竞赛题之1054抽牌游戏

       题目 解决代码及点评 /************************************************************************/ /* 54 ...

  4. Android反编译-逆天的反编译

    Jar包的反编译: Java的世界是透明的,当编译java程序的时候,是将java源文件转成.class文件,java虚拟机去执行这些字节码从而得到执行java程序的目的.那么从.class文件能不能 ...

  5. JS - 图片放大器

    下载地址:http://www.lanrentuku.com/js/tupian-1170.html

  6. Mysql 5.1升级为mysql 5.6遇到的问题及解决方式

    yum是不可行的.因为yum源没更新,我已经使用了163网易的源,但是还是不行.最新版仍然不是5.6.没办法,mysql分区是5.5之后的功能,要使用分区功能,就必须升级.. 去官网下载地址:http ...

  7. hdu 4090 GemAnd Prince

    题目大意: 别人说是消消看,至于你玩没玩过.反正我是没玩过的. 就是选择一个钻石,可以消除与它相连的所有钻石.并获得 消除数量*消除数量  的分 思路: 直接暴搜,然后用一个cnt数组表示每一种钻石剩 ...

  8. ScaleAnimation类:尺寸变化动画类

    9.4  ScaleAnimation类:尺寸变化动画类 ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类.Scal ...

  9. IT忍者神龟之中的一个句sql语句——连接同一字段的全部值

    Oracle能够用SYS_CONNECT_BY_PATH字符串聚合函数: SELECT LTRIM(MAX(SYS_CONNECT_BY_PATH(productname, ', ')), ', ') ...

  10. Mac OS X将CSV格式转换为Excel文档格式,Excel转CSV中文乱码问题

    一:在Mac上假设你使用Excel打开windows导出的CSV格式文档.你会发现表格中全部的的内容都显示在A列. 那么,怎样恢复正常呢,你能够将CSV格式的文档导入到Excel文档中,这样就正常显示 ...