Port detection

ACSUtils provide a function to detect which engine (source port) it's running on:

int IdentifySourcePort()

Returns one of the following:

PORT_ZDOOM

PORT_GZDOOM

PORT_ZANDRONUM

The following functions are provided for easier use:

bool IsGZDoom() – returns true if the mod is running on an engine with GZDoom features (this includes GZDoom and Zandronum).

bool IsZandronum() – returns true if the mod is running on Zandronum.

Renderer detection

ACSUtils also provides a function to check if Software or OpenGL renderer is used:

bool IsOpenGL()

It can only be used clientside. It has several features over checking vid_renderer:

It will return false in ZDoom even if vid_renderer is 1, because ZDoom doesn't have an OpenGL renderer. This can happen if a GZDoom config is used in ZDoom.

It takes gl_nogl into account, which can disable the OpenGL renderer even if vid_renderer is 1.

How port detection works

First, GetPlayerAccountName(0) is called. In Zandronum it returns a string (possibly empty string). In other ports it returns 0, because it's an unknown function.

Second, existence of DynamicLight actor is checked by spawning and instantly destroying it. This actor is not present in ZDoom. If it spawns successfully, the port is GZDoom.

If both checks fail, the port is ZDoom.