Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1392637 Posts in 66980 Topics- by 59828 Members - Latest Member: gus_028

June 19, 2021, 01:30:52 AM

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



View Profile
« Reply #1280 on: February 12, 2021, 03:54:06 AM »

Woohoo, congratulations, it has certainly paid off considering how amazing the game looks by now!
Logged

vdapps
Level 3
***


Head against wall since 2013


View Profile WWW
« Reply #1281 on: February 12, 2021, 06:41:17 AM »

Congratulations! Gentleman I admire your patience and dedication!
Logged

Suttebun
Guest
« Reply #1282 on: February 13, 2021, 06:07:46 PM »

I enjoy how it feels like a homebrew game..
Sort of like, you don't have to release - and look at how fun the game is and how much more you can play with.
Logged
brewfall
TIGBaby
*


View Profile
« Reply #1283 on: February 22, 2021, 08:49:34 AM »

This is the only DevLog I look at, I love watching the progress. Keep up the great work!  Toast Left
Logged
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #1284 on: June 12, 2021, 07:41:07 AM »

Current list of collision system posts:

Collision System Part 3B: Interactions again

This is a follow up to part 3A of the collision system series of devlog posts. I said I'd go over how the interactions work in various different hitting-block situations.

The previous post showed Leilani using INTERACTION_BUMP_STRONG to break a block. The interaction that's used varies depending on Leilani's current powerup / state, resulting in differing her ability to break blocks.

  • Small Leilani - INTERACTION_BUMP_WEAK
  • Big Leilani - INTERACTION_BUMP_STRONG
  • Fire Leilani (while in fireball state) - INTERACTION_BUMP_SUPER_STRONG



The main thing Leilani needs to know when hitting a block is whether to rebound off it or not. This is done based on the reaction that the block returns. There are four possible reactions:
  • REACTION_BUMP_BUMPED_REBOUND - Block was bumped, whatever bumped it should rebound off it
  • REACTION_BUMP_BUMPED_NO_REBOUND - Block was bumped, but don't rebound off it
  • REACTION_BUMP_NO_EFFECT_REBOUND - Block was not affected, but still rebound off it
  • REACTION_BUMP_NO_EFFECT_NO_REBOUND - Block was not affected, don't rebound off it
I don't quite remember why the difference between BUMPED or NO_EFFECT is important, I don't see any parts of the code that differentiate between these reactions Cheesy. So all we need to worry about really is whether it's a REBOUND or NO_REBOUND reaction.

The rest of the effect of hitting the block (whether it gets destroyed, items come out of the block, etc) is all handled in the block's code.

Small breakable block
  • INTERACTION_BUMP_WEAK: Block is damaged/breaks. REBOUND
  • INTERACTION_BUMP_STRONG: Block is damaged/breaks. REBOUND
  • INTERACTION_BUMP_SUPER_STRONG: Block immediately breaks. NO_REBOUND

Big breakable block
  • INTERACTION_BUMP_WEAK: Block is not damaged, only bumped. REBOUND
  • INTERACTION_BUMP_STRONG: Block is damaged/breaks. REBOUND
  • INTERACTION_BUMP_SUPER_STRONG: Block immediately breaks. NO_REBOUND

Lava rock block
  • INTERACTION_BUMP_WEAK: No effect on block. NO_REBOUND
  • INTERACTION_BUMP_STRONG: No effect on block. NO_REBOUND
  • INTERACTION_BUMP_SUPER_STRONG: Block immediately breaks. NO_REBOUND

You can see that NO_REBOUND allows two quite different cases depending on if the block remains intact (in which case it'll behave like any normal solid collision - in the gif above Leilani rolls up and over the block which is normal behaviour when hitting any kind of wall), or if the block is destroyed (in which case Leilani won't respond to the collision at all and will move right through it).

Digging Interactions

One last block type with quite different interactions altogether is the diggable soil blocks:



This looks like quite a complex interaction between Leilani and the soil block that would require them to be pretty aware of each other's state. But actually they can be fairly well decoupled.

After hitting something solid, and after Leilani has already tried doing the relevant INTERACTION_BUMP_* interactions with no effect, she'll then test to see if something diggable is there. This is done using either INTERACTION_DIG_TEST_WEAK (for small Leilani) or INTERACTION_DIG_TEST_STRONG (for other powerups). These interactions have no actual effect on the block but are intended just for checking whether digging can happen.

