Search Unity

[RELEASED] CAT Game Builder:The easier, faster way to make games in Unity

Discussion in 'Assets and Asset Store' started by jsoucy, Jan 6, 2018.

  1. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
  2. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    372
    Looks good, so far. What i am interested in, is....when i use a clean project scene, and i build out a WebGL project. How big is the size of the published webGL with CAT beeing inside my Assets ? (As far as i know, webGL without any stuff inside outputs something about 4-5mb)
     
    sirgolan likes this.
  3. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    I just did a test with CAT and an empty scene in WebGL. That came out to 7.5mb. If you're really concerned about size, you can use the CAT usage window and delete any CATs or other code you aren't using.

    upload_2018-1-21_0-51-7.png
     
  4. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    372
    Okay...it is interesting if you can filter it out. Lets say, i build something, with complete CAT. So, it would be nice, if when i publish it, CAT regognizes which actions are needed, which not, so build size will allways be optimal. As a automatic feature. This would save time and improve the workflow.
     
  5. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    I'll add that to our list of requested features and we'll take a look at the feasibility of implementing it. Thanks!
     
    Mark_01 likes this.
  6. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    372
    Okay...nice its on a ToDo list !
     
  7. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
  8. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    372
    Make C#-code out of your stack.
     
  9. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    Oh yeah! I've had that in the plans for quite some time, and I really want to get it going asap. I'd like to be able to do it in a few different ways. One way would be to take a block of Actions, set up some parameters and then make them into a single Action that is generated C# code which you can use anywhere (sort of like Instanced Action). Another thought would be to have a pre-build step that just compiles all CATs into C# code. Maybe have a flag on individual State Machines (or maybe CATs) to enable/disable this behavior.

    However, I will say that we haven't really seen CPU usage to be an issue so far except in extreme cases. Part of this is because CAT components are higher level, so the more performance critical bits are already just straight C#. The only time I've ever seen it come up was when I built a match 3 type game in CAT with each ball using a few different triggers that executed code every frame. Though honestly, I'm not sure that doing the same logic in C# would have been faster in that case. The best way to speed that one up would be to write some custom code (and we plan to address that type of game fully in an addon in the future).
     
    Mark_01, jsoucy and StevenPicard like this.
  10. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    We just put out our latest tutorial which shows how to build a Flappy Bird clone. Check it out!



    Note that while the finished Flappy Penguin game has been included since version 1.0 of CAT, the starting prefabs mentioned in the video will be arriving in version 1.03. They're just everything from the game minus CATs, so you can make your own by just removing all the CATs out of the scene. Or you can start from scratch using your own art!
     
    Last edited: Jan 23, 2018
  11. sledgeman

    sledgeman

    Joined:
    Jun 23, 2014
    Posts:
    372
    This two way code generation is a good idea. It has some benefits. I can learn more, look inside the generated code. And the other benefit is, working in a team, you only share code, instead of CAT (you shouldnt do). Last thing, as mentioned before: you can delete CAT out of assets, save space, and leave only code inside.
     
  12. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    One of the things we tried to design into CAT was to make it easy to use from within C# code. By this, I mean calling CATs directly from code:

    Code (CSharp):
    1.  
    2. public IEnumerator DoStuff()
    3. {
    4.     CATContext ctx = new CATContext(gameObject);
    5.     yield return new MoveAction(new CATarget(CATargetType.Owner), new CATargetPosition(new Vector3(10, 1, 5)), 5).Run(ctx);
    6.     yield return new WaitForSeconds(2);
    7.     yield return new MoveAction(new CATarget(CATargetType.Owner), new CATargetPosition(new Vector3(1, 5, 10)), 5).Run(ctx);
    8. }
    9.  
    We have a little ways to go to get it to that level, but it is close. The only difference is that you can't do a one liner for MoveAction for example. This means, we could generate fairly readable code. However, it might be beneficial to have an option to generate more optimized code that is less readable.

    Can you expand a bit on what you mean with only sharing code when working on a team instead of CATs?
     
  13. StevenPicard

    StevenPicard

    Joined:
    Mar 7, 2016
    Posts:
    623
    Personally, I like the idea of code generation even if it is not easily readable.

    As far as CAT goes for my team, I will have 2-3 junior developers helping with a project in 2-3 months. My intention is to have a good framework for the game (using CAT and any necessary custom code) set up and ready for them. Since I want us to work smarter, not harder, I believe CAT will help with that. So, ultimately, when the time comes, we will need to purchase additional licenses for the new developers.
     
    Mark_01 likes this.
  14. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    Sounds like a great plan! That's one of the benefits we've definitely found with CAT. We can keep costs down by having more junior developers (or scripters) work with CAT. It has worked really well for that.
     
    homestead likes this.
  15. jsoucy

    jsoucy

    Joined:
    Jun 17, 2013
    Posts:
    15
    Hey all,

    Thank you for the interest and support of CAT Game Builder. We wanted to remind you to please rate us on the store! If you are using CAT Game Builder, we would love your feedback, It means a lot!

    Also, we created a subscription list for CAT Game Builder users here: http://eepurl.com/diDpNv This will be a great way to receive notifications about updates and upcoming features.

    Thanks,

    Jon
     
    homestead and sirgolan like this.
  16. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    We included quite a few examples with CAT Game Builder. You can now check them out in WebGL on our site!

    upload_2018-1-27_0-28-3.png
     
  17. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    @sirgolan ,

    Thinking of buying CAT but can you give me a taster/idea of what you are planning on including in the RPG add-on and also, if you can, a rough eta on when you plan on developing and releasing that add-on?

    p.s. I've suggested some more tutorials and potential supports for third party assets too.

    p.p.s. I have also now purchased this Asset... ;)

    thanks
     
    Last edited: Jan 27, 2018
    jsoucy likes this.
  18. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    First off, thanks for purchasing!

    We haven't finalized anything on the RPG add-on yet, but here's what I'd like to see (don't hold us to this please :) most likely the initial release would only contain some of these):
    • Stats system that integrates with Values including things like stat mods for buffs/debuffs, dependent stats (stats that get their value from other stats using a formula), and support for fuels (health, mana, etc).
    • Combat system that also handles synchronizing animation, sound, and vfx (fun fact: I built a system like this for 38 Studios' unreleased MMO which is a big part of the inspiration for CAT)
    • Spell system
    • Inventory system including item pickups, stat modification from items, and item abilities (which can hook into the spell system or just execute random CATs)
    • Experience & progression system
    • NPC behavior system including a threat list
    • Faction system
    • Class / race system
    • Merchant system (which I guess means some support of in game currencies, though likely that will go into the main CAT package)
    • Dialogue system or integration into several popular existing ones
    • Death / respawn
    • A more involved example than the current RPG demo including various interactive objects like locked doors, switches, puzzles, etc
    All of those systems will be fully CAT integrated. The manual has an example of how that happens using a simplified version of the spell system. Each system will come with a set of related CATs as well, and they'll all work together and with pre-existing CAT systems (quest, localization, storage, etc). The thing about this add-on that makes it tricky is that while we could probably bang out all those systems pretty quickly (it's actually really easy with CAT), they'd be somewhat limited to being used in a 3D run of the mill RPG. I'd rather take some time and make sure they are generic enough to work in many situations such as JRPGs, ARPGs (probably not much to do here), and non-RPGs that use one or more of the systems. Also, I'd like to make sure that all the systems can be used in either single or multi player games.

    As for a release date, it's too early to say. It's going to depend on a few factors. The quickest way would be if someone paid us to build an RPG since we'd have to build them anyway. Second to that, the order and speed of what add-ons get released is going to be tied to how much interest there is in CAT and in a particular add-on. We also want to make sure that the core CAT package has enough support, tutorials, and continues to get new features, so that takes a little time away from new add-ons as well.

    Thanks! I saw those. Some of them are definitely on the very near term todo list. I've got some followup questions on at least one of them that I'll respond to shortly.
     
    Duffer123 and homestead like this.
  19. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    @sirgolan ,

    That all sounds excellent - and certainly wouldn't hold you to all of that in v1 !

    In terms of items and inventories, if it's possible, things like socket systems / items, crafting and affixes (prefixes and suffixes) with recolouring of sprites/meshes, massively doubles up and improves things.

    With races, subraces, with classes, multi-classes.

    I know, the list goes on and on. Looking forward to it. In the meantime though, working through the examples etc.
     
  20. pccross

    pccross

    Joined:
    Jun 20, 2015
    Posts:
    81
    Has a tutorial video been put together for the RPG example? I'm hoping to get insights to help me to track a VR player (primarily Oculus) with enemy AI using the CAT system. For some reason, I've struggled a bit with getting Emerald AI to work with Oculus.
     
  21. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    Those are all great ideas and likely to be either a part of any system or easily buildable on top of the system. I've been debating where a crafting system should live. There are lots of game types that use that mechanic or something similar. It may be something where the base system goes in the core package and the RPG package just gets something on top which makes it more suited for RPGs. I suspect that will happen with a bunch of systems.
     
    jsoucy likes this.
  22. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    We haven't done videos on the RPG or Side Scroller just yet. Those ones are a bit more involved than Pong or Flappy Bird. I've been considering doing them a little differently, too. Instead of going through the whole game from a to z, I'm considering doing tutorial series on specific aspects. Like one set of videos for the UI Databinding (which has been requested), another series for building the enemy AI, and one for putting the quest together. The RPG is also persistent, so a video on that would be good (also already been requested heh). What would you think about that? I assume you'd be interested in the enemy AI mainly.

    If it'd help, I can go over specific states in here like I already did with the Pursue state. The enemy also has Initialize, Patrol, Attack, and Dead.
     
  23. pccross

    pccross

    Joined:
    Jun 20, 2015
    Posts:
    81
    That would be great! Looking for tips in all those areas as I'm still a newbie in this space.
     
  24. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    I'll see if I can get something up here over the next couple of days. Hopefully that'll help and other people will find it useful.
     
  25. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    We submitted version 1.03 for review in the Asset Store. This version includes the waypoint pathfinding system from the article above along with a new UI for the example browser (also mentioned above), and along with new CATs, some features, and bugfixes.

    The new example browser UI shows off the UI databinding feature a bit more.

    As a heads up for anyone who is on the fence about purchasing, the introductory sale price is ending with this update. There's probably a few days until it's approved by Unity, so there's still a bit of time. If you purchase now, you'll be able to upgrade to the new version for free when it is approved as will anyone else who has purchased already.
     
    Duffer123 likes this.
  26. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    @pccross

    As promised:

    upload_2018-1-30_18-19-36.png

    That's the Attack State for the enemy in the RPG example. Everything happens inside the Attack Loop, which is a Looping Action that runs everything under it and then waits for 1.5 seconds and does it again. This will keep happening as long as the NPC is in the Attack State.

    Inside the loop is an Action List set in Serial mode so that each action is run one at a time. The first thing it does in there is a Set Random Int Action, which just stores a random integer between 0 and 3 in a value called AttackChanceValue. Right after that, it checks if it got set to 0.

    If it's 0, then there's another Serial mode Action List which first subtracts 10 off the player's health using a Modify Float Value Action. Then, it plays the player hit sound using the Play Sound Action. Finally, it sets boolean animation parameters on both the player and itself using Set Bool Animation Param Action. On the player, it sets "hurt" to true, and on itself, it sets "attack" to true.

    The last thing in the Looping Action is another condition which checks if the Player is within 3 units of the NPC using a Proximity Condition. If not (note the highlighted Else Action icon), then it puts the NPC into the Pursue State.

    That's it for Attack! Let me know if you found that useful and if you'd like to see another state like Patrol or Dead. There's also an Initialize State, but it's not very interesting.
     
    Mark_01, jsoucy and homestead like this.
  27. pccross

    pccross

    Joined:
    Jun 20, 2015
    Posts:
    81
    Awesome! Thanks for the thorough explanation. Very useful! An overview of the 'Dead' state would also be helpful.
     
  28. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    Sure-- Dead is pretty short actually:

    upload_2018-2-2_21-27-30.png

    First thing it does is set the controller State Machine into the Running State which basically just resets the music from the combat music to the normal music. Then it uses a Set Bool Animation Value to set the "dead" parameter on the NPC's animator so that it plays the death animation. Then, it waits 3 seconds in a Delayed Action before completely disabling the NPC's GameObject.

    The Patrol State is also rather simple:

    upload_2018-2-2_21-29-37.png

    Like the Attack State, it has a Looping Action, though this one delays 8 seconds between each loop. All it does is use a Set Random Game Object Action to pick a random waypoint from a list. This is already set up on a Game Object called PatrolArea which has a Value Holder on it:

    upload_2018-2-2_21-32-19.png

    The first value (Patrol Objects) is a Game Object List Value, and the second (Current Patrol) is a Game Object Value. the Set Random Game Object Action grabs an entry from the list and stuffs it into Current Patrol. Then, a Navigate Action moves the NPC to that point using the navmesh. The Navigate Action waits until the target gets to the destination, so the 8 second loop delay won't start until that happens. This means the NPC will walk to a waypoint, sit there for 8 seconds, and then walk to another one.

    Hope that helps! Let me know if you have any other questions!

    Also, 1.03 was approved by Unity a few days ago. This includes the waypoint pathing system, a few new CATs, and a new look for the example browser.
     
    jsoucy likes this.
  29. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    For anyone in the Boston area, I'll be speaking at the next Boston Post Mortem (IGDA Boston) on Feb 21st. The details aren't on their site yet, but they should be soon! About half of the talk will be focused on CAT Game Builder.

    I'm also planning to spend today working on some tutorials, so let me know what you'd like to see!
     
  30. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    @sirgolan ,

    Interacting with external scripts, GOs and Component fields, Arrays and Lists....
     
    sirgolan likes this.
  31. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    @sirgolan ,

    Also, as above but fields, arrays and lists in scriptable objects.
     
  32. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    I've been trying to work out a good system for interacting with scriptable objects. It might be a bit before that lands since so far, I don't have a simple way of doing it.
     
    Duffer123 likes this.
  33. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    More strength to your arm on that!

    In the meantime, anything that can be done to interact with component / class arrays and lists would be a major boost...
     
  34. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    Can't wait for that RPG Module integration! (but guess I'll have to...).
     
  35. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    I'm with you there! That's going to be one of the most fun ones for me. Or maybe the easiest since I've written the involved systems multiple times now for various games. I was actually thinking about starting on it today, but I figured tutorials might be more useful right now.

    I've got 3 tutorials recorded that I'll start editing shortly.
     
    Mark_01 and Duffer123 like this.
  36. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    Excellent. Looking forward to more tutorials too.
     
  37. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    Here's the first tutorial! This one shows you how to build the quest journal UI in the RPG example. It talked about accessing / binding to things that aren't Values or in a Value Holder along with using some of the cooler features of CAT's UI system.

     
    Mark_01, homestead and Duffer123 like this.
  38. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    The next tutorial is ready! This time, I go over how the RPG example uses the storage system in order to save the game state between play sessions.

     
    Mark_01 and Duffer123 like this.
  39. BV123

    BV123

    Joined:
    Dec 7, 2016
    Posts:
    33
    Hi! I'm thinking about getting CAT, I'm just wondering if there is a list of all the conditions, actions and triggers. I thought I saw a link somewhere.
     
  40. Xype

    Xype

    Joined:
    Apr 10, 2017
    Posts:
    339
    Multiplayer support?
     
    LoDx likes this.
  41. BV123

    BV123

    Joined:
    Dec 7, 2016
    Posts:
    33
    Oh wait, never mind. I found it. :) http://www.trickyfast.com/catmanual/CATGlossary.pdf
     
  42. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    That's it. I just noticed it didn't get updated with 1.03, so there's a few missing. I'll make sure that gets fixed asap. Let me know if you have any other questions!
     
  43. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    Nothing explicit yet, but we have pretty big plans on that front. Are you looking to support a specific multiplayer framework, or just for multiplayer support in general?
     
  44. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    The next tutorial is ready-- this one is on using templates.



    Let me know if there's more you'd like to see! I've got one more to wrap up and then I'll look at doing another bunch.
     
    Mark_01 likes this.
  45. Moody_Mek

    Moody_Mek

    Joined:
    May 22, 2014
    Posts:
    12
    just bought it on itch.io, is there version difference or is it 1.03 too?

    EDIT:

    found release-notes in \TrickyFast\ it's 1.02 dated 1/14/2018, no biggie, will take weeks to learn this tool
     
  46. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    I just updated the download to the latest version over on itch.io. You should be able to get the latest version now. I'm also curious if it notified you of the update becoming available. 1.03 had some minor new things and bug fixes, but it wouldn't be the end of the world to skip it since it sounds like you already imported the 1.02 package. Here's the release notes from 1.03:

    ---------------------------------------------------------------------
    Release 1.03
    Date: 1/28/2018
    ---------------------------------------------------------------------

    NEW FEATURES:

    - New Waypoint Pathfinding system!
    - Added Scene Loaded Trigger.
    - Added Flappy Penguin starting prefabs for tutorial.
    - Added Set Sprite Value Action
    - Get Targets From List Action can now optionally use the count parameter instead of the end parameter.
    - Added a new targeting option for Binding, which targets the data binding object.
    - Ending a CATarget path with * will match all children.
    - Example browser has a new and improved look!


    FIXES:

    - Fix bug where Add Target To List Actions weren't triggering a property change event on the list.
    - Fix bug with Delayed Action where it wouldn't stop child actions when it was stopped.
    - UI Layout Group Data Bind wasn't listening for chagnes on the actual list of objects.
    - Fix display issue which prevented triggers from showing as untriggered after they are restarted.
    - Fix a missing component in HelloWorldUnity example
    - Rename some font licenses so Unity Asset Store doesn't pick them up as CAT's license
    - Rename Set Navigation Destination Action since the file name had a typo
    - Fix some missing components in ValueExample scene
     
    Bhanshee00 likes this.
  47. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    Just finished up the latest tutorial. This one goes over how to make quests. Enjoy!

     
    Mark_01 likes this.
  48. Moody_Mek

    Moody_Mek

    Joined:
    May 22, 2014
    Posts:
    12
    Yes that is correct, I got mail notification from itch.io, everything is working. Thank you Sirgolan.
     
  49. sirgolan

    sirgolan

    Joined:
    Oct 18, 2013
    Posts:
    152
    Awesome! I wasn't sure how upgrading was going to work over there. Thanks for letting me know, and I'm glad itch.io made things easy!
     
  50. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,032
    @sirgolan ,

    Any further thoughts or developments on:

    - access to scriptable objects and their fields?

    - access to fields within Lists and Arrays in third party classes, scriptable objects etc and sorting or filtering .... Or perhaps some Cat equivalent to Lists?