This is something I was planning to make for next C3, but then just two and a half hours ago I randomly started making it and now it's almost done, what the hell. (Apparently I'm only productive when it doesn't matter. )
Someone showed off a really cool portal mechanic in SMW on Discord a few weeks ago, and it got me thinking how cool it would be to have carryable pipe tops. So that's what I did!
Note that this is not done yet! There's still a couple of things left to do:
- add pipe exiting animation
- center the player when entering the pipe
- make the player go behind the pipe
- make the thing actually carryable
And I can already tell there'll be some limitations to it:
- only enterable from the top
- only 16x16
- only works when exactly two of them are in a level, and both are loaded
On the other hand, the advantage is that there's no uberASM or blocks or anything required! Just insert these and you're good to go.
You can carry items through it, right? If so, that's a neat puzzle element.
Suggestion: I had an idea where you can have two pairs of pipe colours and interchangeably recolour them using the ON/OFF switch. Could that be feasible?
This is probably the first thing in ages that has truly made me want to do a level based on it, damn. I hope you finish this, because it's such a good gimmick
This is a pretty cool sprite WYE, one question though, just wondering if you would consider making the pairs of pipes impossible to enter if one of them is placed directly under a solid ceiling? I wouldn't want to see Mario travel through one of these pipes only to suddenly end up inside a ceiling and die after exiting the second pipe.
These look really neat. It'll allow for all sorts of level design and puzzles.
Looking to seeing what else you'll add with them like features and such.
I got multiple pairs of pipes working! Just need to tidy stuff up, add SA-1 support, document the code a bit, and it might be ready for release.
(There's a lot of slowdown involved, but only when there's a lot of them at once like here - there's just that much code involved to cover the edge cases - and still, there's always SA-1.)
I think you can get around this limitation of having both spawn in order to prevent potential glitches:
By having one sprite spawn the other at a given coordinate (may be user-unfriendly as people prefer placing sprites via lunar magic). However you probably need freeram so both don't spawn their others.
Or:
Use uberasm tool's level init or load to manually spawn them (also user-unfriendly due to again, you must enter the coordinates to spawn them).
Really like this gimmick. Hope to see this in the sprite section.
-------------------- Give thanks to RPG hacker for working on Asar.
Thanks! The spawning is really not the problem though, it's that the pipes constantly have to check if they're overlapping because standing on two pipes at once and entering them is going to lead to glitches.
Keep in mind the slowdown is really only noticeable when you have four pairs at the same time like this, and I don't see a lot of use cases for that (might be wrong though).
Originally posted by 1UPdudes
Curious to how far you can have them be a part though?
As far as I can tell, as far as you like! No limits there.
Thanks! The spawning is really not the problem though, it's that the pipes constantly have to check if they're overlapping because standing on two pipes at once and entering them is going to lead to glitches.
Solution: when entering a pipe, first checks a RAM of the player's entering state, if he is already traveling through the pipe then don't affect the player in any way.
This RAM isn't a sprite table, just an indicator for all of them. Of course you could make it so that the value 0 means normal while values 1-12 or 1-23 (take the sprite number, add 1 to it (INC), and store it into the RAM) means what sprite slot the player is entering.
-------------------- Give thanks to RPG hacker for working on Asar.
Solution: when entering a pipe, first checks a RAM of the player's entering state, if he is already traveling through the pipe then don't affect the player in any way.
That's actually a really good idea, thanks! Very effective, and very obvious too actually. Wonder how I missed that.
Follow Us On