Library / SDK
Siv3D/OpenSiv3D avatar
Siv3D/OpenSiv3D

Siv3D is a C++20 creative coding framework that ships its own math and audio stacks

C++20 framework for creative coding 🎮🎨🎹 / Cross-platform support (Windows, macOS, Linux, and the Web)

1,193 stars159 forksC++MIT

At a glance

What is it?
Siv3D is a C++20 framework for creative coding, with 2D and 3D graphics, shaders, audio, input, networking, an integrated Box2D physics engine and a broad standard library of geometry and text types. Applications run on Windows, macOS, Linux and the Web, and the last push was on 2026-08-30.
Who is it for?
Siv3D suits a developer who wants to make a game, a visualiser or a media art piece in C++ without assembling an engine from parts, and it is the wrong tool if you need a small dependency footprint or a mature asset pipeline, because the framework carries its own math, audio, image, text and physics implementations.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 54 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Creative coding, and the scale of the feature list

Siv3D, formerly known as OpenSiv3D, is a C++20 framework for creative coding, covering 2D and 3D games, media art, visualizers and simulators, and its applications run on Windows, macOS, Linux and the Web.

The feature list is long enough to be worth reading as a statement of scope. Graphics covers advanced 2D graphics, basic 3D graphics with Wavefront OBJ and primitive shapes, custom vertex and pixel shaders in HLSL and GLSL, text rendering with Bitmap, SDF and MSDF methods, image formats from PNG and JPEG through GIF, TGA, PPM, WebP and TIFF, Unicode 15.1 emojis with more than 7,000 icons, image processing and video rendering.

Audio covers WAVE, MP3, AAC, OggVorbis, Opus, MIDI, FLAC, WMA and AIFF, with adjustable volume, pan, play speed and pitch, file streaming for WAVE, MP3 and OggVorbis, fades, looping, mixing busses, filters for low pass, high pass, echo and reverb, FFT, SoundFont rendering and text to speech.

Input covers mouse, keyboard, gamepad, webcam, microphone, Joy-Con and Pro Controller, XInput, digital drawing tablet and Leap Motion. The Joy-Con entry is the tell, since that is a specific console's controller rather than a generic gamepad, and it tells you the framework is used for things beyond a standard game.

The last line of the list is the one that marks the generation. Scripting with AngelScript is there, and so is an OpenAI API integration covering Chat, Vision, Image, Speech and Embedding. A framework with a built-in scripting language and a built-in model API is designed for people who want to prototype quickly rather than for people assembling a large engine.

The repository topics say the same thing: cpp20, game-engine, game-developement, gamedev and cross-platform.

The standard library is the framework's real product

The Math section of the feature list is longer than any other, and it tells you what kind of framework this is.

There are vector and matrix classes named Point, Float2, Vec2, Float3, Vec3, Float4, Vec4, Mat3x2, Mat3x3, Mat4x4, SIMD_Float4 and Quaternion. The 2D shape classes are Line, Circle, Ellipse, Rect, RectF, Triangle, Quad, RoundRect, Polygon, MultiPolygon, LineString, Spline2D, Bezier2 and Bezier3, and the 3D ones are Plane, InfinitePlane, Sphere, Box, OrientedBox, Ray, Line3D, Triangle3D, ViewFrustum, Disc, Cylinder and Cone.

Then the operations: 2D and 3D shape intersection, 2D and 3D geometry processing, rectangle packing, planar subdivisions, linear and gamma color space, pseudo random number generators, interpolation, easing and smoothing, Perlin noise, a math parser and a navigation mesh.

And the arithmetic types: HalfFloat, int128, uint128, BigInt and BigFloat.

That is a geometry and numerics library built for people who are actually doing the work. A programmer writing a 2D game needs a vector class, a rectangle, a circle, a polygon, intersection tests, packing and colour conversion, and a framework that provides all of them with consistent naming and a single header is saving you a dependency tree and a set of API mismatches.

The string and text section is in the same spirit. An advanced String class and StringView, Unicode conversion, regular expressions, {fmt} style text formatting, text reader and writer classes, and readers and writers for CSV, INI, JSON, XML and TOML, with JSON validation. A creative coding framework that ships its own JSON parser is unusual, and it is what makes a single-header include viable.

The Misc section shows the rest: a basic GUI with button, slider, radio buttons, checkbox, text box, color picker, list box, menu bar and table, an integrated Box2D physics engine, advanced array and 2D array classes, Kd-tree, disjoint set, asynchronous asset file streaming, data compression with zlib and Zstandard, transitions between scenes, a directory watcher, a QR code reader and writer, GeoJSON, date and time, a stopwatch, logging, serialization, UUID, child process, clipboard, power status, and scripting.

The hello world shows how a Siv3D program is shaped

The example is a single file with a Main function, and it reads more like a script than like an application.

cpp
# include <Siv3D.hpp>

