ARPG


The A stands for asset flip, as coined by Jim Sterling. :stuck_out_tongue:

Heh not really, it’s going to be a fairly traditional action role-playing game, but hopefully I can show that it’s possible to create something that looks and plays rather well without making a single asset yourself. Everything you see in the above image was not made by me, but is assets I’ve found, most of them from the Asset store, all of them free. The most prominent one (the low poly town) was only free because of my Unity Pro Level 11 membership, but it’s dirt cheap and I still think it’s amazing what you can do in a very short amount of time by just slapping some assets together. I’m sure the assets creators spent a long time making all the assets, but I’ve only spent a weekend on the game at this point, and yes, I know it’s not much of a game at the moment, but in my opinion it’s a solid foundation for one, and working on it feels like modding an existing game rather than making a game from scratch, and I can see why people enjoy this approach to game development.

You can download a Windows standalone from here if you want to test it out: ARPG | TwiiK.net

Originally I wasn’t going to make this game at all, I was struggling with getting back into Unity after being away for a while (as I always do) and I was looking for an interesting tutorial to revitalize my passion for game development. :stuck_out_tongue: I came across this tutorial by GameGrind on how to create an inventory system and I thought that was something I could use for an X-Com type game I was working on the last time I was working with Unity, and I remember trying to make an inventory using the old Unity GUI and thought it was absolutely dreadful so the fact that this tutorial series was just a few hours long and the end result looked so promising really peaked my interest. When I reached the end of the tutorial I really wanted to see how polished I could make my inventory and I felt like the tutorial approach was a bit limited so I wanted to try and recreate the inventory seen in a game like Path of Exile, but to do that I needed some quality art (obviously) because it’s so much more fun to prototype with good looking art. :smile: I ended up discovering some on opengameart.org and from there things spiraled out of control and now I’m completely obsessed with this project, it’s so fun to work on and everything comes together so effortlessly.

I will post a list of all the assets currently in the game at the bottom of this post and I will try to keep it up to date whenever I update the game for anyone wanting to get their hands on the same assets.

If you download the assets yourself you’ll discover that I’ve tweaked some of them a bit, and that’s where the fun comes in, they are so easy to tweak. For example I knew I wanted my character to be able to equip different weapons, but the knight model came as one combined mesh, but with just a quick trip into 3ds max to detach his sword and shield and export him again I had that problem fixed, all the animations and textures still worked perfectly. Of course he looks a bit odd while not wielding anything or if he’s wielding something very different from his original sword and shield, but if this project ever gets to a point where I’m serious about it I can just put a bit more effort into that particular asset or replace it with an asset of my own that fits the needs I have for it. Another example is the low poly weapon set which came with a purple potion model and I had no purple potion icon in my icon set, a quick trip into Photoshop fixed that and suddenly I had a model and an icon that looked like they were made to fit together from the start. One last example is the town asset which came with both a night time scene and a day time scene so I combined them through some clever scripting and presto you have something that is way cooler than the sum of its parts. To spice it up further I made a script which gathers all the emissive windows for all the houses into an array, shuffles the array and then enables the windows one by one each time it becomes night to give some feeling of life to the town. And prototyping with the new UI is just a dream. I thought I should put some settings in there to let people with less powerful computers turn off the image effects as well as let people control the time of day and I was able to do that in 10 minutes and have it look nice.


We’d better get back 'cause it’ll be dark soon and they mostly come at night. Mostly.

I’m not sure what will become of the project in the end, most likely it’ll be a perpetual hobby project I can dabble with whenever I feel like it.

I will add a roadmap when I know what features I want to work on and in what order.

Asset currently in the project:

UI by Ravenmore (Free): Fantasy UI Elements by Ravenmore | OpenGameArt.org
Inventory Icons by Ravenmore (Free): Fantasy Icon Pack by Ravenmore | OpenGameArt.org
Zombie by M.eye (Free): Unity Asset Store - The Best Assets for Game Making
Chest by Fairy shop (Free): Unity Asset Store - The Best Assets for Game Making
Knight by Dungeon Mason (Used to be free, now $5): Unity Asset Store - The Best Assets for Game Making
Low poly weapons by SICS Games (Free): Unity Asset Store - The Best Assets for Game Making
Low poly town by Evgenia ($25): Unity Asset Store - The Best Assets for Game Making
Dungeon Level Kit by Hedgehog Team ($20): Unity Asset Store - The Best Assets for Game Making
Lowpoly Toon Cat Lite by Polydactyl (Free) : Unity Asset Store - The Best Assets for Game Making
Toon Elf character by BBSoftware & Snowball ENT ( Free): Unity Asset Store - The Best Assets for Game Making
Floor Segment by ZugZug Art (Free): Unity Asset Store - The Best Assets for Game Making

