Working on GUI, Loot, sound effects and a Loincloth

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.

Talking to one of my NPCs

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?

Moving objects from a chest to the inventory

I adjusted my paper doll slots a bit as well

Well..

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

Going through a portal

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.

Sweet GUI updates on the Quest log

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.

Loincloths

NPC: Scrolling dialog and audio

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.

What’s next?

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’.

We are live on Greenlight

Getting unto Steam without a publisher means going through the Greenlight process. Greenlight is a system in which players vote on games that they want to see on Steam.

You can vote for the game here (you will need a Steam account)
Every couple of weeks people from Valve go through the submission queue and approve various titles.

One of the titles I’m working on – ‘Crusoe‘ – was Greenlit in a month basically, but one of my previous titles – ‘Insection‘ – was in the queue for a year before it was Greenlit, by then the team had disbanded and we couldn’t follow through.


So my approach with Swearsoft titles is to get them onto Steam as soon as possible, get the Greenlight by updating the page as often as possible and secure a position on Steam, before I commit my full resources on a game.

Imagine spending a year or even two on a project and then waiting for Steam and the community to vote on your game for an indeterminate amount of time. I would rather work on my games than have that kind of stress.

Of course this isn’t without problems, gamers feel that they can bash games on Greenlight and that developers have to accept their role as punching bags.

They might say rude things, uninformed things or nice things, but the reality is that no one will like every game and not everyone has to.

They might say that a game is too early to put on Greenlight – as if they are the developers putting their lively hood on the line…

I can understand that they don’t know how difficult it is to make a game on it’s own, never mind make a business out of it, In my mind making sure you are going to be available on the biggest games platform is kind of important (and engaging with people that want to harm you is not).

Working on area transitions, health and experience


What do we see here:

I have created items that when entered you are transported to another location on the map. You set a spawn target location and the name of the target location and the system takes care of the rest.

I also added some experience levels, though I need to adjust it a bit. I will be adding effects and stat points, which will bring us to the skill tree.

Finally I added a health potion box, which you walk through to use, which will push me to move onto the inventory.

You can also probably see an NPC hanging out down and to the left of the starting location, he is also aware of you and I am working on dialog boxes and such.

What’s next?

As mentioned above a bunch of stuff, but also monsters, monster sounds, giblets and gore.

Cinematic character armor progress

I’m aiming on completing a few cinematics for the game that will not be in-game. One of them will double as the trailer for the game and it will feature a warrior on his journey to hell:

I want to make a shiny set of armor for him. I started with some basic elements and a quick paint over to see what I need to add, I might have to do a full body concept to complete him though.

Stay tuned.

Trees and stuff

What do we see here:
I wanted to see how large transparent objects with shadows would be handled, since I want areas with trees. Wilderness areas will contribute to giving the player areas to explore, grind and level up before entering dungeons so I want to be able to make a number of them and they should be able to look good with minimal effort. This is the first step towards this.

These trees exist as card perpendicular to the ground, their shadow is part of the card, yet as the character passes behind them the shadow affects him. The same happens with the practice dummy.

You can also see the ‘Quest log’ interface mokup I have going on, using the new Unity GU. This has actually been in from the start, I just turned it off when recording and I have made the buttons actually do stuff now.

What will look into next:
Changing areas, completing tasks and picking up items.

Dungeon Level Generation from image in Unity

I was thinking about Dungeons and dungeon generation and also about how to give players the ability to make their own Dungeons and share them with each other.

Well a map can be saved as a 2D matrix, I have even done it with a list of values or 1D matrix.

Here you can see an example I made for a platformer, using a 1D matrix to make square levels (you can edit the level during runtime, play it, save it and load it):

But how does someone edit, share and transfer those easily? How could I make a quick editor or even edit maps outside the game? How could I send new maps to my players fast and make sure they don’t break the game no matter the version?

Well an image is a matrix and we can have RGBA info, so we can hold multiple values in one image for one map and also edit and also transfer them easily.

What do we see here:
This is basically a couple of hours worth of work as a proof of concept.

I made a script that takes an image as input, identifies what each pixel represents and instantiates it. It makes levels of arbitrary sizes, it can spawn empty, floors, walls, columns, enemies and the player.

I also wanted to be able to make sure to use NavMesh and even though Unity is going to add runtime generation in 2017, this was done to prove that if you don’t fight Unity you can even do things it’s not supposed to do.

So the enemies have a NavMesh Agent and the NavMesh is carved using NavMesh Obstacles and as you can see from the delayed generation mode below they can follow you upon spawning even if the level hasn’t finished yet.

I added a delayed generation version because generation was so fast I couldn’t see my work in action, it was hit play, see level, so I put my code in a coroutine and added a small delay to see things being built.

What will I do with this:
I don’t think I am going to use it for Dominus Infernus, I have another game idea it might be more useful for, since in Dominus Infernus I want a higher standard of graphics, which will be achieved using 3D pre-rendered backgrounds.

First Gameplay Test

What do we see here:
Click around to move, click on enemies to attack and deal damage. Enemies can attack you and deal damages as well.

What do we do now:
At this point I wanted a decoupled camera, so you could fly around, but in the next iteration I will make the camera follow you, as it seems less confusing and you need your other hand to use potions, abilities etc.