Graphics and Gaming
Last Updated: 2023-02-27
Modern graphics and compute APIs
- Vulkan: Khronos Group, to unify OpenGL and OpenGL ES (Embedded Systems), and OpenCL will be merged into Vulken too. Written in C. Based on AMD's Mantle API. AMD donated Mantle API to Khronos. Development of Mantle API is discontinued. Can be used in Android.
- Metal: Apple's API, replacing OpenCL and OpenGL. Written in C++14 and can be invoked in Swift and Object-C.
- DirectX: Microsoft. Direct3D is a subset of DirectX. DirectX 11 and 12 implementations are now based on Vulkan.
Web Standards
- WebGL: JavaScript API; fully integrated with other web standards; render 2D/3D graphics in browsers. Designed and maintained by Khronos Group. E.g. DECK.GL (https://deck.gl/) is based on WebGL to visualize large-scale datasets.
- WebGPU: a future standard; JavaScript API; not a direct port of any existing native API, but based on concepts in Vulkan, Metal, and Direct3D 12.
Shading Languages
Shading language: https://en.wikipedia.org/wiki/Shading_language
Such language forms usually consist of special data types, like "vector", "matrix", "color".
GLSL: https://www.khronos.org/opengl/wiki/OpenGL_Shading_Language
Game Engines
The most popular:
- Unreal Engine: by Epic Games.
- Unity: written in C++, developers use C#
Other engines:
- Frostbite Engine: EA's in-house engine. Games: FIFA, Need for speed, etc. Mass Effect used it for Andromeda but went back to Unreal Engine after that.
Game Stores
- Steam (Valve)
- Epic Games
- Ubisoft Connect
- Origin (EA)
- GOG Galaxy
Cloud Gaming
- Nvidia GeForce Now (free with limits and $9.99/mo)
- Xbox Game Pass Ultimate ($15/mo)
- PlayStation Now ($9.99/mo)
- Amazon Luna ($6.99/mo)
Gaming on Linux
Proton can port Windows games to Linux. Developed by Valve, a fork of wine.
Source code: https://github.com/ValveSoftware/Proton
Check if your Steam game can work on Linux: protondb.com
SteamOS is actually based on Linux.
Stadia
Stadia was built on Debian Linux servers and Vulkan is their graphics API.
Open Sourced Games
- OpenTTD
- OpenRCT2