void Main()
{
	Scene::SetBackground(ColorF{ 0.6, 0.8, 0.7 });

	const Texture texture{ U"example/windmill.png" };

	const Texture emoji{ U"🦖"_emoji };

	const Font font{ FontMethod::MSDF, 48, Typeface::Bold };

	const Font emojiFont{ 48, Typeface::ColorEmoji };
	font.addFallback(emojiFont);

There is no main() in the usual sense and no window setup, because the framework owns the window and the run loop. Main is where the program happens, and the program is the body of Main. The global namespace is used freely, which is a deliberate choice for a framework aimed at quick work, and it is the main thing a C++ purist would object to.

Two details in the snippet show the texture and font model. A Texture is constructed from a file path, and the U prefix marks it as a Unicode string literal, so the same code compiles with the source file saved as UTF-8. The emoji texture uses a user-defined literal, the _emoji suffix on the string, so the emoji comes from a font rather than from an image file.

The font construction shows the two-part design. The main font is created with the MSDF method at size 48 in bold, and a second font for colour emoji is created separately and then added to the first as a fallback with addFallback. So a font is not a single object but a primary face plus a chain of fallbacks, which is how the same text can render Latin with one typeface and an emoji with another.

The examples gallery in the README is headed with a Hello, Siv3D! entry and a screenshot of it, and the repository has a Test/ directory alongside the platform folders.

Platform support is real, with one gap

The installation section gives a per-platform requirements table, and the level of detail is the useful part.

Windows needs Windows 10 or 11 64-bit, Microsoft Visual C++ 2022 17.10, the Windows 10 SDK and an Intel or AMD CPU, and the SDK is downloaded. macOS needs Ventura, Sonoma or Sequoia, Xcode 14.3 or newer, and OpenGL 4.1 compatible hardware, with the SDK downloaded. Linux is the one that is compiled rather than downloaded, needing Ubuntu 20.04 LTS or 22.04 LTS, GCC 9.3.0 with Boost 1.71.0 or GCC 11.2 with Boost 1.74.0, and OpenGL 4.1 compatible hardware.

The Boost requirement on Linux is a real constraint. It is the standard library that ships with a standard distribution, which saves you compiling it, and the GCC 11.2 pairing with Boost 1.74.0 matches what Ubuntu 22.04 provides. The build instruction is a document on the site rather than a command in the README, so the exact steps live outside the repository.

The macOS gap is stated in a footnote. Native support for Apple Silicon is planned for Siv3D v0.8, and currently Siv3D can be built and run using Rosetta emulation. So on an Apple Silicon Mac, an Intel build runs under translation, which works but is not what you would want for a graphics framework.

The Web target is worth noting because it is unusual for a framework with this much native surface. There is a Web/ directory at the top of the repository next to WindowsDesktop/, Linux/ and macOS/, and the features are marked with an asterisk where they are limited to specific platforms, which covers the hardware-dependent input devices and the text to speech feature.

The whole framework is MIT licensed, with the LICENSE file at the top of the tree, and the author is listed on GitHub Sponsors.

v0.8 is being written in a different repository

The next major update section is short and it changes how you should think about the codebase in front of you.

The next major update, Siv3D v0.8, is under development in the following repository, which is github.com/Siv3D/siv8, a separate project from the one the README belongs to.

That is a significant signal. It means the current tree is the 0.6 line, which the release notes date as v0.6.16, released 7 April 2025, and the next generation is being built elsewhere. The last push to this repository was on 2026-08-30, so the 0.6 line is still receiving work, but the direction of the project is in the siv8 repository.

For a user, the practical consequence is that a project started today on the current line may face a migration to v0.8, and the API is likely to change substantially between a 0.x release and the 0.8 major version. The features list in the README, which is the closest thing to an API overview, is a description of what exists today, not of what v0.8 will look like.

The repository layout supports the idea of a framework with many moving parts. There are per-platform directories, WindowsDesktop/, macOS/, Linux/ and Web/, a Dependencies/ directory, the Siv3D/ directory for the library itself, a Test/ directory, and documentation at the top level with ARCHITECTURE.md and ThirdParty.md, the latter being the open source software used in Siv3D. The A in ARCHITECTURE.md suggests a document that explains how the pieces fit together, which for a framework of this size is where a new contributor should start.

There is also a CITATION.cff file, which is the metadata format for citing a project, and the documentation is published in both English and Japanese, with the getting started guides at siv3d.github.io in en-us and ja-jp.

Editorial conclusion

Siv3D suits a developer who wants to make a game, a visualiser or a media art piece in C++ without assembling an engine from parts, and it is the wrong tool if you need a small dependency footprint or a mature asset pipeline, because the framework carries its own math, audio, image, text and physics implementations. Before starting, check the platform requirements table, since macOS builds currently run under Rosetta rather than natively, and read the release notes for v0.6.16 because the next major version is being developed in a separate repository. Verify first that the features marked with an asterisk are available on your target platform, since the README lists those as limited to specific platforms.

Frequently asked questions

What is Siv3D?

Siv3D, formerly OpenSiv3D, is a C++20 framework for creative coding, covering 2D and 3D games, media art, visualizers and simulators. Applications run on Windows, macOS, Linux and the Web, and the project is MIT licensed.

What does a Siv3D program look like?

A single file including Siv3D.hpp and defining a Main function, with the framework owning the window and the run loop. The example creates a background colour, a Texture from an image file, a Texture from an emoji using the _emoji literal, and a Font with the MSDF method plus a colour emoji font added as a fallback.

What are the requirements to build Siv3D on Linux?

Ubuntu 20.04 LTS or 22.04 LTS, GCC 9.3.0 with Boost 1.71.0 or GCC 11.2 with Boost 1.74.0, and OpenGL 4.1 compatible hardware. Windows needs Windows 10 or 11 64-bit with Visual C++ 2022 17.10, and macOS needs Ventura, Sonoma or Sequoia with Xcode 14.3 or newer.

Does Siv3D support Apple Silicon natively?

Not yet. The README states that native support for Apple Silicon is planned for Siv3D v0.8, and that currently Siv3D can be built and run using Rosetta emulation.

Where is the next version of Siv3D being developed?

The next major update, Siv3D v0.8, is under development in a separate repository at github.com/Siv3D/siv8. The current line is v0.6.16, released on 7 April 2025, with the last push to this repository on 2026-08-30.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. Siv3D/OpenSiv3D on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/siv3d-opensiv3d.svg)](https://hysenlabs.com/projects/siv3d-opensiv3d)

Was this useful?