A visual novel engine that draws inspiration from RenPy and is meant to be a more performant replacement with feature parity.

Overview

VN Engine

A visual novel engine that draws inspiration from RenPy and is meant to be a more performant replacement with feature parity.

The engine is now in early stages of development. This README will change to reflect updates to this situation.

This repository contains a proof of concept. Cloning it and running cargo run in the terminal (assuming you have cargo and rust installed) will execute the example game in the assets folder. As this proof of concept evolves the example will be developed further until it is the equivalent of a production ready RenPy project.

Comments
  • Character Options

    Character Options

    As a game developer, I want to be able to specify character options in the script file, so that I can more clearly differentiate characters.

    Acceptance Criteria

    • It's done when there is a way to specify character options in the script
    • It's done when you can specify a color for the character's name in the script
    • It's done when you can use the character options when writing a line in the script
    enhancement 
    opened by alpanagi 0
  • State history

    State history

    As a user, I want to be able to show the UI as it was before a script command was executed, so that I can have a rollback feature in my game.

    Acceptance Criteria

    • It's done when scrolling the mouse up to undo a text command shows the previous text message or nothing depending on the previous state
    • It's done when scrolling the mouse up to undo a display background command shows the previous background or no background depending on previous state

    Technical Details

    It would be better at this point if commands, tokens, and parsing are split into their own domain module and they are interfaced through a trait. Also, the events should be replaced with a global state event that is parsed by all plugins (background and text at this point). This will help implement this feature but also later features that combine a set of commands into a single state change.

    enhancement 
    opened by alpanagi 0
  • Background image support

    Background image support

    As a user, I want to be able to display backgrounds in my visual novel, to better tell the game's story.

    Acceptance Criteria

    • It's done when there is a script command that allows for the loading of a background image.
    enhancement 
    opened by alpanagi 0
  • Add optional speaker names to script

    Add optional speaker names to script

    As a user, I want to have the ability to optionally show the name of the speaker, so that I can better display the story

    Acceptance Criteria

    • It's done when the parser can create text commands with an optional speaker
    • It's done when the speaker is displayed during play if they exist

    Technical Info

    The structure for a speaker in script.vn will be:

    "Speaker" "Text the speaker says"
    

    In order to differentiate between text with and without speaker, the end of line symbol \n will be used as a separator between text commands. This ticket will for this case introduce the syntax and token parsers on top of the simple parser that now exists.

    enhancement 
    opened by alpanagi 0
  • Parse script.vn

    Parse script.vn

    As a developer, I want to parse the file script.vn in the assets folder, so that I can display its contents in the game.

    Acceptance criteria

    • It's done when the file script.vn in the assets folder is loaded into memory.
    • It's done when the in-memory contents loaded from script.vn are translated into an appropriate command struct that can later be used by the engine.
    enhancement 
    opened by alpanagi 0
  • Text Visibility

    Text Visibility

    As a maintainer, I want to show/hide the UI for the text interface, so that I can implement these features in the scripting language.

    Acceptance Criteria

    It's done when the text in the screen structure is an optional struct that contains all information about speaker and text.

    • It's done when the Text UI Plugin shows/hides the text, speaker, and text_background based on the optional struct in the Screen struct.
    enhancement 
    opened by alpanagi 0
  • Screen Structure

    Screen Structure

    As a maintainer, I want to pass the whole screen struct to UI plugins so that I have more flexibility on displaying UI components based on the screen.

    Acceptance Criteria

    • It's done when there is a single message send from the director that sends the current screen to all UI components.
    enhancement 
    opened by alpanagi 0
  • Parsing Error Location

    Parsing Error Location

    As a game developer, I want to be able to see where the syntax errors happen, so I can more effectively fix errors in my scripts.

    Acceptance Criteria

    • It's done when parsing errors display the location of the error as the beginning of the corresponding token.
    • It's done when the error is displayed clearly before exiting the system and without the need for panics.

    Technical Details

    As of now the location associated with a token is the location where the parsing of the token ends. It is better to store the location at the point that we push the first item in the stack so that it is easier for the user to understand the error.

    enhancement 
    opened by alpanagi 0
Owner
Alexandros Panagiotakis
Software engineer by profession, hobby and philosophy. Functional programming advocate. In a relationship with Haskell.
Alexandros Panagiotakis
This tool allows you to open one or more notebooks in Visual Studio and go hog wild exploring your systems in Bevy.

Bevyrly Bevy is rly useful, but requires some hygiene! Pronounced as /ˈbɛvə(ɹ)li/, derives from Old English, combining befer ("beaver") and leah ("cle

null 4 Feb 28, 2024
A novel path-based approach to UI built on top of existing Bevy features

Bevy Lunex A novel path-based approach to UI built on top of existing Bevy features. A recreation of Cyberpunk 2077 menu in Bevy using Lunex Table of

Bytestring 4 Jun 29, 2023
A feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor.

A feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor.

rg3d engine 5.4k Jan 4, 2023
a prototype crate for creating modular and performant 3D CPU particle systems, inspired by Unity's Shuriken Particle System.

bevy_prototype_particles This is a prototype crate for creating modular and performant 3D CPU particle systems, inspired by Unity's Shuriken Particle

James Liu 28 Sep 12, 2022
A performant, small and versatile entity component system written in Rust

A performant, zero-dependency ECS library with a nice API written in Rust. Usage # Cargo.toml [dependecies] kiwi-ecs = "1.3" // lib.rs use kiwi_ecs::

Jonas Everaert 9 Nov 18, 2022
Visual Pathfinding running in the browser!

wasm_party Here is the code I made while learning to use WebAssembly. It runs and visualizes a pathfinding algorithm in the browser. Run online Click

Ask Sødal 3 Dec 15, 2022
Rust-based replacement for the default Minecraft renderer

wgpu-mc ?? A blazing fast alternative renderer for Minecraft Intro WebGPU is a new web specification designed to provide modern graphics and compute c

Birb 1 Jun 28, 2022
🍂 A Rust-based simulated DOM (browser-independent replacement for web_sys)

DOM in Rust without a browser Hello and welcome. This library provides server-side or browserless simulation of a DOM. Example Usage use std::sync::Ar

null 45 Dec 13, 2022
Minecraft-esque voxel engine prototype made with the bevy game engine. Pending bevy 0.6 release to undergo a full rewrite.

vx_bevy A voxel engine prototype made using the Bevy game engine. Goals and features Very basic worldgen Animated chunk loading (ala cube world) Optim

Lucas Arriesse 125 Dec 31, 2022
An extension to the bevy_ecs_tilemap, allowing for configurable tilesets, auto tiling, and more

bevy_ecs_tilemap_tileset A mouthful, I know. Working on a better name. An extension to the wonderful bevy_ecs_tilemap crate for Bevy, allowing for con

null 40 Dec 12, 2022
A tilemap rendering crate for bevy which is more ECS friendly.

bevy_ecs_tilemap A tilemap rendering plugin for bevy which is more ECS friendly by having an entity per tile. Features A tile per entity Fast renderin

John 414 Dec 30, 2022
Just when you thought Bevy couldn't get more ergonomic, Bvy shows up to change the game.

Just when you thought Bevy couldn't get more ergonomic, Bvy shows up to change the game. Is this a joke? You decide. Does it work? You can bet your As

Carter Anderson 40 Oct 28, 2022
RTS game/engine in Rust and WebGPU

What is this? A real time strategy game/engine written with Rust and WebGPU. Eventually it will be able to run in a web browser thanks to WebGPU. This

Thomas SIMON 258 Dec 25, 2022
A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music.

rustris A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music. (C) 2020 Ben Cantrick. This code is distri

Ben Cantrick 17 Aug 18, 2022
Rust Game engine 3D (and 2D)

A feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor.

rg3d engine 5.4k Jan 9, 2023
Engine / framework for creating highly customizable and user modable action RPG's

Rust RPG Toolkit PLEASE NOTE: this in early and very heavy development. API is subject to constant change, as it has newly transitioned from being a g

Ole A. Sjo Fasting 58 Dec 5, 2022
2-player game made with Rust and "ggez" engine, based on "Conway's Game of Life"

fight-for-your-life A 2-player game based on the "Conway's Game of Life", made with Rust and the game engine "ggez". Create shapes on the grid that wi

Petros 3 Oct 25, 2021
2 and 3-dimensional rigid body physics engine for Rust.

Users guide | 2D Documentation | 3D Documentation | Forum ⚠️ **This crate is now passively-maintained. It is being superseded by the Rapier project.**

dimforge 1.6k Jan 6, 2023
game engine built in rust, using wgpu and probably other stuff too

horizon game engine engine for devpty games, made in 99.9% rust and 0.1% shell. this is our main project currently. the engine will be used for most i

DEVPTY 2 Apr 12, 2022