Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411486 Posts in 69371 Topics- by 58427 Members - Latest Member: shelton786

April 24, 2024, 10:53:18 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsPeaks of Yore
Pages: 1 [2] 3
Print
Author Topic: Peaks of Yore  (Read 21904 times)
andos
Level 0
**


View Profile
« Reply #20 on: April 07, 2020, 11:37:25 AM »

Adding Climbing Features

As the game is quite focused on keeping your hands on the holds for a long time while trying to reach other places, I thought I would revisit some ideas from gameplay systems that I had made early in the project.

The ideas I had involved a more complex type of climbing system, with different types of holds for different types of rock formations. Here's an example of the different types of holds, visually.


The visual representation of the hands and the mechanics that they would incorporate ended up essentially boiling down to a stamina-based system. Although many different holds on many different types of rock formations would probably look cool and interesting, it would take a lot of time and introduce a lot of unwanted complexity.

Here's another visual representation of what the player's grip-types would be on the route, as they ascended different types of paths on the cliff.


The red area over the "grab-point-dots" marks where the harder routes would be, and the green area marks the easier and more straight-forward routes. The idea was to bring in a variety of holds to make the climb more varied and interesting, but as the climbing is already tough even without stamina, enough I ended up ditching this whole system.
As stated, these types of holds essentially boiled down to different stamina-affecting points, so I thought I could at least take that basic idea and make use of it.



Crimp-holds

From a previous post you might have seen the grip-strength/stamina on the hands, where they shake as the grip-strength gets low. As I haven't been using this mechanic at all in the later builds, I thought I would take another look at it and see if I incorporate it with the existing mechanics. Since I introduce a new element with each peak, I also thought introducing a new type of hold would follow this principle while also making the gameplay have little more depth.

To bring in a more dangerous and simplified hold, I added more things on top of the existing grip-strength mechanic.

The first idea to simplify it, was making it smaller but big enough to not be easily missed visually when climbing.
The smaller holds now indicate "Crimp-holds". I make the distinction with a simple tag on the rock, so each hand knows if its on a regular hold, or a crimp-hold.





Regular Crimp-holds.

I wanted the addition of the crimp-holds to work together with the regular holds, making the player make strategic holds. Visually, the hands also change from a regular 'closed-fist' to 'hanging by two fingers'.

The grip-strength works independently from each hand. It is also affected by whether you are holding at the same spot, at the crimp and a regular hold, or if just by a single hand. In addition to the arm-shaking when the grip-strength is low, I also added decrementing circular bars appearing above the "Crimp"-hold.


Extreme Crimp-hold(left) and Regular Crimp hold(right).


As an addition to these crimp-holds, I have added "Extreme Crimp-holds". These holds are basically just smaller than regular crimp-holds, and drain the grip-strength much faster, meaning the player needs to make the perfect sequence of holds.

It would of course be ideal to always grab with both hands, but since the crimp-holds are so small, its usually just a waste of time to try and grab the same spot with both hands, unless its necessary for the climb. There are also times where there won't be regular holds alongside crimps, which make for more intense parts of the climbing routes.

The addition of this new crimp-hold mechanic also meant it has introduced a long-for-sought sport, which relates to climbing: Bouldering!
Here's a small preview of a very short, but sort of hard boulder-problem:



Logged

JobLeonard
Level 10
*****



View Profile
« Reply #21 on: April 08, 2020, 03:06:13 AM »

Quote
The addition of this new crimp-hold mechanic also meant it has introduced a long-for-sought sport, which relates to climbing: Bouldering!

Yes, yes, YES!!!
Logged
brainwipe
Level 1
*



View Profile WWW
« Reply #22 on: April 08, 2020, 12:23:26 PM »

I adore the combination of the technicalities of climbing along with the graphics style and setting. I feel that - perhaps inappropriately - playing the game would give me some insight into climbing. That would be great!
Logged

fskn
Level 0
**



View Profile
« Reply #23 on: April 08, 2020, 07:09:06 PM »

Very neat. Looking forward to it!
Logged
OctoMini
Level 0
**


Talk does not cook rice


View Profile WWW
« Reply #24 on: April 08, 2020, 10:54:53 PM »

This one just keeps getting better and better. I love the grip-strength mechanic.
Logged

andos
Level 0
**


View Profile
« Reply #25 on: April 09, 2020, 05:58:17 AM »

Quote
Yes, yes, YES!!!

Very neat. Looking forward to it!

This one just keeps getting better and better. I love the grip-strength mechanic.


Thank you so much for the support guys, glad you are liking it so far.

