Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411279 Posts in 69323 Topics- by 58380 Members - Latest Member: bob1029

March 28, 2024, 01:31:18 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsLeilani's Island
Pages: 1 ... 64 65 [66] 67
Print
Author Topic: Leilani's Island  (Read 400865 times)
JobLeonard
Level 10
*****



View Profile
« Reply #1300 on: April 11, 2022, 02:44:45 AM »

YEEEEES! AN UPDATE! LEILANI'S ISLAND LIVES! Kiss

You could maybe do something interactive with the roots in a boss battle?
Logged
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #1301 on: April 14, 2022, 05:38:38 PM »

Thanks for the nice words everyone Smiley

It is unfortunate you had to settle for a less interactive version, but I guess you can't force things.
You could maybe do something interactive with the roots in a boss battle?

I think probably the most likely place they could be used would be in a challenge level. But I'm also not super keen to introduce new mechanics for those levels - I prefer them as a way to use existing mechanics in different ways, if that makes sense.

What I struggled with with the more interactive version of the roots was that most situations became pretty trivial to overcome - e.g. if the root is going to rise up into spikes, then you simply keep rolling before it has chance to pull you up. When I tried to make harder situations it seemed to end up unfair, not helped that having a delay between rolling on the root and it reacting was a bit unintuitive (but also necessary otherwise it moves too fast).

In the end I'm happy enough to leave the interactive version on the cutting room floor.
Logged

oahda
Level 10
*****



View Profile
« Reply #1302 on: April 15, 2022, 04:59:32 AM »

The roots are so cool! Another neat art/tech blend type of update as almost always, really love these.
Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #1303 on: April 17, 2022, 11:26:36 PM »

Updraft Improvements

This week I've been making some improvements to how updrafts work (previously mentioned here). I'm starting work on a level that focuses on them. They've been in the game for ages but barely used.

Before now they have only made objects fall more slowly when in the updraft - with the exception of Bubble Leilani who can float upwards. Here's a gif from the old devlog post to demonstrate.



This is nice enough but the updrafts feel barely useful in a lot of situations. I've now made it so jumping within the updraft will give you extra height on your jump:



Leilani's jump is only 3 tiles high, so increasing it to 4 tiles makes quite a difference! This increase also applies for other jump types such as bouncing off enemies which is already 4 tiles high and increases to 5. So platforming within the updrafts should feel much more acrobatic than normal gameplay.

One other bit of work I did was to have a look at how some other entities interact with the updrafts too. Powerups notably weren't affected by them at all, so I've made them either fall more slowly or be carried upwards as seemed appropriate. Collectable shells that came out of blocks were also failing to be affected by updrafts so now they fall slowly. Here's my test area for these various interactions:



Jump Physics & Updrafts

I realised that I don't think I've ever described how Leilani's jump physics work. I couldn't see anything in the devlog contents on the first page, at least!

Basic jump

Here's an example of Leilani's basic 3-tile jump.



  • Red: Jump Boost phase. Leilani instantly begins to move upwards. As long as the jump button is held - or until a Jump Boost timer runs out - Leilani's isn't affected by gravity so she keeps moving upwards at a constant speed. The Jump Boost timer is set so that it'll end once Leilani has nearly reached 3 blocks of height. (To give a more specific example, if Leilani jumps upwards at 10 blocks per second, the Jump Boost timer lasts around 0.28 seconds during which time Leilani gets to 2.8 blocks off the floor).
  • Green: Gravity takes over and accelerates Leilani back towards the floor. Because of her upwards velocity she'll rise upwards a bit, taking her jump up to a peak at roughly 3.5 blocks high.
  • Blue: Leilani has reached terminal velocity so is now falling at a fixed speed until she hits the floor.

I find that having the fixed speed during the Jump Boost phase makes the jump feel quite predictable and controllable. Letting go of the button to stop rising upwards gives the player a lot of control over the exact height of the jump.

I call Leilani's jump 3 blocks high but it's actually around 3.5 - this makes the jump feel much more comfortable for clearing 3-block-high walls.

