The primary task of a Raycasting Engine is to render 3D simplified environnement. It is said that Raycasting is a 2.5D algorithm because the 3D environnement is rendered from a 2D map and there are only perpendicular walls only flat floor and ceiling, and so on... A lot of limitations that are not present in real 3D engines.
But this simplicity has its own advantages :
Let's have a look at what features are available in this engine...
There are several type of doors, the only difference is the way they open : They can slide to any direction (left, right, top, bottom), there are even double panel sliding doors as well.
Just like the game wolfenstein 3D, walls can be pushed to reveal secret areas.
Animated sprites with composite effect (alpha, opacity...). Each sprite can have several overlays so rendering "haze" effects is possible.
Floor and ceiling can have textures, just like walls.
Wall, ceiling, and floor textures can be replaced by a sky texture.
Walls can have animated textures.
Wall, floor and ceiling textures can be modified, allowing programmer to draw anything on it (like drawing on a canvas and using canvas context methods). This ability is used for static lighting (lighten walls that are near light emmiting sources).
It can't be heared here but the (rudimentary) audio system handles distances (close sounds are louder than distant ones). And it handles crossfade background soundtrack.