Jump to content
A 2021 backup has been restored. Forums are closed and work in progress. Join our Discord server for more updates! ×
SoaH City Message Board

DarkchaoX10

Members
  • Posts

    44
  • Joined

  • Last visited

Posts posted by DarkchaoX10

  1. I wish you would move that X space to lower end of the screen (like sonic unleashed or colors or World) and make it smaller it feels like you need a of presenting it, i dont think its working too well, what are your other concepts? hopefully that hud isnt the first idea and got attacted to it.

    I will keep the design of the Hud and the Rings/Time/Score part. About the wisp box...I could remove it and instead add a little Icon of the current collected wisp power up to the life icon... whatcha think?

  2. A friend helped me and it seems that i got it to work now :D

    thats the new code:

          // deacceleration on slopes.
            if (action == action_rolling){
                if ((relative_angle < 180 && sign(x_speed) == 1) || (relative_angle > 180 && sign(x_speed) == -1)){
                   // the character is going up a slope...
                   x_speed -=  sin(degtorad(relative_angle))*roll_decc_factor_up;
                }else{               
                    // the character is going down a slope
                    x_speed -=  sin(degtorad(relative_angle))*roll_decc_factor_down;
                }
            }else if(ground == true && relative_angle > 35 && relative_angle < 335){
                x_speed -= sin(degtorad(relative_angle)) * slope_decc_factor;
            }
    
    • Like 1
  3. It seems to be a problem with the whole action/movement code.

    I added the above and removed the other rolling codes,but sonic is keeping getting faster when walking on Slopes and Loops...

    Heres the Whole Step Action/Movement script if you like to see it:

       
        // gameplay
    
            //--------------------- x movement ---------------------
           
            // only activate normal control while we're idle or jumping 
            if ( action == action_normal || action == action_jumping || action == action_sliding_jump || action == action_spring_jump || action == action_super_spring_jump 
             || ((shield == 3 || shield == 4) && action == action_shield) || action == action_corkscrew  || action == action_corkscrew_roll )
            {
                // acceleration
                if (key_left && x_speed > -top_x_speed)  x_speed -= x_acceleration;
                if (key_right && x_speed < top_x_speed)  x_speed += x_acceleration;
    
                // deacceleration while no key is pressed
                if (ground || action == action_corkscrew || action == action_corkscrew_roll)
                {
                    if (!key_left && x_speed < 0)
                    {
                        x_speed += x_acceleration;
                        // set to 0 when we full stop (this is performed due the floating point precision, otherwise some odd
                        // decimals will still remain in there)
                        if (x_speed > 0) x_speed  = 0;
                    }
    
                    if (!key_right && x_speed > 0)
                    {
                        x_speed -= x_acceleration;
                        // set to 0 when we full stop (this is performed due the floating point precision, otherwise some odd
                        // decimals will still remain in there)            
                        if (x_speed < 0) x_speed = 0;
                    }
                }
    
            }
    
            // deacceleration on slopes.
            if (ground == true && relative_angle > 35 && relative_angle < 335)
            {
                if ( action == action_rolling )
                {
                    // first check where the character is heading to
                    if ( x_speed > 0 )  // the character is heading to the right
                    {
                        if ( relative_angle < 180 ) 
                            // the character is going up a slope...
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_up;
                        else                
                            // the character is going down a slope
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_down;
                    } else {            // the character is heading to the left
                        if ( relative_angle > 180 ) 
                            // the character is going up a slope...
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_up;
                        else                      
                            // the character is going down a slope
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_down;            
                    }
                } else {
                    x_speed -= sin(degtorad(relative_angle)) * slope_decc_factor;
                }
            }
    
            // ---- Others ---------------------------------------------------------------------
    
            // fall if there isn't enough speed
            if (relative_angle > 80 && relative_angle < 280 && ground == true && abs(x_speed) < 3)
            {
                y_speed =   -sin(degtorad(relative_angle))*x_speed;
                x_speed =   cos(degtorad(relative_angle))*x_speed;
                ground  =   false;
            }
    
            // fall off the ground if the edges aren't colliding
            if (ground == true && angle != global.gravity_angle &&
                (player_collision_left_edge( x, y, angle ) == false || player_collision_right_edge( x, y, angle ) == false  ))
            {
                y_speed =   -sin(degtorad(relative_angle))*x_speed;
                x_speed =   cos(degtorad(relative_angle))*x_speed;
                ground  =   false;
            }
    
            // get new angle
            if (ground == true && player_collision_left_edge( x, y, angle ) && player_collision_right_edge( x, y, angle ))
                player_set_angle(player_get_angle( x, y, angle ));
            else
                player_set_angle(global.gravity_angle);
                
                // full stop when we're colliding a wall
            if (x_speed > 0 && player_collision_right(x,y,angle,maskBig))
            {
                x_speed = 0;
            }
            if (x_speed < 0 && player_collision_left(x,y,angle,maskBig))
            {
                x_speed = 0;
            }     
    
            
            //----------------------------------CAMERA---------------------------------
            if (x_speed > 0 && (player_collision_right(x,y,angle,maskBig) || x >= (global.camera_max_x-16)))
                x_speed = 0;
            if (x_speed < 0 && (player_collision_left(x,y,angle,maskBig) || x <= (global.camera_min_x+16)))
                x_speed = 0;
    
            
            //--------------------- y movement ---------------------
            
            if (ground)
            {
                y_speed = 0;
    
                // return to the normal state if the character was jumping
                if (action == action_jumping || action == action_sliding_jump || action == action_spring_jump|| action == action_super_spring_jump || action == action_swinging
                || ((shield == 2 || shield == 3) && action == action_shield)) action = action_normal;
                else if (shield == 4 && action == action_shield)
                {
                    ground = false;
                    y_speed =-6.78
                    action = action_jumping;
                }
                else if (action == action_hurt)
                {
                    x_speed = 0;
                    action = action_normal;
    
                }
    
                // check if the player is really on the ground
                if (player_collision_bottom(x,y,angle,maskBig) == false)
                {
                    ground = false;
                    player_set_angle(global.gravity_angle);
                }
            }
            else
            {
                // Add gravity
                if (action != action_sliding && action != action_pipe && action != action_corkscrew && action != action_corkscrew_roll && action != action_super_spring_jump)
                    y_speed += y_acceleration;
    
                // check if for some reason the player has landed
                if (y_speed >= 0 && player_collision_bottom(x,y,angle,maskBig) == true)
                {
                    ground = true;
                    // return to the normal state if the character was jumping
                    if (action == action_jumping || action == action_sliding_jump || action == action_spring_jump
                    || ((shield == 2 || shield == 3) && action == action_shield)) action = action_normal;
                    else if (shield == 4 && action == action_shield)
                    {
                        ground = false;
                        y_speed =-6.78;
                        action = action_jumping;
                    }
                    else if (action == action_hurt)
                    {
                        x_speed = 0;
                        action = action_normal;
                    }
                }
    
                // check if we're on the air but we collided with the ceiling
                if (y_speed < 0 && player_collision_top(x,y,angle,maskBig) == true)
                    y_speed     = 0;
            }        
            
                if (y_speed >= 0 && player_collision_bottom(x,y,angle,maskMain) == true)
                {
                if (action == action_hurt){ x_speed = 0; }
                }
                
            //------------------------Falling------------------------
            if (action == action_falling){ground = false;}
            
            if (action == action_falling && (ground == true || y_speed == 0))
                {
                action = action_normal;
                }
            
            //--------------------- shield actions ---------------------
            
           //Air Attack
           
           if ( shield == 0 && invincibility == 0 && shield_usable && action == action_jumping && key_action_pressed )
            {
            invincibility = 3;
            invincibility_timer = 8;
            sound_play(sndAirAttack);
            shield_usable = false;
            }
            
            
            switch (shield)
            {
                case 2: // Fire Shield
                    if ( shield_usable && action == action_jumping && key_action_pressed )
                    {
                        if (animation_direction = 1) x_speed = 10;
                        else x_speed = -10;
                        y_speed = 0;
    
                        shield_usable = false;
    
                        action = action_shield;
                        sound_play(sndShieldFireUse);
                        
    
                    }
                case 3: // Electric Shield
                    if ( shield_usable && action == action_jumping && key_action_pressed )
                    {
    
                        x_speed = x_speed/2
                        y_speed = -6
    
                        shield_usable = false;
    
                        action = action_shield;
                        sound_play(sndShieldElectricityUse);
                        
    
                    }
                case 4: // Water Shield
                    if ( shield_usable && action == action_jumping && key_action_pressed )
                    {
                        x_speed = 0;
                        y_speed = 12;
    
    
                        action = action_shield;
                        animation = "waterbounce";
                        sound_play(sndShieldWaterUse);
    
                    }
                    break;
                default:
                    if (action == action_shield) action = action_jumping;
                }
    
    
             if (global.CanMove == false){
             x_speed += 0.11;
             animation_direction = 1;
             }   
            
             //-----------------Alpha Max / Min------------------------------
             
             if (Alpha > 1)
                 { 
             Alpha = 1; 
             }
             
             if (Alpha < 0 )
                {
             Alpha = 0;
             }
             
                 
            //--------------------- normal actions ---------------------
            
            if (action == action_jumping)
            {
                if (!key_action) jump_timer = 13;
                if (y_speed < 0 && jump_timer <= 13 && key_action)
                {
                    y_speed    += jump_strenght/(26);
                    jump_timer += 1;
                }
            }
            else if ((ground == true || (action == action_corkscrew || action == action_corkscrew_roll)) && !player_collision_top(x, y-4, global.gravity_angle, maskBig ) && key_action_pressed && action != action_crouch_down && action != action_spindash && action !=action_peelout && action != action_lookup && action != action_sliding )
            {
                // while the player isn't crouching down or spindashing, jump
                y_speed     =   cos(degtorad(relative_angle))*(jump_strenght/2) - sin(degtorad(relative_angle))*x_speed;  // algorithm for a sonic-like
                x_speed     =   cos(degtorad(relative_angle))*x_speed + sin(degtorad(relative_angle))*jump_strenght;      // jump.
    
                ground      =   false;
                jump_timer  =   0;
                player_set_angle(global.gravity_angle);
    
                action      =   action_jumping;
                shield_usable = true;
                sound_play(sndJump);
                
    
            }
    
            //w
            if ( action == action_crouch_down )
            {
                crouch_down_timer += 1;
                
                // while the character is crouching down, if the player doesn't pressed the key anymore,
                // deactivate
                if ( !key_down && ground == true )
                {
                    action            = action_normal;
                    crouch_down_timer = 0;
                }
            } else {
                // crouch down. while the character is quiet, on the ground and pressing down, activate the
                // crouch down token.
                if (ground == true && x_speed == 0 && key_down && action == action_normal)
                    action = action_crouch_down;
    
                crouch_down_timer = 0;
            }
            if ( action == action_lookup )
            {
                lookup_timer += 1;
                
                // while the character is looking up, if the player doesn't pressed the key anymore,
                // deactivate
                if ( !key_up && ground == true )
                {
                    action  = action_normal;
                    lookup_timer = 0;
                }
            } else {
                // look up. while the character is quiet, on the ground and pressing up, activate the
                // look up token.
                if (ground == true && x_speed == 0 && key_up && action == action_normal)
                {
                    action = action_lookup;
                }        
            }
            
            //--------------------------Super Peel-Out---------------------------------------//
    
                if (action != action_rolling && action != action_spindash && key_up && key_action_pressed 
                    && super_peel_out == 0 && ground==true && x_speed==0){
                action = action_peelout
                }
                if (action == action_peelout && super_peel_out < 11.5){
                    super_peel_out += 0.2;
                    }
                if (action == action_peelout && super_peel_out == 0.2){
                sound_play(sndSpinDashCharge);
                }
                
                if (action == action_peelout && !key_up && super_peel_out > 6){
                x_speed = animation_direction * super_peel_out;
                sound_play(sndSpinDashGo);
                super_peel_out = 0;
                }
                else
                if (action == action_peelout && !key_up && super_peel_out < 6){
                super_peel_out = 0;
                x_speed = 0;
                action = action_normal;
                }    
                
                if (ground==false){
                super_peel_out = 0;
                }  
                if (action == action_peelout && super_peel_out == 0){
                action = action_normal;
                } 
                if (action != action_peelout) { super_peel_out = 0; }
                
         if (action == action_win){ x_speed = 0; }
                
         //------------------------------Tube Rolling-------------------------------//
         
         if (action == action_pipe)
         {
         pipe_timer += 0.1;
         ground  = false;
         if ((pipe_type == 1) || (pipe_type == 3)){
         x_speed = pipe_mov_x;
         y_speed = pipe_mov_y;
            }
         }
         else
         pipe_timer = 0;
         
         if (pipe_timer = 0.2){
         if ((pipe_type == 1) || (pipe_type == 2)){
         sound_play(sndRoll)
            }
         }
         if (pipe_timer > 0.5){
         pipe_timer = 0.5
         }
         
         /*if (player_collision_main_object(x, y, objForcedTubeRoll)==true){
         Timer[0] += 0.1;
         }
         else
         Timer[0]=0;
         
         if (Timer[0] > 0.1){
         sound_play(sndRoll);
         }
         
          if (Timer[0] > 0.4){
         Timer = 0.4;
         }*/
         
         //------------------------------------Floating-------------------------------
         
         /*objHandle = player_collision_main_object(x,y,objFan);
         
         if (objHandle != noone){
         action = action_float;
         float_timer = 1;
         }
         
         if (action == action_float && float_timer = 1){
         y_speed = -1;
         ground = false;
         if (animation_direction = -1 && x_speed > -2){x_speed = -2}
         if (animation_direction =  1 && x_speed <  2){x_speed =  2}
         }
         
         if (objHandle == noone && float_timer = 1){
         float_timer = 0;
         action = action_normal;
         }*/
         
        //--------------------------------------Spindash------------------------------------//                                      
            if ( action == action_spindash )
            {   
                // if the player doesn't pressed down anymore, roll
                if ( !key_down )
                {
                    // start rolling
                    action = action_rolling;
                    
                    // set speed to the accumulator and set depending on the direction
                    if ( animation_direction == 1 ) // facing to the right
                        x_speed = spindash_accumulator;
                    else
                        x_speed = -spindash_accumulator;
                        sound_play(sndSpinDashGo);
                        sound_stop(sndSpinDashCharge);
    
                    // disable shield usage
                    shield_usable = false;
    
                }
                
                // if the player press again jump add power to the spindash accumulator,
                // otherwise, deaacelerate
                if ( key_action_pressed )
                {
                    spindash_accumulator = min( spindash_accumulator +  0.7, spindash_max_acc );
                    sound_play(sndSpinDashCharge);
                }
                else
                    spindash_accumulator = max( spindash_accumulator - 0.01, spindash_min_acc );
            }
            else
            {
                // spindash. if the character is crouching down, and the player pressed the action key,
                // activate the spindash
                if ( action == action_crouch_down && key_action && can_dash )
                {
                    action = action_spindash;    // set action to spindash
                    spindash_accumulator = spindash_min_acc;    // reset the spindash accumulator
                    sound_play(sndSpinDashCharge)
                    
                }
            }
            
            if ( action == action_rolling )
            {
                // first check the direction of the movement
                if ( x_speed > 0 )
                {
                    // deaccelerate depending on what are you pressing
                    if (key_left)       x_speed -= roll_decc_strong;
                    else if (key_right) x_speed -= roll_decc_light;
                    else                x_speed -= roll_decc;
                    
                    // set to 0 the x_speed if it got lower than 0 (this is for preventing
                    // decimal precission leftovers)
                    if ( x_speed < 0 ) x_speed = 0;
                }
                else if ( x_speed < 0 )
                {
                    // deaccelerate depending on what are you pressing
                    if (key_left)       x_speed += roll_decc_light;
                    else if (key_right) x_speed += roll_decc_strong;
                    else                x_speed += roll_decc;
                    
                    // set to 0 the x_speed if it got greater than 0 (this is for preventing
                    // decimal precission leftovers)
                    if ( x_speed > 0 ) x_speed = 0;
                }
                
                // if the speed got 0, set back the normal action
                if ( x_speed == 0 ) action = action_normal;
                
                // if the character isn't on the ground anymore, change to jump
                // action
                if ( ground == false )
                {
                    action = action_jumping;
    
                    shield_usable = 1;
                }
            }
            else
            {
                // if the player is running, on the ground and pressed down, roll
                if ( action == action_normal && ground == true && abs(x_speed) >= 1 && key_down )
                {
                    action = action_rolling;
                    sound_play(sndRoll);
                }
            }
    
            if ( action == action_corkscrew || action == action_corkscrew_roll )
            {
                var corkscrewObject; corkscrewObject = player_collision_main_object(x, y, objCorkscrew);
                
                if ( abs(x_speed) < 4 )       action = action_normal;
                if (corkscrewObject == noone) action = action_normal;
                else
                {        
                    var relativePosition, angleInCorkscrew;
                    relativePosition = x - corkscrewObject.x;
                    angleInCorkscrew = degtorad((relativePosition/384)*360);
                    
                    // Set position acording to relative position to corkscrew
                    y = corkscrewObject.y + 26 + (1+cos(angleInCorkscrew))*(75*0.5);
                    
                    // Change animation frame depending on angle
                    if ( action == action_corkscrew ) animation_frame = animation_corkscrew_start+abs((radtodeg(angleInCorkscrew)/360*11) mod 12);
                }
            }
            else if ( abs(x_speed) >= 4 && ground == true && player_collision_main_object(x, y, objCorkscrew) != noone )
            {
                // Set different actions based on current
                if ( action == action_rolling ) action = action_corkscrew_roll;
                else                            action = action_corkscrew;
                
                // Common stuff
                ground = false;
                player_set_angle(0);
            }
            
            
            
            if ( action == action_skid )
            {
                instance_create(x, y+12, objSkidDust);
                // first check the direction of the movement
                if ( x_speed > 0 )
                {
                    // decelerate while pressing left
                    if (key_left)       x_speed -= skid_decc;
                    
                    // finish skidding
                    if ( x_speed < 0 || !key_left || !ground ) action = action_normal;
                }
                else if ( x_speed < 0 ) {
                    // decelerate while pressing left
                    if (key_right)      x_speed += skid_decc;
                    
                    // finish skidding
                    if ( x_speed > 0 || !key_right || !ground ) action = action_normal;
                }
                if (x_speed == 0) action = action_normal;
            }
            else {
                if ( action == action_normal && ground == true)
                {
                    if ((x_speed<-2) && key_right)
                    {
                        action = action_skid;
                        sound_play(sndSkid);
                    }
                    if ((x_speed>2) && key_left)
                    {
                        action = action_skid;
                        sound_play(sndSkid);
                    }
                }
            }
            
    

    Also,your code only would work like this for me:

    if (x_speed < 0) {
            if (key_right)       x_speed = min(0, x_speed+roll_decc_strong);
            else                x_speed = min(0, x_speed+roll_decc);
        } else if (x_speed > 0) {
            if (key_left)        x_speed = max(0, x_speed-roll_decc_strong);
            else                x_speed = max(0, x_speed-roll_decc);
        } 
    
        // Deceleration based on angle
        if ( ((x_speed > 0.0) && (relative_angle < 180)) || ((x_speed < 0.0) && (relative_angle > 180)))
            x_speed -= global.SinTable[relative_angle]*roll_decc_factor_up;
        if ( ((x_speed < 0.0) && (relative_angle < 180)) || ((x_speed > 0.0) && (relative_angle > 180)))
            x_speed -= global.SinTable[relative_angle]*roll_decc_factor_down;
                
        // If player isn't on ground anymore, or pressed, switch to jump.
        if (!ground) {
            action                = action_jumping;
        }
        else if (key_action_pressed) {
            action = action_jumping;
            shield_usable = 1;
        }
        
        // If player definitely stopped, just change to normal.
        else if (x_speed == 0.0) {
            action                = action_normal;
            shield_usable = 1;
        }
    
  4. SuperBlitz,those are the Rolling codes:

    // deacceleration on slopes.
            if (ground == true && relative_angle > 35 && relative_angle < 335)
            {
                if ( action == action_rolling )
                {
                    // first check where the character is heading to
                    if ( x_speed > 0 )  // the character is heading to the right
                    {
                        if ( relative_angle < 180 ) 
                            // the character is going up a slope...
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_up;
                        else                
                            // the character is going down a slope
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_down;
                    } else {            // the character is heading to the left
                        if ( relative_angle > 180 ) 
                            // the character is going up a slope...
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_up;
                        else                      
                            // the character is going down a slope
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_down;            
                    }
                } else {
                    x_speed -= sin(degtorad(relative_angle)) * slope_decc_factor;
                }
            }
    
    //Other Stuff
    if ( action == action_rolling )
            {
                // first check the direction of the movement
                if ( x_speed > 0 )
                {
                    // deaccelerate depending on what are you pressing
                    if (key_left)       x_speed -= roll_decc_strong;
                    else if (key_right) x_speed -= roll_decc_light;
                    else                x_speed -= roll_decc;
                    
                    // set to 0 the x_speed if it got lower than 0 (this is for preventing
                    // decimal precission leftovers)
                    if ( x_speed < 0 ) x_speed = 0;
                }
                else if ( x_speed < 0 )
                {
                    // deaccelerate depending on what are you pressing
                    if (key_left)       x_speed += roll_decc_light;
                    else if (key_right) x_speed += roll_decc_strong;
                    else                x_speed += roll_decc;
                    
                    // set to 0 the x_speed if it got greater than 0 (this is for preventing
                    // decimal precission leftovers)
                    if ( x_speed > 0 ) x_speed = 0;
                }
                
                // if the speed got 0, set back the normal action
                if ( x_speed == 0 ) action = action_normal;
                
                // if the character isn't on the ground anymore, change to jump
                // action
                if ( ground == false )
                {
                    action = action_jumping;
    
                    shield_usable = 1;
                }
            }
            else
            {
                // if the player is running, on the ground and pressed down, roll
                if ( action == action_normal && ground == true && abs(x_speed) >= 1 && key_down )
                {
                    action = action_rolling;
                    sound_play(sndRoll);
                }
    

    Also,whats wrong with the jumping? some of you said that it isnt that good,i dont see a reason why...

  5. I know the current physics sucks,so could you guys maybe help me out just a little bit? those are the current values i have for most of Sonic's physics.

    slope_decc_factor       =   0.14;           // slope deacceleration factor
            
    crouch_down_timer       =   0;              // timer with stores how much time the char. is crouched
            
    roll_decc_strong        =   0.07;           // deaccelerate while pressing the oppsite direction
    roll_decc               =   0.03;           // deacceleration value while rolling
    roll_decc_light         =   0.02;           // deaccelerate while pressing towards the same direction
            
    roll_decc_factor_up     =   0.05;           // slope deacceleration factor while rolling and going up
    roll_decc_factor_down   =   0.20;           // slope deacceleration factor while rolling and going down
            
    spindash_accumulator    =   4;              // spindash amount accumulator
    spindash_min_acc        =   8;              // spindash minium accumulator value
    spindash_max_acc        =   16;             // spindash maxium accumulator value
    
    y_speed                 =   0;              // y speed
    max_y_speed             =   12;             // max y speed (only affects when going down)
    y_acceleration          =   0.2;            // y acceleration / gravity
    conversion_factor       =   0.8;            // speed conversion factor when landed on the ground
    jump_strenght           =-6.60;             // the jump strenght    
    skid_decc               = 0.23;             // deacceleration value while skidding 
    
    top_x_speed             =   8;              // top x speed when running on flat ground
    max_x_speed             =   12;             // max x speed
    x_acceleration          =   0.046875;       // acceleration / deacceleration
    slope_decc_factor       =   0.14;           // slope deacceleration factor     
    slide_jump_force_x      = 4.2;
    slide_jump_force_y      =  -6;
    
  6. So i quite need some help with my fangame,i cant of course do everything alone.

    What i'm looking for is someone that is good in spriting so the game will not just reuse original art.

    And im looking for some new Music Composers that are good in making Genesis Like tracks.

    Most of the people in my current team have they own projects or stuff to do,so they mostly dont have the time for that,so it would be quite nice to have some new team members that i can ask.

     

    If you want to help,leave a post!

     

  7. Just because some resources look the same,it doesnt mean that i actually copied them from AtS,as an example,most of the game/sprites sprites has been made/used before AtS was even announced.

    Also i totaly dont want to make it some kind of AtS fangame,you guys will see that in later versions,i'm going to take my own way in gameplay wise and i guess i will remake some of the sprites to make them not look like their are copied. ; D

    • Like 1
  8. So,i updated the demo just a little bit,also a new download link : D
    Go check out the first page and post.

     

    What is updated?

    - You can now Pause the Game in the Zone. (with Enter)

    - The Special Stage Ring in Act 1 has been Removed.

    - Some Text fixes.

    - The game restarts after you beat the boss.

    - Some collision fixes (example:Sky Sanctuary part in Act 1.)

    - Boss Music has been added : p

    - Correct Shield Sprites has been added (i updated it a little bit.)

     

    Btw,you can change the screen resolution with F4,and Restart the Game for watever reasons with F2 if you didn't knew that already.

  9.  

    The "ruin" parts of the level shown seem taken straight from Horizon Heights

    I guess you say that because of the bg,well you guys need to know that i added the bg to TEST it,it's not going to be a stage background,i actually made it for the Level Select Screen.

    (So you can select levels like in Sonic Advance 2.)

     

    And i totaly not try to make it a 'Lake Game',you will see that in later zones and sections of the game.

    One example is that if you play Ruined Eggs Zone act 2 (Second Zone) the stage kinda gets puzzle styled,where you need to find switches and or switch to an different character to find a way out of the act.

  10. I really need some help with some of the codes from Sonic Reborn!

    This code:

    // deacceleration on slopes.
            if (ground == true && relative_angle > 35 && relative_angle < 335)
            {
                if ( action == action_rolling )
                {
                    // first check where the character is heading to
                    if ( x_speed > 0 )  // the character is heading to the right
                    {
                        if ( relative_angle < 180 ) 
                            // the character is going up a slope...
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_up;
                        else                
                            // the character is going down a slope
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_down;
                    } else {            // the character is heading to the left
                        if ( relative_angle > 180 ) 
                            // the character is going up a slope...
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_up;
                        else                      
                            // the character is going down a slope
                            x_speed -=  sin(degtorad(relative_angle)) * roll_decc_factor_down;            
                    }
                } else {
                    x_speed -= sin(degtorad(relative_angle)) * slope_decc_factor;
                }
            }
    

    This code is used to deaccelerate on Slopes,but do you maybe know any way to make him keep rolling down slopes like he is supposed to do? I can't figure that out : p

  11. I gotta have to say something about this : p

    Yes i know,a lot in this game looks like its Copied from SB/ATS but i truly did NOT wanted to copy stuff from Lake.

    Yeah,the Sprites looks the same but well,those are the best Sonic Sprites i found on the Internet and because of that i simply had to use them, (also i don't like to use original Sprites made from Sega (exa:Sonic 3)) and they are not even exactly the same,Lake quite edited them to fit his own Style.

     

    If this really bothers you guys trough,i of course can change the Animations (like the Super Peel Out) to not look like its copied.

  12. Ok so, this game isn't terrible, but needs some serious work.

    The physics are about decent, but there's some glaring problems. One of which is this really wonky upward acceleration every time you jump. Another is the horrendous aerial mobility, in which Sonic moves like a one ton brick suspended by a long string. It's absurdly difficult to manipulate your movement in the air.

    You should also pay attention to some details. Sonic's jogging sprites are all over the place with the alignment of every frame being very off.

     

    Always love upside down springs.

    lub2cIQ.png

     

    Or how about Sonic being partway in the floor.

    TrF2R7n.png

     

     

     

    My only major criticism otherwise is how much of a B/ATS ripoff this game is so far. Other people have mentioned it without anything specific, so I'll spell out some similarities.

     

    Sonic's sprites being the same.

    The spike powerup working the same as the spike shield (protecting from spikes and granting an inverted jump).

    These platforms and towers being just like those in Horizon Heights, and his peelout charge being that same unique animation Lake came up with.

    I8obv3K.png

     

    The rain showing up in a later section/act of the first level, which looks almost exactly like the rain in B/ATS.

    9PXwwL3.png

     

    Boss that periodically shoots blue projectiles that hit the ground and turn into floor following waves as its main feature.

    YFDYD8U.png

     

    And this one... I shouldn't have to explain this at all. If you deny this one, you've got some problems.

    55NvdVc.png

     

     

    Damn,calm down bro.

    Yes,Sonic Reborn is inspired by BTS/ATS but that doesnt mean that i just copy stuff from Lake.

    The Sprites are free to use for everyone and i just took some of the animations (which Lake also used) because they fitted perfectly for Sonic's Action.The Rain in Act 2 is actually from Super Mario Bros 3 and i had the design of this stage already done before Lake even announced ATS. (Older Demos of Reborn had it already) so i'm not copying that.

    The Boss is inspired by Sonic Advance and is not really supposed to copy the ATS Bosses.

    About the last screen,i made this map/bg for the Zone Select Menu and i only used it in the zone because i wanted to see how it looks in action.

    About the physics and some of the bugs like the ground,i know about them and i try to improve these in later versions.

     

     

    I didn't read that warning about the special ring and was transported to a 10 foot land of whimsy and wonder. Does this mean the special stages will be actual platformer levels like Triple Trouble or Ristar?

    Yep,the special stages will be actual levels! Just with an time limit so it's not that easy and if you die,you will return to the next act/zone.

  13. Just noticed this thread was here haha, that just proves I don't check up on these forums often. xD

     

    Anyways, I can say I was fairly impressed with the demo. I noticed the game uses the Revival engine, which explains why some little parts of the physics seem off. The visuals were absolutely great, but I felt like the level design was a little too linear. I'm hoping it's just because I couldn't find the other paths.

     

    However, if you only have one main path, consider adding more ways to explore the level, so that your stages have replay value. 

     

    These are just little nitpicks to an already great start to a fan game. I wish you luck. :)

    Thanks for playing! About the Linear Stages,yeah i know about that : / i try to improve my level design in the next zone with a lot of alternate paths to go.

    About the engine,nope it doesnt use the Revival Engine,it uses the Second version of the Super Ring Engine,but HEAVILY modified for Sonic Reborn!

     

    Btw,i love your game! I wish i could give sonic also such a effect when jumping : p i tried it too but i totaly failed and sonic couldnt move anymore lol.

    • Like 1
  14. Hey I already played it for about two days ago and on SAGE Act 1. And already left my feedback to him in Skype.

    Anyway, this demo is all way better then last time. Beautiful stages, nice music and interesting new gameplay features like Wisp-style.. things. I don't know how they are named. This game remind me Sonic BTS/ATS for some reason. One thing that I am worrying about is how many dlls and functions are activated, I hope this is will not affect to performance.

    Thats why the dll CleanMem.dll is also available,it will be activated in each room and after each room ending,so possible performance drops will be removed!

     

    Btw,i trought it was easy to fix the rolling,but its actually not :P

    i seriously cant find a solution for it and if someone is good with Game Maker,it would be really nice if you could send me a possible code to get the building up speed when rolling downhill to work.

    • Like 1
×
×
  • Create New...