Shorter jumps

Here's an example of the player letting go of the jump button early, which exits the red Jump Boost phase early, with the jump only going around 2.5 blocks high.



And, I also have a 'hack' in place for situations where the player presses the jump button VERY briefly. In this situation I artificially reduce Leilani's upwards velocity when the button is released, so during the green gravity phase of the jump she doesn't go as high. This allows for players to make very short jumps.



Holding the jump button to reduce falling speed

If the player continues to hold the jump button, it lowers Leilani's terminal velocity - which means she will end up falling at a slower speed. Here's a diagram: notice that she exits the green phase earlier and then falls at a slightly slower rate during the blue phase.



It doesn't do much during a normal jump but has the potential to give Leilani more jump reach when trying to reach lower platforms that are far away. It can also help give that little extra bit of time to aim when trying to bounce on multiple enemies in a row.

This is the kind of feature that I will never require the player to do but I like having as a kind of hidden feature. When you're desperate to make a jump and instinctively keep the button pressed down to urge Leilani to go further, it's nice if it actually works!

Updraft effects

The way I implemented the extra height on the updraft jump is with a second updraft-specific Jump Boost timer.

To use the example from above, if Leilani jumps upwards at 10 blocks per second, the Jump Boost timer lasts around 0.28 seconds during which time Leilani gets to 2.8 blocks off the floor. Now there is a second Updraft Jump Boost timer which last for 0.1 second to take Leilani an extra block off the floor during her jump.

If Leilani is in an updraft, and the Updraft Jump Boost timer isn't at zero yet, then that timer will tick down instead of the normal Jump Boost timer.

This new timer is represented as purple in these diagrams. Whether Leilani is in the updraft at the start of the jump, or is just passing through, she can still get the extra tile of jump height. This gives a bit of leniency rather than requiring the player to already be in the updraft before beginning the jump.







But if the Jump Boost phase is finished before Leilani enters the updraft then she won't gain any extra height.



Coffee
Logged

oldblood
Level 10
*****

...Not again.


View Profile
« Reply #1304 on: April 18, 2022, 12:21:23 PM »

I somehow missed the last post but really excited to see this project is still around, and glad to see you're powering through the up's and down's of burnout and life in general. The work you're doing with the updrafts and the roots is really exciting. The roots in particular seems like a really unique mechanic. Keep up the amazing work!
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #1305 on: April 19, 2022, 01:23:40 AM »

With some tiny tweaks that updraft test level could work as an "implicit tutorial" level
Logged
MisshapenSmiley
Level 0
*



View Profile WWW
« Reply #1306 on: April 21, 2022, 03:15:07 PM »

I love this whole thing. This devlog is an absolute treasure trove of great write-ups, so much so that it's hard for me to pick favorites. So I'll just say I love everything in this post, especially the end. I've been yearning for a new New Super to pop up for years so this makes me extremely happy. Just take my money already Hand Money LeftCrazyHand Money Right
Logged
oahda
Level 10
*****



View Profile
« Reply #1307 on: April 22, 2022, 07:12:08 AM »

Thanks for another lovely post Smiley
Logged

vdapps
Level 5
*****


Head against wall since 2013


View Profile WWW
« Reply #1308 on: May 19, 2022, 08:41:58 AM »

Nice to see new update for this project and another high quality post. Waiting in my Steam wishlist. Smiley
Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #1309 on: July 19, 2022, 06:06:01 PM »

Current list of collision system posts:

Collision System Part 2D: Entering tunnels while falling

Here's another additional post that slots into the collision system series. I've been working on some general polish and bugfixes, and one thing I wanted to solve was that it was inconsistent whether Leilani could enter a small tunnel that she was falling past. This gif shows the problem situation:



Players should expect to be able to enter the tunnel and not fall past it.

Let's have another look in slow motion:



And now a breakdown of what's actually happening.

1. Here's the starting situation. Leilani is against the wall with diagonally downwards velocity.



