First Swim

By Martin Fouilleul — 2023-09-16

Here’s a short post for a big annoucement: we’re opening the Orca codebase!

We’ve been at work for the past few months making sure you can build our early MVP and navigate the code without too much trouble. I want to extend a big thank you to the team of early contributors who made it possible: Ben Visness, Ilia Demianenko, and Reuben Dunnington.

We’re also releasing just over a week before the 2023 Wheel Reinvention Jam, so if it fits your jam project, we’d love if you tried Orca out and gave us feedback! If you’re interested in contributing to Orca itself, we think the jam is also an excellent way to familiarize with the codebase.

Without further ado, you can now access the Orca code repository on Handmade Networks Gitea. But stick around for a few notes on this release! You can also read more about the goals of the project here, and have an overview of Orca’s architecture here.

Features and limitations

As stated, this is an early MVP, so it has an accordingly small set of features, and a probably bigger set of bugs! But here’s what you can do in an Orca app right now:

  • Receive mouse and keyboard input.
  • Draw using a GPU accelerated 2D vector graphics API, including path fill/strokes, images, and text rendering.
  • Draw 2D/3D graphics with OpenGL ES 3.1 (minus a few calls).
  • Build user interfaces using our UI API and default widgets.
  • Read and write files using a capability-based API.

Limitations can be inferred from what’s not in that list, but here are some notable ones that can be a show-stopper for your jam projects:

  • No networking. If your project involves fetching data from the internet, you’ll have to fake it with files.
  • No multi-threading or simd support. Don’t hope to get too fancy with particles.
  • No file system API: although you can read and write file, you current can’t copy, move, rename or delete files, or browse or watch directories. So if your project is a file manager you’re probably out of luck for now!
  • We have known issues on some Intel integrated GPUs making the vector graphics API unusable. Make sure you build and run the sample apps before jumping in!

Where to begin

For platform and language requirements, as well as installation instructions, see the Readme at the root of the repo.

The Quick Start Guide will guide you through a simple application and explain the basics of Orca apps.

The samples folder contains a few examples showcasing various Orca APIs.

The API Cheatsheets provide a list of useful Orca functions grouped by topic.

You can get help or give feedback in the #orca channel of the Handmade Network Discord.

And to receive all the latests updates about Orca, don’t forget to subscribe to our newsletter below this post!

See you soon~