api needs to facilitate easy interoperability with other languages and tools, for that certain steps are taken: * number of public api calls is kept at the minimum * procedure signatures can only use basic types, no aggregates, with exception of Vec/Matrix types and alike, with no expectation on new additions (see /include/twn_types.h) * optionals can be expressed via pointer passage of value primitives, with NULL expressive default * /include/twn_game_api.json file is hand-kept with a schema to aid automatic generation and other tooling one of main inspirations for that is opengl model