
----\
ÂÂÂÂÂÂ\
ÂÂÂÂÂÂÂÂ\x____


Rydian said:In the section part of stage 1, you can get sort of stuck in a floor corner. I've made a little ASCII art diagram with the X marking the spot.
Once you're stuck there you can't go to the right, but you can go left and jump.Code:----\ ÂÂÂÂÂÂ\ ÂÂÂÂÂÂÂÂ\x____
I know about that. It's the MOST annoying bug I have, and it's really hard to fix... Mostly because the code that handles collisions with the level is reaaally messy.
QUOTE(Rydian @ May 30 2011, 01:10 AM) EDIT: Also I had it crash when coming out of sleep mode, but can't replicate it.




Red screen, the guru. I put it in sleep mode a few times and waited to see if it would happen again (even on the same level, which was the multi-stack tutorial one), but it didn't. Using a DSTwo for it.Dirbaio said:I know about that. It's the MOST annoying bug I have, and it's really hard to fix... Mostly because the code that handles collisions with the level is reaaally messy.Yeah I noticed the way you handled level layout and collision and jumping based off of surface normals and it seemed odd to me to do that, but then when I hit the gravity-rotating stage I realized it probably made that a lot easier (and I wouldn't know how to do that otherwise), and it probably allows other tricks I haven't gotten to yet.
Question, is the collision system based on the same models that are seen in the game? I noticed they're patched together a bit to try to form a single-looking mesh. It's a little hard to tell if the character's collision with them is based on them or if they're just the display and it clips through them a bit to the actual boundaries, because the character doesn't have pixel-visible collision areas, what with all the particles it's emitting.
Would you consider making the collision meshes and visible meshes separate? Then you could have proper overlap of the visual meshes to stitch up the current gaps, while possibly reducing some of the physics engine's work as the meshes involved with physics could number less as they wouldn't be rendered so their placement would purely be for physics.
Though I suppose with all the particles the DS is pushed to it's limit so Idunno' if you could technically afford to pretty up the visual meshes in that case (make them look more psychedelic or something), my main concern is the physics system, it certainly caught my interest.
Speaking of physics, if you let the game sit for a minute you'll notice that the character tends to slide a bit. Perhaps you could tweak friction so movement is 0 past a certain threshold? This honestly made the stacking tutorial level annoying, as the stack would slowly slide to the left as I was trying to assemble it.
QUOTE(Dirbaio @ May 30 2011, 04:19 AM) I have that too sometimes. I thought it was because my flashcart since I have ROM's hanging randomly too.
But I see it's not the caseNext version I'll simply disable the sleep mode.![]()
Just one question: did it crash with the red screen of death or just freeze?



Dirbaio said:Well, collisions in Fireworlds are simpler than what they seem.
Levels are not meshes, they are simply a set of quads. The fireballs are treated as points, not circles.
When a fireball moves into a quad, I look at the closest side of the quad, and move the fireball to it, calculate the normals, and so on. Then I had a problem: it was possible to go "in between" two quads that were next to each other.
Then came the first hacky solution: All the quad sides have a "valid" flag. If a side is right next to a side of another quad, it's "invalid". (it's precalculated when saving in the level editor, heh) Then I look for the closest "valid" side and send the fireball to that side. That way the fireball doesn't go "between" two quads. It worked perfectly with two quads next to each other but not for corners.
The problem with corners is that when you hit a quad that is inside a corner, both closest sides are "invalid". At first I was sent to the OTHER (valid) side of the quadThen I made another hacky solution to avoid that, looking for the two closest sides and checking if both are invalid.![]()
This is a design problem: I have no way to know the "good" normal vector in that situation. I need to store some extra info with it. I'll think about it![]()


The NDS needs to be in the root.Boriar said:It was at the boot of game. The first time i got it
Rydian said:The NDS needs to be in the root.Boriar said:It was at the boot of game. The first time i got it



