The Final Year

Rather a dramatic title. But this is the final year of development. It will be finished this year. It will.

Ok, so what’s been added since my last update in err June (oops). A lot.

Water

So the world needed water of course. I wanted to be able to have shallow water for marsh areas. Deep lakes. A sea at the edge of the world and various ponds dotted about. This was fairly quick to develop and just uses a flat plane with a water/ocean shader. The reflects the sky and uses combined scrolling normal maps to give it the effect of waves or ripples. Everything can be adjusted from having no waves to huge choppy ones. How reflective it is and how dense and what color the water is.

Here’s and example of a marshy kind of shallow water. Set to murky, almost no ripples and barely reflective. I think it turned out pretty well.

Mini Tasks

These are small quests that you can pick up from a noticeboard in town. The reward you with Adventure Points (AP) which can be spent an adventure point merchant. AP can be used to buy various useful items but most importantly will allow you to buy keys of varying quality to access the dungeons in the land.

This notice boards look kinda like this:

Usually a task will be something like “Gather 5 Sage” or “Mine 5 Copper Ore” etc which means you have to have the relevant tool then go mine/gather a sparkling spot near trees, rocks and bushes etc.

I made various particle effects for each of the node types which turned out rather nicely. I can’t really show them in a static image but I’ll do an video in my next tweet or post to show those.

Maps

One thing that was surprisingly time consuming was making the world map and mini map work properly. I needed it to be covered in a “fog of war” until you explored it and have Icons, be zoom and scrollable and the mini map be centered on the player using a small part of the world map.

The math behind this made my brain hurt but I got there in the end and it works nicely. I’ll make/get a better frame and “old map” overlay for it at some point.

Improved Fog

I spent a little too long on this but I wanted the fog to be a little more realistic than just linear or exponential fog since I wanted it to hide the ground below more if you’re up high.. and it looks better if the fog collects more in low terrain. I had to keep this subtle or it would high all my deep water and valleys would end up completely fogged.

Here’s how it turned out.

Phew!

Looking back – I’ve been so busy. At least it’s something to do during the endless lockdown.

11 months to go.

PC Release this year at least. With PS4 (not sure about PS5) after if it goes well.

Until next time.

Quests and Spinners

Ok so more game features added.

Towns now and settlements now have noticeboards for tasks. These tasks are things like “gather 5 sage” or “kill 5 zombies”. Simple little things. Completing these gives you a new kind of currency which will allow you to buy things from a new kind of merchant. The currency is Adventure Points (shown by an orange compass in your character screen) and the merchant currently sells bronze, silver and gold dungeon keys.

The idea here is to make to you can visit the entrance to a dungeon and use one of these keys to enter. The higher “teir” of key, the harder the dungeon and the harder the reward.

Town noticeboard below:

noticeboard

So that should keep you busy completing the notice board tasks to get Adventure Points (AP) to spent at the AP merchant to buy keys to go to dungeons to kill mysterious and weird monsters to get gold and items to make your character more powerful in order to progress the story.

That in a nutshell is how the game will all hang together.

I also added some neat little notification spinners above the town character’s heads which will (when you go near them) show if they have quest (story or subquest), are a merchant or skill trainer or the new Adventure Point vendor (for keys). Little video of how they turned out below:

I also did some dull technical stuff with refactoring the editors a little so I can work with the terrain more easily and optimise the post-processing framework, improve the instanced model lighting without killing the frame rate (essentially making the models still use the deferred rendering but without doing extra calculations for normal/specular map lighting). Nothing too exciting, unless you like that kind of thing. Ha.

Next up I’ll be using said instanced improvements to make the cliff, rock boundaries all over the world and at the sides of steep parts of terrain.

Until next time…

 

 

Back Into the Big World Again

Well that was unexpected wasn’t it?

Like many of you the global pandemic turned my life upside down – thankfully non of my immediately family catching the disease but nevertheless, I’m sure we all know someone who knows some who has been infected or even died. It’s almost unbelievable that this has happened. As many people have said it’s like something out of a Hollywood movie (Contagion is pretty damn close actually except thankfully this isn’t as deadly).

Anyway I’ve barely had time to work on this project at all since apparently January according to this blog. I’ve squeezed in the odd hour here and there but mostly I’ve been rapidly making my business still earn something (and closing my fledgling other business while turning it into something else). So.. yeah I’ve been incredibly busy. Despite being on lockdown for most of the last few months.

That said. Things seem to be returning to an ok state so I am back and have time to get this thing moving. I still think I can release it or at least get it to a beta by the end of 2021.

So much of it is written!