I adore the combination of the technicalities of climbing along with the graphics style and setting. I feel that - perhaps inappropriately - playing the game would give me some insight into climbing. That would be great!

Yep, that is definitely one of the intentions! Climbing has a lot of interesting jargon and technicality about it that I kind of want to teach the player a little bit about. Thanks!
Logged

andos
Level 0
**


View Profile
« Reply #26 on: May 24, 2020, 05:40:47 AM »

Life Update

Been a while since my last post, but I have been busy working on my final University submission. Part of my submission was also a more recent build of the game, so I have been working on lots of new peaks and mechanics, just haven't had time to update the devlog much. Now that I've finished my University submission, I can get back to working more consistently on the game and this devlog.



Categories of Climbing

I have been revising the future content for the game a little bit. With new mechanics being developed, I have juggled with the idea of multiple categories of climbing. I decided on 4 different categories, each with increasing difficulty and variety in locations and routes:

1. Fundamentals. The first collection of peaks that the player will climb.

2. Intermediate. A collection of boulders to present a Bouldering Challenge to the player.

3. Advanced. A collection of peaks with long routes and challenging sections in a mountain range.

4. Expert. A collection of the final and toughest peaks in the game. These peaks will be in a snowy mountainous area.

At the moment I'm still tinkering with narrative ideas, and how I could incorporate it in a way that it would span over the different collections of peaks in the game.



Slopers and Wet surfaces

A new addition to the climbable holds I've implemented is the Sloper, which also doubles as a wet surface type hold.
Slopers are smooth rocks that have varying levels of smoothness, which determine how easily the player's hands lose grip on the rock. Slopers are generally bigger than normal climbable rocks. They don't include a grip-strength meter, however, the player's hand will constantly slide until it is no longer on the rock.

To have the best chance of gripping on these type of holds, the player must reach as far up on the rock as possible, or in any place on the rock where the surface is as horizontal as possible.


To get the desired effect of sliding over the surface of the rock, I used a physics sphere to slowly 'roll' over the surface. Surface types and amount of 'slidiness' are detected by tags and names, and to change the slidiness of the 'sphere-roller-dummy' I change the amount of drag of the rigidbody. I also had to work a little with the max distance of the player's hand, to prevent their arms from leaving the body and their hands just sliding off to the ground.

Visuals for the Slopers are not final.

I'm still trying to come up with the right look for the Slopers, but the mechanic also doubles as a 'wet' surface. With this I can rainy weather conditions for certain maps. Although climbing rocks in rainy weather is very ill-advised, I thought it would make for some interesting challenges in the game. With this idea of rain on a peak the player needs to climb, there will be sections where holds are dry (not affected by rain), to prevent the whole route being slippery.


The player will only lose grip a bit after they are no long gripping the Sloper (but are still holding on). This is to give a tiny window where they can decide where to place their hand, instead of making the player lose grip instantly after leaving the Sloper. I also made a satisfying sliding noise that plays on loop when you grip a Sloper (I resisted the urge to make a 'fingernails on chalkboard' sound effect).

Deciding on the right sequence of holds for certain sections is also a major factor when the player needs to overcome these types of holds. Slopers introduce a lot of intense sections on a route and in combination with Crimp Holds, they fit in nicely for a lot of cool manoeuvres in the Bouldering Collection.




Wind System

A new element I have implemented (which will be introduced in later peaks), is the Wind System.
This system will be on certain peaks, and will constantly affect the physics movement of the player and their hands. The system has a constant wind-force which is applied every frame through the Constant Force component.


This component is added to the player and their hands when the scene loads. To determine where the wind is coming from, I use a simple empty gameobject that acts as a Global Wind Direction pointer. The forward axis (blue) determines where the wind will be coming from. From there I simply invert the force applied as a Vector3 direction on the Constant Force component on the player.


To make it easier to determine where the wind is coming from and to introduce the Wind System to the player, I also made a Wind Vane on the ground level that rotates according to the wind direction, along with some appriopriate rusty metal squeak sounds.


To further make the 'franticness' of the wind real, I spent some time making a nice wind effect. The effect includes white speed-lines to depict the direction of movement, big volumes of 'clouds', and pine leaves being carried being carried wind and affected by noise.

Wind-bursts

Occasionally, the wind will pick up speed significantly and affect the player's body and hands a lot more. These bursts of wind are determined by random intervals and they are signified by audio - harsh winds blowing in the player's ear.


This Wind System mechanic makes the climb a lot more challenging and intense and is probably best suited for only a few maps in the later part of the game.
A nice thing about this feature is that it can bring a new element of challenge alongside other obstacles on a climb. The system makes it a lot more difficult to land precise grabs onto rocks, and leaps from rock to rock become a lot more dangerous too.
There are still a few things I need to balance with it, and some things like the rope are still not affected by the wind (only if the player is on the rope).
Logged

