Git Product home page Git Product logo

visualnovelkit's Introduction

Logo Rakugo Game Template

MIT License Join the Discord channel

Inspired by the GGT of Crystal-bit and the GGT of Maaack. This Godot's project aiming to provide a way to make games easily.

Feature

  • Main Menu with Play, Options, Credits and Exit buttons
  • Options Menu to set audio, resolutions, and inputs
  • Loading Screen between each loads
  • Transitions between each scenes
  • Game Template Scene with a Pause Menu and a End Menu (Win/Loose)
  • Pause Menu with Resume, Restart, Options, Main Menu, and Exit Buttons
  • End Menu with Restart, Main Menu and Exit Buttons
  • Scene Loader use it to load and change scene easily
  • UI Sounds Manager handle the UI sounds in one place

Screenshot

Installation

If you want to create a new project with it

  1. Download the last release
  2. Unzip the archive
  3. Import the project from the Godot Project Manager

If you have already a project

  1. Download the last release
  2. Unzip the archive
  3. Copy the addons/RakugoGameTemplate folder in your project folder
  4. In the scenes folder, copy what you are interested in
  5. Enable the plugin in the Project Settings (Plugins tab)
  6. Reload the project
  7. Eventualy set some values in the ProjectSettings (see bellow)

What do you need to know

Project Settings

In your Project Settings, enable "Advanced Settings". In Application/Addons/RakugoGameTemplate you can set some values.

  • Loading Scene Path is the path to the Loading Scene of your project. It is used by the SceneLoader when you change scene
  • Main Menu Path is the path to the Main Menu scene of your project. It is used when you return to the Main Menu from the Pause Menu
  • First Game Scene Path is the path to the First Game Scene of your project. It is used when you click on the play button in the Main Menu

Autoloads

When you enabled the plugin it will add some autoloads

  • SceneLoader you can use it to load scene with the method change_scene(path_tscn:String, wait_after_load:bool = true). It will pause the tree, make a transition to the Loading Scene, before the end of the transition the tree is unpaused, then it load the wanted scene, after wait or not an action from the player, pause the tree again, a last transition to the desired scene and at the end after the transition is finished, unpause the tree.
const level_12 = "res://scenes/levels/level_12.tscn"
...
SceneLoader.change_scene(level_12)
  • Transitions you can use it to make a transition with the method transition(transition_type, reverse:bool). transition_type are {Swipe,Square,Circle,Diamond,Line}. Transitions always works instead the tree is paused. It will not pause the tree for you, you should handle it.
get_tree().paused = true
Transitions.transition(Transitions.transition_type.Square)
await Transitions.animation_player.finished
get_tree().pause = false
  • UISoundManager you do not need to call him, it will do the work for you. The only thing to do is to open "res://addons/rakugo_game_template/Autoloads/UISoundManager/UISoundManager.tscn" and parametrize the values of the main node UISoundManager. Audio Bus is the name of the audio bus the AudioStreamPlayer will use to play the "bip bip boup" of your UI. The next both values are Array. They will be use to take sound inside them randomly except if you add only just one. The first Array is for pressed sounds and the second hovered ones.

Infos

If you want to help please write to us on our Discord

Rakugo Team website: https://rakugoteam.github.io/

visualnovelkit's People

Contributors

diman8 avatar jeremi360 avatar matteopiovanelli-laser avatar theludovyc avatar vaasref avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

visualnovelkit's Issues

Unify the naming of files and dirs

Now, some scripts files are using snake_case and other PascalCase.
As most are Nodes/Classes and Godot itself uses for those PascalCase then we also should.

@theludovyc fixed:

  • Unify the naming of scripts files

But I forgot 2 things:

  • node icons files they also should be PascalCased

  • dirs with scenes in it should be also PascalCased

  • fix naming in some missed files/dirs

Markups

here we can use MarkupEdit and AdvancedTextLabel to show example dialogue line

`cond()` don't work whit roll back/forward

Describe the bug
When try to roll in dialogue with cond()
It works, but cond() result in always false in this case

To Reproduce
Steps to reproduce the behaviour:

  1. Run some Dialogue that has more than 3 steps
    and at least one of them uses cond()
  2. Go to 3rd or more steps
  3. Try few times:
    a. Try to rollback
    b. Try rollforward
  4. See how it behaves

Expected behavior
It should roll keeping previous result of passed condition to cond().

Runtime (please complete the following information):

  • Godot version 3.4
  • Rakugo Version 3.2 RC 1

Additional context
Probably cond() result is not saved/restored when roll

Fix pause on quit