Barely noticeable and only there because I own them and was curious how’d they look in the game:
SSAO Pro by Thomas Hourdel ($25): Unity Asset Store - The Best Assets for Game Making
SE Natural Bloom & Dirty Lens by Sonic Ether ($20): Unity Asset Store - The Best Assets for Game Making
Filmic Tonemapping by Paroxe ($27): Unity Asset Store - The Best Assets for Game Making

All of these image effects can easily be replaced by the free post processing stack made by Unity.

7 Likes

I recorded a short video of me opening the only chest currently in the game, enjoy: :stuck_out_tongue:

You made a nice prototype. Now, try to sell it to real gamers. That’s where you will be judged.

Thanks for the kind words. :slight_smile:

As for the “judging”, there’s no doubt in my mind that I could get this game Greenlit on Steam in its current form if I wanted to, I’ve seen the type of Unity asset flip games that are on Steam and some of them even seem to sell alright and have decent feedback despite obviously being just assets taken directly from the Asset store and sold on Steam. And that means they were Greenlit in the first place…

But I’m my own harshest critic and if I ever intend to sell this it won’t be before I think it’s worth selling, and that’s a long way off, and I probably would replace most, or all, of the assets with assets made myself or assets made specifically for the game before doing so. :slight_smile:

Like I said in the original post I’ll get a proper roadmap sorted out sooner or later, but some of the features I want in the game are: Grid based inventory with items of varying sizes like in Diablo or Path of Exile, proper combat (obviously), it will probably be a lot slower than in most modern ARPG’s and more similar to how the combat was in Diablo 1, randomly generated instanced dungeons, and a lot more features and polish to make the world feel like a living, breathing sandbox simulation rather than the static worlds you have in standard ARPG’s, it will be more like Skyrim or Minecraft. And if this ever becomes more than a prototype it needs to have online multiplayer.

1 Like

I’ve updated the roadmap now:

When I have all these features in the game I feel like I have a fairly solid foundation to play around with.

My main idea with the game is based on playing a ton of ARPG’s over the years and realizing that I’ve started to tire a bit of the concept and the addictive nature of them. Lately my favorite games have been roguelikes like Spelunky, Binding of Isaac, Risk of Rain, Rogue Legacy etc. because the idea of a short gameplay session comes so natural for games like those. You play 30-60 minutes and then you quit. When I play Diablo 3 or Path of Exile I get swallowed up for an entire day and feel like I’ve just wasted my time (even though I may have had fun). 1 hour in a game where nothing has a start or an end goes by so much faster than in a game where 1 hour is the entire game, at least in my opinion. And spending thousands of hours in a game “doing nothing” was fine for me years ago, but now I feel like it’s just a tiny bit wasteful. :slight_smile: I know people who are able to play Path of Exile for just 30-60 minutes and quit, but I’m just not able to do that or able to have fun trying to do that so I’m trying to make a game where a short gameplay session comes more natural, just like in a roguelike.

What inspired me was a newly released feature in Path of Exile which in my opinion almost combines the best of roguelikes and ARPG’s. In Path of Exile there’s a dungeon where if you die you have to start the entire dungeon over again. So you get the permadeath, one-run, intense gameplay of a roguelike without the extreme time investment loss that playing hardcore in an ARPG and having to start your entire character over again usually involve. All you lose if you die is your current run in the dungeon, just like you would in a roguelike. I loved this dungeon, it’s an amazing feature in my opinion and I want my entire game to be like that. I want the town to function like a static hub where you get quests, buy/sell items and perhaps at one point in the future interact with other players and then you have procedural instanced dungeons of varying difficulty that you can venture into and if you die in those you are returned to town and have to start the dungeon all over again.

PS: Is there anyone here who know any good articles or videos detailing how melee combat works in games like Diablo, Path of Exile or any other similar type of game? Is there a de facto standard way of determining when an enemy is in range, when it takes damage etc.? I have a general idea of how I want to handle it, but it would be nice to find some information on how other games have handled it and so far my Google-fu has been off. I’m guessing games like Dark Souls or any game trying to have a fairly realistic approach to combat actually use colliders on the weapons themselves to determine when a weapon strikes an opponent, but in most ARPG’s a melee attack can only hit a single enemy at a time and I guess you handle that buy using a spherical trigger equal to your weapon range, checking if an enemy is within a cone in front of you and making sure to only deal damage to a single enemy at a time (the one closest to the cursor presumably) or something like that.

I’ve released a build for version 0.0.2. This version has mainly been about UI polish, but I’ve made some other changes as well. The game isn’t very playable still, but I didn’t want the public build to be so far beyond what I was currently working on.

At the moment I have two milestones for the game. The first one is version 0.1.0 and that’s when I consider the core game mechanics more or less properly implemented. That is movement, various interactions and basic melee combat should work pretty much how I want them to. After that I’ll work towards 0.2.0 and I consider that done when I have implemented an infinitely playable gameplay loop where you can enter a procedural dungeon, kill and loot everything, return to town to equip/sell, rinse and repeat.

When that is done I’ll take a step back and see where I want to take this. The most fun part of game development for me is proving to myself that I can create functional prototypes of the game genres I love that I myself consider to be as good or better than the games that inspired me in the first place. :slight_smile:

I’ll at least make a Mac build for 0.1.0 and 0.2.0, I can probably make an untested Linux build as well, but for these smaller builds it’s Windows only, I’m afraid. Such is the life after the death of the Web Player. :frowning:

Changes for this version:

  • Tooltips now always stay within the screen boundaries.
  • Polished up the UI a bit.
  • Added a close-button to the interface panels.
  • Made it possible to drag the interface panels around.
  • Added a settings menu with some quality of life game settings like brightness, audio, performance etc.
  • Moved the equip slots to the inventory panel and made the character panel display character stats.
  • The zombies now have a basic AI and you can kill them. They can’t hurt you yet.
  • Added some more animations to the zombies and they’re now spawned from spawn zones that activate when you enter them.
  • Implemented player and zombie health.
  • Added life and mana meters, but they’re not wired up yet.
  • Added a cat which follows you around and you can pick it up, obviously.
  • Replaced the color highlight on items with an outline. It works perfectly for the cat and the zombies, but it’s wonky for the items. Not sure how to fix it as I’m a shader noob.

I also would like some help with my outline shader

As you can probably tell from this image it’s not working perfectly:

For the cat, the player or the zombies it actually does work just the way I want it, but for objects made up of many different meshes like the chest it looks wonky and for objects like the shield which have sharp angles it also fails.

This is the shader:

Shader "Outlined/Silhouette Only"
    {
    Properties
        {
        _OutlineColor("Outline Color", Color) = (0,0,0,1)
        _Outline("Outline width", Range(0.0, 0.1)) = .005
        }

        CGINCLUDE
        #include "UnityCG.cginc"

    struct appdata
        {
        float4 vertex : POSITION;
        float3 normal : NORMAL;
        };

    struct v2f
        {
        float4 pos : POSITION;
        float4 color : COLOR;
        };

    uniform float _Outline;
    uniform float4 _OutlineColor;

    v2f vert(appdata v)
        {
        v2f o;
        o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
        float3 norm = normalize(mul((float3x3)UNITY_MATRIX_IT_MV, v.normal));
        float2 offset = TransformViewToProjection(norm.xy);

        o.pos.xy += offset * _Outline;
        // The below line makes the line the same thickness independent of zoom level. Looks weird imo.
        //o.pos.xy += offset * o.pos.z * _Outline;
        o.color = _OutlineColor;

        return o;
        }
    ENDCG

    SubShader
        {
        Tags { "Queue" = "Transparent" }

        Pass
            {
            Name "BASE"
            CULL OFF
            ZTEST ALWAYS
            ZWRITE OFF
            Blend ONE ONE

            Stencil
                {
                REF 2
                COMP ALWAYS
                PASS REPLACE
                ZFAIL REPLACE
                }

            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            half4 frag(v2f i) :COLOR
                {
                return half4(0,0,0,0);
                }
            ENDCG
            }

        Pass
            {
            Name "INNER"
            CULL OFF
            ZTEST ALWAYS
            ZWRITE OFF
            Blend One One

            Stencil
                {
                REF 1
                COMP ALWAYS
                PASS REPLACE
                ZFAIL REPLACE
                }

            CGPROGRAM
            #pragma vertex vert2
            #pragma fragment frag
                v2f vert2(appdata v)
                {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
                o.color = _OutlineColor;
                return o;
                }

            half4 frag(v2f i) :COLOR
                {
                return half4(0,0,0,0);
                }
            ENDCG
            }

        Pass
            {
            Name "OUTLINE"
            CULL OFF
            ZTEST ALWAYS
            ZWRITE OFF
                    // Not sure what these do. Something about transparency.
                    //BLEND ONE ONEMINUSDSTCOLOR
                    //Blend One One

            Stencil
                {
                REF 2
                COMP EQUAL
                PASS REPLACE
                ZFAIL REPLACE
                }

            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            half4 frag(v2f i) :COLOR
                {
                return i.color;
                }
            ENDCG
            }
        }
    Fallback "Diffuse"
}

