Spiga

[置顶]本博方针

2010-06-14 21:34 by Milo Yip, 2552 visits, 网摘, 收藏, 编辑
摘要:为希望本博能保持风格、质量,本文整理一直以來我想到的博客方针。 选题通用、时效长久的知识经验分享(杂谈除外) 以游戏开发为主(如图形、物理、人工智能、游戏编程、引击架构等),但也涉猎一般计算机科学知识(如算法) 避免讨论最新热门技术,维持博文的原创性、独特性不转载、不翻译(自己的文章除外) 不撰书评(书评撰在豆瓣)可谈哲学问题,不谈宗教问题(如Windows好还是Linux好)撰文尽量客观,以理论... 阅读全文

爱丽丝的发丝──《爱丽丝惊魂记:疯狂再临》制作点滴

2011-06-14 16:27 by Milo Yip, 51381 visits, 网摘, 收藏, 编辑
摘要:今天(2011年6月14日)是《爱丽丝惊魂记:疯狂再临 (Alice: Madness Returns) Xbox360/PlayStation3/PC》(下简称《爱》)正式发售日,身为其开发程序员之一,特撰此文以作纪念。简介《爱》(图1a)是一款由上海独立游戏工作室麻辣马(Spicy Horse)制作、美商电艺(Electronic Arts)发行的惊悚动作冒险游戏。此全乃2000年发行的《爱丽... 阅读全文

C++强大背后

2010-09-17 00:56 by Milo Yip, 36444 visits, 网摘, 收藏, 编辑
摘要:在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP)... 阅读全文

手机分配短讯id的面试题目(分析解答篇)

2010-09-03 01:37 by Milo Yip, 8269 visits, 网摘, 收藏, 编辑
摘要:看过上回《厘清需求篇》,读者想到多少个解呢?本篇首先谈及一些基本分析,之后会按两种API设计(纯函数API和含状态的API),分别描述多个解。虽然面试时或许不能进行实际测试,但本文还是给出PC上的效能测试结果。最后分析比较各解之优劣作为总结。 问题分析原来的问题是要从一个无序ids数组里分配一个id。我们可以用数学方式去更清楚地说明这个问题。设m = 256 为所有id的个数,集合U = \lef... 阅读全文

手机分配短讯id的面试题目(厘清需求篇)

2010-08-31 01:42 by Milo Yip, 10068 visits, 网摘, 收藏, 编辑
摘要:前阵子,笔者在TopLanguage论坛里参与讨论了一个不错的面试题目,在此和大家分享,也当作个人的讨论总结。本文列出该问题,并模拟应试者向面试官的对话,以厘清问题需求。题目原文事缘Dbger发起的帖子中,liuxinyu举了一个面试题目,原文如下:有个老的手机短信程序,由于当时的手机CPU,内存都很烂。所以这个短信程序只能记住256条短信,多了就删了。 每个短信有个唯一的ID,在0到255之间。... 阅读全文

C++/C#/F#/Java/JS/Lua/Python/Ruby渲染比试

2010-07-07 00:20 by Milo Yip, 28840 visits, 网摘, 收藏, 编辑
摘要:前篇博文把一个C++全局光照渲染器移植至C#,比较C++和C#之性能。……本人陆续移植了C++代码至Java、JavaScript、Lua、Python和Ruby,赵姐夫亦尝试了F#。本文提供源代码、测试结果、简单分析、以及个人体会。 阅读全文

C# vs C++ 全局照明渲染性能比试

2010-06-23 09:48 by Milo Yip, 16750 visits, 网摘, 收藏, 编辑
摘要:最近有多篇讨论程序语言趋势的博文,其中谈及到C#的性能问题。本人之前未做过相关测试,自己的回覆流于理论猜测,所以花了点时间做个简单实验,比较C#和C++的性能。 阅读全文

用JavaScript玩转游戏物理(一)运动学模拟与粒子系统

2010-06-14 16:19 by Milo Yip, 23038 visits, 网摘, 收藏, 编辑
摘要:系列简介也许,三百年前的艾萨克·牛顿爵士(Sir Issac Newton, 1643-1727)并没幻想过,物理学广泛地应用在今天许多游戏、动画中。为什么在这些应用中要使用物理学?笔者认为,自我们出生以来,一直感受着物理世界的规律,意识到物体在这世界是如何"正常移动",例如射球时球为抛物线(自旋的球可能会做成弧线球) 、石子系在一根线的末端会以固定频率摆动等等。要让游戏或动画中的物体有真实感,其... 阅读全文