theStyg
Level 0
**


Roughly aware of music


View Profile WWW
« Reply #27 on: May 24, 2020, 11:19:47 AM »

This is a fantastic idea. A stylized simulator - a marriage between the technical aspects and the artistry of the visuals. Good stuff!

Good to hear you're a still working on this, and glad to hear your university work went well!
Logged

Music Composer
Portfolio website: https://www.robotcoffin.com/
JobLeonard
Level 10
*****



View Profile
« Reply #28 on: May 25, 2020, 02:46:58 AM »

My fingertips and nails hurt just from looking at those sliding gifs
Logged
andos
Level 0
**


View Profile
« Reply #29 on: May 26, 2020, 05:44:31 AM »

This is a fantastic idea. A stylized simulator - a marriage between the technical aspects and the artistry of the visuals. Good stuff!

Good to hear you're a still working on this, and glad to hear your university work went well!

Thank you, glad you like it!

My fingertips and nails hurt just from looking at those sliding gifs

Would probably yield some thick calluses that's for sure!
Logged

andos
Level 0
**


View Profile
« Reply #30 on: June 14, 2020, 10:09:35 AM »

Automatic Foot Placement

As feet are very important in climbing, I thought that I should at least bring a pair of legs in that would make the player feel more 'grounded' in the world and on the climbs.

Using the brilliant FinalIK asset by RootMotion/Pärtel Lang for Inverse Kinematics, I had a nice system for testing out how the legs would work visually in the game as well.

Before I usually embark on creating new features like, I like to have a clear idea of what the visuals and sound would feel like. This was the case for this system. The boots the player would wear would obviously be period-appropriate, with big wide mountaineering boots:


I began with touching up the legs of mock-up character I had made earlier in the project, which I then tweaked enough to be dense enough in polys so the bones would not stretch the vertices in a weird way.

The boots were more of a focus on the leg system, so the player would be noticing the feet placed on the rock wall.



To stay on the 19th century mountaineering fashion, I also wanted the big 'ol boots, socks, and rolled up trousers.



A solid pair of legs.


I threw together a quick rig with a few IK constraints to account for correct joint movement. The right and left knee bones floating in front of the legs would work as targets for the legs IK bend goals.


In Unity, I imported the legs and parented them to the player. The functionality to detect whether the player is climbing is already in, so I started writing the automatic foot placement script.

When the player is holding on, two different rays are cast to detect a rock face in front of each knee. If a rock face is detected and the player is holding, the IK solver's weights are adjusted accordingly to give a smooth transition from the default position to the IK target's position. The foot will then stay in that position until the raycast's hit point exceeds a certain distance from the last foot position, where it will the reposition the foot smoothly.

Here's a relatively old gif of this in action:



The green dots are where the last positions of the placed feet were, so I can check the distance between those, and the current desired foot positions.

The system required a lot of tweaking certain distances that the foot should stay in place vs distances where it should keep in place, and I reckon I can still tweak it a lot more to make it work better.
The system also makes sure to move the feet out of the way if they're blocking the player's face.



When the player is not in range of the rock face while still holding on, the feet will move back and dangle under the player.
Under the hood, this looks extremely awkward but whatever isn't visible I can pretty much get away with.

For demonstration:




Result


With more tweaking, they have started to look pretty decent.

Adding a small smoke puff effect with some pebbles falling - similar to the hands grabbing onto rocks, and a couple of nice and chunky 'boot-on-rock' sounds, the automatic foot placement system came better together than I had hoped.

Even though the are only seen and heard when looking downwards, the legs do help in immersing and grounding the player more on the cliff while also eliminating the 'invisible legs while climbing'-problem.

Right now you only have legs while climbing, since I haven't made any walking animations for when you are grounded. I would like to amend this in the future but there is still a lot to work on in terms of sheer content for the game.
Now that this system is in place, I do feel like there is something more that I could do with it but I will have to think a bit on it, as I don't want to include a lot more complexity to the game which might detract from the experience of climbing. I'm thinking this could be for later levels but I am not sure yet.

More to come!
Logged

andos
Level 0
**


View Profile
« Reply #31 on: October 15, 2020, 01:06:50 PM »

Inventory System

Since I have been adding a lot of extra items for use on climbs, I figured that I would eventually need to gather all of these tools under an easily accessible inventory system.
I have always been a fan of keeping interactive systems inside the game world rather than in user interfaces, so I thought I would make use of the player having a belt where every item the player has unlocked would be accessible.



