A:\ dventure开发日志:模拟基本市场经济学

A:\ dventure中的经济学与C:\ raft围绕物物交换略有不同,部分原因是程序产生。 这次,我将通过使用除项目之外的货币来采取更多的简化方法,但是随之而来的挑战是确定哪些项目应该值得以及为什么。 在单人游戏中,我一直不喜欢的一件事是,当您发现游戏中的一件物品值得一掷千金,并且变得相对容易获得时。 几个小时后,您现在已拥有足够的黄金,并且可以购买到游戏结束之前所需的几乎所有东西,而不必担心,因为您只是在翻滚。 我不希望我的游戏像那样,变得那样无聊。 对于任何实际需要良好项目管理的事情,我都是傻瓜。 因此,为了解决防止任何一种物品都无法耕种的问题,我虽然“如果有一个模拟的经济体怎么办?” A:\ dventure通过简化的冒险者互联网客户端上的在线交流,描绘了游戏中大多数互动。 .hack //和其他一些在“在线”世界中进行的单人游戏。 既然世界上存在一个虚构的社区,为什么不让它们影响您作为玩家用来实际买卖商品的在线市场。 该游戏以加速时钟运行,在您不冒险进入文件地牢时会暂停时间,类似于Harvest Moon,在室内时,时间会冻结。 这有助于您有时间实际管理商品并浏览菜单以了解故事。 通过这一日系统,市场可以在您的影响范围之外进行自我调整。…

A:\ dventure开发日志:改善场景过渡

一旦游戏的复杂性达到足够大的规模,任何游戏开发人员都会遇到的第一件事就是场景管理。 能够在逻辑上将游戏的各个部分划分为离散的场景,并以有状态的方式呈现给用户,这不仅是游戏开发的关键,也是应用程序开发的关键。 Godot凭借其树上的实用程序功能,在轻松更改根场景方面做得很好。 但是,即使在Godot自己的文档中,它也指出默认实现有一些缺点,您将需要通过后台加载,添加一些进度条以及执行其他操作来使其更加美观。 实际上,在本教程中,他们的第一个使用Singletons的示例就是如何制作自己的场景管理器。 因此,如果所有这些都是本教程中可用的基本信息,那么为什么要写它呢? 好吧,从图形化的实现中,有一些本教程并没有真正涉及到的细节,另外,我用简单的动画做的一些整洁的事情对其他人来说是一个很好的起点。 因此,我将向您展示我如何在A:\ dventure中做到这一点,添加了一些技巧,甚至还提供了代码,以便您可以将其放入游戏中! 首先,由于此场景管理器将具有一些很酷的图形效果,因此我们需要对其进行制作,以便它实际上可以在所有内容之上进行渲染。 由于SceneTree类上的change_scene函数将替换根目录中的最后一个节点,这意味着默认情况下,任何自动加载的元素都将在所有内容之前和之下呈现。 为了解决这个问题,我使用的场景管理器实际上是一个CanvasLayer,其渲染的级别比屏幕上所有其他元素的渲染级别高。 这样一来,推子及其子项就将始终显示在顶部。 最初,我采用了蛮力方法,在卸载场景之前和之后,使用场景管理器在场景树中添加和删除过渡节点。 这种单例方法的复杂度大大降低了,而且对于那些比我当时更了解戈多的人来说可能很明显。 还要注意,“暂停模式”设置为“处理”,这是由于我们的脚本使用了标准的SceneTree.paused属性冻结了我们的游戏。 这将使正在加载的动画能够在暂停其他所有内容的同时进行动画处理(假设所有可交互对象也都尊重已暂停的属性)。 即使我创建的场景管理器不执行异步加载,但我确实添加了一个简单的标志,如果您的新场景在开始时需要进行大量处理,则可以切换该标志。…

A:\ dventure开发日志:正在场景过渡

上一次我为该开发日志编写任何内容时,都与场景转换有关。 您可能会认为,现在考虑要在游戏中建立多少其他东西,我还有很多话要说。 在写完该日志后不久,我实际上返回并重写了SceneManager,因为我对此不满意。 我认为这可能是当前最有价值的事情,因为自从上一个日志条目以来,我对方法所做的更改在简化代码方面非常有用和强大! 使我烦恼的另一种方法是,在显示加载屏幕的情况下,我有一个布尔标志,并且需要其他场景才能在SceneManager上显式翻转is_ready状态。 这是非常危险的,因为变量没有保护。 从那以后,有两件事让我感到满意,这对代码的改进确实有所帮助:协程和自省 Godot中的协程是基本但强大的。 在我的地牢时代中,我以前已经使用过协程,但是我只是屈服于暂停处理以帮助在单个线程上分配工作。 在Godot中,可以发出任何可以发出信号的信号。 在进行过渡的情况下,可以大大简化代码。 我们可以屈服以确保过渡动画在开始加载之前先完成,并使代码比连接和断开信号侦听器干净得多。 Godot中的自省也是新SceneManager的关键。 我已经习惯了React和Vue等Web框架中的组件,这些组件上都有生命周期方法。 Godot中的节点是非常准系统,没有任何生命周期方法可用于销毁它们或准备就绪后使用。 但是,您确实具有基本的能力,可以通过简单的自省方法检查它们是否具有方法或属性。 这意味着我可以将特定的方法添加到用作场景的节点上,并为它们提供我需要的自定义生命周期方法。 现在,用于场景的Node的完整流程看起来像…