Dungeon Finished and Back in the Sun

Ok where to start?

Right so last entry was me starting to create a large interior for the first time which was a “starter dungeon”.

So for that I needed to make larger wall sections I could slot together (rather than placing each small segment of wall which would have taken forever. I made L shapes and various lengths of straight wall for this purpose. Also needed was floor tiles, rubble, cobwebs, a tweak to the particle system to make the ground fog use the light color it was near.

catacombs3.png

catacombsmap.png

I then had to finish off the basic collision detection so you couldn’t just walk through alls and objects. This was obviously a fairly huge undertaking but at least it’s now done at works across the whole game for any object.

I made a basic collider object which I could then use place invisible barriers around things I didn’t want you to be able to walk through. So I don’t waffle on about this too much you can just watch these little clips which show you how works. I had to make the camera also an object so you can’t spin it around and see through walls. It simply zooms in to the player until it’s no longer behind the wall anymore. It slowly checks to see if it can zoom back out to the default zoom now and again.

 

Next up I needed monsters for the dungeons. Now these were a little different from the rats, goblins and wolves outside since they couldn’t really use bounding boxes and had to be able to walk around objects to chase you and also give up if they were too far away.

The AI for this was fairly complex but fun to code and again will be really useful in later parts of the game where I can make monsters even more clever.

Below if the dungeon boss room which contains a particularly intelligent zombie (intelligence is relative).

dungeonboss

Obviously these monster and the dungeon itself had to have treasure in it or whats the point in risking it?

So now I needed a treasure chest editor…

treasureeditor

(Also added a particle effect for the bigger chests to sparkle but let’s not go too deeply into everything I added).

Oh and one final thing I completely forgot about initially was the map. The map was for outside. So i took an aerial view of the dungeon and then ran it through various filters to make it look like old parchment. It’s not bad and will do for now.

s I_Ancient_Ruins_mini.png

Ok so that’s the dungeon finally finished. In theory the next one can be bigger and better and won’t take me 2 months to do – especially since I won’t have to make a treasure editors and do the collision detection.

Right so finally back outside we have gathering. This needed a new editor and particle effect.

Here’s a short video of this. You can’t actually gather yet but I can attached a gathering node (mining, gathering and woodcutting – for now) but the nodes exist and can have items added to them with a range of how many items you can get, their types and rarity.

So I’ll leave you with a final video of the beginnings of that…

So next up.. finish gathering so you can actually.. err.. gather and think about crafting a little?

Also I really need to fix transitional animation soon since it’s really bugging me.

Until next time…

 

Cutscenes from the Gods (and Goddesses)

Ok so at some point I needed to start putting the actual story together. In order to this I made a StoryLine object and gave it child objects which are CutScenes.

Initially these are pretty basic: A background texture, some dialog box text, the name of the person talking to you and the name of the model used. Later I’ll add support for multiple NPCs and particle effects, cross fades and stuff like that but I just wanted it up and running. You can see a basic example below.

After this I added “Zonelines” this is when the game knows you’ve entered an area and will show you a notification. Like when you enter a town or if you’re always IN a town the it will show a “Zoneline” for a door you can enter, along with an Enter button and an icon to show it’s a doorway.

This can also be used for any time you’re about to change area, like entering a dungeon etc.

I also needed a new monster in game so I’m working on a wolf – I’ll show that at a later date but It looked nice enough but it showed a problem with my self shadowing which took a little time to fix. I won’t go into the boring details but my animated maps weren’t loading their bump maps or using depth bias properly, also the PSM wasn’t working properly on the super-high quality shadows near the camera. If you want more details on any of that then drop me a line on twitter/instagram.

Ok so I put together a little video showing how this all hangs together.

So next up I’ll be finishing off the wolf so I can have them roaming around and adding a quest in the 2nd town to kill a few of them.

It’s really coming together now.

I might have to start working on the crafting and gathering soon.

Until next time…

Building Builders

It’s not all sunshine and roses or whatever the expression is…

The last week or two were spent making “builders” to help my make my villagers (and other monster type things) behave how I want them to.

As you can see I ended up needing a bunch of panel of info to make a quest builder. This allows me to make quest steps of all different types (kill things, collect things, find a special thing, speak to someone or  go to a err special place). I can order them or allow them to be done simultaneously along with set any relevant text dialogue for the various NPCs.

This was a large (and not particularly exciting) slab of coding but hey, it’s done now. So now I can add 1 or more quests to an NPC.

In other news I had to do something about the bounding area of an roaming enemy. They can roam around in their area just fine but what about if they’re attacked (and therefore start to run after you) and get to the edge of their area? Well my solution was to allow them to go to twice the side of their bounding area once they’re attacked and if they get to the edge of that (ie that would probably mean you’ve run away) they will give up and spin around and head back to their area. While they’re heading back they’re also unattackable. This is pretty much how it works in Final Fantasy 14 and Everquest (not sure about World of Warcraft as I’ve never played it) and various other RPGs. I’ve never been 100% happy with that solution but the alternative aren’t that great either (monsters that chase you forever or you being allowed to just stand outside the monsters area and pick them off from range).

We have a new NPC type too. Female Peasant Roamer NPCs. Handily I found a way of using the same skeleton from the Male Peasant NPC so therefore I can use the same animation. At least as a base anyway, I can always tweak it.

This then means I need a “roamer builder”. She can’t just randomly roam around like a mad woman or zombie so she’ll need to follow a “script”. For now it’ll be moving from A to B, pause for x time, turn left/right. She can play a selected animation along with each step. With those step types I should be able to make her wander around the village in an eventual loop. Much like the West World characters although she won’t be quite as intelligent.

Some smaller stuff. The player now hold’s he weapon properly and I added a sparkle to follow his weapon when he attacks, like so:

stab.png

Oh and when a monster is killed it now updates the quest journal with a message to say that the player needs to kill more or that they’ve finished that step of the quest (also with a green tick). I’ll need to make it so you get your reward soon!

journal.png

And finally the slope is now checked to prevent you walking up sheer surfaces although that’s not perfect yet since you can turn at a shallow angle to the surface and creep up it slowly but I’ll fix that later by checking the slope angle (as suggested by a nice guy on the Monogame forum).

Until next time..

 

Roaming and Targetting

Ok loads of updates. Some of which took absolutely ages to get look reasonable.

First up I continued where I left off (which is rare for me since I tend to hop around rather a lot). So before I had it to a quest npc (a male peasant farmer) would offer you a quest to help him with a rodent problem. You can accept this quest and will be offered an item to help you complete the quest. A dagger in this case.

The quest object is added to the player object and appears in your journal a a quest name. Nothing too complicated there but it works pretty elegantly at least and lends itself to easily making so I can save the game state (ie the Player wants to quit and play something else – heaven forbid).

Ok so now I needed some rodents for said rodent problem. I already had my rats kinda walking in a straight line and following the terrain if i told them to however that’s all they did. Unless you attacked them in which case they will follow you to the ends of the earch (around 25km away in this case) and try and kill you. Since they hit for hardly anything that would take probably hours for a rat to kill you. These are, after all, the started quest monsters.

Anyway so I had to make the roam but not too far away from the farmers farm or else what kind of problem would he have exactly? “Oh these rats that are 10km away are bothering my crops?”. I’m not even sure rats eat corn.. but anyway. So the rats first had to roam within an invisible bounding box. That was simple enough,  I just had to add some code to the editor to allow you to set the min/max for the box and save it for each rat.

Now onto the roaming itself. There a simplistic AI for this. The rats have 8 different actions they can perform. One of these is randomly picked after a random time (only a second ish) and they will various in turning rate, speed, animation speed. Also they will avoid each other and try not to make it too obviously they’re in an invisible box.

Here’s a video showing how that looks. I’ll tweak it some more but i’m fairly happy with it:

So there you have it. Next up i’ll be making it so you can kill the rats (which already kinda is done) and make them respawn after a while. They will leave a corpse for a few minutes first and possibly even drop some treasure. Oo Treasure!

On a side note I’m really starting to see why there’s such a long list of people in the credit at the end os PS4 game. Wow there’s a lot of work. I’m glad I didn’t go with my original idea of making an MMORPG. I mean this isn’t going to be Witcher 3, let’s be realistic it’s also not going to cost £50-60. Also remember, No Man’s Sky was only 2-3 guys at first (6 in the end) and that was a pretty huge success. I loved it anyway.

Until next time.