没有线程的脚本和电影
我一直在努力在游戏引擎中实现脚本。我只有几个要求:应该是直观的,我不想编写自定义语言,解析器和解释器,并且我不想使用线程。(我确定有一个更简单的解决方案;我不需要多个游戏逻辑线程的麻烦。)这是一个示例示例,使用Python(又称伪代码)编写: def dramatic_scene(actors): alice = actors["alice"] bob = actors["bob"] alice.walk_to(bob) if bob.can_see(alice): bob.say("Hello again!") else: alice.say("Excuse me, Bob?") 那段史诗般的讲故事带来了实现问题。我不能立即评估整个方法,因为这walk_to需要花费时间。如果立即返回,爱丽丝将开始走到鲍勃,然后(在同一帧中)打个招呼(或打招呼)。但是,如果walk_to有一个阻塞呼叫在她到达Bob时返回,那么我的游戏就会卡住,因为它阻塞了使Alice走动的执行线程。 我考虑过让每个函数加入一个动作- alice.walk_to(bob)将对象推入队列,无论爱丽丝到达鲍勃,无论他身在何处,该队列都会弹出。这更巧妙地被打破了:if分支立即得到评估,因此鲍勃可能会向爱丽丝致意,即使他的背对着她。 其他引擎/人员如何在不创建线程的情况下处理脚本?我开始在非游戏开发领域中寻找想法,例如jQuery动画链。似乎应该有一些解决此类问题的好的模式。