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

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


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 #


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 and docking ImGui branches, using dear_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

gitea

added GOP (Graphics Output Protocol) support to UEFI implementation - slendi