May 052017
 
twittergoogle_plusredditlinkedintumblrmail

Welcome to this new Ghost of a Tale update! 🙂

We’ve been working on so many things over the last few weeks that I have a hard time keeping track! But just to summarize (in no particular order): new quests, dialogs for new NPCs (where Paul is doing a bang-up job as usual), optimizations, whiteboxing, Xbox One certification and new locations!

And speaking of new places you’ll get to explore in the game… As promised in the previous update here’s your first look at the catacombs sprawling under Dwindling Heights!

Catacombs!

The catacombs are the burial ground for soldiers and commanders whose bodies were entombed over the centuries since before Dwindling Heights ever became a prison.

As expected it’s a dark, eerie place. No doubts quite dangerous for a minstrel mouse!

Screen Shot 04-25-17 at 05.15 PM

It is whispered there might even be relics of the War of the Green Flame under there. And it’s probably haunted too! Although spiders might make quicker work of explorers than ghosts. But who knows…

One thing is for sure though, the Dying Lights lend a chilly atmosphere to the place. Their spectral blue flames do not give out any heat but they possess the distinctive feature of being virtually eternal. Indeed they cannot be put out by normal means. Which is why they’re often a fixture of pirate ships as even the strongest of storms won’t snuff them out.

Some sailors even say on a calm night while sailing on lake Vaelia you can sometimes catch a glimpse of the ghostly blue lights from long ago sunken ships deep under the waters.

Screen Shot 04-27-17 at 05.09 PM

(Oh and just to be clear: the catacombs are not yet in the early access version of Ghost of a Tale. We still have to connect several elements before you get a chance to explore them 🙂 )

Magnet Aim:

One of the aspects of the game that was recently overhauled is the throwing mechanics. In the game Tilo can throw several types of items (sticks, bottles, slime jars, etc…) to different effects. For example if you time your moves properly you could throw a bottle at a guard’s head to momentarily knock him out.

But up to now it was a finicky business. You had to perfectly align your target then throw and after that it was literally hit-and-miss. In short there was really no way to precisely aim at something.

As a result the experience wasn’t really fun and didn’t feel responsive enough. So I recently implemented a system we baptized “Magnet Aim”. It’s not exactly a locking system in the traditional sense of the term as Ghost of a Tale is definitely not a fighting/combat game. So we came up with something else, as illustrated by this short video:

 

(Note that for the video I made the targeting distance longer than in the actual game, for testing purposes)

Basically you just need to aim roughly in the right direction and the targeting reticle with snap to the relevant place (within a certain threshold of accuracy). If you throw at that moment, Tilo will send the projectile flying with mostly predictable results.

Now of course if you deviate a lot with the camera (say you aim wildly to the side of your target) then the aiming reticle will snap back to the center of the screen and Tilo will simply throw straight ahead. Similarly if your target is moving fast then it might not be a sure hit anyway.

We feel it’s a nice mixture of getting a little help from the system while still requiring the players to know what they’re doing. Of course you can turn off that feature in the gameplay options if you prefer to solely rely on your skills.

Loading Speed:

In the previous update I mentioned our new reloading process. So I thought I’d just show you a short demonstration of its speed. Please keep in mind that my machine has a solid-state drive so it’s already pretty fast.

(Please note that in this video I’m reloading a save located at a completely different place and progress of the game)

 

In the previous version when reloading a save we also reloaded almost the entire game (in order to reset things back to their default state). But we reworked our data managing system (thanks to Cyrille) and are now able to surgically reset things in the game’s world as needed. So we don’t have to wait for all the game’s locations to be read again from the disk.

This might not seem like a big deal for very fast gaming PCs but it makes a lot of difference on consoles and more modest PCs.

That’s it for this update. Thank you for coming by and as usual don’t hesitate to leave your questions/remarks/support down in the comments section! See you in the next update! 🙂

Apr 032017
 
twittergoogle_plusredditlinkedintumblrmail

Welcome to this new Ghost of a Tale development update! This is a rather sizeable one to make up for last month because we were so busy preparing for GDC. So think of it as a double-issue! 🙂

GDC Adventures!

Paul single handedly took care of the Ghost of a Tale booth like a champ! He had to stand and talk for three days straight but he had a grand old time overall. And it seems everyone who played the game really liked it!

So it was an excellent experience and Paul even gave away some swag (big thumbs up to forum user Nautilus for his nifty screenshots)!

DSCN6765_cropped_2

Although I wasn’t personally present at GDC let me give a big thank you to the Unity people who were nice enough to invite us and feature Ghost of a Tale in some of their tech demos and on the mighty large screen looming over their booth!

(Oh my, who could the chirpy fellow on the right-hand picture be…?!!)

static1.squarespace.com_2

 

Whiteboxing:

So I’ve finally started the long stretch of “whiteboxing” all the remaining areas of the game. Meaning creating locations out of cubes and low-rez polygonal volumes. This is a crucial phase, as it’s going to allow us to explore for the first time the entirety of the game’s breadth.

