Git Product home page Git Product logo

fungus's Introduction

Fungus

The goal of Fungus is to provide a free, open source tool for creating interactive storytelling games in Unity 3D. Fungus is designed to be easy to learn for beginners to Unity 3D, especially for people with no coding experience. For power users, it provides an intuitive, fast workflow for visual scripting and interactive storytelling. Fungus is being used to create Visual Novels, Point and Click Adventure Games, Childrens Stories, Hidden Object Games, eLearning apps and also some frankly weird stuff which defies classification :)

Fungus was originally created by Chris Gregan - @gofungus

Installation

Download & installation instructions and tutorial videos are available in the wiki and the official Fungus website.

Support & Documentation

The Fungus documentation is available on our wiki. Contributions to the wiki are very welcome.

If you have questions about Fungus, please search our forum first as someone may have had the same issue already. If you can't find an answer please start a new discussion and we'll answer you as soon as we can. Fungus is designed for beginners and we love to hear from users so please don't be shy about posting on the forum!

There is also a community run Discord server.

You can also join into our chat room. Join the chat at https://gitter.im/snozbot/fungus

Status & Branches

Fungus uses a gitflow style setup. The default branch holds the most recent stable release. Develop is the staging ground for ongoing work and the default target of most PRs.

Develop is currently the staging ground for the next Fungus feature release 3.14

Contributing

Many thanks to everyone who has contributed to the project to date!

To contribute code or documentation to Fungus, please see CONTRIBUTING.

You can view the upcoming roadmap via the Milestones.

Running the automated tests

The Unity Test Runner is used for testing some underlying elements. Far more are desired and PRs in this area would most welcome.

fungus's People

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  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

fungus's Issues

Shake component

Add a time based position offset to any game object.
Useful for camera / sprite wobble effect to make scene more alive.

Improve Page tap to continue behavior

  1. Only register taps on the Page rect, not the whole screen (to allow button interaction)
  2. Add an option to display the continue icon on the Page rect or the screen rect.

Words jumping down to next line if there's not enough space

Lynn has requested a fix for the weird line wrapping behavior in Fungus 2.0-beta.5
http://fungusgames.com/forum/words-jumping-down-to-next-line-if-there-s-not-enough-space

The fix is to change the way text is written out over time. Instead of modifying the displayed text string one character at a time, we should modify the alpha for each character in the full string to gradually reveal characters over time. The key is to use UI.Shadow.useGraphicAlpha so that shadows and outlines use the same alpha level as the main text.

MoveToScene command

  • Support splitting a large game into multiple scene files
  • Unused assets should be flushed from memory on each transition to minimize memory usage
  • Investigate using this as a simple checkpoint system

2D pathfinding

Ability to define a 2D navigable graph of navigation nodes in Unity editor. Simple Fungus commands to move an object along the shortest path from the current position to a target node. Simple obstacle avoidance.

Outline & drop shadow text effects

Very basic outline and drop shadow effects can be achieved using the existing UnityGUI system. We're probably better off waiting until the new GUI system is released though.

Substitute variable values in Say & Choose text

It should be possible to embed variable values in Say & Choose story text, like this.
"She glanced through the window and saw {$FriendName} approaching.", where FriendName is a previously populated string variable.

Play a sound while writing text

  • Have a looping typing sound play while text is being written
  • Play a short sound every time a new character is written to the screen

Improvement : Add Timer variable

I need a Timer variable type that acts as a float variable but decreases automatically over time and has some control as whether or not it's currently running.

A contextual use would be that you visit a character and he asks you to come back in fifteen minutes.

Command queue visualisation

  • Add option in Game class to display a diagnostic list of currently queued commands
  • Use reflection to get the class name of each command in the queue

Skip voiceover audio

Stop voice over audio when player clicks through story text to skip. Request from Nickey on the Fungus forum...

For example, let's say we have a dialogue text + voiceover speech for the following:

"Once upon a time, there lived a very fair princess in a faraway land."
So if we don't click anything --> The text will type itself, and the voiceover speech will run like normal.

If I want to skip:
1st click --> While the text is typing itself, 1st click will make the full text come out fully, instead of the word-by-word typing. Voiceover speech is still ongoing.
2nd click --> 2nd click will skip the ongoing voiceover speech (the speech audio will stop entirely) and then it would move into the next part.

