一个通用游戏引擎的设想:把语言刻入世界,还是把世界刻入语言?

本文探讨了游戏架构中语法分析器的设计模式,特别是在处理战斗逻辑时,如何选择返回新对象还是修改现有对象。深入讨论了语法树的处理方式,以及如何通过action包装来实现功能触发,提出语法分析后的处理可能涉及更高层次的语义分析。

花了一点时间完成了语法分析器。现在它应该可以实现自定义的语法。
我一直都在想,如果要做这方面的一个设计模式,应该怎么处理我的游戏架构的接口呢?

在这里插入图片描述

现在觉得有趣的是,语法树处理一个战斗,结果在语法中是得到一个新的东西,还是返回一个已经改变的旧的?

这件事一直在困扰我。

新的和旧的有很多的含义,首先它们是区分,何时触发你想要触发的那个功能?

其次可以这样想,它们只是将这个过程包裹起来而已,

比如用一个action来包裹(a和b),然后把这个action返回出去。这个action是哪个类别?无所谓哪个类别,反正可以被后续的内容处理就是了。

有一些优先级,要求我们先处理某个action,都可以。

1, 那怎样的情况会触发类似haskell中的一些特点呢?比如无尽、比如惰性?

我只能说,用现有的机制能写出来。但是要完整的方便的体系,似乎在这个语法分析器之后,还有一个语法分析器才行?也就是说……如果把这些与意义有关的功能和语法分析脱节之后,其实我只是实现了一个词法分析器而已?我以一种语法的方式读入了我的内容,借助移进规约的方法形成了树。这个树怎么处理,则是另外一种语法的分析?

如果我把无尽和惰性用类型系统来实现,那么归于了语义的分析。反之如果把它们当作语言的一部分进行处理,(比如把类型变成一个对于世界来说特殊的存在),那才是把世界刻入了语言中。前者只是把语言刻入游戏中罢了。

在这件事上,人们能做的是无限的。在哪一方面的创新带来的深度也是无限的。这里就是世界和语言的界限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值