回应CSDN肖舸《做程序,要“专注”和“客观”》,实验比较各离散采样算法

2010-05-27 23:57 by Milo Yip, 16034 visits, 网摘, 收藏, 编辑
摘要:自从肖舸在其CSDN博客上说“拒绝回答博客园等网站网友的问题”,实质上不单是拒绝回答,而且还删去包括一些网友及本人对于纯粹技术探讨的评论。当然每位博主都有自由这么做,但个人认为这对于社区的交流发展有负面影响。为了探讨这个技术问题,本人唯有把回应发表于博客园内。本文会阐述之前的论点,评论肖舸的实现,并进行了兩个实验比较不同算法、实现的优劣之处。 之前的“交流&rd... 阅读全文

《编程之美:分层遍历二叉树》的另外两个实现

2010-05-12 00:10 by Milo Yip, 10150 visits, 网摘, 收藏, 编辑
摘要:之前重温本书写书评时,也尝试找寻更好的编程解法。今天把另一个问题的实现和大家分享。问题定义给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。下面是一个例子: 输出:节点的定义:书上的解法书上举出两个解法。第一个解法是用递归方式,搜寻并打印某一层的节点,再打印下一层的节点。这方法简单但时间效率不高(但不需要... 阅读全文

在博客里轻松使用LaTeX数学公式

2010-04-26 01:32 by Milo Yip, 12048 visits, 网摘, 收藏, 编辑
摘要:笔者最近的博文有不少数学相关内容,发现利用一些网上服务、jQuery和CSS,可以更轻松地在博客里使用\LaTeX语法排版方程式。\LaTeX是基于\TeX的排版系统。而\TeX就是美国著明计算机教授高德纳(Donald E. Knuth),为了编写他的巨著《计算机程序设计艺术(The Art of Computer Programming)》而设计的系统,对于数学公式的排版支援十分强大。线上La... 阅读全文

用JavaScript玩转游戏编程(一)掉宝类型概率

2010-04-21 14:50 by Milo Yip, 8859 visits, 网摘, 收藏, 编辑
摘要:问题定义游戏(和一些模拟程序)经常需要使用随机数,去应付不同的游戏(或商业)逻辑。本文分析一个常见问题:有N类物件,设第i类物件的出现概率为P(X=i),如何产生这样的随机变量X?例如对概率的要求是P(X=0)=0.12P(X=1)=0.4P(X=2)=0.4P(X=3)=0.07P(X=4)=0.01输入数组<0.12, 0.4, 0.4, 0.07, 0.01>输出符合以上概率的随... 阅读全文

从头开始思考游戏的数据管理系统(二)

2010-04-13 13:10 by Milo Yip, 4920 visits, 网摘, 收藏, 编辑
摘要:上回谈及一些游戏数据管理的初部分析,但有些思绪还没有整理好,写得颇乱。今次就直接谈笔者在几个月前设计的Mil Universe Database(MUD),从中再阐述当中的一些想法。 基本的数据流程首先,一个项目中,引擎会使用的所有数据,都放进一个完整的数据库里。现时笔者的设计一个数据库会储存成一个.mud文件。 外部文件可以汇入数据库,也可以汇出。但汇出的数据会失去一些资讯(如稍后说的依存关系)... 阅读全文

从头开始思考游戏的数据管理系统(一)

2010-04-12 22:53 by Milo Yip, 5622 visits, 网摘, 收藏, 编辑
摘要:和一般应用软件有点不同,大部份游戏软件都需要使用大量的游戏数据(game data)──或称为资源(resource)、资产(game asset, 但通常asset包括数据的原始格式, 不是最终运行游戏所需的数据)。在制作游戏时,如何管理这些数据是一个非常重要的问题。曾经看过和使用过不同的方案,现在归回原点,分析基本的需求,随笔记录笔者所选的方案思路。游戏数据管理的重要性如果从游戏软件的产出(d... 阅读全文

用JavaScript玩转计算机图形学(二)基本光源

2010-04-02 20:44 by Milo Yip, 11763 visits, 网摘, 收藏, 编辑
摘要:上一篇介绍了简单的光线追踪,凑合了临时用的光源去渲染效果。这次将讲解三种基本光源,及一些背景理论。过分简化的教材和现成API(OpenGL/Direct3D等)可能会做成一些错误理解。在此,希望文章能简单之余,又不失背后理论。读者明白之后,可把概念简化,或按实际情况调整。本文代码可在此下载(10KiB)。读者若喜欢本文,可按推荐按钮以示鼓励。如果写得不够清楚,或有错误之处,可留言相告。光在物理上,... 阅读全文

用JavaScript玩转计算机图形学(一)光线追踪入门

2010-03-29 00:05 by Milo Yip, 24944 visits, 网摘, 收藏, 编辑
摘要:系列简介记得小时候读过一本关于计算机图形学(computer graphics, CG)的入门书,从此就爱上了CG。本系列希望,采用很多人认识的JavaScript语言去分享CG,令更多人有机会接触,并爱上CG。本系列的特点之一,是读者能在浏览器里直接执行代码,也可重覆修改代码测试。透过这种互动,也许能更深刻体会内容。读者只要懂得JavaScript(因为JavaScript很简单,学过Java/... 阅读全文

12年前的作品──《美绿中国象棋》制作过程及算法简介

2010-03-16 21:43 by Milo Yip, 11582 visits, 网摘, 收藏, 编辑
摘要:这个游戏是大学本科二年级时(1998年)修人工智能课程的功课 。这个游戏的「棋力」并不高,主要是因为没有花时间在调整的工作上。比较满意的部分是使用 OpenGL 做的使用者介面。本文将简单介绍制作本游戏的过程及当中用到的算法。你可以先下载(1049KiB)试试,但现时已找不到源码了,将来找到的话再分享。制作过程约在接到这项功课前的一个月,刚开始自学 OpenGL,因此便考虑利用 OpenGL 做使... 阅读全文

史上最强女游戏程序员

2010-03-08 17:33 by Milo Yip, 27956 visits, 网摘, 收藏, 编辑
摘要:也许你听说过John Carmack 和Tim Sweeney等大牛的名字,而向来游戏工业都是阳盛阴衰,适逢国际妇女节,今天我为大家介绍游戏业界一位史上最强女游戏程序员:Corrinne Yu。 简历以下是她在游戏业界内的简历 微软Halo团队首席引擎架构师(principal engine architect) 微软游戏工作室的首位女性技术主管 微软的Direct3D顾问委员会及图形顾问委员会的... 阅读全文

两条像面试用的编程问题,和我的囧事

2010-03-04 00:57 by Milo Yip, 9720 visits, 网摘, 收藏, 编辑
摘要:昨天meta网友在某论坛写了两条编程题目:设计一个函数f, 使得它满足:f(f(x))=-x,这里输入参数为32位整型设计一个函数g, 满足:g(g(x))=1/x, x是浮点数以下是一些反面的解答,可澄清这两条个题目:meta提供了同事的解答,但该解答用了static local variable来區分办调用次数。这函数有副作用,且不是thread-safe。因此这不是好答案。Sweating和... 阅读全文

解构Unity的腳本物件模型

2010-02-26 00:11 by Milo Yip, 4788 visits, 网摘, 收藏, 编辑
摘要:Unity是一个以 Mono 为基础的游戏开发环境,能同时支持三种脚本语言,包括 C#、Javascript 和 Boo (类似 Python)。由于 Unity 的开发工具暂时只有 Mac 的版本(2010年2月25日更新: 现时已有Windows版本,而且有免费授权版,另外因为Unity iPhone版的出现使Unity的使用者大增),所以暂时未能测试。但是它有很详细的文档,看上来很易用,所以... 阅读全文

《编程之美: 求二叉树中节点的最大距离》的另一个解法

2010-02-25 03:32 by Milo Yip, 9381 visits, 网摘, 收藏, 编辑
摘要:昨天花了一个晚上为《编程之美》,在豆瓣写了一篇书评《迟来的书评和感想──给喜爱编程的朋友》。书评就不转载到这里了,但在这里可以介绍书里其中一条问题的另一个解法。我觉得这个解法比较简短易读及降低了空间复杂度,或者可以说我觉得比较「美」吧。问题定义: 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 阅读全文