Not very happy with this, but it is done, probably not going to use it
It’s going slow, but it’s still going
Working on a Warlock for a promotional video of Dominus.
These videos show my progress – free time project, so slow progress.
Obviously my main inspiration is Diablo and Diablo 2, but I want to do some things I liked in Baldur’s Gate, Temple of Elemental Evil and Arcanum (even some Torment).
I have been playing between pre-rendered and full 3d for a while trying to figure out what to do and I have decided I am going full 3d, with an almost isometric perspective, because the amount of new tech (shaders mostly) I would need to make to achieve the result I wanted was too much – especially since I am both programming and making the art for this (and the writing and some of the voices).
A few months ago experiments in dungeon generation were successful, so I’m going to have random and custom dungeons and a dungeon builder in the game that will be easily shareable by the community.
Anyway now that I have a more defined set of requirements for art I am moving ahead with building props and level tiles, rigging my characters and making demo environments to test it all in.
Here is a small video:
working GUI (not all) XP and levels, enemies losing HP and displaying it on a bar, particle effects, hit point display, portals, NPC trigger audio and text, crates have loot and you can pick it up etc
Well basically I’m still at the very very beginning of production. I’m still working on a bunch of ideas for the script (locations, dungeons, monsters, dialog), but I’m also getting closer to getting enough things ready to start making a vertical slice.
A vertical slice is a portion of a game which acts as a proof of concept
So I’m closer to actually starting the work on an actual chunk of the project. Gamedev in your spare time is a slow endeavor, I know.
Anyway I have decided I will be focusing more on the Greek mythology part of things, though I’m not going to be entirely accurate on how the tales unfolded and I’m moving more towards a story line that allows me to make my heroes count. (for obvious reasons).
I was working on the character, adding some items and cloth, which changed the appearance of the character. I had added a stand in render for the Inventory, which I used to place the Item slots around. Of course that was immediately outdated and the connection to the character was jarring.
So I wanted to make the paper doll in the Inventory display the items you have equipped and I didn’t want to need to handle two sets of characters wearing stuff.
The easiest way to accomplish this is to simply display the in-game model, which will be showing what is equipped anyway.
This was super fast to do. I just made a ‘Camera’ object that was a child of the character, changed the ‘Culling Mask’ to only render the character meshes, which I have in a separate layer named ‘Player’.
Then I created an empty ‘Material’ and a ‘Render To Texture’ asset (Right Click in the Hierarchy to quickly create them).
Finally I assigned the ‘Render to Texture’ to the ‘PaperDoll’ material and then I dropped the ‘PaperDoll’ material in the ‘PaperDoll’ Image material slot.
I also made the enemies have a Health bar display that follows them and changes how filled it is depending on the actual enemy health stats. In order to achieve this I updated the Label prefab to also include two image components, one with a normal image for the empty bar and one with an image set to fill type to ‘Filled’. I then just calculate the fill amount by doing this:
HealthDisplay.fillAmount = Health / HealthMax;
And that’s it, in just a few minutes I had two features up and running thanks to Unity. Now I added a couple of small button under the paper doll which will allow you to turn around the paper doll and I will eventually make it possible to do this with the mouse directly by clicking on the paper doll itself.
This week I worked on the GUI and loot, I made an inventory screen with a rudimentary paper doll of the character to figure out how this would handle. I also wanted to be able to find items in the game world and move them from and to the inventory.
I decided I wanted to make all items take up one square both for simplicity, but also because playing the “move and rotate to fit all items” game was not interesting to me. I don’t want to waste time trying to figure out how many items I can carry via a grid placement puzzle.
Making an ARPG is already complicated, why complicate things I have no interest in, right?
I was already using two Canvases in Unity to handle the GUI in one (Overlay mode) and Hit point display, mob/NPC name display with the other (World Space Canvas), so I wanted items to be in the 3d world, but I really didn’t have an interest in scattering everything on the ground regardless of the item. So I decided to make a 3D UI element that would carry the items found in a chest or corpse for example. Now all I had to do was to use my inventory code to move things around, right?
Well no, you have to be able to Raycast on both Canvases, sort through the results and have shared space for the object if you want this to be seamless and not having to create/destroy objects all the time. I made it work, you can seamlessly move items from one type of a container to another and it’s smooth and works regardless of resolution.
So my script handles raycasting on both Canvases, sorting through the results using Lists, recognizing the item type (using Tags) and what to do with it based on that.
I added a model for the Portals, I got this off the Asset Store along with a few others which you can find here: Elements of the Environment
I also added sounds for the portal and item pick-up and placement, as well as the chest and such. They are all currently placeholders, but the game becomes 50% more satisfying.
This all led me to update the Quest log window a bit as well as the main UI bar.
Then I decided to make my main character match my Script more, removed the clothing and left him with a loincloth, which I also reflected in the paper-doll.
Finally I made the loincloth into actual cloth in the game itself.
What do we see here:
As I mentioned this in the previous ‘Gameplay’ blog-post: I would be creating scrolling dialog triggered by clicking on a character’s name, as well as audio triggering for NPCs based on proximity. So that is what I implemented.
You setup a character by adding a name and a portrait which is automatically sent to the dialog box. You also setup ‘lines’ which are cycled when you go near the character.
I will be adding clicking on the NPC to trigger the same behavior, but also adding more options, like ‘Trade’, which will bring up the ‘Merchant’ and ‘Inventory’ windows.
Also loading dialogs from files and according to language to be ready for ‘localization’.
I painted the Minotaur boss today and made an image out of a it.