2. As explained in an earlier post in this series, movement is handled one axis at a time, alternating between the X and Y axis. Next Leilani's X movement is handled, pushing her into the wall. Most of the way down the wall she will just collide with the wall normally. Once she reaches this point though, the soft collision will kick in (also explained in an earlier post) since only the topmost of the three collision checks detects the wall.



3. The result of the soft collision is that Leilani is nudged downwards to just below the tunnel's ceiling. (You can see this in the slow-motion gif above where Leilani snaps downwards slightly).



4. The next step is to handle Y axis movement, which moves Leilani down past the tunnel entrance.



5. Then X axis movement is handled again, but Leilani just collides against the wall. She's no longer able to go into the tunnel.

(Note that soft collision doesn't kick in at this point - why? Well in the past I decided to only enable soft collision against floors like this if Leilani is rolling, but not at other times. Soft collision against floors allows Leilani to roll seamlessly over single-tile gaps in the floor, but I don't want her to be able to simply walk over these kinds of gaps.)



So the core problem is that Leilani moves past the tunnel entrance in a single Y axis movement step, missing her chance to enter the tunnel.

This soft collision against the ceiling is intended to help Leilani to get smoothly into gaps like this. Rather than bonking against the wall above the tunnel, she should slip down below the ceiling and into the tunnel without losing any momentum.

But the soft collision is actually exacerbating the problem by moving Leilani downwards, which makes her more likely to miss the tunnel opening during the following Y axis movement step.

Turning off the soft ceiling collision may slightly improve the chances of Leilani getting into the tunnel but still doesn't make it 100% reliable.

The fix

The way the soft collision works is a bit flawed - you can see in diagrams 2 and 3 above that the soft collision happens during an X axis movement, but it actually nudges Leilani downwards and doesn't even move her sideways at all. Ideally it would still move Leilani sideways into the tunnel as expected, as well as nudging her downwards to avoid the ceiling.

I wanted to fix this bug without messing too much with the general workings of the collision system, as it's getting really easy to introduce unintentional bugs at this point! So I didn't want to do a fundamental change like this.

So instead I did a very situation-specific hack!

4 (fixed). Continuing on from diagram 3 above after handling the soft collision with the ceiling. Now we do a collision check a short distance (0.1 blocks) in front of Leilani, starting from just below the ceiling Leilani soft-collided with, and stretching down just over 1 block. If this collision finds a floor almost exactly 1 block below the ceiling, then we decide there's a tunnel that Leilani should enter.



5 (fixed). Next we simply reduce Leilani's Y velocity to a very small value. Then when we do a Y axis movement step Leilani will hardly move at all.



6 (fixed). Finally the next X axis movement can move Leilani into the tunnel.



The fix is applied specifically for Leilani and not for enemies to further reduce any unintended side effects.

If the framerate was very low could Leilani still skip past the tunnel during the Y axis movement? In theory yes, in practise probably not, because I apply a maximum frame length of 0.1 seconds even if the game is running much slower. There are also worse issues to deal with if the game is running that badly. Cheesy So the fix is reliable because I expect the soft collision against the tunnel ceiling to always trigger when Leilani is falling down past it, which will then recognise the tunnel entrance and apply the hack to her Y velocity.

Results

Leilani now successfully enters the tunnel! In this gif I'm holding the Right input to keep pushing Leilani against the wall and run into the tunnel.



In the next example I let go of the direction inputs altogether after jumping. The game has a feature that Leilani maintains a very small amount of X velocity even after colliding with a wall, so she'll still be trying to move to the right and will still just manage to enter the tunnel.



Finally this fix also works for big Leilani when crouching, and she can then start rolling once she enters the tunnel.


Logged

EJlol
Level 0
**


View Profile
« Reply #1310 on: July 19, 2022, 10:17:07 PM »

Awsome update Hand Thumbs Up Left

However personnally I would not expect this situation:


When I'm not pressing anything, I would expect to fall down. Right now it feels like Leilani is just clipping inside the wall... Only when I press the direction keys I would expect to go inside the tunnel.