The goal is to clearly define space and indicate all the required areas while remaining suitable rough (to avoid getting bogged down by details).

It’s a mixture of composition (from a graphical standpoint) and game design (interesting paths to navigate) while also encompassing sheer functionality (things need to make sense for the world’s characters).

Screen Shot 03-19-17 at 09.29 PM

So far whiteboxing is done for all the as-of-yet off-limits areas in Dwindling Heights (barracks, commissary, commander’s office, cellar, etc…).

Even without the final models and textures it’s great to get the sense that everything is properly connected from an architectural standpoint.

 

Xbox One Preview Version Status:

Just as we were ready to submit the game to Microsoft we uncovered an unfortunate memory leak bug within the Unity engine (specifically related to the console) which keeps us from finalizing the process.

Basically the player could save and reload their save 2 or 3 times before hitting the bug. Both Unity and Microsoft are of course aware of the issue and I’m sure they’re going to do whatever is in their power to fix it as soon as possible.

We’ll keep you posted whenever we hear back from them!

 

Rocking Assets:

I’ve created assets which will be used to populate the new locations, among which are some new rocks!

I do use quite a few photogrammetry rocks in the game but I wanted to have more “designed” ones that feel graphical and purposeful, as opposed to simply realistic. So this time I chose a different workflow.

In the past I had used Zbrush to create rocks but was never happy with the result. So this time I went back to the basics and simply started from a cube in Maya. Cutting faces and pulling vertices allowed me to remain focused on the shape above all things. No details, no distractions. Just thinking about faces and silhouette.

Then I created a tileable texture in Photoshop containing all the fine details, cracks and small crevices that I needed.

At the heart of this method is the clear delineation between “shape-features” and “surface-features”. The earlier is only concerned with polygons, the latter with textures. While it’s important to remain aware at all times of how both domains are going to overlap I made sure I never attempted to add small features to the shape if it would be better suited for texturing and vice-versa.

This allowed for the final result to retain a fairly stylized looks and yet appear appropriately realistic when seen up close.

Screen Shot 03-23-17 at 10.57 PM

An advantage of this technique is that all the rocks share the same textures (diffuse, normal, etc…) so memory wise it’s quite a boon.

It also means I can simply swap the diffuse texture for a completely different look. And the models themselves are very light since I only split edges where it can be seen (silhouetting).

Screen Shot 03-23-17 at 10.52 PM_2

 

Water Works:

I’ve just started developing a new shader for large bodies of water (ie: Lake Vaelia!). It’s a rather cheap/simple shader (since it doesn’t even use the Gerstner algorithm) but at this very early stage it’s showing promises.

(Thanks to Cyrille for helping me with non-trivial sine-waves math!)

 

And another quick test of an even earlier version of the water in different lighting conditions (night/morning/afternoon/evening). It might seem obvious but I can’t stress out enough the importance of always checking your assets in different lighting conditions!

(Apologies for the terrible quality of the video grab)

 

That’s it for this update. Once more, thank you all for reading and don’t hesitate to post your questions/remarks in the comments section. See you all in the next update! 🙂

Feb 252017
 
twittergoogle_plusredditlinkedintumblrmail

Hello all! Yes, Ghost of a Tale will be present next week at GDC! Paul will be there in person with a build of the game featuring a new forested area for you to explore!

Screen Shot 02-24-17 at 03.19 PM

I’m starting to be happy with the overall result. Still got to create a few more assets to nail the look but it’s definitely getting there.

Also from the forest you can have a good look at Dwindling Heights’ tower peeking through the canopy.

Screen Shot 02-15-17 at 12.19 PM