The soil block receives this interaction. If it can be dug then it returns REACTION_DIG_BEING_DUG. Otherwise it'll return REACTION_NONE. The large soil block can't be dug by only WEAK digging so would return REACTION_NONE if small Leilani tried to dig it.

After the successful dig test Leilani goes into a dig state in which she'll stick to the wall and keep rolling. She knows which entity she's digging and will adjust her vertical position to match the Y position of the centre of that entity (you can see this in action in the gif above when Leilani digs through the big soil block and lifts off the floor slightly).

Every frame while Leilani is digging she'll continue to collide against the soil block entity and will send another interaction - INTERACTION_DIG_WEAK or INTERACTION_DIG_STRONG (note the lack of "TEST" in these ones). This interaction lets the other entity know that digging is continuing.

When the soil block receives these interactions it goes into its own 'being dug' state, losing integrity over time, emitting particles, shaking, etc. It returns REACTION_DIG_BEING_DUG again which lets Leilani know that she can remain in the digging state.

If Leilani stops digging then the block will just exit from its 'being dug' state because it's no longer receiving the INTERACTION_DIG* interactions. If the block is destroyed then Leilani will no longer collide with it and naturally leave her digging state that way.

Also a quick reminder that these systems aren't specific to Leilani even though I may talk about them as if they are. Some enemies recently gained the ability to dig through soil blocks using the same interactions:

Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #1285 on: June 12, 2021, 07:51:54 AM »

Coffee

Aloha! Apologies for the long devlog hiatus. I was struggling to find much time to work on the game so ended up taking a break from it - I last posted on the devlog in February, though was still working on the game itself until sometime in April, so I've actually only had a couple of months off development. Hopefully I'll now start to have a bit of time here and there to devote to the game again (work and baby permitting) and can figure out where I was and start to get back into it.

I just wrote a new entry in the collision system devlog series (see previous post), I felt like I didn't want to restart the devlog without at least some meaningful content! I also have a few gifs saved from work I did before April so those will appear in some upcoming posts.
Logged

Prinsessa
Level 10
*****



View Profile
« Reply #1286 on: June 12, 2021, 08:32:48 AM »

Welcome back! Another great update. Always fun to see the inner workings, all seems as nicely organised as ever.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #1287 on: June 13, 2021, 07:15:16 AM »

Hope the break was refreshing! Coffee
Logged
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #1288 on: June 18, 2021, 06:18:38 PM »

Hope the break was refreshing! Coffee

It was mostly because I had literally no time or energy to spare for this project so I don't know about refreshing! Cheesy But slowly getting back into work on Leilani will hopefully feel nice at least.

Charging Grunt enemies revamp

Now for one of the features I worked on before my break - revamping another enemy type.

I have these big enemies currently just known as Grunts (better naming of enemies will happen at some point!), I don't know if I ever went into any detail about them in the devlog.

Basically they're large patrolling robots that can carry different weapons - they're my version of the Hammer Bros, Boomerang Bros etc from Mario games. Or indeed enemies like the boomerang-throwing duck from Wario Land.


The unchanged boomerang version of the enemy

This one has a boomerang. Once it spots Leilani it'll walk back or forward to maintain a certain distance from her and periodically throw its weapon.

I had a version of this enemy in the game that held no weapon at all:


Old version of the charging enemy

This was implemented in basically the laziest way possible Embarrassed All I did was alter it's 'alert' behaviour so that, rather than trying to maintain a certain distance from Leilani, it would try to chase her down instead. However it moved so slowly that it was hardly even obvious that it was chasing Leilani, and not much of a threat. I had added the spike to its belly so that it could hurt Leilani if it did manage to walk into her.

Anyway, I decided to revamp this and make it a much more interesting enemy.


New version of the charging enemy

It's now carrying a spiky shield, and has new animations for actively charging at Leilani. The charge can result in it smashing blocks, causing other enemies to roll, or being stunned when it runs into a solid wall. I'm really happy with how this turned out! In terms of being alike to enemies from Mario games it's now filling the Chargin' Chuck niche quite nicely. And in Wario Land terms it feels like a nice reference to Wario's shoulder charge move.
Logged

Pages: 1 ... 63 64 [65]
Print
Jump to:  

Theme orange-lt created by panic