Variable text typing speed for punctuation

From David Liu...

I was just wondering if there was a way/plan for a feature where when the dialogue is being "typed", there is a slight pause at commas and a longer pause for full stops at the end of sentences? In action, it looks like this: https://www.youtube.com/watch?v=-atdTSynWAICrudely (but more apparent), it looks like this: https://www.youtube.com/watch?v=F7TiH5JGy-AI think that a small change like that adds quite a bit more to how the reader perceives speech by different characters and can make dialogue closer to speech as it is spoken - with pauses where they should be.

Improve swipe pan behavior

  • Pixel perfect panning (scene should appear "clamped" to your finger when swiping)
  • Use momentum to support flicking to pan

Allow adding new variable types

Adding a new variable type is currently impossible without changing the SDK source code. It needs a lot of code refactoring and requires splitting a lot of methods into smaller, overridable methods.

Interrupting a Say command will cause scrambled text

I implemented some code that forces a Say command to continue and immediately execute next command in sequence. While this may seem as counter-intuitive at first, it's useful to dynamically call a new "modal" sequence than then returns to the running sequence and re-executes the command that was active before the call.

Doing that will result in distorted text because the coroutines are still running from the active Dialog object and text is being appended twice.
fungusscrambledtext

Fix : Call StopAllCoroutines() in the Dialog::Clear() method.

Basic trigger system

Simplified trigger system to call a method when two Fungus controlled objects interact. (For point-and-click style games).

Pass parameters in AddOption, Call, etc.

It is possible to pass variables through the existing Action delegate calls by using lamda functions.

Lamdas are a fairly advanced programming feature, so it would be good to find a simple basic way to pass parameters through to callback methods.

Printing GetValue to screen

Hi! I've been playing around with Fungus for a few weeks. I love it so far. I had a quick question.

I'd like to be able to use SetValue and Get Value to store variables. But I can't seem to get them to print as a text string. Not sure if it's a limitation of the class or my poor understanding of Unity.

In my main room I have this simple Start command to set the variable for "power"...

void Start () {
    SetValue("pwr", 89); 
}

When I want to modify the value, I use this (in theory, haven't tested yet)...

SetValue("pwr", GetValue("pwr") - 1); 

When I want to display the value, I use this...

AddOption("POWER: " + GetValue("pwr"));

... but it always seems to print as 0 instead of the value I set.
Any help would be appreciated!

Localization support

Localisation is an important feature, but Unity have indicated that they are working on their own solution for this. If this doesn't happen then we'll have to implement our own localisation system

Improve PageStyle system

Add new commands to override elements of the Page style. e.g.
SetSayStyle(GUIStyle guiStyle, fontScale);
SetHeaderStyle(GUIStyle guiStyle, fontScale);
SetFooterStyle(GUIStyle guiStyle, fontScale);
SetOptionStyle(GUIStyle oddStyle, GUIStyle evenStyle, fontScale)l
SetBoxStyle(GUIStyle guiStyle)

ScreenFade command

Add a command to do a full screen fade to a desired colour over time.

Comic UI

Speech bubbles with dynamic outline and arrow placement
Narrator boxes

View transition objects

Define a view transition using an object in the scene

  • Source and Target View properties
  • Transition Type (Fade, Pan, Snap)
  • Duration
  • Interpolation (Linear, Smooth, ...)
  • Ping pong
  • Block execution until finished

Transitions are activated using a StartTransition() command. Transitions usually stop automatically but can be cancelled via a StopTransition() command.

Tutorial on using MoveToScene()

The new MoveToScene() command allows you to split your game up into multiple scenes to reduce peak memory usage (and avoid crashing).

Add a tutorial video / article on how to do this.

Random numbers

Add a SetRandom command which stores a random value in a specified variable. The range of the random number can be set using min and max values (which can themselves be variables).

Timed Choose menu

  • Choose menu with a countdown timer to force a player decision
  • Handle case where user fails to make a decision

Video tutorial for using PageStyle component

The PageStyle component is used to configure the appearance of Page text. It will be replaced when Unity bring out their new GUI system, but for now it would be helpful to have a tutorial video on it.

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.