Testing in 3D before coding

To test the foundation of this mechanic, I started in Blender.
I set up the viewport camera to mirror the movement I wanted within the game - keeping in mind the player's horizontal rotation limits and vertical view angles.


I created a lot of the inventory item placeholders during this time as well. Testing it early was useful before I started creating any sort of scripts.


I only created as much of the upper body as the player would actually be able to see. I also created ropes to hang over your shoulder that would be visible while viewing the inventory. I created these to depict how many you have collected / have available for use.

Although the standard climbing arms are stiff with no bones or any IK, I knew the inventory belt had to interacted with using a pair of rigged arms. Another issue with using the climbing arms, was that the climbing arms in game are significantly larger than what they should be for interacting with the inventory belt.
The solution was to have a separate pair of "regular-sized" arms that are used individually when the player interacts with the belt, and so they could be hidden individually when the player is using the climbing arms.


I rigged up the same mesh as the climbing arms, scaled them down, and also added bones to the fingers so they could wrap around objects in the belt.



Creating the interactivity

Making the inventory belt viewable and interactable in game took some time, mostly working out some camera-repositioning, angling adjustments, as well as making the arms look 'right' when they hover over items and grab around them smoothly when you can view the right angle.

Under the hood, I do a lot of lerping with values to get the position and angling of the camera right. The positioning and angling of the camera to view more towards the inventory is lerped gradually depending on the player camera's vertical rotation.

With the arms/hands, the only animation actually happening is the 'reaching' and 'grabbing' on the hands which is triggered by the angle that the player currently views. The arms themselves are moved using IK targets and procedural animation.


Putting all this together took a long time, but I feel like it was worth it rather than introducing a new button for each new item you unlock.

Another important element to the system was that once you hang on to the wall with either hand, your other hand must be able to interact with every item in the inventory belt. If I didn't allow this feature, you would have to constantly switch arms to pick the item you want if they are on the other side of the belt. This would get annoying quickly, so I knew I would have to implement interacting with all items using either hand.
A bunch of time also went into tweaking the hands and IK targets enough to make them look natural enough.

The way the system works now, I can easily implement new items. All I have to do is define an angle with which they will be available to pick from, and then an empty target object which defines each different interacting hand's position and rotation when grabbing the item.


Interacting with items with each respective hand. Also a small preview of a few items that I haven't posted about yet..

Making it work on the ground also meant that each arm would had to interact with each respective side of the inventory, since the player will be standing on the ground rather than hanging onto the wall with either of the hands. When you look down, your view will be locked as long as you are looking at your inventory.


I will probably come back to polishing up some of the interacting arm's movements, but this is good enough for now. I have also got to keep a balance between how many items I add to the belt, as it can get crowded with items pretty quickly. There are only a couple more items I want to add, so it should probably be fine.



Animating legs and fixing clipping issues

After finishing up most of the major work on the inventory system, I decided I needed to do some animation on the legs since I had completely ignored walking animations up to this point. Movement has been mostly focused on the climbing, but a simple walking animation can really do wonders to ground the player more in the world, so I had to get them done eventually.


Good enough for now, as I can always brush up the animations later.

A small issue that came about with the inventory system, was that the items in the belt on the side of the hips would clip into the leg as the leg came around a 90 degree angle. I fixed this by angling the items according to the angle of the thighs. This is mostly noticeable when climbing, but it also adds a bit of procedural animation to the items when the player walks. (You can notice this on the thermo coffee bottle and monocular in the gif above).

There are still a few items left to add to the inventory, but for now I can focus on some more important things for the overall game. I have added some exciting things, both a while back and quite recently that I haven't posted about here yet, so look out for that in the nearest future!

« Last Edit: October 16, 2020, 12:17:49 AM by andos » Logged

Beastboy
Level 3
***

Happy birth day mom!


View Profile
« Reply #32 on: October 15, 2020, 01:48:39 PM »

The overall feel of this game is amazing
Logged
andos
Level 0
**


View Profile
« Reply #33 on: October 16, 2020, 12:18:37 AM »

The overall feel of this game is amazing

Thank you!
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #34 on: October 16, 2020, 12:41:00 AM »

That dedication to avoid breaking immersion is impressive! It looks like it pays off too (can't tell for sure until I try it of course)
Logged
andos
Level 0
**


View Profile
« Reply #35 on: October 16, 2020, 09:46:04 AM »

That dedication to avoid breaking immersion is impressive! It looks like it pays off too (can't tell for sure until I try it of course)
Thank you! Always nice to see your support.  Beer!
It definitely pays off compared to introducing a bunch of new buttons, but yeah I should probably get around to making another build so I can get some feedback on it.
Logged

andos
Level 0
**


View Profile
« Reply #36 on: October 23, 2020, 07:29:56 AM »

Time-attack

Thought I would make a post about one of the features I've previously implemented.

I've been a fan of watching speed-runs for a long time and watching skillful players with deep knowledge and execution of in-game movement and mechanics is very satisfying to me. I've also thought that this game would lend well to speed-runs as the game is a lot about perfecting movement and learning the way both the aiming and physics momentum works.
Naturally, these were considerable factors in my motivation for implementing a time-attack system.



The Pocket Watch

To make it period-appropiate, I thought that a simple pocket watch would be a nice representation of a time-trial sort of system.

Simple polygon modeling and some bezier curves to the rescue.

Modeling and texturing was pretty straightforward. I usually just look up a bunch of real world references, this time relating to pocket watches.

Texturing these kinds of items usually involves going back and forth between Photoshop and Unity. I have to make sure things match up with the post-processing in Unity, but luckily Unity is quite nice as you can just save directly into the project directory which lets you see the change instantly.


I usually have to tweak a lot of the contrast and brightness values in the texture to make sure they match up and look nice in-game.

50/50 Diegesis

One of the things with implementing new stuff is figuring out how it fits into the world. With the time-attack system, I knew this also had to be based in the game world as well. With time-attack systems, I usually prefer when there's a counter visible somewhere on the screen so I know if I'm doing better or worse on any part of the route.

The hands on the pocket watch are also set to be corresponding to the actual timer as well, which will then be displayed later when you finish the run.

Pocket watch hands runs according to game time (just for demonstration)

If I put the counter entirely on the watch, you would have to pull out the watch every time you wanted to check your time, which would be extremely inconvenient and also put your run on a grinding halt. The counter also helps with distinguishing if you are actually on a timed run or not, so this is one of the things I can live with not being purely in the game world.

Using the pocketwatch to start the time-attack, then setting a score on a list of 'Best Summits'.
The scoreboard will contain all peak names eventually, perhaps with more pages for different categories.

The system is set up so you can pull out your pocket watch to ready the time, which you can only do in the starting area of each level.   The timer starts automatically when you grip the first hold and leave the ground. To set a new score, you have to beat the best time, have the fewest holds or the fewest ropes when summiting.

This means that you can set three individual scores based on time, holds made, or ropes used. Setting it up this way, you can essentially can ignore the timer and try to get as few holds as possible, use the fewest ropes. The 'ropes used' score is probably less relevant, except for the few maps that the ropes are a prerequisite. The score basically shows how fast, careful, or daring you are on each peak.

The scoreboard itself is a mix between the 3D model and a world-space UI canvas to input the different text fields and scores.
I've made a few satisfying sounds to accompany setting a new score which includes some cymbal crashing, some scribbling noises for the value being scribbled in, and a bunch of typical pocket watch noises.

The time-attack system was all implemented before the inventory system and also before I even thought about the inventory, so the code also had to be rewritten to make it work with the inventory interaction. Lots of uninteresting code later, and the hand now properly interacts with the pocket watch, with satisfying button-clicks and all.

An actual pocketwatch.

In the end, I think this system adds some decent replayability while also filling a gap in my own need to try and best my own runs. This time-attack system isn't purely for speed-running or besting your own scores, as I have some in-game events in mind based on scores you set.

Next post will probably be a bit about a few updates to the environments.
« Last Edit: October 23, 2020, 09:21:15 AM by andos » Logged

oahda
Level 10
*****



View Profile
« Reply #37 on: October 28, 2020, 04:34:21 AM »

This thread was new to me. Blink This is so unique and interesting! The 1900s sepia æsthetic is a great touch, too. Really cool to see all the tech going into this, and the game itself looks fun to play. Love the pocket watch as well. Kiss
Logged

andos
Level 0
**


View Profile
« Reply #38 on: October 28, 2020, 07:14:20 AM »

This thread was new to me. Blink This is so unique and interesting! The 1900s sepia æsthetic is a great touch, too. Really cool to see all the tech going into this, and the game itself looks fun to play. Love the pocket watch as well. Kiss
Ah thanks, appreciate that! I love to talk about the technical stuff in a more detailed fashion, but I am always afraid that it might not be so exciting to read. Shrug
Logged

oahda
Level 10
*****



View Profile
« Reply #39 on: October 28, 2020, 07:46:41 AM »

I'm definitely interested at least! Gomez
Logged

Pages: 1 [2] 3
Print
Jump to:  

Theme orange-lt created by panic