Skip to content

A visual novel engine built for portability between game engines.

Notifications You must be signed in to change notification settings

Bagoum/suzunoya

Repository files navigation

About

Suzunoya is a visual novel engine built in C#, designed to be portable between game engines. It is free (as in free speech) software. The source code is on Github: https://github.com/Bagoum/suzunoya

The engine name may be abbreviated as szy.

Each supported game engine (such as Unity) has its own adapter that maps the objects in the core engine to engine-specific game-objects. SuzunoyaUnity (https://github.com/Bagoum/suzunoya-unity) is the only one under current development.

All code is written in C#9 and compiled against Standard 2.1 for compatibility with Unity 2021.2. This version of Unity allows all C#8 features.

Subprojects

BagoumLib

BagoumLib is a small class library with some convenient functionality, including:

  • Easing, lerping, and tweening (see BagoumLib.Transitions)
  • Convenient data structures such as compacting arrays and coroutine iterators (see BagoumLib.DataStructures)
  • Low-garbage event classes (see BagoumLib.Events)
  • Beat detection algorithms for video games (see BagoumLib.SignalProcessing)
  • Utilities for type unification, including type unification of an entire program with generics, return type disambiguation, implicit casting, and method overloads (see BagoumLib.Unification)
    • This doesn't yet support type constraints, such as T : IMyInterface
  • Helpers for expression trees, including functionality to print expressions to source code (see BagoumLib.Expressions.ExpressionPrinter)
    • I do not believe there are any other expression-to-source implementations for C#. There are many projects that can print expressions to stuff that looks like C# code, but they can't create code that you can actually compile.

You can compile it to a DLL and use it separately if you like. Note that the task code in BagoumLib uses the custom ICancellee interface, which is not thread-safe in the way CancellationToken is.

Mizuhashi

Mizuhashi is a lightweight combinatorial parser based on FParsec. I wrote this because Unity is really spotty with F# support and none of the C# FParsec clones I could find were up to my taste. It supports tokenized parsing. There is also a mostly-functional Markdown parser in Mizuhashi.Parsers.MarkdownParser.

Consumes BagoumLib.

Suzunoya

Suzunoya is an engine-agnostic visual novel library. It also contains code for state management in ADV games.

Consumes BagoumLib and Mizuhashi.

SuzunoyaUnity

SuzunoyaUnity (separate repository) is the Suzunoya adapter for the Unity game engine.

Consumes BagoumLib, Mizuhashi, and Suzunoya.

BeatDetectorApp

BeatDetectorApp is an Avalonia desktop application for testing and debugging the beat detection algorithms in BagoumLib.

Licensing

The source code (all subprojects in this repository) is licensed under MIT. See the Suzunoya.LICENSE file for details.

SuzunoyaUnity has a separate license in its repository, but it is also MIT.

About

A visual novel engine built for portability between game engines.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages