SDL bindings for TypeScript.
Currently working via deno on Windows, Linux, and mac OS using FFI (Foreign Function Interface).
- Resembling the C API as much as possible. If someone reads a SDL tutorial (for example LazyFoo) then they should be able to easily translate the tutorial to the equivalent in this library.
- Provide utiltiy functions which wrap SDL features into idomatic JavaScript (i.e.
Events.asyncIterator
).
- Creating a higher level API or Game Framework. This library's only purpose is to expose the SDL API to deno.
sudo apt install libsdl2-2.0-0 libsdl2-image-2.0-0 libsdl2-ttf-2.0-0
pacman -S mingw-w64-ucrt-x86_64-SDL2 mingw-w64-ucrt-x86_64-SDL2_image mingw-w64-ucrt-x86_64-SDL2_ttf
You'll need to ensure then that the sysroot (in this case ucrt) is in your path. Assuming the default install location
for msys2 then C:\msys64\ucrt64\bin
.
brew install sdl2 sdl2_image sdl2_ttf
To aid in creating a new project which uses SDL_ts
there is an init.ts
script to aid in getting your project set up:
deno run --allow-net --allow-read=/path/to/project --allow-write=/path/to/project --import-map https://deno.land/x/[email protected]/imports.deno.json https://deno.land/x/[email protected]/init.ts /path/to/project
Replace /path/to/project
with the desired project path. After that the new project can be started via a deno task:
deno task start
You should be presented with a window titled "SDL_ts".
Per default SDL.Init
(or IMG.Init
or TTF.Init
) will load all known functions from the SDL assemblies. This can be
problematic when attempting to run your script on an older version of the SDL assemblies than the version against which
this library is developed. The Init functions accept an options parameter in which the functions to load can be
specified:
SDL.Init(SDL.InitFlags.VIDEO, {
functions: [
SDL.Init,
SDL.PollEvent,
SDL.Quit,
// And so on
],
});
Deno images taken from https://deno.land/artwork.
Thanks to:
- Samip Poudel for the Jurassic deno image.
- Andy Baird for initial MacOS Support.
- Yiheng Wu for struct handling and other bug fixes.