代码改变世界

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

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

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

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

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

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

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

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

史上最强女游戏程序员

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

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

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

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

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

混合语言的游戏开发系统架构

2010-02-23 01:27 by Milo Yip, 17192 阅读, 收藏, 编辑
摘要: 用什么程式语言来做软件是一个大问题,思考了一个周末,现时想做一个混合语言的游戏开发系统架构。暂时只考虑三种程式语言: C++、C# 及Lua。以下首先分析这三种语言的特性,之后再提出一个系统架构科案。 三种语言的比较C++ C++是一个strongly typed、static、multi-paradigm (procedural, object-oriented, meta-programmin...阅读全文

《有点失望》的经过及其背后意义

2010-02-06 19:48 by Milo Yip, 20967 阅读, 收藏, 编辑
摘要: 《有点失望》本来是一篇简单的、没人关注的书评,但它产生的回响,确实是值得探讨当中的意义。事件经过因为我是当事人,可能对事件经过有偏颇,如发现和事实不符或不全面,请不吝指正。2010年1月14日 我在当当看过介绍和书评, 买了《0 bug--C/C++商用工程之道》2010年1月23日 花了几个晚上看了第一至第三章,因为错处太多觉得看不下去,便于清晨在豆瓣撰写了《有点失望》,并评为两星,主要评论内容...阅读全文