Hydrogue - Networked aRPG / Topdown framework

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!

6 Likes

Looking forward to it!

It would be great to see gamepad support for the inventory system.

2 Likes

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!

When you say inventory module do you mean like a actual inventory system with UI?

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

using UnityEngine;

namespace Cleverous.Moose.Demo
{
    public class MooseExampleDemo : MonoBehaviour
    {
        public GameObject CharacterPrefab;
        public MooseInventoryUi ItemInventoryUi;
        public MooseInventoryUi GearInventoryUi;
        public MooseInventoryUi EquipmentInventoryUi;
        public ItemData StartingItem;

        public Inventory GearInventory;
        public ItemProperty[] GearRestriction;
        public Inventory EquipmentInventory;
        public ItemProperty[] EqRestriction;

        private void Awake()
        {
            GameObject characterObject = Instantiate(CharacterPrefab, Vector3.zero, Quaternion.identity);
            IUseInventory exampleCharacter = characterObject.GetComponent<IUseInventory>();

            // This inventory is hosted on the character. If the character is destroyed, the inventory also dies.
            ItemInventoryUi.SetTargetInventory(exampleCharacter.Inventory);

            // These inventories are hosted off the character and are preserved if the character gets destroyed.
            GearInventory = new Inventory(exampleCharacter, 4, GearRestriction);
            GearInventoryUi.SetTargetInventory(GearInventory);

            EquipmentInventory = new Inventory(exampleCharacter, 4, EqRestriction);
            EquipmentInventoryUi.SetTargetInventory(EquipmentInventory);

            // If you wanted to, you could host the ItemInventory here also and just use the character's 'Inventory' autoproperty to point back here.
        }
    }
}
2 Likes

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

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.

1 Like

Photon multiplayer for Co-op goodness? Pretty please? :slight_smile:

1 Like

Looking into it ^_^. Considering unet, trying to find the easiest to deploy with.

1 Like

I’d be happy to use UNET. It’s not like I’d be making an MMO.

1 Like

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.

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.

Any updates?

Trello board stays up to date. Link in OP.

Crap and I just bought the Deftly one package :P. Looking forward for V2 of Deftly. Making a fortnite clone but top down ( doh) :smile:. So the inventory module would be a really great feature! Keep up the good work!

1 Like

Sorry for the confusion! You can email me for a refund if you prefer.

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.

Here’s an update on the Inventory editor tooling.

3424549--270371--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.

2 Likes

Any thoughts yet on how inventory management / UI will work for the player at runtime?

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.

3424722--270382--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.