Search Unity

Hydrogue - Networked aRPG / Topdown framework

Discussion in 'Assets and Asset Store' started by LaneFox, Jan 8, 2018.

  1. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Hydrogue
    (aka Deftly 2.0)

    Trello Board (Progress/dev tracking)

    What is this?
    It's Deftly 2.0! Deftly was a 5 star rated Topdown shooter kit for building singleplayer and couch co-op games and included tools to create gameplay of great variety - ranging from games like Hotline Miami to Gauntlet or Dead Nation right out of the box.

    A forte for Deftly was it's outstanding designer-friendly features which have been deeply expanded to truly stand out among it's peers.

    Hydrogue is vastly superior in every way. It features fully server authoritative multiplayer gameplay powered by the Mirror networking library (MIT) and boasts powerful new modules that will enable an even greater variety of games to be created with it, pushing into genres like aRPG which highlight complex character attributes, abilities and skills, complex melee systems, and robust inventory management.

    With these changes, you'll now be able to easily build games like Minecraft: Dungeons, Wolcen, or Path of Exile while greatly improving on the best part of Deftly - flexibility and designer friendliness!

    Requirements
    • Unity 2020.1 (possibly 2019 LTS)
    • New Input System (built-in package)
    • Text Mesh Pro (built-in package)
    • Mirror (free MIT networking solution)

    What will it include?
    With a focus on scalability, compartmentalization, ease of use and tools to make any designer happy we're sure that this upgrade will stand well above the original Deftly's reputation!

    Of course, all of these features will be fully compartmentalized and separated as their own product so if you only want one or two then you'll be able to scoop them up and build your own project with them individually - Hydrogue seamlessly integrates them all for you and provides the full suite experience.

    When can I have it?
    When it's ready =) Time is subjective. You can sign up for our closed testing phases with the link below and we might reach out.

    Closed Testing Phase Sign-up

    // Thanks!
     
    Last edited: Nov 19, 2020
    Vog, elmar1028, d1favero and 3 others like this.
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Looking forward to it!

    It would be great to see gamepad support for the inventory system.
     
    600 and d1favero like this.
  3. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Yeah I was looking into that. It's fully functional atm with a mouse, but I'm pretty sure I can adjust a few things to make it work with controllers. Thanks for the suggestion!
     
  4. TechSins

    TechSins

    Joined:
    Feb 16, 2015
    Posts:
    142
    When you say inventory module do you mean like a actual inventory system with UI?
     
  5. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Yup!

    https://i.imgur.com/KoA09yS.gifv

    In terms of workflow you just create an inventory in the code and point a UI component at it, thats pretty much it. It'll do the rest and keep track of changes.

    This is the entire implementation code for the demo shown

    Code (csharp):
    1.  
    2. using UnityEngine;
    3.  
    4. namespace Cleverous.Moose.Demo
    5. {
    6.     public class MooseExampleDemo : MonoBehaviour
    7.     {
    8.         public GameObject CharacterPrefab;
    9.         public MooseInventoryUi ItemInventoryUi;
    10.         public MooseInventoryUi GearInventoryUi;
    11.         public MooseInventoryUi EquipmentInventoryUi;
    12.         public ItemData StartingItem;
    13.  
    14.         public Inventory GearInventory;
    15.         public ItemProperty[] GearRestriction;
    16.         public Inventory EquipmentInventory;
    17.         public ItemProperty[] EqRestriction;
    18.  
    19.         private void Awake()
    20.         {
    21.             GameObject characterObject = Instantiate(CharacterPrefab, Vector3.zero, Quaternion.identity);
    22.             IUseInventory exampleCharacter = characterObject.GetComponent<IUseInventory>();
    23.  
    24.             // This inventory is hosted on the character. If the character is destroyed, the inventory also dies.
    25.             ItemInventoryUi.SetTargetInventory(exampleCharacter.Inventory);
    26.  
    27.             // These inventories are hosted off the character and are preserved if the character gets destroyed.
    28.             GearInventory = new Inventory(exampleCharacter, 4, GearRestriction);
    29.             GearInventoryUi.SetTargetInventory(GearInventory);
    30.  
    31.             EquipmentInventory = new Inventory(exampleCharacter, 4, EqRestriction);
    32.             EquipmentInventoryUi.SetTargetInventory(EquipmentInventory);
    33.  
    34.             // If you wanted to, you could host the ItemInventory here also and just use the character's 'Inventory' autoproperty to point back here.
    35.         }
    36.     }
    37. }
     
    d1favero and TonyLi like this.
  6. TechSins

    TechSins

    Joined:
    Feb 16, 2015
    Posts:
    142
    Ah nice that was always something i wanted to do in the old Deftly, would it be possible to make a top down survival game with the new one? something like the wild eight
     
  7. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    I agree and it was a big reason I decided to go ahead and create an inventory system.

    I haven't played TWE yet but conceptually the out of the box features will support making a survival game. Stats and Inventory alone are the two major fundamentals and both of those modules already work independently, Statinator already being fully integrated. Plus I got a lot of ideas after working on Isobox and planned on at least adding the ability to create/destroy structures so it's very likely going to ship with those elements in a demo scene.
     
    digiross likes this.
  8. Neviah

    Neviah

    Joined:
    Dec 1, 2016
    Posts:
    235
    Photon multiplayer for Co-op goodness? Pretty please? ^_^
     
    LaneFox likes this.
  9. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Looking into it ^_^. Considering unet, trying to find the easiest to deploy with.
     
    Neviah likes this.
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    I'd be happy to use UNET. It's not like I'd be making an MMO.
     
    d1favero likes this.
  11. Neviah

    Neviah

    Joined:
    Dec 1, 2016
    Posts:
    235
    Easiest is Photon I thought, automatically puts you in a game with someone else. Does the hard work for ya.

    I think with Photon, you'd make a room, and then it'll always be open for others to join.
     
  12. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    With Photon I have to build it as an optional feature or maintain a separate codebase, which is really tedious. UNet is built in, but is not as popular so it wouldn't be worth it if users just strip it.
     
  13. TechSins

    TechSins

    Joined:
    Feb 16, 2015
    Posts:
    142
    Any updates?
     
  14. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Trello board stays up to date. Link in OP.
     
  15. Studder

    Studder

    Joined:
    Feb 25, 2013
    Posts:
    2
    Crap and I just bought the Deftly one package :p. Looking forward for V2 of Deftly. Making a fortnite clone but top down ( doh) :D. So the inventory module would be a really great feature! Keep up the good work!
     
    LaneFox likes this.
  16. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Sorry for the confusion! You can email me for a refund if you prefer.
     
  17. Studder

    Studder

    Joined:
    Feb 25, 2013
    Posts:
    2
    Nah it's ok. I will buy the discounted version 2 :p. already got the source code of V1 will play with that for now.
     
  18. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Here's an update on the Inventory editor tooling.

    Play.gif

    The Inventory module is totally decoupled and standalone so you'll be able to use it in other projects very easily.

    Drag-n-drop: It will auto filter and clone-import anything you drag into the import slot, including entire Item databases. Unsupported assets are skipped so this is really straightforward and easy.

    Databases: You can retarget different database files or semi-kinda-projects in code. Working on editor UI for swapping easily so this could allow sub databases that work as categories.

    Item Editor UI: The UI just clones the inspector. In the gif it's using a custom inspector and drawing it into the editor window so you never have to work over Items in the normal Inspector window or really, ever touch the files themselves.

    Clean: You can clean the DB of missing/broken references easily by clicking the button. Sorting doesn't matter, so you can sort them how ever you want and not worry about runtime references breaking or anything.

    Sync: Items in their data form contain a reference to a prefab that will be their world representation object. This target prefab should contain a script which serves as a generic pointer to the DB item. It's cumbersome to assign these references manually so the Sync button does it automatically for you which means you just design and point to things with the custom editor and the Sync button will force the Prefabs to point back and guarantee that they'll work correctly.

    Auto-Sync makes it easy to just work in the designer and not worry about the other parts of the system.
     
    superwendel and Neviah like this.
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Any thoughts yet on how inventory management / UI will work for the player at runtime?
     
  20. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    It's pretty easy. There's one script that captures player-spawn spawn events and hooks into their inventory to sync and capture any changes. Currently it just populates a target GridLayoutGroup with UiSlot prefab instances and automagic's everything. Will make sure this is explicitly controllable later, but it cares for the UI completely and communicates seamlessly with the target inventory for any change events.

    CropperCapture[4].jpg

    Runtime UI behaves as expected. Here's what the current example demo scene does:

    https://i.imgur.com/lgTQs8C.gifv

    So here you can see some features:
    • Grid populated Inventory with Drag-n-drop functionality
    • Automatic UI updates via hooks (Item pickups, changes, drops, etc are all event based and automatic)
    • Type restricted slots (Can't drag Helmet or Coin into Chest slot)
    • Transfer from one Inventory class to a different Inventory class (MainInventory to ArmorInventory).
    It isn't shown in the gif but there is also automatic handling on drag events to swap slots around, auto-stack, merge, drop and other QoL things you would expect to happen and you don't have to deal with any of the low end stuff.

    There's some more work to polish it up for the MVP but basically it works and is pretty easy to use. The automatic population of the Grid elements is done by assigning a couple of prefabs for UI components in the game preferences SO and it uses that to build the UI.
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Looks good! Please remember to add gamepad support. :)
     
    LaneFox likes this.
  22. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    I haven't forgot =)

    For an update on Networked Multiplayer it's looking like UNet is basically only half functional with the LLAPI being decent but the HLAPI being quite a ways below par for production readiness. After watching it for a good period of time it doesn't seem to be getting any better. Not that you can't make basic multiplayer, it's that it won't be good long term without significant effort, especially in comparison with it's peers. This leaves Photon as the best option since it's free out the door and incredibly well supported and widely used in many games.

    So, the question is whether you guys are actually interested in Networked Multiplayer support. It would mean Photon (free) is required in your project and the timeline gets pushed.
     
  23. Neviah

    Neviah

    Joined:
    Dec 1, 2016
    Posts:
    235
    I've been waiting for Photon multiplayer integration. Badly!
     
  24. digiross

    digiross

    Joined:
    Jun 29, 2012
    Posts:
    323
    At this point, photon is about the only viable option that works well. It gets my vote +1
     
    Last edited: Mar 19, 2018
    Neviah likes this.
  25. wolfen231

    wolfen231

    Joined:
    Apr 22, 2014
    Posts:
    402
    Will purchasers of the first one get an "upgrade" option?
     
  26. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Yes.
     
  27. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    Are you planning a melee attack? I know that 1.0 is a shooting game kit. I hope 2.0 can be used for various action games.
     
  28. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Yes there will be melee support.
     
  29. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    I thought Rewired and Incontrol were already planned to be supported based on the original discussion in the older thread,
     
  30. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    He's talking about UI navigation.
     
  31. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    FWIW, v1 did have sword melee.
     
  32. BilginSahin

    BilginSahin

    Joined:
    Jul 2, 2012
    Posts:
    48
    any news to 2.0?
     
    Neviah likes this.
  33. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Been working on the networking portion of it lately. Basic stuff works, connections, UI, lobby, movement, weapons, etc but it's pretty involved to get all of the features effectively and reliably networked while trying to keep traffic to sane levels.

    On the up-side it's looking good for hot joins and host migration.

    With the new way things are laid out you basically build small ScriptableObject assets in the project folder and make one script for major items like Weapons, Characters, etc. Those major items/prefabs are basically just pointers to those ScriptableObjects which makes it insanely modular and flexible - even being able to swap out components at runtime with no issue - but also makes the project folder a little bit cumbersome to manage and navigate.

    I'm considering making a heavy database driven editor for characters, weapons and items that takes 100% of the organization work out of it for you but it would probably be too much effort. Although, it would really just make the kit stupid easy and convenient to work with, even for large scale games.

    Trello board
     
    Neviah and digiross like this.
  34. BilginSahin

    BilginSahin

    Joined:
    Jul 2, 2012
    Posts:
    48
    thats sounds great! keep going on!
     
  35. Mucossa

    Mucossa

    Joined:
    Feb 25, 2018
    Posts:
    34
    exactly when will we see the asset store?
    I am awaiting the release date...
     
  36. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    There is not a scheduled release date yet.
     
  37. spelljv

    spelljv

    Joined:
    Jan 24, 2016
    Posts:
    30
    Will be this year? Can you give us an update on this? =]
     
  38. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Not sure! I hope so, but I have an insane schedule for the rest of the year.
     
  39. blackbird

    blackbird

    Joined:
    Aug 9, 2011
    Posts:
    591
    plz make sure it's run with 2017.1 so everybody can use it on all platforms
     
  40. BilginSahin

    BilginSahin

    Joined:
    Jul 2, 2012
    Posts:
    48
    I hope you release v2 this year. Need it so much! =) Any news?
     
  41. lolclol

    lolclol

    Joined:
    Jan 24, 2013
    Posts:
    212
    yeah hope you release it soon. :D
     
  42. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Wanted to post an update for you guys:

    Haven't worked much on it lately, been busy with real life higher priority stuff. Zed (the 3d man and animations) is available for purchase as well as the Stats system for a while now. Sorry for being so far behind, but real life has priority.

    Character and Stats modules
    These have been available for a while, Zed is the 3d character model/animations and Statinator is the stats module.

    Deterministic Gameplay and Replays R&D
    I spent a lot of time investigating making the gameplay deterministic mainly so you could save/load replays of the game and have a quasi-lockstep networking model that is 100% accurate even using the built in Physics system by making a simulation layer that manually ticks everything with it's own timestep, buffers commands and shares a gametick Id between players which effectively separates the gameplay model from the visualization systems. Good news is that it does work perfectly and will scale well, bad news is it requires too much time to integrate all of the subsystems and also the replay files, even compressed, are too big for normal length games so I don't plan to add support for that until I have more time and can investigate compressing the command data significantly. It's probably going to be done for a big dot release way way down the roadmap because it's extremely powerful and I think it is a fantastic feature concept.
     
  43. blackbird

    blackbird

    Joined:
    Aug 9, 2011
    Posts:
    591
    no updates ? or project dead ?
     
  44. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Moved to Mirror instead of Photon, but generally the same state. Other priorities are still higher.
     
    Shizola likes this.
  45. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Update!

    Back end powerhousing extravaganza! The entire system runs on a database system now. Everything is a
    DataEntity : ScriptableObject
    type, and there's an awesome custom Vault Inspector Window that can inspect and modify anything that derives from
    DataEntity
    with incredible ease. No more drag and drop, the Vault Inspector finds everything in the project that derives from DataEntity and creates fancy, easy to use Dropdown menus so you can filter and modify with ease.


    Check out the filters!
    ezgif.com-crop.gif




    You can filter on abstract types too, which makes it easy to find things like all "Weapons" instead of specific types of "Weapons".

    ezgif.com-crop (2).gif



    The dropdowns make it very easy to select which content goes into a field, so assembling custom database items is basically point and click with no need to sift through the project looking for a file.

    You can also conveniently click buttons next to each dropdown field to 1) inspect this field in the Vault Inspector, 2) find this file in the project, 3) pick an asset manually.

    After you move around a bit, you can easily navigate back to your selections with the History dropdown.
    ezgif.com-crop (3).gif


    Untitled-2.png

    Untitled-4.png
     
    superwendel, Mucossa, hopeful and 4 others like this.
  46. NeatWolf

    NeatWolf

    Joined:
    Sep 27, 2013
    Posts:
    924
    That's a massive overhaul!

    I was wondering if you're planning to also decouple the DataEntity -> ScriptableObject subsystem as a standalone framework. I'm pretty sure it could be used in many more game genres as a base to build any game.

    Also, I'm loving the UI, already feel very polished and usable.
    And...uses ScriptableObjects! (I began getting obsessed with those, lately :p)

    Keep up with the great work!
     
    LaneFox likes this.
  47. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521
    Thanks!

    The "vault" /db system is standalone, I'm trying to make all major parts as modular as possible and separate the integration code from the core code. It makes all the code cleaner, easier to debug and maintain.
     
  48. christougher

    christougher

    Joined:
    Mar 6, 2015
    Posts:
    558
    I literally just watched several of the 2-3 year old Unite talks about doing this. Looks great!
     
    LaneFox likes this.
  49. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521


    Just a brief update - we have reached a stable "Deathmatch" milestone!

    Netcode for Movement, Weapons, Inventory and Stats is working, stable and server authorative. Clients can self-host games, connect to an IP directly (no punchthrough yet, have to open ports) and play deathmatch with friends. The editor Dashboard system for the framework is stable and easy to use but could use some QoL improvements to be comfortable at scale. The build runs ridiculously fast, but I haven't done much specific profiling.

    Next on the Agenda is making the Ability system networked and building AI that is efficiently networked. After that I can basically just build content, docs, and publish.
     
    Neviah, TonyLi, Vog and 1 other person like this.
  50. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,521



    Imported HDRP, added integrated VFX Graph support for weapon effects, added runtime debugging GL stuff, worked out tons of bugs, niche issues and QoL additions for all systems to reach a happily stable MVP stage.

    There's still some bigger bugs to work out, but it's running great.

    You can follow the progress on the Trello board. We're in the Beta card stack right now, next up is...
    • Networked Abilities System
    • AI system
    • Melee Weapons
    https://trello.com/b/nZPvst4k/hydrogue
     
    Vog and TonyLi like this.