youkaicountry / yknytt

Implementation of Knytt Stories in the Godot engine
Other
57 stars 8 forks source link

Replace broken/non-transparent KSDS sprites with proper KS ones #178

Open blipdrifter opened 1 year ago

blipdrifter commented 1 year ago

Noticed while playing a Strange Dream on YKnytt 0.5.1 that the save and death 'smoke' textures look odd. In YKnytt, the save sprites have this weird wavy border on top that shouldn't even be there, because in KS+ proper the save texture should 'flash' up and down. Also, the smoke textures that appear when Juni dies don't seem to be transparent as well...

Lt-knb commented 1 year ago

It's not just those, many sprites are wrong. The hologram is magenta, for example. It's because they're the KSDS sprite sheets. I will report them all and attach the correct sprites once I compare all objects and effects

blipdrifter commented 1 year ago

Did not know this! Thanks for letting me know. (Still find it odd that this project's assets were based around KSDS and not KS proper... 🤷 )

up-left commented 1 year ago

In the source, spritesheets that are vertically oriented are most likely from KSDS, I can check them by myself. I'm not 100% sure but other sprites should be from the original.

Lt-knb commented 1 year ago

If that's true, where did you get the original sprite sheets?

up-left commented 1 year ago

Clickteam Fusion (not MMF2) can export an entire animation into a spritesheet

Lt-knb commented 1 year ago

OK, now I'm confused... If you have Fusion, then why is Yknytt based on KSDS??

up-left commented 1 year ago

In early stages of development it was easier to take sprites from KSDS. Then I discovered that I can export spritesheets directly. Apart from sprites, there is nothing in YKnytt from KSDS

Lt-knb commented 1 year ago

Actually, sound effects were from KSDS too at first, it wasn't just sprites... Anyway, if you always had Fusion from the start, then why are Juni's hitbox and climb checker different, and many objects have the wrong animation speed, among other things?

up-left commented 1 year ago

About the movement: because it's too hard to perfectly emulate MMF behavior. On one hand, Juni should grab all platforms, on the other hand Juni should slip through all thin corridors. So it's a fine tuning in this case. As for the animation speed, it's probably just inattention. The priority was to finish the project, not to tune every little thing. Sometimes (for example for objects in bank 7) the behavior is different intentionally. Sometimes I took into account that it's harder to play on cell phones with a touchpad than on a keyboard, so the game should be a bit more forgiving. The priority was that puzzles, challenges, paths and eventually whole levels shouldn't be broken, rather than creating an exact copy of Knytt Stories.

up-left commented 1 year ago

I quickly looked through all spritesheets, found 64 candidates from KSDS and eventually replaced only savepoint, hologram and updraft. The rest are very close to the original or I missed something. Lt-knb, if you still want to volunteer, you can specify the worst sprites from KSDS.

Lt-knb commented 1 year ago

If you set the new save point and updraft sprites' blend modes to Add, they should be good. I will check everything else and see what needs to be replaced

up-left commented 1 year ago

Yep, blend mode is Add

Lt-knb commented 1 year ago

Alright, I found many mistakes, but I'll report them gradually to avoid confusion.

Let's start with Juni: Her KSDS sprite sheet has a ton of mistakes, mainly positioning and the palette. Here's a fixed version Juni Fixed

youkaicountry commented 1 year ago

To comment on why this is, I started this project as an exploration of "is this even possible", which I wasn't 100% sure of given the eccentricities of the original game's collision detection. I grabbed assets from KSDS because they were "good enough" for my testing, and easier to get at than the MMF asset, for quick iteration testing. Then as the project developed, changing them out pretty much constantly lower priority than implementing everything else XD Now it is definitely a good time to do this as the project matures.

youkaicountry commented 1 year ago

I have switched it to the fixed Juni sprite sheet. Thank you!

up-left commented 1 year ago

During implementation of OCO, most of the object sprites were replaced with the standard ones. So if you notice any significant difference that is left, please write here!

Lt-knb commented 1 year ago

Thank you. However, you replaced them with my templates for KS+. Now, that is a good thing, for 90% of the objects, but some of those spritesheets were specifically optimized to be used as OCOs. For that reason, some are still different from the original, and you had to adjust some, like the cannons. Sorry about that.

Other than that, there are still some unrelated differences too.

I'll report them all gradually

up-left commented 1 year ago

And what was that optimization? If it's about positioning (I remember that I had to change bullet spawn point), it's better to keep your sprites, so overrided cannons will have no buggy offset.

Lt-knb commented 1 year ago

Yes, that's most of the optimizations. I think you should've changed the cannon's position instead, not bullets', but right now I'm not sure. I'll test it later.

Currently, there's some limitations in KS+ OCOs. For example, an OCO can't have a specific opposite-direction-facing version (horizontally), it must just mirror the "normal" one. Some objects, like "Cute", the red jelly, and Juni's umbrella, actually do have a different-looking left-facing version that uses a separate spritesheet. So that will need to be implemented in the non-custom version of those objects to look the same as original KS. I can make the left-facing versions. Can they be a separate file? So those objects would be split in two