我的世界主程序在哪?
我也很想知道mcbbs上那个运行了三年的mc服务器是用什么技术实现的。 单从题主的问题来看,我觉得问题应该这样问——怎样实现一个像《我的世界》一样的游戏? 然后我们一步步分析这个问题。 “怎样”意味着题主已经知道“开发游戏”这个行为,并且想参与这个行为。那么, 什么是“像《我的世界》一样”呢?这意味着题主已经玩过/体验过《我的世界》,并认为这款游戏符合自己的审美标准(或自己寻求的体验);同时也暗示着题主认可这款游戏的“开发成本”——无论是否合理、是否能被其他人所接受。 接下来我们就来分别讨论这三个问题:
1.“怎样”实现……这实际上是一个架构问题——“用什么工具、框架、代码生成器等等来实现我的想法。” 想实现一个游戏,第一步要考虑的是这个游戏的复杂程度,以及由此决定的开发手段。
如果这个游戏很简单,比如就是一个类似“开心农场”的模拟经营游戏,那么完全可以由一个人用IDE来完成所有的功能编写、测试等工作,最后通过打包工具压缩成可执行文件即可发布。这种开发模式的代价就是效率低下和难以保证质量。
但如果这个游戏很复杂,例如像MC那样有庞大的模块系统和一个错综复杂的逻辑链,那就需要考虑采用别的办法了。一个简单的解决办法就是分而治之——先分解出各个模块的功能,交给相应的专业人员来完成。在MC的例子中,就可以把地图生成模块分离出来,让地图生成器单独运行,然后把生成的地图加载给游戏引擎,让游戏引擎负责管理游戏中各种物体的生成与销毁,最后把图形界面部分分离出来,利用目前成熟的开源库完成整个工程的搭建。当然,为了协调各模块的工作,需要一些中心化的机制,如消息代理、事件驱动等等的设计。
2.“像《我的世界》一样” 这实际上是个原型设计的问题——如何做到功能上的相似,行为上的可比较性。 在回答这个问题之前,我们先引入两个概念: 即使用户以完全不同的方式进入一款游戏,只要这款游戏能够提供足够多的反馈信息,通过这些信息的交互就能够大致重建用户的行为。这个过程就叫做行为还原(Behavior Reconstruction)。当然,要完全还原用户的操作是不现实的,但是这足以让我们达到目标需求上的近似度要求。
相比之下,功能上的相似就要容易很多,直接照搬源码就能达到目的。所以,想要“像《我的世界》一样”的话,只需要做到行为上的可比较性和一定程度的代码复用就可以了。
3.“怎样的成本”才能实现这个目标? 这实际上是一个成本核算的问题。成本可以分为人力成本、时间成本和资金成本,这里主要讨论前面两者。
先来看一下时间成本。如果我们要实现一个类似《我的世界》的游戏,考虑到《我的世界》发行的时间、发行的版本以及现在的源码开放情况,我们可以复制它的所有功能和使用方式,从而节省大量的时间和研发成本。但是,如果我们只是想做一个玩法类似于《我的世界》的游戏,而不一定要复制它的全部功能,那么我们可能需要重新构思某些功能的实现方式和流程,进而需要投入更多的时间和精力来实现这些新功能。虽然时间和精力的投入不一定成正比,但是如果想要缩短研发周期,就必须确保所投入的时间和精力是必要的且值得的。这就需要我们的研发团队能够对研发成本进行有效的管控。
再来看一下人力成本。同样受开源协议的影响,《我的世界》的源码开放程度决定着我们可以直接拷贝它的代码,减少开发成本。但除了拷贝代码之外,我们还需要考虑知识产权的问题。因为《我的世界》是一款畅销的世界级大作,其衍生作品也是层出不穷,如果我们做了盗版的事情,很可能面临法律纠纷。虽然我们可能在技术上能够做到避侵权,但是在商业上依然可能会受到很大的影响。我们不仅需要控制技术的研发成本,也需要控制商业运作的成本。包括商业谈判、合同签署、版权登记等在内的一系列工作都需要耗费时间和精力,甚至还要承担由于维权带来的额外支出。