最初做《金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的预编译和执行顺序 详析 最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题   代码:   复制代码 代码一 <ht ...

  2. Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码

    主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码: #include <stdio.h> #include <sys/types. ...

  3. 14.1.3 Turning Off InnoDB 关掉InnoDB

    14.1.3 Turning Off InnoDB 关掉InnoDB: Oracle 推荐InnoDB 作为首选的存储引擎用于典型的数据库应用,从单用户的wikis到博客, 到高端应用把性能推到极限. ...

  4. 【Demo 0007】Java基础-类扩展特性

    本章学习要点:        1.  掌握static 修饰的类,方法以及变量的功能及用法;        2.  掌握代码块(静态,非静态)的作用以及注意事项:        3.  了解基本数据类 ...

  5. [积累]C++复习 海大2014硕士生面试题微信系统总结

    好久没用C++了,正好同学有个面试题,于是就帮忙看了一下.尽管对C++的知识了解不少, 可是长期被Java浸淫, 发现这个简单的程序却也写着也不是那么顺手.好在最后还是搞定了,以下分析一下,题目例如以 ...

  6. ZigBee研究之旅(一)

    *********************************************************************** 以下有引用webee公司的文档的内容,版权属于webee ...

  7. error: /usr/include/stdio.h: Permission denied 的一种情况分析

    error: /usr/include/stdio.h: Permission denied 的一种情况分析 代码: #include <stdio.h> int main(){ prin ...

  8. python中的中文编码

    我现在编写python代码,有一些内容需要用中文编写,例如注释,一些其它的东西 默认python是不支持中文的,包括两个方面不支持,一是文件编码默认是ansi的,二是虚拟机运行解析脚本时也是非utf的 ...

  9. Java调用cmd命令 打开一个站点

    使用Java程序打开一个站点 近期做了个东西使用SWT技术在一个client程序 须要升级时在提示升级 点击窗口上的一个连接 打开下载网页 花费了我非常长时间 用到了把它记录下来  怕是忘记,须要时能 ...

  10. ibatis新手入门

    ibatis 是什么 iBATIS是以SQL为中心的持久化层框架. 能支持懒载入.关联查询.继承等特性. iBATIS不同于一般的OR映射框架. OR映射框架,将数据库表.字段等映射到类.属性,那是一 ...