3.1 KiB
Ona
Table of Contents
Overview
Ona is the Catalan word for "wave".
Ona is also a straightforward game engine with the aim of staying reasonably lightweight through a modular architecture.
Goals
-
Fully-featured two-dimensional raster and vector rendering capabilities.
-
Support major computer gaming ecosystems; Namely Microsoft Windows, SteamOS, Unix-like systems, and the web.
-
Minimize external dependencies.
-
Provide utilities for handling rendering but otherwise leave the higher-level game logic and data structuring to the programmer.
-
Enforce an architecture that makes non-interdependent logic trivially parallelizable.
Technical Details
Requirements
Ona currently depends the following third-party tools to build it:
- Platform support for SDL2 at version 2.0.20 installed via the standard shared binary format redistributable.
- Zig compiler toolchain.
As the project evolves, dependencies on libraries external to the project codebase will be minimized or removed outright to meet the goals of the project as closely as possible.
Building
Running the zig build
command will build the everything. To learn how to consume the project as a library, see the packaging section.
For simple experimentation without creating a standalone Zig project, new demos may be freely created within the src/demos
folder; The build script will automatically detect them and zig build demos
step will automatically (re)build it along with everything else.
The unit testing suite for the engine modules may be built and ran via zig build tests
.
Packaging
To reduce the amount of setup work, a project template is provided that will open a window and show the default texture on the middle of the screen. If you decide to use this project, the steps below can be skipped.
- Create a new Zig project if you have not already.
- Create a
build.zig.zon
accompanying yourbuild.zig
if you do not already have one. - Your
build.zig.zon
should, at minimum, contain the following dependency listed in the dependencies section:
.{
.dependencies = .{
.ona = .{ .path = "path/to/ona/repo" },
},
}
- Add a package declaration for Ona to your
build.zig
and add the relevant modules to your application.
const ona_dependency = b.dependency("ona", .{
.target = target,
.optimize = optimize,
});
const app = b.addExecutable(.{
.name = "My Ona App",
.target = target,
.optimize = optimize,
.root_source_file = b.path("src/main.zig"),
});
app.root_module.addImport("ona", ona_dependency.module("ona"));
app.root_module.addImport("coral", ona_dependency.module("coral"));
b.installArtifact(app);
- Create a
main.zig
containing a valid Ona app declaration. - Run
zig build
to build your new game application.