随笔-98  评论-397  文章-0  trackbacks-7
  置顶随笔
posted @ 2007-10-30 09:12 Jack Niu 阅读(1833) 评论(29) 编辑
  2011年11月21日

本文是从 Simplicity Oriented Programming 这篇文章翻译而来。

Warsztat(一个波兰的游戏开发组织)工作的几年中,我发现一个有趣的现象。经常我们会组织一些编程竞赛,这些竞赛通常分为两种形式。一种是个人行动,一般只有2个小时的时间,另外一种是长时间的(数天/ 周)。作为一个额外的要求,前者通常限制只允许使用基本的API(SDL, OpenGL等),而后者通常没有限制(可以使用各种引擎,UDK/Unity等)。

结果有点让人吃惊。很多人更愿意参加短竞赛。但不管游戏是在2个小时里开发出来的,还是在4周内开发出来的,它们中优秀的部分的在水平上一样的。为什么?

  1. 4周的开发期并不意味着开发的时间是672或224小时。在一些极端的情况在,4周的竞赛跟2个小时的竞赛一样,也就是这4周的最后2个小时在起作用。
  2. 很多的游戏体现出来的实际是一个创意。事实上:你4周内想出来的创意未必就比10分钟内想出的好。
  3. 2小时竞赛的开发过程压力强度非常的大。大部分的时间都是用来改进核心功能(因为也没有其它的)。
  4. 另一方面,在长周期竞赛项目里,人们最初只是关注一些无关紧要的功能。一旦你开始琢磨着添加一个界面组件,把它做成一个内置的MP3播放器,或把界面弄的色彩斑斓,你的项目就开始失败了。

这也许是我们得到的最重要的教训。如果你需要很快的完成某项事情,代码可能会写的很差,但也会很短小、简练和灵活。如果没有时间的约束,程序的复杂度,功能项和缺陷率会上一个等级。给日后维护带来的工作量并不体现在现在。

在4周的编程时间里,你可以进行数次的快速迭代编程,每一次都对游戏的核心功能进行改进。但如果一开始你就把一些以后未知的特征功能考虑进去,写这部分功能以及修改bug会耗去大部分的时间。诚然,你可以用这4周时间写出大量的assets测试,但核心的游戏娱乐方式设计的足够好吗?

最后,给你们一个绝对有价值的C(++)忠告:当增加新功能时,从最小的核心功能开始:

  1. 全局函数 — 如果你需要去显示分数,不要犹豫,立即写出void DisplayScore()。如果你的游戏是单人玩的,把分数存成全局变量。看看,你至少节省了10分钟的写getter、setter和设计给模块通信的时间。不需要做这些。如果游戏是多人玩的,你需要为每个人记录和显示分数。但如果你的游戏不是多人玩的,你没有任何理由实现能显示任意多人的任意分数的功能。相信我,你将会遇到比显示分数复杂的多的多的问题。
  2. 如果你的函数需要用到共用代码或需要辅助函数,请把它们组织到一起,最好是放在一个单独的文件里。时刻想着静态函数和变量 — 跟“OO”的静态相反,文件的静态是可见的。这样做很好,因为你可以把所有跟字体相关的操作都放在一个文件里,把把所有内部数据都放在静态全局变量里。辅助函数可以做成静态的,通过共享的header对外开放(如果你写出简单的代码,整理工作从来不会耗费你太多的时间)。
  3. 只有在必要的时候才把函数提升为类。记着,类意味着对象,对象意味这相互关系,而相互关系意味这复杂。你的游戏设计会酷到留有大量的时间处理代码的复杂吗?
  4. 只有当上面说的这些不够好,设计模式或其他新奇的东西才能成为你的求助目标。永远不要走到这一步。
posted @ 2011-11-21 15:09 Jack Niu 阅读(11) 评论(0) 编辑
  2011年11月17日

for asp.net, there are 2 spaces to set the maximun upload size.

1. in web.config, like this

<httpRuntime executionTimeout="6000" maxRequestLength="150000" />
2. in IIS=>Request Filtering:

image

 

if your upload file is exceed the max lengh, you will get error like

404 - File or directory not found.

The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.

image

posted @ 2011-11-17 14:20 Jack Niu 阅读(8) 评论(0) 编辑

Purpose: Parse MSI installer, to get information such as product name, product code, properties etc.

MSI is a standard windows install techonoly, so there are APIs for developers to access. But they are c/c++ methods, instead of C#. After google, i found the ‘Wrapping the Windows Installer 2.0 API’(http://www.codeproject.com/KB/cs/msiinterop.aspx), which is can let .net developers access MSI api easily.

After download the library, you can visit MSI datatable like this

 

 1:  using System;
 2:  using WindowsInstaller;
 3:   
 4:  namespace MsiTest
 5:  {
 6:      class Program
 7:      {
 8:          static void Main(string[] args)
 9:          {
10:              test("c:\\xxx.msi");
11:          }
12:   
13:          private static void test(string fileName)
14:          {
15:              IntPtr databasePtr;
16:              var retDatabase = MsiInterop.MsiOpenDatabase(fileName, MsiDbPersistMode.ReadOnly, out databasePtr);
17:   
18:              IntPtr viewPtr;
19:              var ret = MsiInterop.MsiDatabaseOpenView(databasePtr, "SELECT Value FROM Property where Property = 'SecureCustomProperties'", out viewPtr);
20:   
21:              IntPtr recordPtr = IntPtr.Zero;
22:              ret = MsiInterop.MsiViewExecute(viewPtr, IntPtr.Zero);
23:              ret = MsiInterop.MsiViewFetch(viewPtr, ref recordPtr);
24:   
25:              uint buffer_length = 2550;
26:              string return_buffer = new string(' ', (int)buffer_length);
27:              MsiInterop.MsiRecordGetString(recordPtr, 1, return_buffer, ref buffer_length);
28:              MsiInterop.MsiCloseAllHandles();
29:   
30:              Console.WriteLine(return_buffer.Trim());
31:          }
32:   
33:      }
34:  }
35:   
36:   
posted @ 2011-11-17 14:07 Jack Niu 阅读(14) 评论(0) 编辑
  2009年11月16日

