Pages: 1 ... 6 7 [8] 9
  Print  
Author Topic: The Spelunky Community Update Project  (Read 118834 times)
Wonkyth
Big Bossy
Mossy
*
Posts: 2128



View Profile
« Reply #105 on: December 30, 2012, 10:23:33 PM »

Ah cool, I'll have to give this a whirl when I get home. Smiley
Logged

Can you read the wry? Can you FEEL the wry?!
DooM Marine
Shoot
*
Posts: 29


Yep.


View Profile Email
« Reply #106 on: January 02, 2013, 08:14:56 PM »

Why is the bottom level + the left room of the score room so laggy? The challenge rooms above are unlaggy, though. Probably has something to do with the big text box on the right side of the score room.
Logged

Ooh, money!
Nathan
Mossy
*
Posts: 5088



View Profile Email
« Reply #107 on: March 31, 2013, 08:16:08 AM »

His site is currently down.
Logged

Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #108 on: April 02, 2013, 07:05:19 AM »

The mediafire mirror links are still good from when the last time this happened.

http://mossmouth.com/forums/index.php?topic=1257.msg63460#msg63460
Logged

Urza
Mossbaby
*
Posts: 466


View Profile
« Reply #109 on: July 21, 2013, 01:32:48 AM »

Since this project got mentioned in another thread, it reminded my I should contribute fixes from Spelunky Natural. I'm probably forgetting some, but the only one that immediately jumps to mind as a for-sure bug is this with the parachute. If you fall an almost-dangerous distance onto a one-block thick floor, it will deploy needlessly. This is because it looks past the floor and doens't see you're about to land safely.

Fix:
In oPlayer1 step event (first code section), find this
Code:
        if (global.hasParachute and not stunned and fallTimer > 12)
        {
            if (not collision_point(x, y+32, oSolid, 0, 0))
            {
                instance_create(x-8, y-16, oParachute);
                fallTimer = 0;
                global.hasParachute = false;
            }
        }
and change the second if there to this
Code:
            if (not collision_line(x, y+16, x, y+32, oSolid, 0, 0))

Next most buggy is probably the thing with stunned/dead heroes I mentioned over here. "Vibrating" and taking extra fall damage. But my fix for that is sloppy, and I suspect it has side effect. I'm sure there's a better way to deal with it.
« Last Edit: July 21, 2013, 03:07:56 PM by Urza » Logged
TyrOvC
Mossbaby
*
Posts: 424


