1. Hey! Guest! The 36th GMC Jam will take place between February 27th, 12:00 UTC - March 2nd, 12:00 UTC. Why not join in! Click here to find out more!
    Dismiss Notice
  2. NOTICE: We will be applying a Xenforo update on Tuesday 25th of February. This means that from approximately 10:00 to 14:00 BST the forums will be offline (or possibly longer). Sorry for the inconvenience! Official Announcement here.

Windows Ultimate Platform Engine

Discussion in 'Tutorials' started by scorpafied, Dec 22, 2019.

  1. scorpafied

    scorpafied Member

    Joined:
    Feb 8, 2019
    Posts:
    25
    Hello and welcome to my platform engine. (this was a collab between sp202 & me)

    GM Version
    : Gamemaker Studio 2
    Target Platform: Windows
    Links(screenshot): 1
    Download: Click Here

    Summary
    :
    the intention with this was to create a customisation platform engine, rich with features that was modular in design. so u could pick and choose what features were present.

    Tutorial
    :
    a quick intro, on the legacy forums i was known as x-death. i was known for helping out in the graphic forum and tutorials. i decided to come back and do this to help everyone out.

    here is a list of features the engine supports:
    - accelerated/decelerated movement (both linear and radial archs)
    - slopes
    - double jump (you can set this to as many jumps as youd like)
    - variable jumping
    - wall jumping (can be switched between single and double wall systems)
    - ledge grabbing: also includes jumping from the ledge, and climbing
    on top of the ledge.
    - sliding down walls
    - dash ability
    - ice
    - one way platforms
    - moving platforms (supports complex paths)
    - spring/bounce pads
    - push blocks
    - controller support

    and Secret Areas! (those objects need to be on there own layer)

    note: if you make a slope and u get collission issues, check the collision mask and make sure its set to precise (slow)

    we have also provided some recommended settings to
    help you replicate the acceleration and deceleration arcs of some
    popular games such as celeste and mario. as a means to teach you how to get your characters to
    play as you'd like. not to make clones. i used "game makers toolkit" youtube channel which had a great video on the arcs.

    here is some small sample code from the create event of the object that handles the characters physics, to show how customizable it:
    Code:
    /*
    Mechanics
    */
    jumpMax = 2; // max number of jumps possible
    walljump_activated = true;
    variable_jump_activated = true;
    ledge_grab_activated = true; // whether can grab ledges
    dash_activated=true; // whether dashing is currently enabled
    
    /*
    Customizable options for ingame stuff
    */
    // Accelleration & Horizontal Limits
    lin_acc=true; // handles the arc of acceleration, linear is true, radial is false
    lin_fric=true; // handles the arc of deceleration, linear is true, radial is false
    hsp_acc = 0.9//0.3; // rate of horizontal acceleration (new super mario bros uses 0.3 there abouts)
    hsp_acc_ice = 0.08; 
    hsp_push_block = 2; // max speed when pushing a block
    hsp_walk = 3; // max movement speed
    
    // Deccelleration
    hsp_fric_ground = 0.9; // rate of deccelleration if on ground (higher takes longer)
    hsp_fric_ice = 0.04;
    hsp_fric_air = 0.15; // rate of deccelleration if in air (higher takes longer)
    
    and some small sample code from the step event of the above object, i picked the dash ability so you can see how powerful the code is:
    Code:
    // Dashing
    if(dash_activated && (!ledgegrab)){
       if(key_dash&&(dash_current<0)&&(dashes>0)){
           dashes--;
           dash_current=dash_frames;
           dspx=key_right-key_left;
           dspy=key_down-key_up;
           if((dspx==0)&&(dspy==0))dspx=image_xscale;
           var mag = (dash_speed/sqrt((dspx*dspx)+(dspy*dspy)));
           dspx*=mag;
           dspy*=mag;
       }
      
       if(dash_current>=0){
           if(dash_stop_when_release&&(!key_dashHeld))dash_current=0;
           dash_current--;
           if(dash_current<0){
               var stopmul = dash_stop_speed/dash_speed;
               dspx*=stopmul;
               dspy*=stopmul;
           }
           hsp=round(dspx);
           vsp=round(dspy);
       }else{
           if(onground)dashes=dash_max;
       } 
    }
    
    i designed new graphics just havent used em yet. all feedback is welcome!
     
    Last edited: Jan 4, 2020
  2. Galla

    Galla Member

    Joined:
    Dec 28, 2019
    Posts:
    1
    Hi, ty for this engine its rly good. I have a question im trying to make the player stand on the push block while the push block is on the spring jumping right now if im standing im pushing the block down and it stops on the spring, is there any way the push block keeps bouncing on the sping while the player is standing on him? Im not the best programer so can u help me with pointing Where/Howt o start ?
     
  3. scorpafied

    scorpafied Member

    Joined:
    Feb 8, 2019
    Posts:
    25
    thanks for the kind words. ok so the physics of the character and push block is handled in oEntity. the spring is its own object. thats an interesting bug u found, im not sure whats causing it tbh. so ill take a look at it when i get a chance. if you wish to mess around with how much momentum the player maintains when he hits the spring that can be done within the spring object.
     
  4. SilentxxBunny

    SilentxxBunny Epsilon

    Joined:
    Jun 21, 2016
    Posts:
    156
    Well I'll be dogged - that's a name username I haven't heard seen in ages. Howdy, x-death! I don't know if you remember me but I used to see you like every single day in the graphics forums.

    Your timing is impeccable. This is exactly what I've been needing. I mean literally exactly what I've been needing. Thank you so much for sharing this.

    PS: PROJECT ENIGMA is still in the works. 13 years and counting. :cool:
     
    Last edited: Jan 28, 2020
  5. scorpafied

    scorpafied Member

    Joined:
    Feb 8, 2019
    Posts:
    25
    i do remember you. you had me added as a friend on the legacy forum if i recall. dont remember your project if im honest, but i recall helping you out a while back.

    ill have to check it out. nice to see your still doing well

    engine:
    ok so im in the process of working on an update for this. im not sure when it will be done but here is the feature list of new stuff coming:
    - jumping to specific pixel height
    - slight adjustment to how non linear arc works as i wasnt satisified with it.
    - powerful switch and door system which will allow multiple switches to unlock a single door, or a single swotch to unlock multiple doors.
    - use of state machines, to clean up the code a bit and make it more organized. this will also make sprite handling better.
    - in air acceleration and decelleration for better in air control over your character.

    Galla:
    to answer your question on the bug u reported. i believe its caused due to how the collissions work on the block itself. so after i release what i mentioned above, this bug will be priority number one for me. i think ill revise how i approach this going forward. to better avoid any sort of glitch occuring with it.
     
    Last edited: Feb 1, 2020
    SilentxxBunny likes this.

Share This Page