So feel free to come by and say hi to Paul! He’ll be at a Unity booth (#1402).

(Speaking of Unity, a well-informed source tells me they’ll show off their new timeline editor with a special guest: a minstrel mouse called Tilo)

Xbox One

The Xbox One version of the game is coming along very nicely. We’re ready to submit to Microsoft for certification. Recent performance improvements allow us to use temporal antialiasing which looks really nice on a big TV!

Speaking of performance, we’ve once again optimized the game a lot in order to reach a stable 30fps on Xbox One. Which means, as I mentioned before, that the PC version now also runs faster.

It really is tricky because the game is primarily developed on a gaming PC and framerate drops from 120fps to 70fps are virtually invisible. But on a console that means the difference between a playable 30fps and a painful 21fps. Thankfully Unity has a handy profiler.

Screen Shot 02-24-17 at 04.37 PM

The level of detail granularity is nice, using sharper textures. And you’ll be able to see all those little details since the main difference between the Xbox and PC versions is the resolution.

Better Night Sky

I improved the look of night skies. Before the fog was so thick you couldn’t see a thing.

The only cheat is by a full moon you wouldn’t be able to see the stars twinkling of course. But they’re so nice I cheated. 😉

Screen Shot 02-15-17 at 12.13 PM

Assets Improvement

I implemented dynamic vegetation throughout the game and since I was at it I also redid the grass assets. The previous version was alright in game when the camera did NOT look down at it. But as soon as it was, the dreaded “razorblade” effect was kicking in. But no more!

Screen Shot 02-21-17 at 12.04 PMa

And the grass interacts with Tilo in a much more natural manner, while being more or less exactly the same number of polygons as before (if you can believe it)!

There’s something to be said for testing your assets in the worst possible conditions (using unflattering contrast); if you manage to make them look nice in those cases you can be fairly sure they’ll look good in-game.

I also recently started using Substance Designer to create textures for the game. I used to be a doubter (since I usually do all my texture work in Photoshop) but after having invested time in watching tutorials and trying it seriously I’m now a believer.

Screen Shot 02-23-17 at 11.15 PM

So in a nutshell development moves on and we can’t wait to show new quests, characters and locations. But we won’t until they’re ready for prime-time!

Meanwhile if you wish to support us then please download the latest version and help us chase pesky bugs. Thanks again for your continued support and see you in the next update!

Jan 122017
 
twittergoogle_plusredditlinkedintumblrmail

Hi guys! Paul and Cyrille join me to wish you all a Happy New Year! 🙂

This update is going to be essentially a technical one (it’s been a while I haven’t done any of those). I received many questions regarding the new vegetation system in Ghost of a Tale, which was introduced in the latest build. So I will now attempt to answer them.

Caveat Emptor: this technique is used on PC and Xbox One/PS4 (I haven’t applied it to any other platform yet).

(Also: yes, the game is running on Unity 🙂 )

THE SYSTEM:

The reason why I developed this system is because I don’t like it when I see vegetation behaving like the vertex are warping and stretching unnaturally around a sphere or capsule shape (even in AAA games). If I were a shader wizard maybe I would have come up with a super smart shader that would give me what I need, alas I’m not. So I had to find another way… 🙂

The main idea is what happens around Tilo should be high quality while the rest should stay as cheap as possible (nothing new here).

In this example the fern objects are made of two models:

  • A static one (a simple mesh with usual LODs)
  • A dynamic one (same model as LOD0 but the stems are skinned to a couple of joints). Technically each stem only uses 2 bones (the end one is not part of the skinning).

screen-shot-01-07-17-at-10-58-am-001

The dynamic models are deactivated by default, leaving only the cheap static ferns visible. No script is running in the background so there’s no overhead.

The root game object has a simple static box collider trigger. When Tilo enters the trigger that’s the signal that we should switch to the dynamic model.

screen-shot-01-07-17-at-11-02-am

Since the static and dynamic models have the same pivot point it means the wind animation (vegetation shader) is exactly the same on both meshes. So there is no visual pop whatsoever when switching between the models.

The dynamic model has a kind of “fake physics” (using this great asset) which acts as colliders on the stems’ joints. Those colliders collide with the actors’ limbs (head, chest, waist, etc…). Note: In this case I reuse the actor’s colliders from the game’s dynamic props system, so there’s no additional colliders to create (always reuse whenever possible!).

What this gives me is more accurate detection in that if a character plays an idle animation while remaining in contact with the fern, the stems will still react fairly precisely. In other words this is not a simple “capsule” avoidance.

screen-shot-01-07-17-at-11-04-am

So when Tilo is within the trigger the fern’s dynamic (skinned) model is visible, but when Tilo leaves the trigger then after a second or so -long enough for the fern to settle down- we switch back to the cheap static model.

screen-shot-01-07-17-at-11-06-am

Again, there is absolutely no visible pop during the change because the “rested” dynamic model and the static one have perfectly matching vertices positions.

NOTES:

There is a couple more details to keep in mind: I use a special vegetation shader (written by shader wizard Larsbertram) that produces translucency but uses the deferred rendering path (whereas normally you would have to use a slower forward rendering path).

A second important point is that I don’t use OnTriggerStay in the trigger detection process. I only use OntriggerEnter and OnTriggerExit. The reason is OnTriggerStay can prove quite heavy (depending on your physics matrix) and we don’t really need it. All we need is to be notified when Tilo enters and leaves the trigger.

There is also the tricky case where Tilo would have left the trigger (for whatever reason) without calling OnTriggerExit. Which is a fairly rare situation but it could happen. To remedy this case I use an Update function on the vegetation bend behavior script which tests from time to time (every couple of seconds) if the distance between the actor and itself (in this case the fern) is greater than a certain threshold. If it is then we know for sure we should switch back to the static model.

Of course that component only becomes active while Tilo is within the trigger. And it ensures we don’t accidentally leave some vegetation items in “high-quality” mode.

That’s it for this update! I will keep converting a lot of the game’s vegetation over the next build updates but some assets will remain “dynamic-but-rigid” (meaning non-skinned/rotation only) as they don’t require as much detail.

I hope this answered any questions you guys might have had regarding this topic, and I genuinely hope it didn’t bore you to tears. See you in the next update! 🙂