This text is not random :(


View Profile WWW
« Reply #110 on: July 21, 2013, 01:25:00 PM »

Merged in the parachute fix, which is odd considering it was already in the fixed bugs list but wasn't? oh! the fix that was put in previously only fixed it deploying early in conditions where the floor isn't one block thick, I gotcha. Tried it out and it works fine now.


Will look into the fall damage after thrown thing later since you said it might have some caveats.





Something that's been bugging me, I swear I've played a version of the game where if you like blow up or mine the blocks above vines, the vines disappear. That looks like it makes way more sense with the way the vine graphics look to me, but that does have a small effect on gameplay. Thoughts on that?


Edit edit:
Guess I'm on a Spelunky binge right now. Going through cleaning up some project stuff and looking at bugs on the wiki.
« Last Edit: July 21, 2013, 01:39:53 PM by TyrOvC » Logged

Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #111 on: July 21, 2013, 01:40:53 PM »

Nope vines stay there without support. I added that they got destroyed without a block to hang from in Spelunky Breakdown because it looked cool and made sense for the mod.
You might want to consider how it will effect gameplay in vanilla Spelunky though.. for example could the player become stuck in a level without any way to get across a spike pit?
Also consider the precious monkey habitat you are potentially destroying..! Tongue
Logged

TyrOvC
Mossbaby
*
Posts: 424


This text is not random :(


View Profile WWW
« Reply #112 on: July 21, 2013, 01:44:53 PM »

Yeah probably too much of a gameplay effect. It just looks ugly though! Tongue

Edit:
Hmm, wonder how vines work in the new spelunky.

Edit2: Maybe some sort of a graphic adjustment could be added after the block is removed though? Like any sort of a little addition to the top of the vine so it's not an ugly straight edge that looks like the vine was only connected to the block.
« Last Edit: July 21, 2013, 02:03:37 PM by TyrOvC » Logged

Urza
Mossbaby
*
Posts: 466


View Profile
« Reply #113 on: July 21, 2013, 06:45:05 PM »

So I decided this was as good a time as any to take a second look at that fall damage/vibrating bug and I think I found a solution that isn't too weird (like that "glue" business) and doesn't break anything else.

Once again in the oPlayer1 step event (first section), near the end, change this:
Code:
        // bounce
        if (yVel > 1) yVel = -yVel * 0.5;
        else yVel = 0;
to this:
Code:
// bounce
        if (isCollisionBottom(1))
        {
            if (yVel > 2.5) yVel = -yVel * 0.5;
            else yVel = 0;
        } else fallTimer -= 1;
This also fixes another bug, where a stunned character could "land" halfway through a platform, like oLadderTop. It's a little hard to explain, but try this test level and jump or climb down the ladder to see what I mean.

The fallTimer -= 1 part is there to avoid introducing a new bug where if you fell hard on a platform it would think you were falling the entire time you were stunned, resulting in massive damage when you recovered.

P.S. Here's a vine root. Do with it what you will.
« Last Edit: July 21, 2013, 07:14:21 PM by Urza » Logged
Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #114 on: July 21, 2013, 08:50:41 PM »

Ok, if you guys are looking for more stuff improve, maybe you're annoyed with the inconsistencies of how push blocks other objects interact.
Examples:
- Shoving a push block into the side of a snake or mantrap can cause the enemy to slide up on top of the block instead of being crushed, even if there's a wall on the other side. It's a bit more comical when it happens with boulders at high speed.
- Dropping a push block onto an item that is down in a "U" shaped alcove or corner, the item becomes stuck in the middle of the block, while generally treasure like gems and gold bars) will pop out the top of the block in this situation.
Logged

TyrOvC
Mossbaby
*
Posts: 424


This text is not random :(


View Profile WWW
« Reply #115 on: July 21, 2013, 10:38:37 PM »


<3


The way push blocks work has always annoyed the heck out of me, but I've put off messing with them because all my experiences with physics like those (I made a physics platforming game thing at one point) always turn into a hacky headache Tongue

Feeling productive though, so I might as well try it!



I fixed a few more bugs from the wiki list and upped them to the repository, like a situation where live piranhas would get stuck floating at the top of water.
« Last Edit: July 21, 2013, 10:50:24 PM by TyrOvC » Logged

Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #116 on: July 22, 2013, 06:58:32 AM »

The way push blocks work has always annoyed the heck out of me, but I've put off messing with them because all my experiences with physics like those (I made a physics platforming game thing at one point) always turn into a hacky headache Tongue
Feeling productive though, so I might as well try it!

Yeah messing with the platform engines scripts can get messy, I briefly tried at some point. Also be careful it doesn't cause items that were meant to be hidden in blocks to pop out...no worries if you pass on this one.
Logged

TyrOvC
Mossbaby
*
Posts: 424


This text is not random :(


View Profile WWW
« Reply #117 on: July 22, 2013, 03:06:41 PM »

Added the vine roots as a background tile created in scrSetupWalls()


I like it! Cheesy
Logged

TyrOvC
Mossbaby
*
Posts: 424


This text is not random :(


View Profile WWW
« Reply #118 on: July 22, 2013, 03:25:14 PM »

Once again in the oPlayer1 step event (first section), near the end, change this:
Code:
        // bounce
        if (yVel > 1) yVel = -yVel * 0.5;
        else yVel = 0;
to this:
Code:
// bounce
        if (isCollisionBottom(1))
        {
            if (yVel > 2.5) yVel = -yVel * 0.5;
            else yVel = 0;
        } else fallTimer -= 1;

The whole section I'm looking at already checks isCollisionBottom(1) and looks like:
Code:
    if (isCollisionBottom(1) or isCollisionPlatformBottom(1))
    {
        // bounce
        if (yVel > 1) yVel = -yVel * 0.5;
        else yVel = 0;
       
        // friction
        if (abs(xVel) < 0.1) xVel = 0;
        else if (abs(xVel) != 0 and collision_point(x, y+16, oIce, 0, 0)) xVel *= 0.8;
        else if (abs(xVel) != 0) xVel *= 0.3;
       
        bounced = true;
    }
Just to clarify, you mean try it like :
Code:
    if (isCollisionBottom(1) or isCollisionPlatformBottom(1))
    {
        if (isCollisionBottom(1))
        {
            if (yVel > 2.5) yVel = -yVel * 0.5;
            else yVel = 0;
        } else fallTimer -= 1;
       
        // friction
        if (abs(xVel) < 0.1) xVel = 0;
        else if (abs(xVel) != 0 and collision_point(x, y+16, oIce, 0, 0)) xVel *= 0.8;
        else if (abs(xVel) != 0) xVel *= 0.3;
       
        bounced = true;
    }
right?


Edit:
Speaking of collision bugs with moving solids, I fixed this:
https://www.youtube.com/watch?v=DwwJwia-DrA

By changing in characterStepEvent():
https://github.com/tyrovc/SpelunkyCommunityUpdateProject/commit/aeba79bd4e1e16655320308d6f461ca201ecea61
« Last Edit: July 22, 2013, 04:02:42 PM by TyrOvC » Logged

Urza
Mossbaby
*
Posts: 466


View Profile
« Reply #119 on: July 22, 2013, 05:49:41 PM »

That's correct. The second isCollisionBottom(1) check is to distinguish between solids and platforms, which I found need to be handled a little differently.

Of course I'm not claiming it's authoritatively the best solution or anything, but by trial and error it seems to avoid any of the weird stuff I previously noticed. But it might do something else weird I haven't noticed. You never know.

And the vines look good! You'd think I would already know that, but I mean I never  actually tested them in the game (just by fiddling a screenshot). I was thinking of suggesting using scrSetupWalls after I initially posted it, but I guess you beat me to that thought.

EDIT: Oh yeah, I remembered another (minor) one. The arrow points the wrong way when it's going down and to the right ("southeast").

Fix: In the oArrow step event, this:
Code:
else if (xVel > 0 and yVel > 0)
{
    direction = radtodeg(arctan(yVel/xVel));
}

(the third if block) should be changed to this:
Code:
else if (xVel > 0 and yVel > 0)
{
    direction = radtodeg(arctan(-yVel/xVel));
}

The fish bone is messed up even worse I think, but no one expects that to be aerodynamic. Tongue
« Last Edit: July 22, 2013, 09:08:26 PM by Urza » Logged
Pages: 1 ... 6 7 [8] 9
  Print  
 
Jump to: