Compiler Updates #
Monthly Release including a few new language features and LLVM 17.0.1 support for windows.
or_break
or_continue
#relative [^]T
(relative multi-pointers)- Replaced
#relative []T
(relative slices) - This data type might be removed in the future
- Replaced
Socials #
We’ll split up the different social platforms this time around.
-
YouTube
-
Rickard Andersson (
gonz
on Discord) has been uploading a video series about Odin! -
karl_zylinski is working on their cat game, uploading videos and streaming ocassionally.
-
-
Twitter
- Charlie has been posting lot’s of content on discord but some of his showcase material lands only on his twitter.
-
Blogs
- karl_zylinski has recently posted a blog on Hot Reload Gameplay Code in Odin!
Games #
Astro Drift is a short roguelike rocket-drifting shooter. Destroy the asteroids to gain score!
Editors #
Sentient Coffee has added support for the focus editor. Check out the discord link / explanation.
New Bindings / Ports #
- Fractal-Buddhabrot Port of Fractal Buddhabrot -
JoaCarvalho
OLD - pegasus Reimplemented golangs
gpeg
-dvrd
- Moog-Ladder-Filter Moog Ladder Filter -
JoaoCarvalho
- nbio non-blocking IO -
laytan
- Piece-Table Piece-Table in Odin -
xDahl
New / Updated Packages #
I’ll try posting the comments the authors posted for their packages.
Odin Dear ImGui - L4
#
odin-imgui Generated Dear ImGui bindings using dear_bindings
- Generates bindings for both the
master
anddocking
ImGui branches, usingdear_bindings
- Contains bindings for most of the Dear ImGui implementations
- All backends which exist in
vendor:
have bindings - These include:
vulkan, sdl2, opengl3, sdlrenderer2, glfw, dx11, dx12, win32, osx, metal
- Compiles bindings as well as any wanted backends
- Tested on Windows, Linux, and Mac
- Includes several examples which can be used as a reference
GLFW + OpenGL, SDL2 + D3D11, SDL2 + Metal, SDL2 + OpenGL, SDL2 + SDL2 Renderer, SDL2 + Vulkan
LBP-Serialization - jakubtomsu (Jacob)
#
LBP-Serialization “I made my LBP serialization code open-source, it’s still kinda experimental though.”
Here are the benefits of this method:
- single procedure for both serialization and deserialization
- full backwards compatibility is extremely easy
- good control over the exact data layout if necessary
- no RTTI
This is how easy it is to serialize complex datastructures:
Foo :: struct {
a: i32,
b: f32,
name: string,
}
Bar :: struct {
foos: [dynamic]Foo,
data: map[i32]bit_set[0 ..< 8],
}
serialize_foo :: proc(s: ^Serializer, foo: ^Foo, loc := #caller_location) -> bool {
serialize(s, &foo.a, loc) or_return
serialize(s, &foo.b, loc) or_return
serialize(s, &foo.name, loc) or_return
return true
}
serialize_bar :: proc(s: ^Serializer, bar: ^Bar, loc := #caller_location) -> bool {
serialize(s, &bar.foos) or_return
serialize(s, &bar.data) or_return
return true
}
Getopts - Pix
#
Getopts A Odin command line argument parser, loosely based on the getopts_long
.
opts := init_opts()
defer deinit_opts(&opts)
{ // Scoping for easy scope of using.
using optarg_opt
add_arg(&opts, "flag", .NO_ARGUMENT)
add_arg(&opts, "opt-argument", .OPTIONAL_ARGUMENT)
add_arg(&opts, "required", .REQUIRED_ARGUMENT)
add_arg(&opts, "h", .NO_ARGUMENT, "help") // Alternative name // long_opt
add_arg(&opts, "m", .OPTIONAL_ARGUMENT, "my_flag_here")
}
getopt_long(os.args, &opts)
// Parse opts:
for opt in opts.opts {
if ! opt.set do continue // allows to skip non set options.
switch opt.name { // name will always be set, don't have to check both
case "flag":
// Something
case "required":
// Something else
case:
// default? Usage!
}
}
Categories #
This month we’ll do categories again.
- Game Development
- Graphics
- Tools & UI
- Miscellaneous
Game Development #
Took some time to recreate the Playdate Hello World from the official C_API examples - Colin Bellino
Writing areas to underlying grid and handling edge-cases - _brian
Made a lil spline editor that uses cubic bézier curves :3 - karl_zylinski
Odin-ifing the Playdate bindings, including documentation! - Mungo_
goofing around with postfx in my game/engine. Vignette + scuffed pixelator - The Lua Whisperer
Gonna be transferring my game over to Odin, I really just need a refreshing language, and after using it, felt pretty darn great to write in. - Mezo☆
Hell, GUI is a pain, got it to be somewhat pleasant to work with now... - Francis_the_cat
Latest cat game developments. Lots of new graphics and the interaction system is quite useful now.
Super basic physics demo based off this repo - master jonsie
Before vs after comparison of new art style! The new style uses only 8 colors 🎨 - karl_zylinski
Graphics #
Been wanting to write a point cloud renderer... but this isn't that, it's just GL_POINTS. - Charlie
Odin running on the Quest 2 - Charlie Github
finally got object parenting working, and playing around with some environment lighting - Akuspel
Some environment lighting and reflections that don't look completely horrible - Akuspel
Made some good progress porting/rewriting my Game in Odin. Here is a diffuse lighting test. - Moritz Falk
Shadow Maps - Jesse
Tools & UI #
Spent today working on writing my own UI system - _brian
Line Input project: focused on making the input responsive, smooth and appealing - Volatus
My project for the Wheel Reinvention Jam is entirely in Odin, and it's been very delightful - Stvff
Miscellaneous #
Working on implementing UEFI in Odin! & it's open source right now for you to try! - slendi
giteaadded GOP (Graphics Output Protocol) support to UEFI implementation - slendi