引擎是什么

引擎这个词在编程中出现越来越多,比如游戏引擎,爬虫引擎,规则引擎。引擎这个最初在汽车里面代表发动机的词。

引擎,中文百度百科说的是汽车动力的来源。换句话说,就是驱动汽车发动、前进、加速的一种组件。当引擎用在游戏中时,游戏引擎指的是控制所有游戏功能的主程序。

在游戏中,引擎被抽象为控制所有游戏功能的主程序。那么,游戏引擎如何控制游戏功能呢?想象我们再玩一个网络游戏,首先有一个游戏图,然后我们输入一些操作,控制人物的行为,人物在游戏中与游戏中的对象进行交互,从而产生一种新的状态。

如果把游戏中所有的对象看作状态机,游戏引擎就是改变状态的规则,它定义了对象(状态机)在什么情况下应该转变为另一种状态并且完成这个状态的转换。

汽车,开始是静止状态。引擎,定义了当打火的时候汽车发动,当踩油门的时候,引擎会让汽车进行加速。引擎是改变状态的动力,它定义了状态如何改变并且将这种改变实现。在物理世界中,引擎通过复杂的物理过程实现状态的改变;在代码世界中,引擎通过代码的执行和调用实现程序状态的改变。

而引擎在调用的时候,如果资源很少直接进行调用,不会出什么问题(甚至不需要所谓引擎的概念,直接运行一个所有代码的在main函数里面的程序即可)。当需要调用的资源/函数很多的时候,引擎还承担起调度的功能,资源之间相互具有依赖性,先执行什么,再执行什么,这个由引擎来决定。

拿汽车举例,发动汽车气缸内的物理过程顺序不能错,否则就会出现不同的结果。物理过程,可以理解为使引擎内部的自然规则,在实际代码中,我们可以自定义自己的规则。