游戏中的AOI

前言

AOI(area of interest),它是MMO游戏中一个极其重要的概念,主要解决游戏中多人同屏的问题。本文并不打算去讲AOI相关的算法,如九宫格,十字链表,六边形网格之类的具体算法实现,因为此类文章网络上已经有很多了。虽然大多数开发者都接触过AOI,但是我发现其中很多人并没有真正深入领会AOI的本质。因此本文会从设计的角度来阐释什么是AOI,为什么要有AOI,以及如何去设计一个高质量的AOI系统。

继续阅读“游戏中的AOI”

游戏平衡概念-数字关系(2):

本周主题

This week, I’m going to talk about the different kinds of numbers you see in games and how to classify them. This is going to be important later, because you can’t really know how to balance a game or how to choose the right numbers unless you first know what kinds of numbers you’re dealing with. Sometimes, a balance change is as simple as replacing one kind of number with another, so understanding what kinds of numbers there are and getting an intuition for how they work is something we need to cover before anything else.

这个星期,我将谈论你在游戏中看到的不同类型的数字,以及如何对它们进行分类。这在以后会变得很重要,因为你不能真正知道如何平衡一个游戏或者如何选择正确的数字,除非你首先知道你在处理什么类型的数字。有时候,平衡的改变就像用一种数字替换另一种数字一样简单,所以我们需要在其他任何事情之前了解这些数字的种类,并对它们的工作原理有一个直觉。

继续阅读“游戏平衡概念-数字关系(2):”

游戏平衡概念-游戏平衡介绍(1)

What is Game Balance?

什么是游戏平衡?

I would start by asking the question “what is game balance?” but I answered it in the teaser video already. While perhaps an oversimplification, we can say that game balance is mostly about figuring out what numbers to use in a game.

我会先问一个问题“什么是游戏平衡? ”但我已经在预告片里回答过了。也许过于简单化了,我们可以说游戏的平衡主要是弄清楚在游戏中使用什么数字。

继续阅读“游戏平衡概念-游戏平衡介绍(1)”

开放世界和沙盒

这两个词经常在各种场合可以听到或者看到,但是他们是怎么定义的却不是很清楚。我在维基百科,找到了这个词条的英文定义,相应的中文词条只有寥寥两段,不足以让人清楚的领悟其中含义。

开放世界
沙盒

开放世界

  1. 自由探索:不受等级限制,一进入游戏就可以自由探索游戏中的任何地方,不会有无形或者有形的边界,只受地理因素的限制(比如广阔的海洋,陡峭的山)。
  2. 自主权:可以自由决定以怎样的方式和节奏去探索游戏世界。

沙盒

The "sandbox" term derives from the nature of a sandbox that lets children create nearly anything they want within it.

本意就是一个装满沙子的箱子,孩子们可以在其中用啥子创造任何他们想要的东西。

沙盒没有严格的定义,它赋予玩家在游戏中自由创造的能力,一般用减法来描述,“减去任务、主战役、叙事或任何与游戏进程形式相关的东西,然后你就得到了一个沙盒。

使用c++编写unity程序

unity C++ Scripting

这是一位国外开发者写的系列文章,我之前只看了其中c#和c++交互的部分。在我昨天搜索c++和unity的时候,发现了这位作者在github上发布的UnityNativeScripting项目,这时才发现这是用c++作为unity脚本的整套方案,个人觉得挺好的。

自己的游戏现在采用了两种开发语言,c++开发了核心底层模块,c#用来写游戏逻辑。我本来的想法是,利用c++和c#各自的优势,但是这样带来了问题:需要从c++暴露很多接口给c#,同时用c#的struct来安排内存布局,需要非常多的额外考量,受到不少限制,增加了代码量,也埋下内存管理隐患。

综合衡量之后,我决定把所有c#转成c++,正好在此时,发现了UnityNativeScripting项目,出于减少工作量的考虑,我应该尝试一下。

继续阅读“使用c++编写unity程序”