Ok so what have I managed to add? Well I’ve started to really realise just how BIG my world is. Far too big in fact. I’ve decide to wall off around half of the landscape you can actually get to although you can still see it in the distance (and it allows me to extend into it in the future. By “wall off” I mean I’ve been making impassable rocky formations, steep cliffs etc. I’ve filled in huge amount of the surrounding areas around Tarin, Serah (and the beginning dungeon) and the Goblin Camp and on top of that I’ve made the road extend all the way, winding it’s way, up the mountain until it reaches the plateau which will reside the capital city of the realm.

The road itself has ended up far longer than I expected and I takes a good while to make it look random without it looking a complete mess.

I’ve changed the grass/mud texture for a more grass texture (since I can always blend with the mud anyway) and switched out the rocky texture used for far away cliff faces to one with finer detail (and smaller rocks) for rocky patches along the road.

The biggest challenge has been avoiding making the road far too steep to be realistic so I’ve had to wind it around and reduce the steepness. This has had it’s own share of annoyances with the edges of “terrain nodes” being obvious if I need to raise or lower a point near them. Easily covered up with debris, rocks and bushes but its very time consuming. You can see why games like the beautiful Final Fantasy 7 Remake have literally hundreds of people working on them.

Which leads me nicely to my next point which is “scope”. Since I’m pretty much a 1 man band with the help of some outsourced animations, models and textures I can’t realistically make the next huge AAA RPG (Witcher 3 style) etc. So I have to do what I can realistically do.

Weirdly Animal Crossing New Horizons (great game to play during Lockdown by the way) has taught me that I don’t really need to a have huge cinematic sweeping story OR amazing graphics. I mean my graphics are nice enough but they don’t compete with RE3 or FF7R etc. What AC:NH showed is that I just need to make it fun and addictive: Give people a reason to come back to complete their collection of artifacts or do mini missions to gain some kind of currency which eventually buys you bigger bags or faster running etc etc.

So that’s the road I’m heading down. I’m still filling out the world for now until I finish up my normal work at the end of May then I’ll have some serious time to get back on Realms.

I’ll leave you with a few shots of areas I’m working on (I don’t know if any are finished – I’ll probably endlessly fiddle with them for a while yet).

Stay safe and until next time.

deadforest

 

hills

roadbeyondserahtheroaduptheroadup2

newforestspookyforest

Happy New Year and Story Time

Happy New Year!

Hoping you had a good Christmas. For me it was a great opportunity to actually write the story of my game. Or at least the first few pages of it. The more I wrote the easier it seemed to flow onto the page.

Now of course my game isn’t a novel so I need to make my game support my story. Right now my game is just a set of features that don’t really mean anything (combat, gathering, skills, quests etc). I mean it could work well as an open-world RPG with an opened ended goal, kinda like No Man’s Sky was at first but even that had a basic story.

So I needed a structure to support the story. So I have a Story object which has child objects of StorySteps and these have StoryStepSequence children (to support fades to black/white/up/down. I then need to make the game actually check and update the story appropriate and make it support all the types of StoryStep.

So first up I started with an conversation with NPC (Danyan Fishman) who is the first person you meet. This is mandatory conversation the player has when they first appear in the the game. So it’s basically a cutscene where you click through each line of dialog.

rofcutscene

So the cutscene step only handles talking to one NPC right now so it’s just you and whoever the you’re talking to exchanging words as you can see above.

Next up is the tutorial story step:

roftutorial

As you can see it a picture of a quest with it’s details then below is a dialog box of what the tutorial is trying to explain. Later I will add little highlighted parts of the picture to explain what various things mean in more detail. For now though it’s a picture with a dialog of explanation of the tutorial.

And finally.. the Story Line Quest step type. Which looks like this:

rofstoryquest

This is basically the same as being offered a quest when you click on a NPC with a quest available except in this case the decline button is removed so the player is forced to accept it. Also they are locked in place. This is essential really because without this there IS no story.

All this “glue” is really what makes the game hang together.

Inevitably I also fiddled around with some filtering and tweaking the post-processing shaders so it should look even smooth and nicer.

Also since I had some extra free time I can time to finally refactor (so exciting I know) and tidy thing up a bit.

Until next time…

Smoothing and Screen Sizes

Wow that has to be the dullest title of one of my blog posts yet.

I’ve actually had to do quite a bit of really quite dull stuff on the game over the last month or so. It all started one hot late summer day when I decided to add in the gathering nodes since the first dungeon was kinda finished.

I’ve added yet another editor that allows me to place little sparkling gathering nodes in bushes or grass or on tress or rocks (for gathering plants, wood, rocks/ore).

So here’s how gathering works:

  1. Have the skill (you have 3 basic one’s by default).
  2. Have the appropriate tool. This will allow you to see sparkling points where you can gather items from.
  3. Find a sparkling “node” and then press collect.
  4. The guy will then gather a random amount and rarity of items from the node and it will disappear.

 

 

Like so.

So that works nicely. The nodes reappear after a while but only if you go away for a randomly amount of time and a random distance. I may make them randomly spawn a different spots too but later.

Ok so gathering works nicely now and as you can see from the right screenshot the bottom right now contains notifications of when you collect something and also when you get an increase to your skills. I’m going to reuse that a bit for other things. They slide on nicely, stack up, then fade away.. I kinda of borrowed that idea from another game but maybe I’d better not say this time. I think the effect is nice anyway.

And now onto a bit of a side track which I wasn’t supposed to be going down: FXAA. For those of you who don’t know what that is. It Anti-Aliasing or just basically making the image look a bit smoother by slightly blurring areas where there are jagged lines and it’s easy to see the pixels. That’s a very basic descript but I won’t bore you with the technical details. If you’re interested, it was invented by a guy at NVDIA and is used in many modern games since it doesn’t slow the game down much and produces a nice improvement. What is FXAA?

Ok so that calls for a before and after:

 

 

 

It really make a nice difference where there’s a large contrast between the sky and landscape (although that will be further improved by post-processing distance fog later on as well). But it also makes the edges of leaves of trees, rocks etc all look a little more smooth. It’s the illusion of more pixels basically.

The game now handles various screen resolutions all the way down to 1024 and up to 1920. For some of this it was a simple transformation matrix but for other screens ie pretty much user interface screen there is (merchant, skill trainer, innkeeper, quest npc, quest reward etc etc etc) I had to make it centre itself based on the selected size and even resize itself and use a smaller font in some cases. This was a rather dull and massive undertaking but it was necessary of course and allowed me the opportunity to tidy up the UI code.

All that tidying and screen size stuff has made it so I can now easily design my new and hopefully final user interface screens:

  • Skills – Picture and detailed description of all the skills the player knows
  • Recipes – Everything the player knows how to make along with things they have an idea about but have not completely learned yet (Atelier style).
  • Crafting – A two-step process of selecting the item you want to make from a list (showing what ingredients are required and you success chance along with the final result). The 2nd step is to select ingredients (quality and amounts) and press craft and either end up with the item or not.

 

Ok so that’s what I’m working on next.

I’ve also made a story tree (Like Detroit: Become Human) for my actual story so the player can go down various story paths for different endings. Some actions are good, evil, some just effect where the story is going.

I also did some more world building design to fill in some of the empty areas which I’ll be doing shortly.. the world is just so damn big!

Until next time…

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…

 

Delving Into The Catacombs

Bit of a gap before an update – Apologies.

Anyway I’ve been really building a lot of world now. So the North-East-ish of Tarin, down a worn path with jagged rocks around is the ruins of an old temple with some mysterious stairs leading down into… what..

The entrance uses my new “zoneline data” so it knows you’ve entered an area where the player can change to a new environment (in this case switch to interior mode for lighting and terrain and also extra information like where to get the relevant models from and also small things like where exactly the player should be standing and what way they are facing when they enter). This will need some more information at some point, like how the ambient light should be (if any).

So enough waffle.. the entrance looks like:

entercatacombs

Shrouded in mist and mystery..

And after a brief pause for the game to load what it needs (since we can’t realistically hold the entirely dungeon and world in memory at the same time). Which strangely reminds my of the old RPG’s on the Commodore 64 that came on 2-4 double sided disks. You can to change disk to enter a town or dungeon. Things haven’t changed THAT much really. So the dungeon is starting to take shape, so here’s a little taster of how it’s looking.

I’ll be making it a kind of “starter” dungeon so it will just introduce a few game concepts, such as secret doors and and dangerous boss monsters at the end. It’s taking far too long to place each individual piece of wall and floor so i’ll make some combined sections of tunnel, floor ceiling so I can put it together more like Lego.

I’ll have some undead ready to roam the dungeon when it’s finished. I’ve not decided what the boss will be or the relevance of this dungeon to the story. Perhaps I’ll keep it as a side mission and completely optional.

2 challenges remain in the dungeon/interior which are related really. I need to enable collision detection with the walls (and other objects). Every object already has that ability built in but i haven’t actually set up the colliders on any of them (an invisible hidden basic shape which respesent the object, pure used to determine if the player is about to bump into it). Which leads me to the second challenge.. The camera should not be allowed to go through a wall.

Did I mention in my last post that my camera movement is the same style is WoW/FF14/EQ2 (holding right click dollys the camera around the player). So the second challenge is to treat the camera like an object and if the player tries to dolly it into a wall then the camera will zoom in on the player until it no longer is in the wall (since the player can’t be a wall).

Ok well hopefully there will be a nice/evil dungeon to walk around next time.

I’d like to add crafting and gathering at some point and spells.. but I can’t do everything simultaneously unfortunately.

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…

Town, Camping and Interiors

Bit of a long time since my last update. Sorry. You know how it is etc. You can follow me on twitter @skyemaidstone if you like. I do tend to update that more often.

Anyway, I’ve been beaving away at making the 2nd town “Serah”.  It has a forge, market, guard towers, a wooden wall to protect the towns folk from the dangerous lands beyond and a large comfortable inn (compared to the tiny one in Tarin. Here’s a couple of screenshots of how that’s getting on:

serah2

serah1

You can also see it has some nice magical lights to act as street lighting. Who knows how they work? It’s magic. This required me to make a light editor so I can adjust their color, intensity and obviously position.

Next up I moved on to an enemy camp:

goblincamp

This will soon be populated with orcs or goblins or some kind of enemy. This will be the main problem for Serah so I’m planning a few quests for this.

And that brings me to the next focus of my work: Interiors.

When the player enters a building or a dungeon they effective change to a new mini “world”. So I needed to make it so my editor saved models, lighting and “terrain” (which is usually just flat for a 1 story building). This proved fairly complicated but I got there with some nice fairly elegant results in the end.

Here’s a little video of Tarins’s small Inn.

 

Needs candles, fire in the fireplace and some patreons to drink and offer the adventurer some words of advice or perhaps send him on a quest and of course an innkeep to serve drinks and offer a room for the night.

Next up I’m going to have to make the particle effects editable so I can place them where they’re meant to be in the world (fire in the forge/fireplace, butterflies around a bush, water from a fountain – stuff like that) because my flaming braziers are rather hard coded right now. Also I really would be nice if the place had something else to fight besides the 8-12 rats behind Darin’s farm.

Until next time…

 

 

The Realm is Growing

Oops. Well it’s been a little while since I posted an update but sometimes that’s a good sign.

I’ve been so busy making it I forgot to document what I’ve done. Anyway, excuses aside as you can see from the featured image the world has grown a fair bit. You can barely see little Tarin behind the rocks and trees that have sprung up around it.

I had to make some changes to my editor to make it more useable on a grand scale. Making the camera that can sweep and swing around the terrain, cinema style was one of those (which I took that screenshot with). That made it easier to “spray paint” where i wanted things generally then switch back to first-person to place them carefully. That only really applies to things like instanced models and the texture type used on the terrain.

Talking of terrain I could resist adding bump mappnig to the terrain. Amazingly this wasn’t too tough. My engine already supports normal and specular maps but those are used by the geometry generate by package like 3DS. The challenge I had was to generate the tangent/binormal data for my computer generated meshes. That wasn’t THAT bad and with a little help from the great guys at http://www.gamedev.com it was up and running pretty quickly.

Here’s a before:

bumpmapterrainbefore

And after:

bumpmapterrainafter

You might need to zoom in a bit to see how it’s working but its basically adding a more bump look to the road texture (and fading out to not use this technique for other textures since I don’t want bumpy grass for now. Would be nice to use displacement maps but that’s a nice-to-have really. I shouldn’t really be adding subtle (but nice) visual effects at this stage anyway really.

Anyway now the world has a fairly long road that runs from the starting village of Tarin all the was to the larger village/town of Serah. The new villge will have 2 storey buildings and some slightly more modern ones. Perhaps some better shops than just the odd stall.

For now it’s just a flat plaza… I’m going to dot around some bushes, trees, flowers and rocks all the way either side of the road first.

Besides that, and those of you who follow me on twitter @skyemaidstone will know this already, I’ve been working on player skills and a trainer to buy the knowlege from with knowledge points:

trainer

playerknowledge

The first screenshot shows the trainer (The Sage in Tarin in this case who has some basic skills to teach you) and the 2nd shows you the abilities you learn from each of the skills. My player knows all the skills for now. How it works is in order to effectively use a short sword (for example) you’d need the Light Swords skill. So when you equipped a short sword a few abilities will show up. However if you learn Light Swords Expert then equipping a short sword will give you more abilities and perhaps even some combos. Skill points are just earned from questing for now but that won’t be the only method. We don’t want to force our player to do every quest in the game although some will be required obviously. This isn’t going to be a first-person shooter after all.

Ok hopefully next time I”ll put together a video of the trip from Tarin to Serah.

Until next time…