select SERVERPROPERTY('productversion')

非常好用!

posted @ 2009-11-16 16:40 Jack Niu 阅读(995) 评论(0) 编辑
  2009年6月12日

* Automatically Implemented Properties
* Object and Collection Initializers
* Implicitly Typed Local Variables and Implicitly Typed Arrays
* Extending Types with Extension Methods
* Lambda Expressions
* Expression Trees
* Queries and Query Expressions
* Anonymous Types and Advanced Query Creation
* LINQ

posted @ 2009-06-12 15:32 Jack Niu 阅读(178) 评论(0) 编辑
  2009年5月25日

Console.WriteLine("0.89265452879139".GetHashCode());
Console.WriteLine("0.280527401380486".GetHashCode());   

输出结果是

2060653827
2060653827

不过, 对于一般的应用来说, 将字符串(string)Hash一下用于比较,搜索还是可行的.

posted @ 2009-05-25 14:53 Jack Niu 阅读(263) 评论(1) 编辑
  2009年5月22日
摘要: 1,找开注册表编辑器; 2,找到HKEY_CLASSES_ROOT\Folder\shell; 3,在“编辑”下选择“新建”下面的“项”,输入随便什么名字,例如可以是cmd; 4,在cmd下再选择“新建”下面的“项”,输入名字command(注意要小写); 5,双击cmd的默认值,输入一个字符串,这个字符串就是日后在右键菜单上出现的字符串,例如可以输入:“进入命令行方式”;用户也可以使用&...阅读全文
posted @ 2009-05-22 15:22 Jack Niu 阅读(896) 评论(0) 编辑
  2009年5月9日
摘要: // a demo stringstring xml = "<Root><Eles><Ele>abc</Ele><Ele>123</Ele></Eles></Root>";System.Xml.XmlDocument doc = new System.Xml.XmlDocument();doc.Load...阅读全文
posted @ 2009-05-09 10:48 Jack Niu 阅读(480) 评论(0) 编辑
  2009年2月21日
摘要: 在string.Format参数中,大括号{}是有特殊意义的符号,但是如果我们希望最终的结果中包含大括号({}),那么我们需要怎么做呢?是”\{”吗?很遗憾,运行时,会给你一个Exception的!正确的写法是{{和}}。对,double {{ 或}}即可输出{或}.DEMO:static void Main(string[] args){ Console.WriteLine(string.For...阅读全文
posted @ 2009-02-21 23:16 Jack Niu 阅读(971) 评论(3) 编辑
  2008年12月22日
posted @ 2008-12-22 18:14 Jack Niu 阅读(355) 评论(3) 编辑
  2008年12月16日
posted @ 2008-12-16 17:12 Jack Niu 阅读(730) 评论(1) 编辑
  2008年12月13日
posted @ 2008-12-13 11:01 Jack Niu 阅读(601) 评论(2) 编辑
  2008年11月29日
posted @ 2008-11-29 13:08 Jack Niu 阅读(1108) 评论(5) 编辑
  2008年10月30日
摘要: 多线程编程实战(一) 为了快速处理大量的任务,多线程编程必不可少,所以最近也开始研究多线程方面的东西了。网上有不少资料可以参考,自己从实例入手,总结了一些东西,把它记录下来,方便自己日后查阅,也方便后阅读全文
posted @ 2008-10-30 08:35 Jack Niu 阅读(5970) 评论(12) 编辑
  2008年10月13日
posted @ 2008-10-13 12:42 Jack Niu 阅读(183) 评论(0) 编辑
  2008年10月9日
posted @ 2008-10-09 11:05 Jack Niu 阅读(313) 评论(0) 编辑
  2008年8月6日
posted @ 2008-08-06 16:10 Jack Niu 阅读(164) 评论(0) 编辑
  2008年6月16日
摘要: 对用应用软件来说,将报表转出为Excel文件,进行二次加工,或者根据Excel模版填充数据,是非常常用的。实现对Excel文件的操作,如将报表转出为Excel或根据已有的Excel模版进行填充,有很多阅读全文
posted @ 2008-06-16 13:20 Jack Niu 阅读(5182) 评论(3) 编辑
  2008年4月11日
posted @ 2008-04-11 14:59 Jack Niu 阅读(363) 评论(0) 编辑
【郑重声明】如果本博客收录了您的文章而没有标明作者,请与我联系,我会马上标出或者删除!尊重个人劳动成果!尊重个人知识产权!
昵称:Jack Niu
园龄:5年6个月
粉丝:9
关注:3

随笔分类

积分与排名

  • 积分 - 207143
  • 排名 - 409

阅读排行榜

推荐排行榜

Net, SEO, interview questions and answers| asp.net MVC| web seo| poker online| Jack@网赚|