Oh, and it seems like small Leilani also needs a (automatically) crouching animation when she is walking inside a tunnel Wink
Logged
JobLeonard
Level 10
*****



View Profile
« Reply #1311 on: July 20, 2022, 02:07:30 AM »

To add to EJlol's feedback on the "ledgegrab" behavior, I think it's only counter-intuitive because this isn't a game where you grab ledges. In games where you do players do expect this to happen passively.

This makes me wonder: can you jump if you stand on the corner like that? Or will something stop you, like bumping into the ceiling?
Logged
Sketchwhale
Level 0
***


View Profile WWW
« Reply #1312 on: July 20, 2022, 11:03:12 AM »

Always great to read one of your updates.

Is it possible to playtest the game? My fingers ache to play it.
Logged

oahda
Level 10
*****



View Profile
« Reply #1313 on: July 21, 2022, 04:21:01 AM »

Yay, Leilani update!! Gomez Another great one. Always fun to see the helpful figures. I think I agree with the above with regards to pressing the key.
Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #1314 on: July 21, 2022, 10:19:20 PM »

Thanks for all the feedback!

This makes me wonder: can you jump if you stand on the corner like that? Or will something stop you, like bumping into the ceiling?

The soft collision against the edge of the wall allows Leilani to jump upwards.



She doesn't 'regrab' the ledge on the way back down because her X velocity is zero. The feature we're discussing that maintains a little velocity after hitting a wall only applies if Leilani has velocity to begin with.

When I'm not pressing anything, I would expect to fall down. Right now it feels like Leilani is just clipping inside the wall... Only when I press the direction keys I would expect to go inside the tunnel.
To add to EJlol's feedback on the "ledgegrab" behavior, I think it's only counter-intuitive because this isn't a game where you grab ledges. In games where you do players do expect this to happen passively.
I think I agree with the above with regards to pressing the key.

I don't disagree with any of this.

The reason I added this feature originally was for the opposite situation where you hit a wall while trying to jump over it:



In most platform games it's probably quite unlikely that you'd let go of the direction input. But in this game Leilani will keep moving once she's rolling even if you don't hold the direction input, and I find myself in the habit of doing a lot of movement without using the direction inputs. So giving Leilani this nudge over the top of a wall just felt right to me and still does.

The case with 'grabbing' the tunnel ledge is a bit of an unintended side-effect that I just hadn't given proper consideration.

I tried turning the feature off entirely just to see how it feels, with the intention of probably only turning it on when Leilani is moving upwards and turning it off when she's going down.



Unfortunately it turns out the state where Leilani slides down walls while rolling is relying on this maintaining of velocity to work properly. Here's how it's supposed to look compared to the glitchy mess in the above gif:



So right now I don't think it's worth trying to mess with this system as there are other aspects of the game I'd rather focus on. Ultimately it's rare that the player will encounter this situation, and even if 'grabbing' the tunnel feels a bit odd it's more likely to save them from falling down a pit than to hinder their flow through the level.

One final point of interest, I use this velocity maintaining system in one other place. Just after an enemy has been kicked they will maintain their velocity even if they hit a wall.



So if you're a bit too close to a wall when you kick the enemy, they can still make it over the top of the wall.

Is it possible to playtest the game? My fingers ache to play it.

Unfortunately I'm maybe a bit overly protective of the game and am still only having it tested by people I know. Some good news on that front, I did recently reach a milestone of 30 fully complete levels, and put together a new build of the game! I gave it to a couple of friends for playtesting who hadn't previously played. One day I may be more open about larger-scale playtesting but I don't want to guarantee anything.
Logged

mobilelast
Level 2
**


View Profile WWW
« Reply #1315 on: July 29, 2022, 12:17:39 AM »

Extremely well crafted miniature graphics. Everything looks clear and enemies have personality, which makes their actions very natural.

Game mechanics look well-thought and visualized also, which makes them easy to understand. While versatile mechanics give lots of room for creativity both designer and player, they may also introduce tons of potential exploits that makes level design challenging. I wonder if you have had such problems (I haven't read through everything yet)?

Great devlog. I’d say it's pretty essential for anyone who is about to make a platformer.
Logged

Avaruustaistelupeli (ATP) - a space combat game
- Free download from itch.io or IndieDB
- Dev diary here
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #1316 on: July 30, 2022, 10:49:43 PM »

Game mechanics look well-thought and visualized also, which makes them easy to understand. While versatile mechanics give lots of room for creativity both designer and player, they may also introduce tons of potential exploits that makes level design challenging. I wonder if you have had such problems (I haven't read through everything yet)?

Thank you!

The mechanics definitely give the player a lot of options, especially when it comes to being able to manipulate and bounce off enemies. I don't really worry about this in the level design - the 'intended' level design is sort of geared towards lower-level gameplay that doesn't use advanced tricks. If players want to abuse the mechanics to take shortcuts or reach unusual places won't be discouraged (and will often find little secrets Smiley ).
Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #1317 on: July 31, 2022, 11:08:25 AM »

As mentioned briefly in a recent post, I reached the milestone of 30 completed levels! Coffee I'm taking a break from level creation for a while and tackling some polish tasks that I've wanted to do for ages. One of these is:

Controls Settings polish

I had a look through the devlog and couldn't see anywhere that I discussed the Controls Settings screen. I may have done somewhere. Anyway, here's the oldest screenshot I have of this screen, from 2016:



The controls were presented in a fairly simple way. The only way to change them was to press the Edit button, and then you would press each input to set them. It wasn't possible to edit individual controls.

Here's the same screen from 2018 (note that the background is different because this is on the pause menu rather than the frontend):



Apart from some style changes, and the addition of a Rumble toggle, the main difference is that each action could have 2 buttons assigned (e.g. Z or Return for "OK"). This started to make the screen feel a bit busier. It was also awkward to change the buttons because the only option was to clear all the buttons and re-enter them all in sequence. I added a hacky method for assigning multiple buttons - while holding down the first button you could press another button to assign both.

Here's another even more recent screenshot:



The addition of the Kick action is really stretching this screen to breaking point. So it was time to finally revamp it.



I had already written code for handling scrolling windows for other screens, so it was easy to put together a more traditional scrollable list. It looks much more like a standard menu that you would see in other games!

While all of the controls are no longer visible at the same time, the other advantages make up for it I think. Everything is much more clearly laid out.

All of the individual button mappings are also now clickable options in their own right, so it's possible to reassign single buttons without having to redo everything. This also makes it much more intuitive to assign alternate buttons without having to press multiple buttons at the same time. When assigning individual buttons, if that button is assigned elsewhere it'll swap the buttons around if possible. And for the second column of buttons, trying to assign the same button in the same slot will clear out the assignment instead. The old method of sequentially assigning every button in sequence still exists too.

Here's a video of the new screen in action:





Towards the end of the video I demonstrate a feature that I added at some point which allows keyboard keys to be assigned even when a controller is currently being used. This is intended as an accessibility feature to make the control bindings more flexible for whatever different setups people may have. Note that I don't support accepting inputs from multiple different controllers at once though - there's only ever a single 'active' input device which can be the keyboard, or a controller (with optional keyboard bindings).

Mouse inputs are not rebindable, the mouse can be used to navigate menus though. I also have support for touch screens, although I haven't been able to test this for a long time since my laptop's touch screen broke.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #1318 on: August 01, 2022, 12:51:12 AM »

Definitely a nice bit of polish.

Also I can never get enough of that hand punching things. It's both so slapstick and so in-character for Leilani
Logged
kevin andersson
Level 1
*


Producer/ Designer by day and Programmer by night


View Profile WWW
« Reply #1319 on: August 02, 2022, 09:49:55 AM »

So glad to see updates here! Remap controller could be the absolute worst thing I've ever added to a game. Nightmares haha!
It looks really good!
Logged

Pages: 1 ... 64 65 [66] 67
Print
Jump to:  

Theme orange-lt created by panic