THE BASIC PLATFORM ENGINE

Just the basic program when you start a platformer.

Player step event
step:
if place_free(x,y+1){gravity=0.5}else{gravity=0}
gravity_direction =270
if vspeed>10{vspeed=10}
if keyboard_check(vk_right) && place_free(x+4,y){x+=4}
if keyboard_check(vk_left) && place_free(x-4,y){x-=4}
if keyboard_check_pressed(vk_up) && !place_free(x,y+1){vspeed=-7}

Solid Collion:
if vspeed>0 && !place_free(x,y+vspeed){move_contact(270)} vspeed=0

Horizontal Block
if (place_meeting(x,y+32,obj_hblock)){
hspeed=obj_hblock.hspeed;
}
else
{
hspeed=0;
}
if (place_meeting(x+4,y,obj_hblock)){
hspeed = -2;
}
if (place_meeting(x-4,y,obj_hblock)){
hspeed = 2;
}

Jumping on enemy
if place_meeting(x,y-1,obj_player) && obj_player.vspeed>0{instance_destroy()
with (obj_player){vspeed=-3}}