Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

Official support thread for the Unity Dialogue Engine Advanced

Discussion in 'Assets and Asset Store' started by MrDude, Aug 4, 2013.

  1. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    That is a 5.4 thing. You are going to have that error come up in all my kits until I update them. It is 100% harmless though. This is an editor script that runs automatically and just makes sure that other kits can know the kit is installed in case they want to do conditional compilation with extra features that are only available if my kit is installed). So far nothing uses it so you can just open the Editor folder and delete the UDEADEFINE script if you want.

    Basically what that does is loop through all the platforms in the platforms enum and adds the define statement to that platform. In 5.4 Unity has removed the webplayer so now when I say "add this definition to THIS platform you found in the enum" Unity throws out an error saying "this no longer exists. I won't add it". On the flip side of the coin, if I say "foreach(x in y) { if x== THAT Skip else SetValue}" then the error goes away...only to be replaced with a warning saying "That thing is deprecated. Don't refer to it in your code any more". So no 2 ways about it, either you are going to get an error or a warning about the same thing.

    I contacted Unity to fidn out how I can fix that and it took them a few days to get me a solution so I just need to get in there and do the update. Like I said, though, all it does is add a definition to Unity and that definition is not used by anything (yet) so it is 100% harmless. Just delete that script entirely to get rid of that annoying error message that you are gonna see over and over and over. Do the same in my other kits also. Ugghghgh... If only everyone used the latest versions of the kit I wouldn't have to worry about leaving deprecated code inside a kit I know is going to throw up a fuss about it. :(

    That second screen you showed me, that is the default state of the one GUI. Once the dialogue starts the fields will be updated accordingly.. Make sure you are calling a dialogue script that is inside a resources folder. Strange, though, that it seems you managed to break my demo scene. Vandal! :p At least I can put your mind at ease that those errors you saw has nothing to do with it. :)
     
    JBR-games likes this.
  2. JBR-games

    JBR-games

    Joined:
    Sep 26, 2012
    Posts:
    569
    I'm having a weird issue and thought i would ask for some advice.
    Code (CSharp):
    1. <actor>name=Player; avatar=AvatarBlank
    2. <actor>name=Knight2; avatar=AvatarBlank2
    3.  
    4. <turn>id=0; next =1
    5.     [who]1
    6.     [require] - Paid 1 8
    7.     [keys] Character char:Knight2
    8.     Stop!!
    9.  
    10.      
    11. <turn>id=1; next =2
    12.     [who]1
    13.     No One is Allowed past this point..
    14.     I'm Under direct orders from Sir William.
    15.  
    16.      
    17. <turn>id=2; next =4,5
    18.    [who]0
    19.    [keys] CharacterPlayer
    20.    Would a few Silver Pieces, help me get in..?
    21.    Will the Castle be open soon ?
    22.  
    23. <turn>id=3; next =-1
    24.  
    25.      
    26. <turn>id=4; next =6
    27.    [who]1
    28.    [keys] Character char:Knight2
    29.    I do need some money...
    30.    Well dont tell anybody.. Hurry!
    31.    [keys] MyCustomFinish2Function
    32.      
    33. <turn>id=5; next =-1
    34.    [who]1
    35.    [keys] Character char:Knight2
    36.    I don't know, i just do what i'm told.
    37.    [keys] MyCustomFinish2Function
    38.      
    39. <turn>id=6; next =7
    40.    [keys] PlayerPass      //not called
    41.    [keys] + Paid 1           //called
    42.    well what you waiting for..
    43.  
    44. <turn>id=7; next =-1
    45.    [keys] Playerpay gold:5, CloseDialogue  //Playerpay is called but dialogue does not close
    46.      
    47. <turn>id=8; next =-1
    48.    [keys] DialogueCancel                         // this isnt called but
    49.    [keys] MyCustomFinish2Function         //this is  

    once i get down towards the end of the dialogue PlayerPass and DialogueCancel and for that matter CloseDialogue are not called on my/your scripts.. but keys that were called earlier in the dialogue like MyCustomFinish2Function or Playerpay are still called..

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using Devdog.General;
    4. using Devdog.InventoryPro;
    5. using MBS;
    6. using System;
    7. using UnityEngine.UI;
    8.  
    9. public class JBR_InvPro_Trigger_Callback_Listner : MonoBehaviour, ITriggerCallbacks
    10. {
    11.     public UDEADialogueStarter UDEA_dialogueStarter;
    12.     public Canvas canvas;
    13.     private Player c_player;
    14.     private string character;
    15.     private GameObject _mCamera;
    16.  
    17.     public ItemCollectionBase collection;
    18.     [SerializeField]
    19.     [Required]
    20.     private CurrencyDefinition _currency;
    21.     public CurrencyDefinition currency
    22.     {
    23.         get { return _currency; }
    24.         protected set { _currency = value; }
    25.     }
    26.  
    27.     bool ITriggerCallbacks.OnTriggerUnUsed(Player player)
    28.     {
    29.        // throw new NotImplementedException();
    30.         return false;
    31.     }
    32.  
    33.     bool ITriggerCallbacks.OnTriggerUsed(Player player)
    34.     {
    35.         //   throw new NotImplementedException();
    36.         c_player = player;
    37.         MyCustomStartFunction();
    38.         return true;
    39.     }
    40.  
    41.     // Use this for initialization
    42.     void Start()
    43.     {
    44.         UDEA_dialogueStarter = this.gameObject.GetComponent<UDEADialogueStarter>();
    45.         _mCamera = GameObject.FindGameObjectWithTag("MainCamera");
    46.     }
    47.  
    48. //the following all use UDEA.gamekeys or [keys] from the dialogue text ********************************************************************************
    49. //props.txt -uses the camera follow system
    50.  
    51.     //start of conversation
    52.     public void MyCustomStartFunction()
    53.     {
    54.         UDEA_dialogueStarter.StartDialogueSystem(canvas);
    55.         Debug.Log("Player entered Vendor area, Start Dialogue");
    56.  
    57.         //tells camera to go into dialogue mod
    58.         _mCamera.GetComponent<JBR_CameraTargetSelect>().StartDialogue();
    59.  
    60.         //look at player while talking
    61.         this.gameObject.transform.LookAt(GameObject.FindGameObjectWithTag("Player").transform);
    62.     }
    63.     //ends conversation, starts vendor window
    64.     public void MyCustomFinishFunction()
    65.     {
    66.         //invPro trigger message
    67.         this.gameObject.GetComponent<VendorTrigger>().OnTriggerUsed(c_player);
    68.         Debug.Log("Dialogue Finished, Open vendor window");
    69.  
    70.        //tells camera to follow player again
    71.         _mCamera.GetComponent<JBR_CameraTargetSelect>().EndDialogue();
    72.     }
    73.  
    74.     //ends conversation
    75.     public void MyCustomFinish2Function()
    76.     {
    77.         //invPro trigger message
    78.         this.gameObject.GetComponent<Trigger>().UnUse(c_player);
    79.         Debug.Log("Unlock Controls");
    80.  
    81.         //tells camera to follow player again
    82.         _mCamera.GetComponent<JBR_CameraTargetSelect>().EndDialogue();
    83.     }
    84.  
    85.     //sends info to JBR_CameraTargetSelect toselect proper character in scene
    86.     public void Character(cmlData info)
    87.     {
    88.         Debug.Log(" character " + info.String("char"));
    89.         character = info.String("char");
    90.         _mCamera.GetComponent<JBR_CameraTargetSelect>().FocusOnCharacter(character);
    91.     }
    92.  
    93.     // reference to players head for camera follow
    94.     public void CharacterPlayer()
    95.     {
    96.         _mCamera.GetComponent<JBR_CameraTargetSelect>().FocusOnCharacter("Base HumanHead");
    97.     }
    98.  
    99.     public void Playerpay(cmlData cost)
    100.     {
    101.         Debug.Log("Gold ?");
    102.         int goldCost = cost.Int("gold");
    103.         Debug.Log(" cost is " + goldCost);
    104.  
    105.         if (collection != null)
    106.         {
    107.             collection.RemoveCurrency(0, goldCost, true);
    108.         }
    109.     }
    110.     public void PlayerPass()
    111.     {
    112.         Debug.Log("Player Pass");
    113.     }
    114.  
    115.     public void DialogueCancel()
    116.     {
    117.         Debug.Log("Cancel Dialogue");
    118.         UDEA_dialogueStarter.CloseDialogue();
    119.     }
    120.     // Update is called once per frame
    121.     void Update()
    122.     {
    123.  
    124.     }
    125. }
     
  3. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Will help in PM and post results here. It looks like your dialogue is ending sooner than you want. All [keys] per turn are concatenated and executed all at once. Writing them after the text doesn't influence when they are called.
     
  4. CplMulder

    CplMulder

    Joined:
    May 12, 2014
    Posts:
    51
    Really interested in this asset to replace a few other problematic ones I have been using (including my own)...

    Is there any video, demo or link to documentation I can see before laying out the money for this asset?

    Thanks.
     
  5. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Hi mate. Unfortunately I don't have either available online, no. I can zip up the docs and email it to you, if you'd like...
    I want to add some demo scenes to my websites now that the webplayer is officially nuked so I'll make sure to include one of this also
     
    Last edited: Dec 29, 2016
  6. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Unity 5.2.2 now throws out an error when using THE Dialogue Engine complaining about Vector2.SmoothDamp's parameters.

    Please note that the function still remains the same as it always has and while the documentation still says that the last two parameters of the function are in fact optional, if you look at the function declaration you will see it is in fact not. For some reason Unity has decided to force you to manually enter the default values they have been providing since Donkey years ago...

    So, to those of you who are getting that error on the SmoothDamp line, please just add the following to that function:
    Code (csharp):
    1. , Mathf.Infinite, Time.deltaTime
    ...and that is that. I'll be sure to add that to the next update but for now, just do that and you will be able to continue working.

    Thanks
     
  7. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    I keep saying that THE Dialogue Engine can do far more than advertised. In the latest update I made it into a Visual Novel system. Today I am giving you all another bonus...

    A customer told me he wanted to create a Quiz game and I thought to myself: Wow, if he had THE Dialogue Engine, all he would need is one script and he would have his quiz game up and running...

    So that is what I did. I wrote that one script and created a CML file with 4 questions and answers, built a basic prefab and now share it here with you. Install this kit AFTER installing THE Dialogue Engine and then just open the demo and hit play...

    Notes on using this basic demo for real:
    1. Open up the questions.txt file in the resources folder and just follow the format in there. Note that I assign every turn 4 destinations and all of them is always turn 1. This is because turn selection is random and not handled by the "next" field like normal, but I still need 4 values to tell the system that there are 4 possible answers. You just keep doing that.

    2. The sample GUI is incredibly basic since you will obviously want to design the GUI to fit your game. Notice that the GUI only calls 2 functions on my GUI: StartNewGame() and SelectAnswer(int number). This should give you a clue how easy it will be for you to adapt this to your custom GUI

    3. One issue I have come across is that sometimes, just sometimes, when you start your first game the answers all appear blank. Not entirely sure why that happens but still, the rest of the time it works quite nicely.

    4. Note that in the dialogue script I make provision for loading text AND images for each answer of each question. The included quiz GUI also has the code to load and display the images as long as they are in a Resources folder. I do NOT, however, include the images in this package and the code was written in such a way that the images ARE optional. If you do not wish to use images simply update the buttons prefab to not include it and remove it from the questions file.

    For those of you who are curious how I turned THE Dialogue Engine into a quiz game I would like to add that I did not have to change a single line of code in THE Dialogue engine at all. As I have stated in past, this new version of THE Dialogue Engine has a much more forgiving file format than the original version and allows you to add extra content as you see fit. Here is the questions script for you to look at and see exactly how that can be done... Add extra fields to the dialogue file and a whole world of opportunity awaits...

    Code (csharp):
    1. <actors>
    2. <actor>name=ignore;
    3.  
    4. <dialogue>
    5. <turn> id=0; next=1,1,1,1; answer=2; images=img0,img1,img2,img3; question=Whice of these is not me?
    6. myBad Studios
    7. MrDude
    8. McGuyver
    9. DrDude
    10.  
    11. <turn> id=1; next=1,1,1,1; answer=3; images=img4,img5,img6,img7; question=What color is not in my company logo?
    12. Black
    13. Red
    14. White
    15. Yellow
    16.  
    17. <turn> id=2; next=1,1,1,1; answer=1; images=img8,img9,img10,img11; question=Which of these do not belong with the other?
    18. www.mybadstudios.com
    19. wwww.unity3d.com
    20. www.guild.site
    21. www.renderer.site
    22.  
    23. <turn> id=3; next=1,1,1,1; answer=2; images=img12,img13,img14,img15; question=Select the statement that is true
    24. I totally suck
    25. I totally blow
    26. I rule!
    27. I'm totally nuts
    28.  
    29. <turn> id=4; next=1,1,1,1; answer=1; images=img16,img17,img18,img19; question=Who is the hero of my story?
    30. Steve Jobs
    31. Me
    32. Tinkerbell
    33. Bill Gates
    Download link: http://mybadstudios.com/free-products/quiz-game-template
     
    Last edited: Mar 29, 2017
    twobob likes this.
  8. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    ...and yesterday I released another game template. I keep trying to make the engine as powerful and awesome as I can and I still get asked about whether or not this can be used for plain good old fashioned text based adventuring... so I created a new project and 2 hours later I had created a new game template and a very short game to showcase it.

    Play the demo, download the text file and see how it was done. 2 hours to create the template, the story and debug (actually there is a bug in my demo but I will leave that up to you to try and find. Now this 1 minute game just became an hour long :p lol ). The entire template, again, was simply a matter of creating a new GUI and in this instance the entire thing (including includes and class definitions and empty lines) came in at under 90 lines of code.

    Funny enough... as I came to post this I stumbled upon the original thread in which this engine was announced and I found someone asking about this in 2013... Finally, the template is now available for download and I can stop custom creating it over and over each time someone asks me! :D

    So yeah, download, enjoy. Play the demo, try not to die... :p Make smart choices and you can complete the game in under 1 minute. Truly suck and you get a special treat :p Choices choices... :p

    https://mybadstudios.com/source-code/the-dialogue-engine/mud-demo/

    Enjoy

    SPOILER ALERT:
    The demo game includes Slender and Kung Fury references ;) :p
     
    twobob likes this.
  9. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,258
    Do not know what the game templates are so i have to read the thread from the beginning but i played the mud demo and realy liked it :)

    Nice to see that you stay for the long time here and give updates to your assets and even come with new things.
     
  10. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Simply put, THE Dialogue Engine has always been able to do far more than advertised (I even say so in the product description no less...) and I am trying to demonstrate that to people.

    From the start I have told people that the kit works without a GUI and thus they can use any GUI system they like to make a custom GUI to suit their needs and THE Dialogue Engine will just work. They can make their custom GUIs do whatever they want but people were still under the misimpression that they could only do simple RPG style dialogues with this system... So I am now showing them they are wrong... The included RPG style GUIs are only demos to show you the way towards making your own GUIs...

    The kit currently has
    * RPG style GUIs (included)
    * A Visual Novel system (included)
    * A Quiz game template (free on my website)
    * A MUD engine (free on my website)

    More to come as and when I create them. I am thinking my next GUI will be an RPG one again but this time showing 3D characters behind the text. I am busy integrating THE Dialogue Engine into the Turn Based Battle kit so people who have both installed has the option of doing dialogue before and/or after any match and I want to have 3D characters for that. Thinking that will be the next GUI even though that goes back to the RPG theme...

    Will see. Will announce it here, on Facebook and or on Unity connect in any event so you will know when it happens :)
     
    Last edited: Aug 17, 2017
    twobob likes this.
  11. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Hi all

    So I just turned 40 yesterday and now entering a new phase of my life... "My forties".... **shudder** :D

    Anyway, back before there was an Asset Store I created this dialogue engine's first version and, even back then before I added all the plethora of bonus content and extra flexibility and alllllll that good stuff that came over time, this asset alone earned me more in it's first year than my day job paid me for the year. When I returned home to my country the first thing my fellow countrymen did was rob me blind, leaving me with no place to go, no job, no means fo GETTING to a job if I get it and a whole bucket load of debt as I didn't realise the lawyer was in on the scam. This asset helped me feed my family and got us out of our debt.

    6 years ago, when I got fed up with my day job, it was this asset's success that gave me the confidence to believe that I could become a full time Unity developer and it was because of this asset that I quit my job and why I got to be a full time Unity developer for more than half a decade now. I owe a LOT to this asset.

    So, as I enter this new phase of my life I am sharing it with you by giving you 40% discount on the asset that started it all for me. It was thanks to the popularity of this asset that I was able to quit my job and become self employed and why I have not had to dance to a boss's tune for over 6 years now. I can't think of a more fitting way to celebrate this new phase in my life than by discounting the origin of it all... :D

    So to all I say: "Enjoy!" :D
     
  12. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,259
    A late "Happy birthday" and keep living your dream!
    All the best!

    So long,
    Stefan
     
    MrDude likes this.
  13. TomTumbler

    TomTumbler

    Joined:
    Dec 1, 2014
    Posts:
    189
    me too, a couple of days ago. So: My heartfelt condolences. ;)

    But there's another thing for me to speak to you: I think about to buy your asset because I'm planning to create two things in the next time: a text adventure (like "Lifeline" + inventory) and a visual novel (like "Clannad"). It seems, a game like Clannad is possible, out of the box, right? But what about a text adventure? I found this demo (http://mybadstudios.com/source-code/the-dialogue-engine/mud-demo) but this type of old school text game is not what I need. ;) So, let me ask you to create a lifeline-like game template and extend it with a simple inventory. Is this possible?

    Another thing: Could you imagine to deal with the unity import tool of articy:draft?
    > Download: https://www.nevigo.com/en/downloads/
    > Documentation: https://www.nevigo.com/articy-importer/unity/html/welcome.htm
    This would be great because I'm using articy as game concept tool. There I create hugh dialog branches, that could be easily exported to unity - maybe for direct use in THE Dialogue Engine. So, please check it. ;)
     
  14. TomTumbler

    TomTumbler

    Joined:
    Dec 1, 2014
    Posts:
    189
    STOP IT!! :rolleyes:

    MrDude, sometimes I think you're an author. Sometimes I think you're a programmer. What you are? :D
    Okay... first, thanks for your reply, wait - your storytelling. ;)

    Maybe, I should say, that I'm not very familiar with programming. Sure, I can learn some things to "understand" and "change" a script. But programming from the ground is not what I'm doing. Or have to say: this is not what I WANT to do. By myself I am an author and concept artist. And I think this is one of the most common reasons why you find so much "visual novel"-assets on the store.

    So... your asset seems to be great, in ways of adaption and customization. But that requires a programmer. And here comes the really important point: the game templates. Simple blue prints, that can be used to create a game as easy as possible.

    Previously I checked "Fungus" and "Dialogue System for Unity". Each of them have pros and cons. Nothing is perfect, I know. But... if you compare the two assets you will find some important aspects:

    * Fungus
    * * pro: very easy to use - specially for non-programmers - includes some nice features/functions
    * * pro: visual dialogue editor (flow charts)
    * * con: no (easy) way for text adventures (like lifeline), buggy save/load, no inventory, no tracking
    * * con: no import from articy

    * Dialogue System for Unity seams being more flexible
    * * pro: flexible in many ways (different uses of dialogues in many game types)
    * * pro: visual node based editor
    * * pro: game templates (e.g. for "text adventure")
    * * pro: import system from articy

    There are many dialogue systems on the asset store. But I think the most miss user friendliness. To be clear: scripting is nice - sometimes important - to create a special type of function. But the base features, the base usage should be as easy as possible. If not, we need a bunch of templates or some good tutorial videos.

    So, what about THE Dialogue Engine? I like to avoid making hasty decisions. So I check several assets (in this case: several "dialogue engines"). For fungus is only seldom updated, I tend to use Dialogue System for Unity (DSFU). But today I found your asset, THE Dialogue Engine (TDE). So... it's a hard desicion. DSFU provides visual editing AND importing from articy AND integration of Adventure Creator (I use) AND Playmaker (I could use) but lacks inventory and tracking. TDE provides inventory AND tracking but lacks user friendly (visual) editing AND import from articy. Argh...:( It would be nice if I could use one asset for both - text adventure AND visual novel. But in both cases I need importing content from articy. And... let me say, if your TDE lacks a visual editor, you SHOULD use any type of import system. articy is wide used in the games industry. So, give it a chance. ;)

    Do you understand my situation?
    You could make my decision easier if...
    ...I can import content (whole dialogue brunches, ideally including character information, like images) from articy:draft
    ...I have access to templates/tutorials, that shows me how to integrate inventory, tracking, creating text adventure (like lifeline) and creating graphic novel (like clannad)
    ...you provide tutorials (videos?) on some how to's (save/load, integration UnityPay and so on)
    ...or alternatively, I simply tell you what I need, and you make a template. ;)


    Okay... now I have also written so much. Sorry. :oops:
     
    Last edited: Oct 16, 2017
  15. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    One of the things we discussed in PM is how the kit could do with some ready-made game templates. One of the things that I keep going on and on about is that THE Dialogue Engine was designed to work as a background module and by default doesn't have any 1 single GUI. It does everything it does silently in the background and then allows you to create a GUI that suits your purposes. In light of the concept of game templates, let's just do a quick recap of what is available right now, shall we?

    Included within the kit you get a couple of demo scenes that each show how to use the system in a different way:
    1. Point & Click adventure - No avatar required in the scene. Just click on items of interest in the scene
    2. RPG - Have an avatar trigger the dialogue by interacting with items in the scene
    3. Visual Novel - Display your dialogue in 2D with layers for background/characters/text all created as a single UGUI prefab in advance then just populated by THE Dialogue Engine and animated using custom code triggers in the dialogue file.

    0 changes required to THE Dialogue Engine, I just created a GUI script that references the various UGUI Images and let the dialogue file tell it when to update which or when to animate something in and out and that was that. Then I thought of some extra custom behaviours I wanted and simply added the code to the GUI script and used the dialogue file to trigger it when appropriate. Job done. Want more custom actions? Feel free to add them. The dialogue file can trigger anything you want whenever you want.

    Available as a free download on my website you also get a ready made sample of:
    4. A quiz game - Just add your own questions to the provided list of questions and you are good to go
    5. A MUD style game - Truly old school gaming where you tell the story purely in text

    These are the templates that are currently available (more to follow as I think them up) and can be used as a template to build upon to make it fit your game's needs. I was hoping to show you the versatility of the kit by showing you how diverse a range of uses it can handle, all by simply writing a custom GUI.

    For example, I used this in a client's project where the characters had dynamic speech bubbles. I just had to code when the bubble appears, how large, where the pointer goes and which direction, how fast the bubble opens and closes and that was it. After I created a speech bubble that could open and close I just added a test to see when it was fully visible and then I got the text to show from THE Dialogue Engine by asking, for example, "What is who saying at the third wave of level 17 ?". In other places I used it in an RPG style where you would speak to a character and your dialogue choices would influence the game in terms of what items were handed to you for free (or not). In this instance the game was completely custom designed by the client to his unique requirements and then we just dropped in THE Dialogue Engine to determine what text to show when and to handle inventory related matters and call custom actions during key points in the dialogues.

    The game is free to play so check it out here: Android and iOS
    Screen Shot 2017-10-24 at 00.34.42.jpg

    For now there is 5 templates for you to use and/or customise or you could create something unique to your game then have THE Dialogue engine run in the background and call it when you need it. Ask it "What do I say next?" and then all that is left is for you to show on screen, in whatever way you choose, whatever the kit tells you to show. No limits. That was the point behind the templates / demo scenes: to demonstrate this "all purpose" versatility...
     
    Last edited: Oct 23, 2017
    twobob and JBR-games like this.
  16. JBR-games

    JBR-games

    Joined:
    Sep 26, 2012
    Posts:
    569
    I definitely think it would be a great addition to this awesome kit to have a few more demo scenes with things like inventory even if it was just for two or three items because although you mention you can do it it's a little tougher to actually implement.

    Basically simple demos of many of the things this kit can actually do.... I feel this assets never really gotten the traction or popularity it deserved simply because there was never a whole lot of effort put into the demos showing off its true versatility.
     
  17. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    I agree that it needs more demos. I was planning on redoing what I did with version 1 a few years back and take an environment asset (something like HE Hospital or some medieval town or something where there is an entire level to navigate through) and once again make absolutely everything interact-able. View, collect or speak to anything in the scene, as appropriate. Include quests and incorporate inventory.... everything I did 4 years ago, just with a new environment. I just need to find the time for all the things I "want to do" :(

    This will, of course, be a "check what it can do" demo with youTube captures of playthroughs etc, not an actual downloadable demo since I don't own the assets I plan on using for the demo but it should give people a proper idea of what the kit can do. With that first version it took me collectively around 8 hours to turn the entire town into an interactive haven. Every lamp post, every section of wall, every book case in the library, everything was interactable. I had quests and had an inventory where you had to find the 5 Ore hidden throughout the scene in order to get past the one "boss" and be able to complete all the quests that cam before it... all of that in only 8 hours. It really helped that the entire town was already built and was done via prefabs.

    I am actually planning on creating a VR demo using that space station asset by [ughghg, I keep forgetting the name. Something "Hedgehog" I think] and using THE Dialogue Engine to show space-y, tech-y stuff as you use Touch to navigate the scene. Will be a piece of cake thanks to UGUI's world mode. So yeah, more demos are coming.

    As for the inventory, I do plan on releasing an inventory kit for the WordPress kits and make that kit fetch inventory from online and place it in draggable boxes that allow you to consume and equip stuff so that is in the cards but obviously not included in this kit right now. Having said that, if you look at the point and click adventure demo you will see that I do actually have an inventory system in place there that lists the item(s) that you currently have in the inventory. As soon as you use it, the item is gone and as soon as you collect it, it is shown.

    I wasn't going for a complete "How to update your inventory" example since adding stuff is literally as easy as saying: UDEA.GameKeys.Add("something", qty);
    and to remove or deplete it you just replace "Add" with either "Remove" or "Subtract" so it's not real rocket science that deserves it's own demo but, none the less, in that demo I DO actually show how to add stuff to and remove stuff from the inventory specifically since the inventory is a rather big deal. Perhaps I could make a better inventory demo but I really can't see how to better demo 3 lines of code. :( Showing people how to drag GUI elements around is not really a good demo of how to update or check the inventory, that is a good demo of how to use UGUI.

    I am open to ideas... In fact, i was thinking of doing as someone suggested recently (and a few before) to let them think up the GUI and then I build it. The thing is, though, if you want me to build your GUI for you then you are going to have to provide me with the art to make it look good and be okay with me sharing that with everyone (meaning no art bought on the Asset Store unless you are the author thereof). Not sure if I should officially extend that offer but I am toying with it

    I will say this, though, if anyone reading this is the author of an asset that contains a town or village or something similar, if you want to do a collaboration where I take your asset and make an interactive demo of it that we can both show on our respective websites with credit going both ways... please get in touch with me. I want to make one such demo that feels more like a complete mini game than just a one screen "check out this feature" demo so either I use that space station that I bought back then or I might use yours. So yeah, if interested, please get in touch
     
    Last edited: Oct 24, 2017
    twobob likes this.
  18. MangeyD

    MangeyD

    Joined:
    Mar 11, 2014
    Posts:
    73
    I see version 2.0.2 has just come out in the store can you outline what is in this release. Thanks
     
  19. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Only the price. It was on 40% discount. Now the price is back to normal. That and I changed the entire product description on the store.

    In future, if you want to know what is new in an update, click on the version number in the store and it will pop up the release notes. I usually leave detailed notes of all changes, fixes and updates. Not all people do but I do so for all my kits, that is the best place to look for what's new in the latest release.

    p.s.
    Oh, wow... I just noticed I made a mistake yesterday and discounted it further instead of returning the price to normal! Agk! Gulp! Seems nobody noticed, though :D
    Gonna go fix that now!
     
    Last edited: Nov 1, 2017
    twobob likes this.
  20. Batfasturd

    Batfasturd

    Joined:
    Jan 30, 2017
    Posts:
    1
    I was thinking about picking this up as I am reviewing Quest and Dialogue related assets. I have a few quick questions you can hopefully answer,

    Does it support or do you have examples of using controller inputs to drive the GUI dialogue?
    I already have my own inventory system, which has a method/query system to see what items I currently have. Could the dialogue engine be set to check my inventory for dialogue actions and quest related info easily?
    Does this work with unity 2017.2+?
    You briefly mention a quest type use in the description, does this include a way to track quests?

    Thanks!
     
  21. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Hi @Batfasturd

    THE Dialogue Engine includes a function that handles keyboard input inside of the Update loop. This function is virtual and can be overridden to allow you to customise the input system any way you choose. What you have to grasp is how the kit was designed to work: All functionality is inside one class that has no GUI related code at all then comes step 2, which is to make a custom GUI with inputs defined for that GUI specifically.

    To simplify it down to basics, if you have an NPC that always speak the same 5 or 20 or 1000 lines of text and never wavers then your entire custom GUI would look like this:
    Code (csharp):
    1. public MyGUI : UDEA {
    2.     override public void HandleInput() {
    3.         if (Input.GetButtonUp("Fire")) {
    4.             Speak();
    5.             if (HasFinished) Destroy(gameObject); else
    6.             print( FormattedText );
    7.         }
    8.     }
    9.  
    10.     void Start() {
    11.         StartDialogue();
    12.     }
    13. }
    ...That's it. Setup your controller to have whatever button you choose have the name "Fire" and the above is all you need to run through the entire dialogue. If the dialogue is setup to vary based on what the NPC has already said or how many times they have said it then that is taken care of also. "Speak()" is the only function you need to call to go from start to finish so, really, whatever type of controller input you want to use, simply go for it :D Check out the free MUD and the Quiz Game Templates on my website for examples of keyboard and touch inputs, respectively.

    It does indeed work with 2017.2 (as the latest review update by @JBR-games states. Thanks for that updated review, by the way! Much appreciated :D )

    Unfortunately, that is where the good news ends.

    I allow you to call your own custom functions at the start of every dialogue turn so if you want to quickly check your own custom inventory for something, that is 100% absolutely possible right out of the box... however... this system is incredibly dependent on it's own keys system and the way the keys work they intrinsically lend themselves towards behaving like an inventory or a quest system. When I originally designed the kit I did not intend to have an inventory or a quest system in there at all... it was only halfway through that I changed my mind about using a bool and decided to use an int instead that I discovered "Oh wow, look at that. Now I have an inventory" and only much later that I discovered "Oh, hey, and a quest system".

    I didn't build them into the kit, they simply manifested themselves due to how the keys work. So here is the basic design concept I worked off of:
    No matter what it is you have or have not done in the game, as a programmer you will always end up asking the same question that will either return true or false: "Can I do this?". For example: Can I end this level? Can this dungeon lever be pulled? Do I have enough FrogLegs to trade for the ChickenWing? Did I complete the King's Quest number 5? Have I already spoken to this character? Have I already collected the sword that was inside this stone? All of these questions have a true or false answer and the game does different things based on each respective answer.

    Using that simple logic I created a system whereby you set keys to indicate what you have or have not done and those keys can be absolutely anything you want. Set Gold to 500, FrogLegs to 14, KingsQuest5Done to false (or just don't set it at all until done) and then simply ask the questions above. Now, in your own custom code you can check these values as simply as saying
    Code (csharp):
    1. if (UDEA.GameKeys.DoesHave("FrogLegs", 15)) MyBuyFunction("ChickenWings", 15);
    so it is really easy for you to probe any key that you have set or the value associated with it. The problem comes in with how the kit does it's AI. How does a quest work? You get a specific set of things that you have to do and based on whether or not you have done that the quest is either complete or it is not. THE Dialogue Engine doesn't check some global quest list and checks to see "Is this quest done?" but rather it just goes about the business of speaking the text and at each turn in the dialogue you get to tell it "Only speak this if this, this this and that condition is met" or else the system automatically skips to another turn of your choosing.

    Example: You speak to the king and he gives you the SavePrincess key.
    Now every time you speak to the king he will see you have the SavePrincess key and skip to turn 3
    If you try to speak turn 3 it checks to see if you have the "FoundPrincess" key and if so it will speak turn 19... otherwise it will speak turn 3.
    So, when you eventually find the princess in the game, just call
    Code (csharp):
    1. UDEA.GameKeys.Add("FoundPrincess", 1)
    and that single line of code will make the king change his tune from "What are you doing here? Go find my daughter" to "Oh thank you brave knight".

    Keys can be set inside the dialogue and via your own code and internally it uses those keys to determine what turn to speak. Each turn can have as many checks as you want so although the above example is perfectly viable, in practice it would make more sense to just as a bunch of questions on the first turn like so:
    Do you have the FoundPrincess key? If so then skip to turn 19. If not, well do you have the FindPrincess key? If so then speak turn 3. If not then fine, show this text.
    Each turn can have as many checks as you want and each redirect to another turn will do any key tests on those turns also, if any.

    With that being the case, although each turn will allow you to call your own inventory and do custom actions as you see fit, since my kit doesn't poll your inventory to do it's various "can I speak this" tests it means the dialogue system will be broken if you do not use it's internal keys system.

    Having said that, keys have a value and thus they can be used as an inventory system and keys can also have any number of custom properties you decide to give it (price, author, Attack strength, rightful owner, remaining durability... anything) so it's quite a useful inventory system even if I do say so myself... but if you choose to use an external inventory instead and want to start a dialogue at a different location based on your inventory, that is very much possible. Look at the first code snippet above and just realise that there is the option of saying: StartDialogue(19) to start at turn 19...

    So if you are prepared to manually specify where to start the dialogue based on whatever factors you determine externally beforehand, you are more than welcome to do that... but while the dialogue is running, unless you used the keys system to keep track of what you have done so far you will strip the kit of it's AI and demote it to static dialogue. There are ways around it but it's just far too much work. Using the internal system will save you many headaches. Plus, as an added bonus, every single thing you track via the intern system (gold, swords, completed quest keys, frog legs... all of it) can be saved to disk in a single line of code and when the game is loaded back up again it can all be loaded right back with a single line of code also.

    So there you have it. The good and the not so good news. Hope this helped. :)
     
    Last edited: Nov 29, 2017
    twobob likes this.
  22. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    I am developing an app

    I used the VisualNovel demo but noted that if I was to press Enter really quickly - I am guessing before the transition occurs/completes in some way, then the next background pictures never load.

    I will look at the bug further today, I also noted some typos in VisualNovel.txt, the errata for which I am happy to push back upstream - assuming you have an upstream, or just zip it over to you.

    Hope your 40's treat you well. This app can't contain any bugs. Many thanks.
     
    Last edited: Apr 8, 2018
  23. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Also.
    Horror story workaround for build error. could be specific to my machine. this nerfs it

    Code (CSharp):
    1. using UnityEngine;
    2. using UnityEditor;
    3. using System.Collections;
    4. using System.Collections.Generic;
    5.  
    6. /* This script only creates a DEFINE to let other kits know this kit exists
    7. * It is not included in your final product so you need not concern yourself with it
    8. * unless you are a plugin developer who needs to test for the existence of this kit
    9. * This functionality is only available in Unity 4.x
    10. */
    11. #if !(UNITY_2_6 || UNITY_2_6_1 || UNITY_3_0    || UNITY_3_0_0 || UNITY_3_1    || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5)
    12.  
    13. [InitializeOnLoad]
    14. public class UDEADEFINE
    15. {
    16.     static UDEADEFINE()
    17.     {
    18.         var count = 0; // make it count...
    19.         // run through all the build targets and add the define symbol if needed
    20.         foreach (BuildTargetGroup btg in System.Enum.GetValues(typeof(BuildTargetGroup)))
    21.         {
    22.             // extract existing defines to check if the ones to be added
    23.             // does not allready exist before adding the new defines
    24.            if (btg == BuildTargetGroup.Unknown) continue;
    25.             string defines_field = PlayerSettings.GetScriptingDefineSymbolsForGroup(btg);
    26.             List<string> defines = new List<string>(defines_field.Split(';'));
    27.             if (!defines.Contains("UDEA"))
    28.             {
    29.                 defines.Add("UDEA");
    30.                 // Magic Number away the stuff that no longer exists Webplayer, Whatnot          
    31.                 if (count != 4 && count != 5 &&  count != 10 && count != 11     ) {
    32.                     // we are golden
    33.                     PlayerSettings.SetScriptingDefineSymbolsForGroup (btg, string.Join (";", defines.ToArray ()));                
    34.                 }
    35.             }
    36.          // Annnd the next one.
    37.             count++;
    38.         }  
    39.     }
    40. }
    41. #endif
     
  24. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Do not get me started on this piece of code. Ughghg. Every single version of Unity required that this code be updated for THAT version. Eventually it got to the point where it would ALWAYS print either an error if I do nothing or the exact same message as a Warning if I try to get around it. Sure the error was harmless and didn't cause problems with compilation since it was editor side only but heck, was it ever annoying to see those errors or warnings come up EVERY single time I made ANY change to ANY script. Ugg.

    I contacted Unity about it and it took them a few days to come up with a workaround for that. Finally, no more warnings or errors but the code was now a TOTAL horror story! If you think THAT code is bad, just wait till you see their fix... Unfortunately that only lasted till the next Unity update and we were back to errors again...

    I then came up with a super simple solution that elegantly addresses the problem in less than half of the code you just pasted. I don't get why you HAVE that script, though, I thought I updated that file ages ago... anyway, if you want you can replace it with the new code I can send you (or even paste here for future reference) but, as the comment says on top, this script is ONLY require if you plan on building your own custom assets as plugins to this kit... If you are not doing that then you can delete this script entirely
     
    Last edited: Apr 8, 2018
  25. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Code (csharp):
    1. using UnityEditor;
    2. using System.Collections.Generic;
    3.  
    4. [InitializeOnLoad]
    5. public class UDEADEFINE
    6. {
    7.     static UDEADEFINE()
    8.     {
    9.         BuildTargetGroup btg = EditorUserBuildSettings.selectedBuildTargetGroup;
    10.         string defines_field = PlayerSettings.GetScriptingDefineSymbolsForGroup(btg);
    11.         List<string> defines = new List<string>(defines_field.Split(';'));
    12.         if (!defines.Contains("UDEA"))
    13.         {
    14.             defines.Add("UDEA");
    15.             PlayerSettings.SetScriptingDefineSymbolsForGroup(btg, string.Join(";", defines.ToArray()));
    16.         }
    17.     }
    18. }
     
    twobob likes this.
  26. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Sure thing. I just added the 3 lines that do the exclusion. I am happy to use better code :)

    in precis, the main issue is that the book example can be accidentally made to /not/ do the Update Background calls - seemingly in a variety of situations now (all based around clicking/entering before it is ready-I think). I'm debugging it - but I am rusty - If I spot the obvious "logical linkage" issue, I will happily feed it back. Also happy to chuck you my script. which is little more than a hack on the demo should that be more elucidatory.
     
  27. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    thanks. updated UDEADEFINE - works perfectly now :)

    Hope you are well. Haven't chatted for a good long while, been doing music and life. Sorry to dump this error about the book demo on you at the weekend.
     
    MrDude likes this.
  28. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    No problems mate. I was planning on doing a few tweaks to this system soon-ish (I am currently pushing to finish the bug finding and fixing on the turn based battle kit then I was going to look at this kit for some minor updates). My bad on the typos. Easiest fix... write your own story and chuck mine entirely ;) :p lol :D But seriously, though, I will double check that before the next update. Thx for pointing it out

    Now, as for your main issue, that is curious... If you look at the logic behind THE Dialogue Engine it basically does this:
    1. It test if this line can be shown or not.
    2. If not it goes to the line you redirect it to in this instance and then goes back to step 1
    3. If it eventually passes step 2 then it calls all the custom functions that are defined for that turn. All of them, immediately.

    thus the chances of it NOT doing some function is highly unlikely. It is far more likely that you are getting to code that says "Show this background" then getting to the next function that says "Now show this one" and voila, now you are seeing the second image while never seeing the first.

    Alternatively, the coroutine might be setup to say "If a new background is chosen but the current one is still loading, ignore this function" in which case the code works just fine...just not as you would like. What I would recommend in this situation is to add in a delay to prevent you tapping enter too fast. Give any animation that are running a chance to complete before going to the next turn. Simply add a listener to the OnSpeakEnd event which fires right after the turn has assigned the text to show and started triggering your custom code. In this event listener of yours simply do this:
    Code (csharp):
    1. float next_valid_time = 0;
    2. void AddDelay(object source, UDEAEvent ignore)
    3. {
    4. next_valid_time = Time.time + 2f;
    5. }
    Next, in the HandleInput function add this as the very first line of code in it:
    Code (csharp):
    1. if (Time.time < next_valid_time) return;
    And that should prevent that error from happening or, in the event of the code being triggered having a typo or something, if the images STILL don't show up, at least this way you can see if a specific turn needs to be looked at for problems.

    Feel free to email me that code if you still struggle with this after trying the above and I'll have a looksee :D
     
    Last edited: Apr 8, 2018
    twobob likes this.
  29. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Actually it just ends up with entirely blank backgrounds. I'll test that - Yup totally conversant with the UDEAGN code as I was deep diving last night.

    Superhero support as ever.

    I'll check the script across in the event of failure. it's literally the demo with mini tweaks
     
  30. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    "My bad on the typos" - yeah mate - they are in the docs. not the story buddy
     
  31. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    No comment.... :(
     
    twobob likes this.
  32. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    I'll just fix them up and mail them to you after I have finished the edits today. It was only a few tiny ones.
     
    MrDude likes this.
  33. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    I am clearly being stupid but

    Code (CSharp):
    1.    STUPIDNESS
    Would obviously be invalid. let me digest the purpose there and get back to you. Edit: [strike]2[/strike] 3 days no sleep and then one big sleep is a killer. Goes to get coffee
     
    Last edited: Apr 8, 2018
  34. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Okif I drop OnSpeakEnd() in UDEAGraphicNovel.cs and start my coding there?
    I am struggling to get this override to fire.

    Like indicated above with no content in the method the breakpoint doesnt fire - hence I am doing it wrong.

    I did find
    protected event UDEAEventHandler
    OnSpeakEnd, //on successfully completing a turn without ending the dialogue

    and void _OnSpeakEnd(UDEAEvent e, object Instance=null)
    {if (null != OnSpeakEnd) OnSpeakEnd(Instance, e); }
    Which is a singleton protection pattern maybe?

    Anyway. any clues greatly appreciated or I'll just hack the internals and have done with it :)
     
  35. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Okay I PM'ed you the base script - just so you can see how basic the script really is. Simpler even than the demo.
    I'll just backup what I have now and hack the guts until further notice - I can always rolback. go go git init
     
  36. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    yeah... you got that entire thing completely wrong....
    Code (csharp):
    1.  
    2. public myClass: UDEA{
    3.    //this should be scoped to your class, not to a function
    4.    float next_valid_time = 0;
    5.  
    6.    void Start()
    7.    {
    8.        //event listeners are configured in advance and once only
    9.        //the events are triggered by me when appropriate. You just respond to them
    10.        OnSpeakEnd += AddDelay;
    11.    }
    12.  
    13.    void AddDelay(object source, UDEAEvent ignore)
    14.    {
    15.       next_valid_time = Time.time + 2f;
    16.    }
    17.  
    18.    override public void HandleInput()
    19.    {
    20.       if (Time.time < next_valid_time) return;
    21.       base.HandleInput();
    22.    }
    23. }
    24.  
     
    Last edited: Apr 8, 2018
    twobob likes this.
  37. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    3 years off will do that to you :)
    Code (CSharp):
    1.  //You should already have this function
    2.    override public void HandleInput()
    3.    {
    4.       ///just add this...
    5.       if (Time.time < next_valid_time) return;
    6.    }
    not if it isnt in your demo - I LITERALLY just amended the .txt file so far. which I PM'ed you.
    So, in essenceI wonder if this bug would exhibit in the demo if it changed pictures so often... might test that later.
    Thanks man - I'm reading section 6 of the docs now.
     
  38. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Okay so this does not appear to fix it. Pressing Enter immediately as soon as the app loads still causes the pictures to fail to load afterwards. I will see if I can spot it now I have better debug entry points.

    Edit: also random fast pressing enter during the app also can cause the pictures to begin failing to load, so I must have failed to prevent the processing of "enters" I'll look into it now
     
    Last edited: Apr 8, 2018
  39. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Edited as excellent answer given below
     
    Last edited: Apr 8, 2018
  40. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    Just PMed you the detailed answer. Turns out the switch transition is set to occur over time, not every turn and CERTAINLY not multiple times in under a second. So basically this thing is doing what it was coded to do: Gradually fade out then change the image and gradually fade it back in again... but your super fast enter pressing messes with it's head. :) This function was not meant to be used in this way.

    Two options:
    1. Add your own function to UDEAGraphicNovel
    2. Use this one as intended and wait for the fancy fade to do it's fancy fade before triggering it again

    It makes sense when you think of it that way, yes? You are calling a fancy fade that takes time to do. If you don't want to hang around for it to do what it was coded to do then don't use it... use something else.

    So how would you go about doing that? I said change UDEAGraphicNovel right? So how about this:
    Code (csharp):
    1.         public void SlideShow( cmlData data )
    2.         {
    3.             LoadNewBGImage(data.String("image"));
    4.         }
    5.  
    Now you just modify your dialogue file. Every time I said: "Background action:switch image:15" (or whatever the background image is called) you simply replace that with: "Slideshow image:15"

    Done.
     
  41. twobob

    twobob

    Joined:
    Jun 28, 2014
    Posts:
    1,785
    Cool man. I will go with changing everything to : open for now and implement this as you have suggested in your EXCELLENT support PM. thanks so much for doing this!!!
     
  42. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    As always, mate: Happy to help :D
     
    twobob likes this.
  43. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    THE Dialogue Engine just got a new update last night.

    For the most part it was updated to support the latest MBSCore but it does have fringe benefits for doing so. Adding the asset to your project extends a number of Unity classes to give you a helping hand with the rest of your project but those of you who bought the MBSCore version, you now have extra goodies in your arsenal also.

    One thing that might not be entirely obvious is the fact that the UDEAEvent and UDEAEventhandler has been replaced by the MBSEvent and MBSEventHandler from MBSCore. Understanding what MBSEvent is will make you understand why this is something you should care about.

    With the latest update of CML to version 4, each CMLData object now contains a List<string> and a Dictionary<string.string> as always but now also includes an Object. An MBSEvent contains an Object and a CML object and since events require two parameters (an object and your custom EventArgs) it means that in total you can now trigger an event that can contain within it 2 Objects as well as a List of CMLData object which can each contain a List<string>, Dictionary<string,string> AND an Object... thus giving you a limitless amount of variables of type int, long, float, bool, Color, Rect, Quaternion, Vector2 and Vector3 as well as an unlimited number of Objects... all of that inside of a single event. MBSEvent is the only event you will ever have to worry about using.

    That is just one of the changes. Those who bought the MBSCore edition will now get MBSSingleton also which enables you to turn any MonoBehaviour into a singleton simply by changing the class's base. Job done. Example:
    Code (csharp):
    1. public class myClass : MonoBehaviour
    2. public class myClass: MBSSingleton<myClass>
    The free update is available for download right now.
    Enjoy
     
    JBR-games and twobob like this.
  44. JBR-games

    JBR-games

    Joined:
    Sep 26, 2012
    Posts:
    569
    For anyone that has or is interested in this Asset. Unity recently depreciated it.

    Without getting into to much detail.. He is no Longer an asset store publisher.

    but the developer is still activly working on UDEA2 and his other assets but now supporting them through his website. If you are interested in purchasing this it can either be bought on his website or you can register your exsisting purchase through Unity there.
    http://www.mybadstudios.com/
     
  45. Magasenakwa

    Magasenakwa

    Joined:
    Oct 13, 2018
    Posts:
    54
    Hi @JBR-games

    Thanks for the shout out. Much appreciated :)

    As he said, we are no longer on the Asset Store and are planning on doing much more with our website moving forward. This includes everything from adding simplified downloading processes right up to creating social games you can play right on the site. We are currently considering doing a competition in order to start off a new section on our website and were wondering if there would be any interest in this...

    We want to start showcasing works that make use of our assets so basically you would send us screenshots of your game and we would then post it on our site. Free advertising for you, complete with a link to your site and possibly even a writeup telling people about your game. In order to get this started we are thinking of saying "Send us your submissions and the top 10 received at date X will get a free asset of their choice. Everyone still gets featured on the site"

    Images, youTube videos, it's all good. Show us what you've got!
    Would anyone be interested in participating in an event like this?
     
    JBR-games likes this.