The shader is from here http://twiik.net/resources/outline-shader and I’m basically using it without changes.

I just saw that Unity has added selection outlines in the editor in 5.5. Is that shader available anywhere? Or does anyone know of a any other outline shaders I can “be inspired by”? :stuck_out_tongue:

Why not just make it one mesh?

How can I animate it opening/closing etc. then?

Also, that won’t really help me much as it would still be broken for the shield which already is one mesh. So unless I can fix it for the shield I see no reason to start changing the chest mesh.

well… with bones, like normal? Put the joint of the bones where the hinge is and animate it like anything else.

Well, yeah, but it was really fast and easy to just animate it inside Unity when it was made up of multiple parts. And like I said it would still be pointless as I have 3 cases I need to solve and that would only potentially solve 1 of them, and later on I may end up with an object that has to consist of multiple meshes and then I’m back at the beginning again. :stuck_out_tongue:

An example would be an enemy wearing equipment like a sword and a shield. He would consist of multiple meshes and my outline shader needs to handle him properly.

But I just downloaded Unity 5.5 and the outlines they’ve implemented work exactly like how I want my outlines to work so I guess that’s where I’ll focus my attention. :slight_smile:

1 Like

Games made with asset store art can absolutely be viable. My first big game “The Barbarian” was all asset store art, and my next game will use all the assets I’ve been producing.

2 Likes

I just found this outline asset and it seems to do exactly what I want:

It seems to handle the multi-mesh chest and sharp angled shield without breaking a sweat. Here’s how it looks:

But it works completely differently from my original shader. Not sure if that’s good or bad or if it’s necessary to get what I want. :stuck_out_tongue: It seems a lot more clumsy and bug prone to use so hopefully I’m able to merge the 2 assets together to create something with the ease of use of the first one that works as well as the second one. Guess I should compare the performance of the 2 assets as well. This asset uses multiple cameras and scripts whereas the first one is just 1 shader.

1 Like

I’m still working on the outline effect for this project and I have nothing new to share in that regard, but I found some more outline effects on Google so I grouped them all on my website if anyone else is interested:

They are all pretty solid effects in their own regard, but they’re fantastic as learning resources for hopefully learning something about shaders and image effects seeing as they’re so different from each other.

The one I’m currently investigating in my own project is the last one, utilizing Command Buffers. I have no idea what they are, but the effect is really smooth and it was effortless to integrate into the project. The only thing I want it to do is not render additively and to render in world space or whatever you call it so the effect scales depending on distance and doesn’t remain the same size no matter how far away the object is. All the 3 post processing effects ignore how far away the object is and I’m guessing that’s because they are post processing effects whereas the first one isn’t.

Attack damage and attack speed is finally affected by your equipped weapon now so I made a video to celebrate:

I also made a new build available here:

I spent probably a week fiddling with the selection outline, but I feel that it’s really sexy now. Easily on par with what you have in Unity 5.5. It still renders additively because I haven’t been able to figure out why and where to change that. It’s a bit hard to see in certain situations and too bright when it’s dark because of this. And ideally I would want it to take z-depth or world space position or whatever you call it into account, but currently I fake that by just changing the blur size based on the distance between the highlighted object and the camera.

But with this build finding and swapping out weapons is actually rewarding. I just need to make combat fulfilling now and it’s starting to resemble a game, and I need to clean up the code a ton (for my own sake), but version 0.1.0 isn’t that far away.

Changes for version 0.0.3

  • The selection outline/highlight is really sexy now.
  • Implemented different item base types with different affixes.
  • Items now actually affect the character’s stats when equipped.
  • The damage you deal and your attack speed is now affected by the weapon you have equipped.

I was trying to build my own Arpg while back. However my code ended up spaghetti-ed together with no real end game of how I wanted the game to play. I really like how this looks :slight_smile: Makes me wanna go back and start from scratch again lol

1 Like

Thanks. :slight_smile:

At the moment this is pure spaghetti. The only reason I’m able to work with it is because I have everything fresh in memory. I need to refactor and restructure everything, but I’ve never had a project in Unity before that needed to be this structured so it should be a fun challenge. Currently reading up on data storage & structures, class inheritance etc. I’ve already gone through multiple different ways of storing and parsing item data etc.

And you can copy the look almost exactly by just using the same assets. :smile:

1 Like

I took a break and lost my place in all my code. Which is why I now comment on every little thing no matter how little I think the meaning of it is :smile:

1 Like

Looks promising.

I wish I had learned that the first time I made a pasta filled game! I can’t update it, it’s so full of incorrect ways of doing things. It works, so that’s good, but man…yeah, commenting is good!

3 Likes