When go player want to quit, by using ESC key or close window,
then quit screen show up as it should, but for some reason game is not paused and this breaks detecting input on Yes button

Use consts to get project settings instead of string when you can.

Problem

Now in many scripts they are strings are used to get/set project settings it:

  • makes hard to fix error caused by it
  • makes hard to update this strings
  • make easy to create new errors

Solution

Crate consts to use instead of these strings.
This consts will be part of settings_list.gd script.

Html export to itch.io doesn't work

Describe the bug
When uploading an html export from a project made with Rakugo, the game does not load correctly. When "Start" is clicked, the dialogue box just shows the default "some text" instead of the first dialogue. Desktop exports work fine.

To Reproduce
Steps to reproduce the behavior:

  1. Create the default Rakugo project as described in https://rakugodocs.readthedocs.io/en/latest/topics/project_setup/#create-rakugo-project
  2. Export to html
  3. Upload the html build to itch.io
  4. Run the game on itch.io
  5. Click "Start"

Expected behavior
The first dialogue loads as expected

Screenshots
image

Runtime (please complete the following information):

  • Godot version [3.2.3.stable.official]
  • Rakugo Version [3.1.1]

Fix showable - they has to much controll over nodes

When ShowableManager is used by showable nodes,
it locks their visibility and alternative methods of showing nodes doesn't work with it.
It shouldn't work that way, it made it harder to mix Rakugo with other code.

Separate RakugoTextPasser / RakugoTextLabel => AdvancedTextLabel

We should separated RakugoTextParser / RakugoTextLabel
and split into Markdown and Ren`Py plugins for Godot and Rakugo.
and create out of it AdvancedTextLabel - one plugin will be easier to maintain then 3,
all of them will had the almost same code for Node based on RichTextLabel and Text Edit Tool
It will allow for easier maintaining and updating this code.
So we need:

  • #87

  • #77

  • #95

  • Split RakugoTextParser into:

  • BBCode Text Edit

  • RenPyTextParser, RenPyTextLabel, RenPy Text Edit

  • MarkdownTextParser, MarkdownTextLabel, Markdown Text Edit

Unify plugin code

Rakugo use class_name key word instead of adding nodes and resources inside plugin.gd using add_custom_type().
It was easier this way, but now I think this was a bad approach, as we don't have control on how it loads.
And also make that we can't use features as InspectorEditorPlugin.
So I think we should change it to be inside a plugin.gd using add_custom_type().

Roll can only rollback one step

Describe the bug
Rollback works only one step back.
And this is not a previous step.

To Reproduce
Steps to reproduce the behaviour:

  1. Run some Dialogue that has more than 3 steps
  2. Go to 3rd or more steps
  3. Try few times:
    a. Try to rollback
    b. Try rollforward
  4. See how it behaves

Expected behaviour
Player should be able to:

  • roll steps back (max is rollback setting).
  • roll steps forward (if next steps was already been seen)

Runtime (please complete the following information):

  • Godot version 3.4 beta
  • Rakugo Version 3.2 RC1

Rakugo Plugins ??

We should add some way so we or other devs can made Rakugo or Godot and Rakugo plugins.

tool
extends EditorPlugin

var rakugo_enabled := false

func _enter_tree():
# Check if Rakugo is enabled
var plugins : Array = ProjectSettings.get_setting("editor_plugins/enabled")
rakugo_enabled := "res://addons/Rakugo/plugin.cfg" in plugins

if rakugo_enabled:
  return

## Godot init plugin only stuff here

func rakugo_on(rakugo_args): # rakugo_args - maybe a rakugo menu 
## Rakugo init plugin only stuff here

func _exit_tree():
if rakugo_enabled:
  return

## Godot disable plugin only stuff here

func rakugo_off(rakugo_args): # rakugo_args - maybe a rakugo menu 
## Rakugo disable only stuff here

Fix plugin.gd script

plugin.gd file now almost do nothing, because:

  • most of the nodes/resources uses class_name keyword, it should be done by use of add_custom_type() instead
  • singletons are not added through add_autoload_singleton()

So we need:

Fix `jump()`

I found that jump() not works as it should,
but it was some time ago, I need to check it again.
And fix this error.

Made `cond()` works also with `match`

Is your feature request related to a problem? Please describe.
Now, cond() works only with if.
For some more complicated cases for e.g. menu()
use match will easier to use.

Describe the solution you'd like
It is probably enough for cond () to return the result of the argument passed to it, without changing it to bool.

Describe alternatives you've considered
Made new similar to cond() method just for use with match.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.