A curated list of awesome Odin libraries, software and resources.
Odin is a general-purpose programming language built for high-performance, modern systems and data-oriented programming.
A star (β) means the resource is exceptionally good.
Important
Many commonly used bindings are already included in the Vendor Collection which comes with the compiler
- Installing Odin to set up an Odin development environment. Alternatively Karl Zylinski made a video about setting up the Odin compiler from source on Windows
- Overview is the official documentation for the language
- demo.odin is an example of odin's features in practice
- Understanding the Odin Programming Language is the first book on Odin. An easy-to-read book that bridges the gap between the online docs and years of experience. Loosely based on this article: Introduction to Odin
List of libraries implemented in Odin
Name | Description | License | Tags |
---|---|---|---|
Jamgine | Self-contained realtime graphical application engine with a simplistic design philosophy | MIT | Gamedev, Engine, Graphics, Vulkan |
LBP Serialization | Easy-to-use LBP binary serialization utility | MIT | Gamedev, Serialization, Assets |
GL Font | A library for quickly setting up font rendering | Missing | OpenGL, Graphics, Font |
jobs | Job system | MIT | Gamedev |
glcache | Cached OpenGL calls | None | OpenGL, Graphics, Gamedev |
Marshmallow engine | WIP Game Engine written in pure Odin | None | Gamedev, Engine |
Godot Toolkit | Toolkit for Godot 4.0 to work with GDExtension and generating boilerplate | Apache 2.0 | Gamedev, Engine, Utility |
glTF2 β | Native Odin implementation of glTF2 loading file format | MIT | Gamedev, Format, 3D |
Aseprite loader | Handler for Aseprite's .ase/.aseprite, .aseprite-extension & extended .gpl files writen in Odin | BSD 3-Clause | Gamedev, 2D, Format |
Odin + Raylib Hotreloading Template | An Odin + Raylib game template with Hot Reloading pre-setup. My game projects tend to have some things in common, so I made this template so I can get up and running quicker | Custom | Gamedev, Template, Raylib |
Anima | A 2D animation library for Odin. Inspired by the LΓVE library anim8 | MIT | Gamedev, 2D, Utility, Raylib |
ZTME | Simple Tile Editor Made For Raylib In Odin | MIT | Gamedev, 2D, Utility, Editor, Raylib |
pathgrid | A simple 2D grid-based pathfinding library for Odin | BSD 3-Clause "New" or "Revised" | |
VEFontCache | A port of Vertex Engine GPU Font Cache (VEFontCache) for the Odin programming language | Custom | |
Dusk | A small game framework / project template | MIT | Gamedev, Template, Framework, Engine, ECS |
mikktspace | A port of Morten S. Mikkelsen's tangent space algorithm for Odin | zlib | Gamedev, Graphics, 3D |
Name | Description | License | Tags |
---|---|---|---|
Vox loader | Simple loader for MagicaVoxel's .vox models |
MIT | Gamedev, Assets |
LDtk utility | Simple loader for LDtk files. LDtk is a moder 2D level editor from the creator of Dead Cells | MIT | Gamedev, Assets, Tools |
Tiled loader | A simple Tiled map loader. | MIT | Gamedev, Assets, Tools |
File Formats | Odin implementations of various file formats - ISO, EBML | BSD-3 | Format |
INI Parser | .INI file parser | MIT | Format |
PDB Reader β | A library for reading .pdb s and dumping Windows stacktraces |
BSD-2-Clause | Debugging, Auxiliary |
Java classfile parser | A parser and verifier for Java .class files |
MIT | Format, Java classfile |
RFC 3339 Date Parser | Parser for the RFC 3339 date & time spec written in odin, follows the TOML spec | None | Format, Parser |
TOML Parser | A simple TOML parser | MIT | |
BML Parser | Structured binary parser based on XML schemes | None |
Name | Description | License | Tags |
---|---|---|---|
Odin HTTP β | A HTTP/1.1 server & client implementation for Odin purely written in Odin (besides OpenSSL) | MIT | Webdev, Server, Networking |
HTTP | Simple Odin http(s) client | BSD-3 | Webdev |
Name | Description | License | Tags |
---|---|---|---|
GraphQL Parser | GraphQL language parser | MIT | Webdev |
OstrichDB | A document-based NoSQL, SQLite-esque database for local machine use, ideal for beginners creating and testing backends and application data | Apache 2.0 | Database |
Name | Description | License | Tags |
---|---|---|---|
Mustache | Mustache logic-less templating engine | MIT | Template, Webdev |
Temple | Templating engine that compiles to Odin io calls | None | Template, Webdev |
Name | Description | License | Tags |
---|---|---|---|
Red/Black Tree | Red Black Tree Implementation | None | Datastructure |
Piece Table | Piece-Table implementation written in Odin, and comes with unlimited linear undo & redo capability | MIT | Datastructure |
Shared Memory Queue | Thread safe lock free ring buffers that seek to minimize false sharing, MPMC and SPMC | None | Datastructure, Multithreading |
Name | Description | License | Tags |
---|---|---|---|
Simple History | A simple undo / redo history | MIT | UI, Gamedev, Tools, Editor |
ADS1256 driver | Driver for Ti ADS1256 | MIT | Embedded |
Mani | Lua bidirectional bindings generator | None | Lua, Generator |
odin-build | Build system for Odin | None | Auxiliary, Tooling |
Snowflake | Twitter Snowflake UID generation | MIT | UID |
App Version | Generate and display application version information | MIT | Tools, Utility, CLI |
CLI Argument Parser | Using types to specify how command line arguments should be parsed | None | Utility, CLI, Parser |
Odin-style CLI Argument Parser | A command-line argument parser mimicking the Odin compiler's style | MIT | CLI, Utility, Parser |
Terminal Color | Simple, easy to use terminal colors | MIT | CLI, Utility |
Back | Cross-platform back/stack traces for assertion failures, the tracking allocator, and segfaults | MIT | Debugging, Auxiliary |
locale | An experimental Odin libray to manage locale informations. Inspired by findlocale C library | FreeBSD | |
podin | .pot generation utility from Odin sources to collect translatable messages to be managed with tools like PoEdit |
FreeBSD |
This is a list of notable libraries which are distributed along with the Odin compiler. For a full list head over to Official Package Documentation.
Base packages are required by the compiler
Name | Description |
---|---|
builtin | Contains Odin's predeclared identifiers, like basic types, procedures like len , size_of etc and many built-in constants like ODIN_DEBUG |
intrinsics | Contains Odin's compiler-level intrinsics, including many low-level procs like atomics, SIMD, X86 or WASM intrinsics and compile-time type reflection |
runtime | This is the runtime code required by the compiler. Contains definitions of context, allocator, logger, map, dynamic array, type_info etc. and implements things like appending to a dynamic array |
The core packages implement most of the common features you need while working with Odin
Name | Description |
---|---|
fmt | String formatting and console printing |
os | Cross-platform OS interface. Read files, change CWD, etc. |
strings | Common string operations |
math | Common math procedures |
math/linalg | Linear algebra package for 2D and 3D math with vectors, matricies and quaternions |
mem | Common memory operations and allocators |
encoding/json | Implements a JSON reader/writer, including a way to automatically marshal (serialize) structs |
log | Implements a console and a file logger |
sort | Implements sorting algorithms |
sync | Synchronization primitives for multithreading |
thread | Create and manage OS threads |
reflect | Runtime type reflection |
path/filepath | File path string operations |
Vendor packages are commonly-used third-party libraries distributed along with the compiler
Name | Description | Tags |
---|---|---|
raylib β | Bindings for Raylib, a simple and easy-to-use library to enjoy videogames programming | Gamedev, Graphics |
glfw | Bindings for GLFW, a multi-platform library for OpenGL, OpenGL ES and Vulkan development on the desktop | Gamedev, Graphics |
lua | Bindings for Lua, a powerful, simple and embeddable scripting language | Lua |
fontstash | Odin implementation of Fontstash - a lightweight online font texture atlas builder | Gamedev, Text, Graphics |
miniaudio | Bindings for Miniaudio, a lightweight audio library | Audio, Gamedev |
microui | Odin implementation of microui, a tiny immediate-mode UI library | UI, Tools, ImGui, Gamedev |
directx/d3d11 | D3D11 bindings | Gamedev, Graphics, 3D |
cgltf | Bindings for a GLTF asset loader | Gamedev, Graphics, Format, Assets |
darwin/Metal | Bindings for Metal API | Gamedev, Graphics, 3D |
stb | Bindings for libs from STB | Format, Gamedev, Assets, Utility |
sdl2 | Bindings for SDL2, a cross-platform development library | Gamedev, Graphics, Audio, Networking |
List of Odin bindings to C/C++ libraries.
Name | Description | License | Tags |
---|---|---|---|
Assimp | Bindings for Assimp, Open Asset Import Library is a library to load various 3d file formats into a shared, in-memory imediate format. It supports more than 40 file formats for import and a growing selection of file formats for export | MIT | Assets, Gamedev, Format |
bcm2835 | Bindings for BCM2835 Broadcom chip/raspberry pi1/2/3/4 | MIT | Embedded |
bgfx β | Bindings for bgfx, a cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library | Unlicense | Graphics, Gamedev |
Box2C | Idiomatic Odin bindings for Box2c (aka Box2D 3.0, not to be confused with older versions which were written in C++!) | None | Gamedev, Physics |
Box2C (Odin-style) | Box2D 3.0 bindings for Odin language | None | Gamedev, Physics |
CUE SDK | Bindings for the Corsair CUE SDK. Developers can use the iCUE SDK to access CORSAIR devices, enabling them to control device LEDs and create custom lighting experiences. | Unlicense | |
Dear Imgui β | Generated Dear ImGui bindings using dear_bindings. About Dear ImGui is a bloat-free Graphical User interface for C++ with minimal dependencies | MIT | UI, ImGui, Gamedev, Tools, C++, Cross Platform |
DuckDB | Bindings for DuckDB, a fast in-process analytical database | MIT | Webdev, Database, SQL |
EFSW | Bindings for the [Entropia file system watcher(https://github.com/diegostamigni/efsw) | Unknown | Files |
ffmpeg | Bindings for ffmpeg, a complete, cross-platform solution to record, convert and stream audio and video | None | Video |
FMOD | Bindings for FMOD | MIT | Gamedev, Audio |
Freetype | A binding for FreeType | MIT | Graphics, Text, Gamedev |
GameInput | Bindings for Microsoft's GameInput SDK | CC0-1.0 | Gamedev, Windows |
harfbuzz | Bindings for HarfBuzz | BSD 2-clause | Text |
ICU | Bindings for ICU4C | BSD 2-clause | Text |
Jolt | Bindings for the Jolt physics engine | None | Gamedev, 3D, Physics |
libbfd | Bindings for libbfd | GPLv2 | |
LibClang | Bindings for libClang for Odin | None | |
libpcap | Bindings for libpcap | None | Networking |
librg | A binding for librg, MMO networking library | Missing | Gamedev, Server, Networking |
libui-ng | Bindings for libui-ng: a portable GUI library for C. "libui for the next generation" | None | UI, Tools |
LLVM | Generated bindings for LLVM (LLVM-C 17.0.1), currently Windows-only | None | Compilers |
Luau | A fast, small, safe, gradually typed embeddable scripting language derived from Lua | MIT | Language, Lua |
LZ4 | Bindings for LZ4, an extremely fast lossless compression library | BSD 2 Clause | Compression, Gamedev |
m3d | Bindings for model3d format, a 3D model format specification and single header SDK. Supports skeletal animations, voxels and has the best data density | None | Gamedev, Graphics, 3D, Format |
meshoptimizer | Bindings for meshoptimizer, a mesh optimization library that makes meshes smaller and faster to render | None | Gamedev, Graphics, 3D, Tools |
Mimalloc | Bindings for mimalloc | MIT | Memory, Allocator |
mpc | This is a binding to the mpc for Odin programming language. Mpc is a lightweight and powerful Parser Combinator library for C | None | Parser, Language, Format |
MySql | Bindings for MySQL Client | MIT | Database, Webdev, SQL |
Nuklear | Bindings for Nuklear, s single-header ANSI C immediate mode cross-platform GUI library | None | UI, ImGUI, Gamedev, Cross Platform |
ObjC | Bindings for the objc 2.0 runtime | MIT | Darwin |
odin-renderdoc | Bindings for Renderdoc API, capture frames and open Renderdoc UI directly from your application | MIT | Gamedev, Graphics |
ONNX | Bindings for ONNX and a generator | MIT | ML, GPU |
OpenAL | Bindings for OpenAL, a cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications | None | Gamedev, Audio |
OpenAL | A binding for OpenAL, a cross-platform 3D audio API | MIT | Gamedev, Audio |
PostgreSQL | Complete & documented bindings for libpq (PostgreSQL) | MIT | Database, Webdev, SQL |
Raqm | Bindings for Raqm | BSD 2-clause | Text |
RGFW | RGFW is a cross platform, lightweight, single header window abstraction library for creating and managing windows | CC0 | Gamedev, Graphics, Platform |
Rift | A binding for the Oculus Rift SDK for VR | Unlicense | Gamedev, VR |
Sokol β | Odin bindings for Sokol, a collection of single-header C libraries for cross-platform windowing, graphics, audio, file loading, and more! | zlib | Gamedev, Input, Audio, Cross-Platform |
Steamworks | Bindings for Steamworks SDK | MIT | Gamedev |
Termbox | A binding for termbox, a text-based user interface alternative to ncurses | MIT | UI |
Tracy β | Bindings for the Tracy profiler | BSD-2-Clause | Gamedev, Performance |
ufbx | A binding for ufbx, a simple FBX loader library | Unlicense | Gamedev, Assets, 3D |
WebUI | Bindings for WebUI, use your preferred language in the backend and modern web technologies in the frontend | MIT | UI, Cross Platform |
WGPU | Bindings for WGPU | Apache 2.0 | Gamedev, GPU, WGPU, Graphics |
XInput | A binding for XInput, a windows input library | MIT | Gamedev, Windows, Input |
zeromq | A binding for ZeroMQ, An open-source universal messaging library | Missing | Networking |
Useful Github Gists in Odin.
Name | Description | Tags |
---|---|---|
GLFW, OpenGL Window Tutorial | GLFW and OpenGL example with very verbose comments and links to documentation for learning | Gamedev, Graphics, GPU, Learning, OpenGL, GLFW |
Metal in Odin | Example of using Metal in Odin Natively | Gamedev, Graphics, GPU, Metal, Darwin, SDL, Shaders |
3D Collision | Simple raylib example of 3d FPS player movement with triangle collision | Gamedev, Raylib, Graphics, Physics, 3D |
Block Allocator | Allocator based on Sebastian Aaltonen's Offset Allocator, for suballocating GPU heaps | Gamedev, GPU, Memory, Allocator |
Octahedral Mapping | Sphere and Hemisphere Octahedral mapping visualization in Odin and Raylib | Gamedev, Graphics, GPU, Raylib |
MicroUI SDL Demo | A demo of MicroUI + SDL2 | Gamedev, UI, ImGui, SDL |
MicroUI Raylib Demo | A demo of MicroUI + Raylib | Gamedev, UI, ImGui, Raylib |
SDL OpenGL Demo | Simple SDL2 + OpenGL demo | Gamedev, Graphics, OpenGL, SDL, 3D |
D3D11 in Odin | Simple D3D11 based on d7's example | Gamedev, Graphics, Windows, SDL, 3D |
Vulkan Example | Vulkan-tutorial example in Odin | Gamedev, Graphics, Vulkan, GLFW, Shaders |
Minimal Metal Window | Minmal Cocoa Window with Metal API | Gamedev, Darwin, Metal, Cocoa, Graphics |
D3D12 Triangle | Single-procedure D3D12 triangle example | Gamedev, Graphics, D3D12, Shaders, SDL |
UUIDV4 | UUID Generator | UID, Cryptography, Webdev |
WASM4 Bindings | WASM-4 Bindings | Webdev, WASM, Graphics |
Text Editor | Simple text editor | Graphics, Tools, Editor, UI, Font |
Odin logger for Raylib | Raylib logging callback to Odin logger | Gamedev, Tools, Utility |
GLFW and Vulkan Boilerplate | Odin, GLFW & Vulkan boilerplate for Drawing a Triangle based on https://vulkan-tutorial.com | Gamedev, Graphics, Vulkan, GLFW, Shaders |
LLDB visualization | Python script for slice, map, and string formatting in LLDB | Debugger, Tools, Utility |
Realtime Collision Detection | Port of some 3d collision procedures from the 'Realtime Collision Detection' book | Gamedev, Physics, Collision |
Open window using Windows API | Minimal example of how to open a window using core:sys/windows |
Windows, Graphics |
Rect Cut | Procedures for cutting up a rect, useful for IMGUI layouting | UI, ImGui |
SDL + sokol_gfx + D3D11 | Minimal D3D11 device and swapchain setup when using SDL with sokol_gfx instead of sokol_app | Gamedev |
List of Odin tutorials, articles, videos and other resources.
Name | Description | Tags |
---|---|---|
Odin Overview β | Official Odin language overview | Example, Article |
Memory Allocation Strategies β | Series about memory allocation by GingerBill | Article |
demo.odin | A demo of basically all odin features | Example |
Introduction to the Odin programming language | Video series about Odin and programming | Youtube, Playlist |
Space Shooter with SDL2 and Odin | Video series about programming a Space Shooter game with SDL2 and Odin | Youtube, Tutorial, Playlist |
Odin Programming Language: An Introduction | Introduction to the Odin Programming Language by Ginger Bill from 2020-11-26 | Youtube, Talk |
Jai vs Odin systems programming languages | Comparison of Jai and Odin (Non-spicy takes!) | Youtube |
Why I Use Odin for Game and Engine Development | Video essay explaining what makes Odin great for game and engine development | Youtube, Gamedev |
Make games using Odin + Raylib β | Series about making a 2D platformer in Odin and Raylib | Youtube, Playlist, Gamedev |
5 Reasons why Odinlang is great for gamedev | Video about what makes odin great for gamedev | Youtube, Gamedev |
Odin + WASM = π | Example of using Odin, WASM and WebGL together. | Example, WASM, Webdev |
Solar Storm Renderer | A deepdive into the rendering techology of the game Solar Storm | Article |
Hot Reload | Hot reload gameplay code. What, why, limitations and examples! | Gamedev, Utility, Article |
Raylib + Odin + WASM | Experiment with using Raylib + Odin on web | Gamedev, Raylib, WASM, Example |
Sokol WASM Playground | Example of Sokol and Odin on web using emscripten | Gamedev, Sokol, WASM, Example |
Odin OpenCV Demo | Odin with OpenCV image processing demo | OpenCV, Demo |
Playing audio files with miniaudio | Play audio files from memory with Odin #load | Miniaudio, Audio, Demo |
Introduction to the Odin Programming Language | Long article about the basics of Odin. Finishes off with some examples of useful core libraries | Article |
Snake game from start to finish | 90 minute video of how to implement a snake game using Raylib | Youtube, Gamedev |
Setup Sublime Text for Odin | Shows how to turn Sublime Text into a powerful Odin development environment, including code completion | Youtube, Utility |
Make a Breakout game from start to finish β | Karl Zylinski shows how to make a breakout clone in Odin+Raylib in 2 hours | Youtube, Tutorial, Gamedev |
Make a Snake game from start to finish β | Beginner tutorial about making a simple snake game in Raylib | Youtube, Tutorial, Gamedev |
Simple Undo/Redo | An article about a grug brained approach to level editor history | Article, Gamedev |
- ThePrimeagen - Odin Creator Ginger Bill Talks Odin
- Developer Voices - Is Odin "Programming done right"? (with Bill Hall)
- Mike Shah & Ginger Bill - Programming Proverbs and the Odin programming language
A linter is built into the compiler, see odin help check
, specifically the -vet-*
and -strict-style
flags.
- [DanielGavin/ols]: Language Server / Editor Support
- also contains a standalone formatter in the
tools/odinfmt
directory
- also contains a standalone formatter in the
- [jtakakura/asdf-odin]: Plugin for the asdf version/package manager
- [laytan/setup-odin]: GitHub action for setting up the compiler
- [Data-Oriented-House/PortableBuildTools]: Portable, simple and fast installer for Visual Studio Build Tools
Open-source software implemented in Odin.
Name | Description | License | Tags |
---|---|---|---|
Spall Web | spall is a profiler library and a web-frontend for exploring your code and digging into potential performance problems | MIT | Performance, Webdev, WASM, WebGL |
Todool | A To-Do Editor with different modes, advanced movement & powerful commands. Track your development cycle with ease | MIT | Utility, Tools |
HTMX Example TODO List App | An implementation of Todo MVC using my in development Odin web stack. | None | Webdev, Tools |
Dungeon of Quake | Retro FPS game inspired by Quake | MIT or Public Domain | Raylib, Gamedev, 3D, Shaders |
LD55 - The Last Summoner | LD55 entry made with Odin and Raylib. You are the last summoner alive in an apocalypse and you have to survivor using your summons! | Gamedev, Raylib | |
Asterboids | Rogue-like space shooter. Made with Odin + Raylib | MIT | Gamedev, Raylib, 2D |
Voxel Game | A WIP voxel game engine inspired by minecraft | None | Gamedev, Raylib, 3D |
Solitare β | Solitare clone using Odin and Raylib | None | Gamedev, 2D, Raylib, Clone |
Tetris | Simple tetris clone | None | Gamedev, 2D, Raylib, Clone |
My Pong | Pong clone in Odin and Raylib | None | Gamedev, 2D, Raylib, Clone |
Simple Neural Network | A little experiment with machine learning based on 3Blue1Brown's series on basic deep learning | None | ML |
Lasers | A small 2d laser simulation with SDL2 to learn Odin | None | Gamedev, 2D, SDL |
H264 Decoding | A minimal reference version of H264 video decoding with D3D11 and Windows Media Foundation API | None | Example |
Spurtle | Wordle clone but with 6 letters | GPL-3.0 | Raylib, Gamedev, Clone |
Atlas Builder | Builds an atlas for use in Odin 2D video games. Supports aseprite files | MIT | Gamedev, Tools |
A list of interesting software built in Odin. It's not open-source, but it can still be useful or inspiring.
Name | Description | Tags |
---|---|---|
EmberGen | Real-time smoke, fire and explosion simulations for film and games | Gamedev, GPU, Graphics, Physics |
GeoGen | Real-time Landscape, terrain and planet generator app | Gamedev, GPU, Graphics |
Solar Storm | Sci-fi artillery game with local multiplayer (NOTE: the source code is available if you buy the game on itch.io) | Gamedev, GPU, Physics, 2D |
CAT & ONION | A whimsical adventure game about a cat (NOTE: the source code is available if you buy the game on itch.io) | Gamedev, 2D |
entry00 | A simple 2d game made in 8 hours | Gamedev, 2D |
Name | Description | License |
---|---|---|
OLS β | Odin language server | MIT |
JetBrains IDEs | Odin support with static code analysis for IntelliJ and others | MIT |
Sublime Text | Odin syntax definition for Sublime Text | MIT |
GNU/Emacs | Odin editing mode for GNU/Emacs | None |
Flycheck | GNU/Emacs flycheck support for Odin | Unlicense |
4coder | 4coder customization layer for odin | None |
Vim | Odin highlighting for Vim | MIT |
Tree Sitter | Odin Tree-sitter grammar | MIT |
Zed | Zed Editor plugin integrating OLS and Tree-sitter | MIT |
A list of outdated/deprecated/archived libraries, included for the sake of completeness and in case someone wants to update it.
Link | Reason |
---|---|
https://github.com/Breush/odin-binding-generator | Lost interest |
https://github.com/zhibog/odin-unittest | check out core:testing |
https://github.com/dotbmp/odin-json | check out core:encoding/json |
https://github.com/vassvik/odin-gl | check out vendor:openGL |
https://github.com/JoshuaManton/odin-sdl2 | check out vendor:sdl2 |
https://github.com/kevinw/raylib-odin | check out vendor:raylib |
https://github.com/librg/odin-enet | check out vendor:ENet |
https://github.com/vassvik/odin-stb | check out vendor:stb |
https://github.com/sumofat/odin_cgltf | check out vendor:cgltf |
https://github.com/atkurtul/odinvk | check out vendor:vulkan |
https://github.com/SrMordred/odin-lua | check out vendor:lua |
https://github.com/mp768/odin-lua-bindings | check out vendor:lua |
https://github.com/laytan/odin-pattern | check out core:text/match |
Please submit a PR to add any interesting/useful Odin projects! Make sure to properly link license and add useful tags for easier searching.