[SOON] Isobox - 2D/Iso style survival Framework

Isobox
Isobox is a Code Framework for building games that target the survival genre using 2d isometric style graphics. It provides the solutions for the following features:

  • Editor Tools for creating Items

  • Item Database (Custom Unity-driven - not sql/csv)

  • API for game items, weapons, structures

  • UI <> Item DB interfacing

  • UI Inventory interacting with drag-n-drop

  • Characters via generic Skeletons and Skeletal Animation

  • Sprite tools for modifying the character spriteset on the fly

  • Build and interact with structures in the game world

  • Straightforward front end API for loot spawning, item db access, spriteset modifying, etc.

  • Basic UNET integration for P2P Multiplayer.


>> Animated GIF <<
>> Playable Build <<

GIF above shows UI Item stacking, world item picking, weapon equipping, damage to trees, loot spawning, character animation, character spritesheet swapping and skeleton swaps, world sprites sorted by camera depth, point lighting, sprite camera-facing without zsorting issues, etc.

Currently we’re aiming for a paid beta release for ~$20 with most of the existing features mentioned here ready to go. If you’re interested in getting access earlier to provide feedback you can PM me.

Code snippet examples

        [Server]
        public virtual void Die()
        {
            Game.LocalPlayer.CmdSpawnItem("Log", transform.position, 2, true);

            RpcDieOnClients();
        }
public void CmdSpawnItem(string title, Vector3 position, int stackSize, bool bounce)
        {
            CmdSpawnItem(ItemUtility.FindItemIndexByName(title), position, stackSize, bounce);
        }
namespace Isobox.ItemSystem
{
    public class Inventory
    {
        public Inventory(Transform uiGridParent, int maxSlots)
        {
            Content = new List<BaseItem>();
            // if you resize the inventory, fill it with nulls.
            for (int i = 0; i < maxSlots; i++) Content.Add(null);
            MaxSlots = maxSlots > 0 ? maxSlots : 1;
            UiGridParent = uiGridParent;
        }

        public int MaxSlots;
        public List<BaseItem> Content;
        public GameObject Owner;
        public Transform UiGridParent;

        public delegate void OnSlotChanged(int index);
        public OnSlotChanged SlotChanged;
   
        public virtual BaseItem GetItemAt(int index)
        {
            BaseItem pull = Content[index];
            Content[index] = null;
            return pull;
        }

        /// <summary>
        /// Add's an Item to the inventory AND creates UI for it if uiGridParent is not NULL.
        /// </summary>
        /// <param name="item">The Item to be added</param>
        /// <param name="amount">The stack count of the Item added</param>
        /// <param name="tryToMerge">The item being added could be merged into existing slots of the same type.</param>
        /// <returns>The index the item was placed into. -1 on failure.</returns>
        public virtual int AddItem(BaseItem item, int amount = 1, bool tryToMerge = true)
        {
            if (amount == 0) amount = 1;
            if (item == null)
            {
                Debug.LogError("Item to instantiate was null.");
                return -1;
            }

            int liveStackCount = amount;
<...>
<...>
<...>
3 Likes

Still in progress ?

1 Like

Didn’t grab much traction so I put it on the shelf for now. Considered releasing it as a beta but decided against it since I already have a day job doing Unity and a big upgrade for Deftly aimed at October so another parallel project would spread me uncomfortably thin.

Unity also absorbed Anima2D last year which I’m hoping will stimulate some 2d skeletal stuff built in so I don’t have to roll my own solution for it in Isobox. Already did, but no doubt a built-in solution would be preferred.