Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zeekling behaviour improvements #2624

Merged
merged 53 commits into from
Sep 9, 2024
Merged

Conversation

MatusGuy
Copy link
Member

@MatusGuy MatusGuy commented Sep 5, 2023

idea is to remove the randomness and make the movement smoother

fixes #533

MatusGuy and others added 2 commits September 5, 2023 13:09
src/badguy/zeekling.cpp Outdated Show resolved Hide resolved
src/badguy/zeekling.cpp Outdated Show resolved Hide resolved
src/badguy/zeekling.cpp Outdated Show resolved Hide resolved
@mrkubax10 mrkubax10 added the status:conditional Needs a requirement to be satisfied before merging. label Sep 8, 2023
@mrkubax10
Copy link
Member

Depends on #2631

@tobbi
Copy link
Member

tobbi commented Sep 8, 2023

Can you fixed unused fields?

@MatusGuy
Copy link
Member Author

MatusGuy commented Sep 8, 2023

will in the next commit

@Rusty-Box Rusty-Box added this to the 0.7.0 milestone Sep 27, 2023
@MatusGuy
Copy link
Member Author

If you run straight ahead while ignoring the zeekling, you stay out of its trajectory. But if you're big tux, you will get hit because of your bigger hitbox, unless you slide at the last minute.

Small Tux's hitbox is one of its advantages. You can die in one hit and get a more limited moveset but have more chance of survival.

  • Black - ground
  • Red - Zeekling
  • Blue - Tux's direction
  • Green - Tux's destination

image

But if you go in the same direction, you will be interfering with zeekling's trajectory, which will hurt you.

image

So this isn't really a bug, but a feature.

@Rusty-Box
Copy link
Member

@Vankata453 Wait, what is the "bug" in question? I'm confused here. He seemed to work fine on my end. Is his diving curve messed up? What does the red line mean you drew on your screenshot?

@MatusGuy
Copy link
Member Author

Rusty i think the red line is a question mark

@Vankata453
Copy link
Member

Small Tux's hitbox is one of its advantages. You can die in one hit and get a more limited moveset but have more chance of survival.

Yes, but it seems like it's hard to die as small Tux. Personally I like how the old zeekling, regardless of direction, always poses a threat to the player and your task is to be careful around it. Additionally, if you want to kill it while on smooth terrain as small Tux, I don't think you would be able to, because you're not able to jump that high, according to my testing.

Is his diving curve messed up?

The diving curve simply poses no threat to small Tux when the directions of Tux and the zeekling differ.

What does the red line mean you drew on your screenshot?

Just a question mark, you can ignore it.

@Rusty-Box
Copy link
Member

Additionally, if you want to kill it while on smooth terrain as small Tux, I don't think you would be able to, because you're not able to jump that high, according to my testing.

I don't get this one? Are trying to kill it when it flying in the air? Just wait for it to come down.

The diving curve simply poses no threat to small Tux when the directions of Tux and the zeekling differ.

They do not pose as much of a threat on flat ground but why would they have to. Even as Big Tux a simply slight is all you need and you are in the clear. Flat ground has already several enemies and obstacles that you can use to enhance difficulty. Zeekling is an airborne threat trying to snipe you during platforming and are much more efficiently used on less flat ground that rquired tight platforming. Like how a Haywire is pretty much uninteresting on an empty flat long surface or a chasing fish pretty easy to dodge in a large, open pool of water, even Crushers are very harmless on flat ground, as you can just run straight and they will never harm you unless they are like one tile above Tux - certain enemies have circumstances they perform better in or worse. It comes up to the level designer to create a proper enviornment to bring the best out of each element used in it.

@Vankata453
Copy link
Member

Okay, did some platforming testing. Now that you explained it it makes sense. It seems challenging enough when platforming and also the reason that it doesn't catch Tux when directions differ is now clear too, seeing MatusGuy's response.

Being used to the old zeekling, I just didn't initially expect this. Only count on the code-side of my review then.

Are trying to kill it when it flying in the air?

I was trying to kill it as small Tux while running in the other direction. Seems like, however, just standing there without moving makes it drop on Tux, giving you the chance. It is speedy though, so the player should react fast on that.

Copy link
Member

@Frostwithasideofsalt Frostwithasideofsalt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this makes the zeekling feel so much better to fight against. like wow.

src/badguy/zeekling.cpp Outdated Show resolved Hide resolved
Copy link
Member

@tobbi tobbi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sometimes I prefer getting run over by a train to reviewing PRs, but here we go: Just fix my review comments and it's all good.

Copy link
Member

@weluvgoatz weluvgoatz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, this behavior is kind of weird. It's not really better or worse than the old behavior. Just weirder. It does a weird "U" movement, and in most situations, isn't a threat to Tux at all. I understand that it's supposed to go until 1 tile above the ground, but in many cases, it stops around 3 tiles above the ground, so it doesn't endanger any Tux variant in any way.

@weluvgoatz
Copy link
Member

Also:
"also sometimes it just straight up doesnt dive at all when tux is obviously within reach"

src/badguy/zeekling.cpp Outdated Show resolved Hide resolved
if (m_frozen)
return false;

const auto player = get_nearest_player();
if (player && last_player && (player == last_player)) {
Player* player = get_nearest_player();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe use auto? It's not that important, but wanted to mention it anyway.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to keep the usage of auto to a bare minimum, unless it's a long type or the same type is referenced twice in the same line.

src/supertux/sector.cpp Outdated Show resolved Hide resolved
src/supertux/sector.cpp Outdated Show resolved Hide resolved
@MatusGuy MatusGuy requested a review from tobbi August 16, 2024 20:19
@MatusGuy MatusGuy merged commit b15d254 into SuperTux:master Sep 9, 2024
33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging this pull request may close these issues.

Zeeklings: Curved flight path + screech
7 participants