github.com/hajimehoshi/ebiten/v2 (go): Package ebiten provides graphics and input API to develop a 2D game.  You can start the game by calling the function RunGame.  In the API document, 'the main thread' means the goroutine in init(), main() and their callees without 'go' statement. It is assured that 'the main thread' runs on the OS main thread. There are some Ebitengine functions (e.g., DeviceScaleFactor) that must be called on the main thread under some conditions (typically, before ebiten.RunGame is called).  `EBITENGINE_SCREENSHOT_KEY` environment variable specifies the key to take a screenshot. For example, if you run your game with `EBITENGINE_SCREENSHOT_KEY=q`, you can take a game screen's screenshot by pressing Q key. This works only on desktops and browsers.  `EBITENGINE_INTERNAL_IMAGES_KEY` environment variable specifies the key to dump all the internal images. This is valid only when the build tag 'ebitenginedebug' is specified. This works only on desktops and browsers.  `EBITENGINE_GRAPHICS_LIBRARY` environment variable specifies the graphics library. If the specified graphics library is not available, RunGame returns an error. This environment variable works when RunGame is called or RunGameWithOptions is called with GraphicsLibraryAuto. This can take one of the following value:  `EBITENGINE_DIRECTX` environment variable specifies various parameters for DirectX. You can specify multiple values separated by a comma. The default value is empty (i.e. no parameters).  `EBITENGINE_DIRECTX_FEATURE_LEVEL` environment variable specifies DirectX feature level. The possible values are "11_0", "11_1", "12_0", "12_1", and "12_2". The default value is "11_0".  `EBITENGINE_OPENGL` environment variable specifies various parameters for OpenGL. You can specify multiple values separated by a comma. The default value is empty (i.e. no parameters).  `ebitenginedebug` outputs a log of graphics commands. This is useful to know what happens in Ebitengine. In general, the number of graphics commands affects the performance of your game.  `ebitenginesinglethread` disables Ebitengine's thread safety to unlock maximum performance. If you use this you will have to manage threads yourself. Functions like IsKeyPressed will no longer be concurrent-safe with this build tag. They must be called from the main thread or the same goroutine as the given game's callback functions like Update to RunGame. `ebitenginesinglethread` works only with desktops.  `microsoftgdk` is for Microsoft GDK (e.g. Xbox).  `nintendosdk` is for NintendoSDK (e.g. Nintendo Switch).  `nintendosdkprofile` enables a profiler for NintendoSDK.
Keywords: ebiten|ebitengine|game|game-2d|game-development|game-engine|game-engine-2d|game-library|gamedev|go|golang|golang-library