├── README.md └── src └── delta ├── delta.yyp ├── objects ├── DeltaObject │ ├── Create_0.gml │ ├── DeltaObject.yy │ └── Step_2.gml ├── obj_ball │ ├── Alarm_0.gml │ ├── Create_0.gml │ ├── Draw_0.gml │ ├── KeyPress_32.gml │ ├── Other_0.gml │ └── obj_ball.yy ├── obj_controller │ ├── Create_0.gml │ ├── Draw_0.gml │ ├── KeyPress_38.gml │ ├── KeyPress_40.gml │ ├── Step_1.gml │ └── obj_controller.yy ├── obj_friction_delta │ ├── Create_0.gml │ ├── Draw_0.gml │ ├── KeyPress_17.gml │ └── obj_friction_delta.yy ├── obj_friction_gm │ ├── Create_0.gml │ ├── Draw_0.gml │ ├── KeyPress_17.gml │ └── obj_friction_gm.yy ├── obj_gravity_delta │ ├── Collision_obj_ground.gml │ ├── Create_0.gml │ ├── Step_0.gml │ └── obj_gravity_delta.yy ├── obj_gravity_gm │ ├── Collision_obj_ground.gml │ ├── Create_0.gml │ ├── Step_0.gml │ └── obj_gravity_gm.yy └── obj_ground │ └── obj_ground.yy ├── options ├── linux │ └── options_linux.yy ├── mac │ └── options_mac.yy ├── main │ ├── inherited │ │ └── options_main.inherited.yy │ └── options_main.yy └── windows │ └── options_windows.yy ├── rooms └── room0 │ └── room0.yy ├── scripts └── delta │ ├── delta.gml │ └── delta.yy └── sprites └── spr_wall ├── b23d500f-6428-4ad1-961e-284b0db5ac72.png ├── layers └── b23d500f-6428-4ad1-961e-284b0db5ac72 │ └── efabce7d-6a84-4ba0-9fe7-ed487f1ffa05.png └── spr_wall.yy /README.md: -------------------------------------------------------------------------------- 1 | # Delta 2 | 3 | Lightweight delta timing solution for GameMaker: Studio 2 4 | 5 | ## Usage 6 | 7 | To use Delta, download [the latest .yymps release](https://github.com/gm-core/delta/releases), and import the local package to your project. For detailed instructions, see [this guide](https://gmcore.io/installing.html#guide). 8 | 9 | ## Delta Timing 10 | 11 | Delta timing is a method of manipulating game components based on real time rather than steps. In GameMaker, when a user is unable to run your game at the desired step speed, it will run visibly laggy. Delta timing helps to fix this, by scaling movement, alarms and everything else based on how long it actually has been since the last frame. 12 | 13 | This resource provides tools to make delta timing nearly trivial in GameMaker. 14 | 15 | ## Scripts 16 | 17 | Delta exposes a small number of scripts to help with timing: 18 | 19 | ### `delta_init()` 20 | 21 | Initializes the delta timing. Call this as early as possible in your game, before anything requires delta timing. You can also find configuration values in the definition of this script. 22 | 23 | ### `delta_step()` 24 | 25 | Call this script on the `begin step` event of a game controller - likely a persistent object that is in every room of the game. This updates the delta timing for use in other scripts. 26 | 27 | ### `d(number)` 28 | 29 | The bread and butter of Delta. Returns the given number modified for the delta timing. 30 | 31 | This works by multiplying the provided number by the current "step factor", a number representing how many "frames" have passed in actuality. For example, if your game is running at half the speed it should be, the factor would be `2`, since things need to move twice as fast to appear normal. 32 | 33 | Usage examples: 34 | 35 | ```gml 36 | 37 | // Keep speed smooth between frame slowdown 38 | speed = d(movespeed); 39 | 40 | // Keep the animation running smoothly 41 | image_speed = d(1); 42 | 43 | // Tick down a timer in real-time instead of frame count 44 | someTimer -= d(1); 45 | ``` 46 | 47 | ### `seconds(number)` 48 | 49 | A utility function to return the given number in frames that would constitute that many seconds. Useful for setting timers in real seconds. This function uses your current game speed to determine the result. 50 | 51 | ### `delta_set_max_lag_compensation(maxLagMultiplier)` 52 | 53 | Sets the maximum multiplier for Delta to compensate for lag with. Default is 3. Setting this to a higher number will handle larger lag spikes, but may cause erratic behavior. 54 | 55 | ## DeltaObject 56 | 57 | Delta exposes an object parent which automates delta timing for most usages: movement, gravity, friction and alarms, even integrating natively with alarm events! 58 | 59 | Import the `DeltaObject` to your game, then for any object which requires delta timing, set `DeltaObject` as the parent. 60 | 61 | When using `DeltaObject`, you will need to use `event_inheried()` on the following events (if the child object has its own version of these): 62 | 63 | * Create 64 | * End Step 65 | 66 | Once you have set your object to inherit from `DeltaObject`, you can use the following instance variables in place of their counterparts to get delta timing for free! 67 | 68 | * `d_speed` instead of `speed` 69 | * `d_hspeed` instead of `hspeed` 70 | * `d_vspeed` instead of `vspeed` 71 | * `d_alarm[0..11]` instead of `alarm[0..11]` 72 | * `d_friction` instead of `friction` 73 | * `d_gravity` instead of `gravity` (still uses `gravity_direction`) 74 | 75 | These values will be converted into the correct values for delta timing, and managed internally to the object, then set as their GameMaker equivalents. When using these variables, *do not* use the GameMaker equivalents as well. 76 | 77 | ## GM Core 78 | 79 | Delta is a part of the [GM Core](https://github.com/gm-core) project. 80 | 81 | ## License 82 | 83 | Copyright (c) 2017 Michael Barrett 84 | 85 | Permission is hereby granted, free of charge, to any person obtaining a copy 86 | of this software and associated documentation files (the "Software"), to deal 87 | in the Software without restriction, including without limitation the rights 88 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 89 | copies of the Software, and to permit persons to whom the Software is 90 | furnished to do so, subject to the following conditions: 91 | 92 | The above copyright notice and this permission notice shall be included in all 93 | copies or substantial portions of the Software. 94 | 95 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 96 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 97 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 98 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 99 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 100 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 101 | SOFTWARE. 102 | -------------------------------------------------------------------------------- /src/delta/delta.yyp: -------------------------------------------------------------------------------- 1 | { 2 | "resources": [ 3 | {"id":{"name":"spr_wall","path":"sprites/spr_wall/spr_wall.yy",},"order":0,}, 4 | {"id":{"name":"delta","path":"scripts/delta/delta.yy",},"order":5,}, 5 | {"id":{"name":"DeltaObject","path":"objects/DeltaObject/DeltaObject.yy",},"order":0,}, 6 | {"id":{"name":"obj_controller","path":"objects/obj_controller/obj_controller.yy",},"order":0,}, 7 | {"id":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"order":0,}, 8 | {"id":{"name":"obj_ground","path":"objects/obj_ground/obj_ground.yy",},"order":2,}, 9 | {"id":{"name":"obj_gravity_delta","path":"objects/obj_gravity_delta/obj_gravity_delta.yy",},"order":0,}, 10 | {"id":{"name":"obj_gravity_gm","path":"objects/obj_gravity_gm/obj_gravity_gm.yy",},"order":1,}, 11 | {"id":{"name":"obj_friction_delta","path":"objects/obj_friction_delta/obj_friction_delta.yy",},"order":0,}, 12 | {"id":{"name":"obj_friction_gm","path":"objects/obj_friction_gm/obj_friction_gm.yy",},"order":1,}, 13 | {"id":{"name":"room0","path":"rooms/room0/room0.yy",},"order":0,}, 14 | ], 15 | "Options": [ 16 | {"name":"Linux","path":"options/linux/options_linux.yy",}, 17 | {"name":"macOS","path":"options/mac/options_mac.yy",}, 18 | {"name":"Windows","path":"options/windows/options_windows.yy",}, 19 | {"name":"Main","path":"options/main/options_main.yy",}, 20 | ], 21 | "isDnDProject": false, 22 | "isEcma": false, 23 | "tutorialPath": "", 24 | "configs": { 25 | "name": "Default", 26 | "children": [], 27 | }, 28 | "RoomOrder": [ 29 | {"name":"room0","path":"rooms/room0/room0.yy",}, 30 | ], 31 | "Folders": [ 32 | {"folderPath":"folders/Sprites.yy","order":0,"resourceVersion":"1.0","name":"Sprites","tags":[],"resourceType":"GMFolder",}, 33 | {"folderPath":"folders/Tile Sets.yy","order":3,"resourceVersion":"1.0","name":"Tile Sets","tags":[],"resourceType":"GMFolder",}, 34 | {"folderPath":"folders/Sounds.yy","order":4,"resourceVersion":"1.0","name":"Sounds","tags":[],"resourceType":"GMFolder",}, 35 | {"folderPath":"folders/Paths.yy","order":5,"resourceVersion":"1.0","name":"Paths","tags":[],"resourceType":"GMFolder",}, 36 | {"folderPath":"folders/Scripts.yy","order":6,"resourceVersion":"1.0","name":"Scripts","tags":[],"resourceType":"GMFolder",}, 37 | {"folderPath":"folders/Shaders.yy","order":7,"resourceVersion":"1.0","name":"Shaders","tags":[],"resourceType":"GMFolder",}, 38 | {"folderPath":"folders/Fonts.yy","order":8,"resourceVersion":"1.0","name":"Fonts","tags":[],"resourceType":"GMFolder",}, 39 | {"folderPath":"folders/Timelines.yy","order":9,"resourceVersion":"1.0","name":"Timelines","tags":[],"resourceType":"GMFolder",}, 40 | {"folderPath":"folders/Objects.yy","order":10,"resourceVersion":"1.0","name":"Objects","tags":[],"resourceType":"GMFolder",}, 41 | {"folderPath":"folders/Objects/example.yy","order":1,"resourceVersion":"1.0","name":"example","tags":[],"resourceType":"GMFolder",}, 42 | {"folderPath":"folders/Objects/example/speed.yy","order":1,"resourceVersion":"1.0","name":"speed","tags":[],"resourceType":"GMFolder",}, 43 | {"folderPath":"folders/Objects/example/gravity.yy","order":2,"resourceVersion":"1.0","name":"gravity","tags":[],"resourceType":"GMFolder",}, 44 | {"folderPath":"folders/Objects/example/friction.yy","order":3,"resourceVersion":"1.0","name":"friction","tags":[],"resourceType":"GMFolder",}, 45 | {"folderPath":"folders/Rooms.yy","order":11,"resourceVersion":"1.0","name":"Rooms","tags":[],"resourceType":"GMFolder",}, 46 | {"folderPath":"folders/Notes.yy","order":12,"resourceVersion":"1.0","name":"Notes","tags":[],"resourceType":"GMFolder",}, 47 | {"folderPath":"folders/Extensions.yy","order":13,"resourceVersion":"1.0","name":"Extensions","tags":[],"resourceType":"GMFolder",}, 48 | {"folderPath":"folders/Sequences.yy","order":1,"resourceVersion":"1.0","name":"Sequences","tags":[],"resourceType":"GMFolder",}, 49 | {"folderPath":"folders/Animation Curves.yy","order":2,"resourceVersion":"1.0","name":"Animation Curves","tags":[],"resourceType":"GMFolder",}, 50 | {"folderPath":"folders/Scripts/delta.yy","order":5,"resourceVersion":"1.0","name":"delta","tags":[],"resourceType":"GMFolder",}, 51 | ], 52 | "AudioGroups": [ 53 | {"targets":461609314234257646,"resourceVersion":"1.0","name":"audiogroup_default","resourceType":"GMAudioGroup",}, 54 | ], 55 | "TextureGroups": [ 56 | {"isScaled":true,"autocrop":true,"border":2,"mipsToGenerate":0,"targets":461609314234257646,"resourceVersion":"1.0","name":"Default","resourceType":"GMTextureGroup",}, 57 | ], 58 | "IncludedFiles": [], 59 | "MetaData": { 60 | "IDEVersion": "2.3.0.529", 61 | }, 62 | "resourceVersion": "1.3", 63 | "name": "delta", 64 | "tags": [], 65 | "resourceType": "GMProject", 66 | } -------------------------------------------------------------------------------- /src/delta/objects/DeltaObject/Create_0.gml: -------------------------------------------------------------------------------- 1 | d_speed = 0; 2 | d_hspeed = 0; 3 | d_vspeed = 0; 4 | __d_speed_last = 0; 5 | __d_hspeed_last = 0; 6 | __d_vspeed_last = 0; 7 | d_image_speed = 0; 8 | d_alarm = undefined; 9 | d_friction = 0; 10 | d_gravity = 0; 11 | for (var i = 12; i > 0; i--) { 12 | d_alarm[i] = 0; 13 | } -------------------------------------------------------------------------------- /src/delta/objects/DeltaObject/DeltaObject.yy: -------------------------------------------------------------------------------- 1 | { 2 | "spriteId": null, 3 | "solid": false, 4 | "visible": true, 5 | "spriteMaskId": null, 6 | "persistent": false, 7 | "parentObjectId": null, 8 | "physicsObject": false, 9 | "physicsSensor": false, 10 | "physicsShape": 1, 11 | "physicsGroup": 0, 12 | "physicsDensity": 0.5, 13 | "physicsRestitution": 0.1, 14 | "physicsLinearDamping": 0.1, 15 | "physicsAngularDamping": 0.1, 16 | "physicsFriction": 0.2, 17 | "physicsStartAwake": true, 18 | "physicsKinematic": false, 19 | "physicsShapePoints": [], 20 | "eventList": [ 21 | {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"DeltaObject","path":"objects/DeltaObject/DeltaObject.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 22 | {"isDnD":false,"eventNum":2,"eventType":3,"collisionObjectId":null,"parent":{"name":"DeltaObject","path":"objects/DeltaObject/DeltaObject.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 23 | ], 24 | "properties": [], 25 | "overriddenProperties": [], 26 | "parent": { 27 | "name": "Objects", 28 | "path": "folders/Objects.yy", 29 | }, 30 | "resourceVersion": "1.0", 31 | "name": "DeltaObject", 32 | "tags": [], 33 | "resourceType": "GMObject", 34 | } -------------------------------------------------------------------------------- /src/delta/objects/DeltaObject/Step_2.gml: -------------------------------------------------------------------------------- 1 | // Break down speed into a vector 2 | var spd_hvec = lengthdir_x(d_speed, direction); 3 | var spd_vvec = lengthdir_y(d_speed, direction); 4 | 5 | // If hspeed or vspeed changed, update accordingly 6 | if (d_hspeed != __d_hspeed_last || d_vspeed != __d_vspeed_last) { 7 | spd_hvec = d_hspeed; 8 | spd_vvec = d_vspeed; 9 | } 10 | 11 | // Apply gravity 12 | if (d_gravity != 0) { 13 | var grav_hvec = lengthdir_x(d(d_gravity), gravity_direction); 14 | var grav_vvec = lengthdir_y(d(d_gravity), gravity_direction); 15 | spd_hvec += grav_hvec; 16 | spd_vvec += grav_vvec; 17 | } 18 | 19 | // Recombine speed and direction 20 | direction = point_direction(0, 0, spd_hvec, spd_vvec); 21 | d_speed = point_distance(0, 0, spd_hvec, spd_vvec); 22 | d_hspeed = spd_hvec; 23 | d_vspeed = spd_vvec; 24 | __d_hspeed_last = spd_hvec; 25 | __d_vspeed_last = spd_vvec; 26 | 27 | // Apply friction 28 | if (d_friction != 0) { 29 | if (d_speed > 0) { 30 | d_speed = max(0, d_speed - d(d_friction)); 31 | } else if (d_speed < 0) { 32 | d_speed = min(d_speed + d(d_friction), 0); 33 | } 34 | } 35 | 36 | // Apply properties 37 | var __d_stepFactor = d(1); 38 | speed = __d_stepFactor * d_speed; 39 | image_speed = __d_stepFactor * d_image_speed; 40 | 41 | // Tick alarms 42 | for (var i = 0; i < 12; i++) { 43 | if (d_alarm[i] > 0) { 44 | d_alarm[i] -= __d_stepFactor; 45 | if (d_alarm[i] <= 0) { 46 | d_alarm[i] = 0; 47 | event_perform(ev_alarm, i); 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_ball/Alarm_0.gml: -------------------------------------------------------------------------------- 1 | /// @desc Reset the outline 2 | outline = false; -------------------------------------------------------------------------------- /src/delta/objects/obj_ball/Create_0.gml: -------------------------------------------------------------------------------- 1 | /// @desc Setup 2 | 3 | // Inherit from DelatObject 4 | event_inherited(); 5 | 6 | // Just keep moving right 7 | direction = 0; 8 | d_speed = 5; 9 | 10 | // Used to show alarms. Press space to make the ball an outline for 1 second! 11 | outline = false; -------------------------------------------------------------------------------- /src/delta/objects/obj_ball/Draw_0.gml: -------------------------------------------------------------------------------- 1 | /// @desc Draw a circle 2 | draw_circle(x, y, 10, outline); -------------------------------------------------------------------------------- /src/delta/objects/obj_ball/KeyPress_32.gml: -------------------------------------------------------------------------------- 1 | /// @desc Be an outline for 1 second 2 | d_alarm[0] = seconds(1); 3 | outline = true; -------------------------------------------------------------------------------- /src/delta/objects/obj_ball/Other_0.gml: -------------------------------------------------------------------------------- 1 | /// @desc Wrap back 2 | x = 0; -------------------------------------------------------------------------------- /src/delta/objects/obj_ball/obj_ball.yy: -------------------------------------------------------------------------------- 1 | { 2 | "spriteId": null, 3 | "solid": false, 4 | "visible": true, 5 | "spriteMaskId": null, 6 | "persistent": false, 7 | "parentObjectId": { 8 | "name": "DeltaObject", 9 | "path": "objects/DeltaObject/DeltaObject.yy", 10 | }, 11 | "physicsObject": false, 12 | "physicsSensor": false, 13 | "physicsShape": 1, 14 | "physicsGroup": 0, 15 | "physicsDensity": 0.5, 16 | "physicsRestitution": 0.1, 17 | "physicsLinearDamping": 0.1, 18 | "physicsAngularDamping": 0.1, 19 | "physicsFriction": 0.2, 20 | "physicsStartAwake": true, 21 | "physicsKinematic": false, 22 | "physicsShapePoints": [], 23 | "eventList": [ 24 | {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 25 | {"isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,"parent":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 26 | {"isDnD":false,"eventNum":0,"eventType":7,"collisionObjectId":null,"parent":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 27 | {"isDnD":false,"eventNum":32,"eventType":9,"collisionObjectId":null,"parent":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 28 | {"isDnD":false,"eventNum":0,"eventType":2,"collisionObjectId":null,"parent":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 29 | ], 30 | "properties": [], 31 | "overriddenProperties": [], 32 | "parent": { 33 | "name": "speed", 34 | "path": "folders/Objects/example/speed.yy", 35 | }, 36 | "resourceVersion": "1.0", 37 | "name": "obj_ball", 38 | "tags": [], 39 | "resourceType": "GMObject", 40 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_controller/Create_0.gml: -------------------------------------------------------------------------------- 1 | delta_init(); 2 | delta_set_max_lag_compensation(20); -------------------------------------------------------------------------------- /src/delta/objects/obj_controller/Draw_0.gml: -------------------------------------------------------------------------------- 1 | draw_text(0, 0, "Steps per second: " + string(game_get_speed(gamespeed_fps))); 2 | draw_text(0, 20, "Actual FPS: " + string(fps_real)); 3 | draw_text(0, 40, "Ball speed (Actual): " + string(obj_ball.speed)); 4 | draw_text(0, 60, "Ball speed (Delta Managed): " + string(obj_ball.d_speed)); 5 | draw_text(0, 80, "Max lag compensation set to " + string(global.__delta_maxLagCompensation) + "x"); 6 | draw_text(0, 100, "Ball takes 1 second to loop"); 7 | draw_text(0, 120, "Use arrows to change gamespeed"); 8 | draw_text(0, 140, "The ball will adjust its speed"); 9 | draw_text(0, 160, "to keep its pace"); 10 | -------------------------------------------------------------------------------- /src/delta/objects/obj_controller/KeyPress_38.gml: -------------------------------------------------------------------------------- 1 | game_set_speed(game_get_speed(gamespeed_fps) + 5, gamespeed_fps); -------------------------------------------------------------------------------- /src/delta/objects/obj_controller/KeyPress_40.gml: -------------------------------------------------------------------------------- 1 | if (game_get_speed(gamespeed_fps) > 0) { 2 | game_set_speed(game_get_speed(gamespeed_fps) - 5, gamespeed_fps); 3 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_controller/Step_1.gml: -------------------------------------------------------------------------------- 1 | delta_step(); -------------------------------------------------------------------------------- /src/delta/objects/obj_controller/obj_controller.yy: -------------------------------------------------------------------------------- 1 | { 2 | "spriteId": null, 3 | "solid": false, 4 | "visible": true, 5 | "spriteMaskId": null, 6 | "persistent": false, 7 | "parentObjectId": null, 8 | "physicsObject": false, 9 | "physicsSensor": false, 10 | "physicsShape": 1, 11 | "physicsGroup": 0, 12 | "physicsDensity": 0.5, 13 | "physicsRestitution": 0.1, 14 | "physicsLinearDamping": 0.1, 15 | "physicsAngularDamping": 0.1, 16 | "physicsFriction": 0.2, 17 | "physicsStartAwake": true, 18 | "physicsKinematic": false, 19 | "physicsShapePoints": [], 20 | "eventList": [ 21 | {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"obj_controller","path":"objects/obj_controller/obj_controller.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 22 | {"isDnD":false,"eventNum":1,"eventType":3,"collisionObjectId":null,"parent":{"name":"obj_controller","path":"objects/obj_controller/obj_controller.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 23 | {"isDnD":false,"eventNum":40,"eventType":9,"collisionObjectId":null,"parent":{"name":"obj_controller","path":"objects/obj_controller/obj_controller.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 24 | {"isDnD":false,"eventNum":38,"eventType":9,"collisionObjectId":null,"parent":{"name":"obj_controller","path":"objects/obj_controller/obj_controller.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 25 | {"isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,"parent":{"name":"obj_controller","path":"objects/obj_controller/obj_controller.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 26 | ], 27 | "properties": [], 28 | "overriddenProperties": [], 29 | "parent": { 30 | "name": "example", 31 | "path": "folders/Objects/example.yy", 32 | }, 33 | "resourceVersion": "1.0", 34 | "name": "obj_controller", 35 | "tags": [], 36 | "resourceType": "GMObject", 37 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_friction_delta/Create_0.gml: -------------------------------------------------------------------------------- 1 | event_inherited(); 2 | d_friction = .1; 3 | -------------------------------------------------------------------------------- /src/delta/objects/obj_friction_delta/Draw_0.gml: -------------------------------------------------------------------------------- 1 | draw_text(x, y, string(x)); -------------------------------------------------------------------------------- /src/delta/objects/obj_friction_delta/KeyPress_17.gml: -------------------------------------------------------------------------------- 1 | x = xstart; 2 | d_speed = 6; -------------------------------------------------------------------------------- /src/delta/objects/obj_friction_delta/obj_friction_delta.yy: -------------------------------------------------------------------------------- 1 | { 2 | "spriteId": null, 3 | "solid": false, 4 | "visible": true, 5 | "spriteMaskId": null, 6 | "persistent": false, 7 | "parentObjectId": { 8 | "name": "DeltaObject", 9 | "path": "objects/DeltaObject/DeltaObject.yy", 10 | }, 11 | "physicsObject": false, 12 | "physicsSensor": false, 13 | "physicsShape": 1, 14 | "physicsGroup": 0, 15 | "physicsDensity": 0.5, 16 | "physicsRestitution": 0.1, 17 | "physicsLinearDamping": 0.1, 18 | "physicsAngularDamping": 0.1, 19 | "physicsFriction": 0.2, 20 | "physicsStartAwake": true, 21 | "physicsKinematic": false, 22 | "physicsShapePoints": [], 23 | "eventList": [ 24 | {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"obj_friction_delta","path":"objects/obj_friction_delta/obj_friction_delta.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 25 | {"isDnD":false,"eventNum":17,"eventType":9,"collisionObjectId":null,"parent":{"name":"obj_friction_delta","path":"objects/obj_friction_delta/obj_friction_delta.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 26 | {"isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,"parent":{"name":"obj_friction_delta","path":"objects/obj_friction_delta/obj_friction_delta.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 27 | ], 28 | "properties": [], 29 | "overriddenProperties": [], 30 | "parent": { 31 | "name": "friction", 32 | "path": "folders/Objects/example/friction.yy", 33 | }, 34 | "resourceVersion": "1.0", 35 | "name": "obj_friction_delta", 36 | "tags": [], 37 | "resourceType": "GMObject", 38 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_friction_gm/Create_0.gml: -------------------------------------------------------------------------------- 1 | friction = .1; 2 | -------------------------------------------------------------------------------- /src/delta/objects/obj_friction_gm/Draw_0.gml: -------------------------------------------------------------------------------- 1 | draw_text(x, y, string(x)); -------------------------------------------------------------------------------- /src/delta/objects/obj_friction_gm/KeyPress_17.gml: -------------------------------------------------------------------------------- 1 | x = xstart; 2 | speed = 6; -------------------------------------------------------------------------------- /src/delta/objects/obj_friction_gm/obj_friction_gm.yy: -------------------------------------------------------------------------------- 1 | { 2 | "spriteId": null, 3 | "solid": false, 4 | "visible": true, 5 | "spriteMaskId": null, 6 | "persistent": false, 7 | "parentObjectId": null, 8 | "physicsObject": false, 9 | "physicsSensor": false, 10 | "physicsShape": 1, 11 | "physicsGroup": 0, 12 | "physicsDensity": 0.5, 13 | "physicsRestitution": 0.1, 14 | "physicsLinearDamping": 0.1, 15 | "physicsAngularDamping": 0.1, 16 | "physicsFriction": 0.2, 17 | "physicsStartAwake": true, 18 | "physicsKinematic": false, 19 | "physicsShapePoints": [], 20 | "eventList": [ 21 | {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"obj_friction_gm","path":"objects/obj_friction_gm/obj_friction_gm.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 22 | {"isDnD":false,"eventNum":17,"eventType":9,"collisionObjectId":null,"parent":{"name":"obj_friction_gm","path":"objects/obj_friction_gm/obj_friction_gm.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 23 | {"isDnD":false,"eventNum":0,"eventType":8,"collisionObjectId":null,"parent":{"name":"obj_friction_gm","path":"objects/obj_friction_gm/obj_friction_gm.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 24 | ], 25 | "properties": [], 26 | "overriddenProperties": [], 27 | "parent": { 28 | "name": "friction", 29 | "path": "folders/Objects/example/friction.yy", 30 | }, 31 | "resourceVersion": "1.0", 32 | "name": "obj_friction_gm", 33 | "tags": [], 34 | "resourceType": "GMObject", 35 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_gravity_delta/Collision_obj_ground.gml: -------------------------------------------------------------------------------- 1 | y = other.y - sprite_height; -------------------------------------------------------------------------------- /src/delta/objects/obj_gravity_delta/Create_0.gml: -------------------------------------------------------------------------------- 1 | event_inherited(); -------------------------------------------------------------------------------- /src/delta/objects/obj_gravity_delta/Step_0.gml: -------------------------------------------------------------------------------- 1 | if (!place_meeting(x, y + 1, obj_ground)) { 2 | d_gravity = .1; 3 | } else { 4 | d_gravity = 0; 5 | } 6 | 7 | if (keyboard_check_pressed(ord("Z"))) { 8 | direction = 90; 9 | d_speed = 10; 10 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_gravity_delta/obj_gravity_delta.yy: -------------------------------------------------------------------------------- 1 | { 2 | "spriteId": { 3 | "name": "spr_wall", 4 | "path": "sprites/spr_wall/spr_wall.yy", 5 | }, 6 | "solid": false, 7 | "visible": true, 8 | "spriteMaskId": null, 9 | "persistent": false, 10 | "parentObjectId": { 11 | "name": "DeltaObject", 12 | "path": "objects/DeltaObject/DeltaObject.yy", 13 | }, 14 | "physicsObject": false, 15 | "physicsSensor": false, 16 | "physicsShape": 1, 17 | "physicsGroup": 0, 18 | "physicsDensity": 0.5, 19 | "physicsRestitution": 0.1, 20 | "physicsLinearDamping": 0.1, 21 | "physicsAngularDamping": 0.1, 22 | "physicsFriction": 0.2, 23 | "physicsStartAwake": true, 24 | "physicsKinematic": false, 25 | "physicsShapePoints": [], 26 | "eventList": [ 27 | {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"obj_gravity_delta","path":"objects/obj_gravity_delta/obj_gravity_delta.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 28 | {"isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,"parent":{"name":"obj_gravity_delta","path":"objects/obj_gravity_delta/obj_gravity_delta.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 29 | {"isDnD":false,"eventNum":0,"eventType":4,"collisionObjectId":{"name":"obj_ground","path":"objects/obj_ground/obj_ground.yy",},"parent":{"name":"obj_gravity_delta","path":"objects/obj_gravity_delta/obj_gravity_delta.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 30 | ], 31 | "properties": [], 32 | "overriddenProperties": [], 33 | "parent": { 34 | "name": "gravity", 35 | "path": "folders/Objects/example/gravity.yy", 36 | }, 37 | "resourceVersion": "1.0", 38 | "name": "obj_gravity_delta", 39 | "tags": [], 40 | "resourceType": "GMObject", 41 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_gravity_gm/Collision_obj_ground.gml: -------------------------------------------------------------------------------- 1 | y = other.y - sprite_height; -------------------------------------------------------------------------------- /src/delta/objects/obj_gravity_gm/Create_0.gml: -------------------------------------------------------------------------------- 1 | gravity_direction = 270; -------------------------------------------------------------------------------- /src/delta/objects/obj_gravity_gm/Step_0.gml: -------------------------------------------------------------------------------- 1 | if (!place_meeting(x, y + 1, obj_ground)) { 2 | gravity = .1; 3 | } else { 4 | gravity = 0; 5 | } 6 | 7 | if (keyboard_check_pressed(ord("Z"))) { 8 | vspeed = -10; 9 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_gravity_gm/obj_gravity_gm.yy: -------------------------------------------------------------------------------- 1 | { 2 | "spriteId": { 3 | "name": "spr_wall", 4 | "path": "sprites/spr_wall/spr_wall.yy", 5 | }, 6 | "solid": false, 7 | "visible": true, 8 | "spriteMaskId": null, 9 | "persistent": false, 10 | "parentObjectId": null, 11 | "physicsObject": false, 12 | "physicsSensor": false, 13 | "physicsShape": 1, 14 | "physicsGroup": 0, 15 | "physicsDensity": 0.5, 16 | "physicsRestitution": 0.1, 17 | "physicsLinearDamping": 0.1, 18 | "physicsAngularDamping": 0.1, 19 | "physicsFriction": 0.2, 20 | "physicsStartAwake": true, 21 | "physicsKinematic": false, 22 | "physicsShapePoints": [], 23 | "eventList": [ 24 | {"isDnD":false,"eventNum":0,"eventType":3,"collisionObjectId":null,"parent":{"name":"obj_gravity_gm","path":"objects/obj_gravity_gm/obj_gravity_gm.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 25 | {"isDnD":false,"eventNum":0,"eventType":4,"collisionObjectId":{"name":"obj_ground","path":"objects/obj_ground/obj_ground.yy",},"parent":{"name":"obj_gravity_gm","path":"objects/obj_gravity_gm/obj_gravity_gm.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 26 | {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"obj_gravity_gm","path":"objects/obj_gravity_gm/obj_gravity_gm.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",}, 27 | ], 28 | "properties": [], 29 | "overriddenProperties": [], 30 | "parent": { 31 | "name": "gravity", 32 | "path": "folders/Objects/example/gravity.yy", 33 | }, 34 | "resourceVersion": "1.0", 35 | "name": "obj_gravity_gm", 36 | "tags": [], 37 | "resourceType": "GMObject", 38 | } -------------------------------------------------------------------------------- /src/delta/objects/obj_ground/obj_ground.yy: -------------------------------------------------------------------------------- 1 | { 2 | "spriteId": { 3 | "name": "spr_wall", 4 | "path": "sprites/spr_wall/spr_wall.yy", 5 | }, 6 | "solid": false, 7 | "visible": true, 8 | "spriteMaskId": null, 9 | "persistent": false, 10 | "parentObjectId": null, 11 | "physicsObject": false, 12 | "physicsSensor": false, 13 | "physicsShape": 1, 14 | "physicsGroup": 0, 15 | "physicsDensity": 0.5, 16 | "physicsRestitution": 0.1, 17 | "physicsLinearDamping": 0.1, 18 | "physicsAngularDamping": 0.1, 19 | "physicsFriction": 0.2, 20 | "physicsStartAwake": true, 21 | "physicsKinematic": false, 22 | "physicsShapePoints": [], 23 | "eventList": [], 24 | "properties": [], 25 | "overriddenProperties": [], 26 | "parent": { 27 | "name": "gravity", 28 | "path": "folders/Objects/example/gravity.yy", 29 | }, 30 | "resourceVersion": "1.0", 31 | "name": "obj_ground", 32 | "tags": [], 33 | "resourceType": "GMObject", 34 | } -------------------------------------------------------------------------------- /src/delta/options/linux/options_linux.yy: -------------------------------------------------------------------------------- 1 | { 2 | "option_linux_display_name": "Made in GameMaker Studio 2", 3 | "option_linux_version": "1.0.0.0", 4 | "option_linux_maintainer_email": "", 5 | "option_linux_homepage": "http://www.yoyogames.com", 6 | "option_linux_short_desc": "", 7 | "option_linux_long_desc": "", 8 | "option_linux_splash_screen": "${base_options_dir}/linux/splash/splash.png", 9 | "option_linux_display_splash": false, 10 | "option_linux_icon": "${base_options_dir}/linux/icons/64.png", 11 | "option_linux_start_fullscreen": false, 12 | "option_linux_allow_fullscreen": false, 13 | "option_linux_interpolate_pixels": false, 14 | "option_linux_display_cursor": true, 15 | "option_linux_sync": false, 16 | "option_linux_resize_window": false, 17 | "option_linux_scale": 0, 18 | "option_linux_texture_page": "2048x2048", 19 | "option_linux_enable_steam": false, 20 | "option_linux_disable_sandbox": false, 21 | "resourceVersion": "1.0", 22 | "name": "Linux", 23 | "tags": [], 24 | "resourceType": "GMLinuxOptions", 25 | } -------------------------------------------------------------------------------- /src/delta/options/mac/options_mac.yy: -------------------------------------------------------------------------------- 1 | { 2 | "option_mac_display_name": "Made in GameMaker Studio 2", 3 | "option_mac_app_id": "com.company.game", 4 | "option_mac_version": "1.0.0.0", 5 | "option_mac_output_dir": "~/GameMakerStudio2/Mac", 6 | "option_mac_team_id": null, 7 | "option_mac_signing_identity": "Developer ID Application:", 8 | "option_mac_copyright": "(c) 2017 CompanyName", 9 | "option_mac_splash_png": "${base_options_dir}/mac/splash/splash.png", 10 | "option_mac_icon_png": "${base_options_dir}/mac/icons/1024.png", 11 | "option_mac_menu_dock": false, 12 | "option_mac_display_cursor": true, 13 | "option_mac_start_fullscreen": false, 14 | "option_mac_allow_fullscreen": false, 15 | "option_mac_interpolate_pixels": false, 16 | "option_mac_vsync": false, 17 | "option_mac_resize_window": false, 18 | "option_mac_enable_retina": false, 19 | "option_mac_scale": 0, 20 | "option_mac_texture_page": "2048x2048", 21 | "option_mac_build_app_store": false, 22 | "option_mac_allow_incoming_network": false, 23 | "option_mac_allow_outgoing_network": false, 24 | "option_mac_app_category": "Games", 25 | "option_mac_enable_steam": false, 26 | "option_mac_disable_sandbox": false, 27 | "option_mac_apple_sign_in": false, 28 | "resourceVersion": "1.0", 29 | "name": "macOS", 30 | "tags": [], 31 | "resourceType": "GMMacOptions", 32 | } -------------------------------------------------------------------------------- /src/delta/options/main/inherited/options_main.inherited.yy: -------------------------------------------------------------------------------- 1 | 1.0.0←ed6a955d-5826-4f98-a450-10b414266c27←ed6a955d-5826-4f98-a450-10b414266c27|{ 2 | "option_draw_colour": { 3 | "Value": 4278190080 4 | }, 5 | "option_gameguid": "2c7f0121-ada2-4cad-9966-7f56e12612db", 6 | "option_lastchanged": "09 July 2017 13:12:41", 7 | "option_game_speed": 60 8 | }←1225f6b0-ac20-43bd-a82e-be73fa0b6f4f|{ 9 | "targets": 461609314234257646 10 | }←7b2c4976-1e09-44e5-8256-c527145e03bb|{ 11 | "targets": 461609314234257646 12 | } -------------------------------------------------------------------------------- /src/delta/options/main/options_main.yy: -------------------------------------------------------------------------------- 1 | { 2 | "option_gameguid": "2c7f0121-ada2-4cad-9966-7f56e12612db", 3 | "option_game_speed": 60, 4 | "option_mips_for_3d_textures": false, 5 | "option_draw_colour": 4278190080, 6 | "option_window_colour": 255, 7 | "option_steam_app_id": "0", 8 | "option_sci_usesci": false, 9 | "option_author": "", 10 | "option_lastchanged": "09 July 2017 13:12:41", 11 | "option_spine_licence": false, 12 | "resourceVersion": "1.2", 13 | "name": "Main", 14 | "tags": [], 15 | "resourceType": "GMMainOptions", 16 | } -------------------------------------------------------------------------------- /src/delta/options/windows/options_windows.yy: -------------------------------------------------------------------------------- 1 | { 2 | "option_windows_display_name": "Made in GameMaker Studio 2", 3 | "option_windows_executable_name": "${project_name}", 4 | "option_windows_version": "1.0.0.0", 5 | "option_windows_company_info": "YoYo Games Ltd", 6 | "option_windows_product_info": "Made in GameMaker Studio 2", 7 | "option_windows_copyright_info": "(c) 2017 CompanyName", 8 | "option_windows_description_info": "A GameMaker Studio 2 Game", 9 | "option_windows_display_cursor": true, 10 | "option_windows_icon": "${base_options_dir}\\windows\\icons\\icon.ico", 11 | "option_windows_save_location": 0, 12 | "option_windows_splash_screen": "${base_options_dir}\\windows\\splash\\splash.png", 13 | "option_windows_use_splash": false, 14 | "option_windows_start_fullscreen": false, 15 | "option_windows_allow_fullscreen_switching": false, 16 | "option_windows_interpolate_pixels": false, 17 | "option_windows_vsync": false, 18 | "option_windows_resize_window": false, 19 | "option_windows_borderless": false, 20 | "option_windows_scale": 0, 21 | "option_windows_copy_exe_to_dest": false, 22 | "option_windows_sleep_margin": 10, 23 | "option_windows_texture_page": "2048x2048", 24 | "option_windows_installer_finished": "${base_options_dir}\\windows\\installer\\finished.bmp", 25 | "option_windows_installer_header": "${base_options_dir}\\windows\\installer\\header.bmp", 26 | "option_windows_license": "${base_options_dir}\\windows\\installer\\license.txt", 27 | "option_windows_nsis_file": "${base_options_dir}\\windows\\installer\\nsis_script.nsi", 28 | "option_windows_enable_steam": false, 29 | "option_windows_disable_sandbox": false, 30 | "option_windows_steam_use_alternative_launcher": false, 31 | "resourceVersion": "1.0", 32 | "name": "Windows", 33 | "tags": [], 34 | "resourceType": "GMWindowsOptions", 35 | } -------------------------------------------------------------------------------- /src/delta/rooms/room0/room0.yy: -------------------------------------------------------------------------------- 1 | { 2 | "isDnd": false, 3 | "volume": 1.0, 4 | "parentRoom": null, 5 | "views": [ 6 | {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1024,"hview":768,"xport":0,"yport":0,"wport":1024,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, 7 | {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1024,"hview":768,"xport":0,"yport":0,"wport":1024,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, 8 | {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1024,"hview":768,"xport":0,"yport":0,"wport":1024,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, 9 | {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1024,"hview":768,"xport":0,"yport":0,"wport":1024,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, 10 | {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1024,"hview":768,"xport":0,"yport":0,"wport":1024,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, 11 | {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1024,"hview":768,"xport":0,"yport":0,"wport":1024,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, 12 | {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1024,"hview":768,"xport":0,"yport":0,"wport":1024,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, 13 | {"inherit":false,"visible":false,"xview":0,"yview":0,"wview":1024,"hview":768,"xport":0,"yport":0,"wport":1024,"hport":768,"hborder":32,"vborder":32,"hspeed":-1,"vspeed":-1,"objectId":null,}, 14 | ], 15 | "layers": [ 16 | {"instances":[ 17 | {"properties":[],"isDnd":false,"objectId":{"name":"obj_ball","path":"objects/obj_ball/obj_ball.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":0.0,"y":288.0,"resourceVersion":"1.0","name":"inst_1DE72356","tags":[],"resourceType":"GMRInstance",}, 18 | {"properties":[],"isDnd":false,"objectId":{"name":"obj_controller","path":"objects/obj_controller/obj_controller.yy",},"inheritCode":false,"hasCreationCode":false,"colour":4294967295,"rotation":0.0,"scaleX":1.0,"scaleY":1.0,"imageIndex":0,"imageSpeed":1.0,"inheritedItemId":null,"frozen":false,"ignore":false,"inheritItemSettings":false,"x":0.0,"y":0.0,"resourceVersion":"1.0","name":"inst_75ECF87D","tags":[],"resourceType":"GMRInstance",}, 19 | ],"visible":true,"depth":0,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"resourceVersion":"1.0","name":"Instances","tags":[],"resourceType":"GMRInstanceLayer",}, 20 | {"spriteId":null,"colour":4290822336,"x":0,"y":0,"htiled":false,"vtiled":false,"hspeed":0.0,"vspeed":0.0,"stretch":false,"animationFPS":15.0,"animationSpeedType":0,"userdefinedAnimFPS":false,"visible":true,"depth":100,"userdefinedDepth":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"gridX":16,"gridY":16,"layers":[],"hierarchyFrozen":false,"resourceVersion":"1.0","name":"Background","tags":[],"resourceType":"GMRBackgroundLayer",}, 21 | ], 22 | "inheritLayers": false, 23 | "creationCodeFile": "", 24 | "inheritCode": false, 25 | "instanceCreationOrder": [ 26 | {"name":"inst_1DE72356","path":"rooms/room0/room0.yy",}, 27 | {"name":"inst_75ECF87D","path":"rooms/room0/room0.yy",}, 28 | ], 29 | "inheritCreationOrder": false, 30 | "sequenceId": null, 31 | "roomSettings": { 32 | "inheritRoomSettings": false, 33 | "Width": 300, 34 | "Height": 600, 35 | "persistent": false, 36 | }, 37 | "viewSettings": { 38 | "inheritViewSettings": false, 39 | "enableViews": false, 40 | "clearViewBackground": false, 41 | "clearDisplayBuffer": true, 42 | }, 43 | "physicsSettings": { 44 | "inheritPhysicsSettings": false, 45 | "PhysicsWorld": false, 46 | "PhysicsWorldGravityX": 0.0, 47 | "PhysicsWorldGravityY": 10.0, 48 | "PhysicsWorldPixToMetres": 0.1, 49 | }, 50 | "parent": { 51 | "name": "Rooms", 52 | "path": "folders/Rooms.yy", 53 | }, 54 | "resourceVersion": "1.0", 55 | "name": "room0", 56 | "tags": [], 57 | "resourceType": "GMRoom", 58 | } -------------------------------------------------------------------------------- /src/delta/scripts/delta/delta.gml: -------------------------------------------------------------------------------- 1 | /// @desc Initializes the delta timing. Change the enum config to your needs. Run this before any DeltaObject is instantiated. 2 | function delta_init() { 3 | global.__delta_expectedDeltaTime = game_get_speed(gamespeed_fps) / 1000000; 4 | global.__delta_stepFactor = 1; 5 | global.__delta_fps = game_get_speed(gamespeed_fps); 6 | global.__delta_maxLagCompensation = 3; 7 | } 8 | 9 | 10 | /// @desc Sets the maximum lag compensation multiplier 11 | /// @param {Real} maxLagCompensation The maximum amount to multiple values by to compensate for lag. Higher values may cause problems during lag spikes. 12 | function delta_set_max_lag_compensation(maxLagCompensation) { 13 | global.__delta_maxLagCompensation = maxLagCompensation 14 | } 15 | 16 | 17 | /// @desc Force the delta value. Useful for pausing or hitstuns 18 | /// @param forcedDelta 19 | function delta_override(argument0) { 20 | gml_pragma("forceinline"); 21 | global.__delta_stepFactor = argument0; 22 | } 23 | 24 | 25 | /// @desc Update the delta timer. Run this in a Begin Step event on a controller object 26 | /// You only need to call this once per step 27 | function delta_step() { 28 | global.__delta_stepFactor = min((global.__delta_expectedDeltaTime * delta_time), global.__delta_maxLagCompensation); 29 | } 30 | 31 | 32 | /// @desc Returns the given value multiplied by the step delta 33 | /// Use this to modify any game time related value, like speed, timers, or animation speeds 34 | function d(argument0) { 35 | return argument0 * global.__delta_stepFactor; 36 | } 37 | 38 | 39 | /// @desc Returns the given number of seconds in expected steps 40 | /// @param seconds 41 | function seconds(argument0) { 42 | return global.__delta_fps * argument0; 43 | } 44 | -------------------------------------------------------------------------------- /src/delta/scripts/delta/delta.yy: -------------------------------------------------------------------------------- 1 | { 2 | "isDnD": false, 3 | "isCompatibility": false, 4 | "parent": { 5 | "name": "delta", 6 | "path": "folders/Scripts/delta.yy", 7 | }, 8 | "resourceVersion": "1.0", 9 | "name": "delta", 10 | "tags": [], 11 | "resourceType": "GMScript", 12 | } -------------------------------------------------------------------------------- /src/delta/sprites/spr_wall/b23d500f-6428-4ad1-961e-284b0db5ac72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gm-core/delta/cb35c415d0eb888335d3e765ac0886665a8e8a72/src/delta/sprites/spr_wall/b23d500f-6428-4ad1-961e-284b0db5ac72.png -------------------------------------------------------------------------------- /src/delta/sprites/spr_wall/layers/b23d500f-6428-4ad1-961e-284b0db5ac72/efabce7d-6a84-4ba0-9fe7-ed487f1ffa05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gm-core/delta/cb35c415d0eb888335d3e765ac0886665a8e8a72/src/delta/sprites/spr_wall/layers/b23d500f-6428-4ad1-961e-284b0db5ac72/efabce7d-6a84-4ba0-9fe7-ed487f1ffa05.png -------------------------------------------------------------------------------- /src/delta/sprites/spr_wall/spr_wall.yy: -------------------------------------------------------------------------------- 1 | { 2 | "bboxMode": 0, 3 | "collisionKind": 1, 4 | "type": 0, 5 | "origin": 0, 6 | "preMultiplyAlpha": false, 7 | "edgeFiltering": false, 8 | "collisionTolerance": 0, 9 | "swfPrecision": 2.525, 10 | "bbox_left": 0, 11 | "bbox_right": 31, 12 | "bbox_top": 0, 13 | "bbox_bottom": 31, 14 | "HTile": false, 15 | "VTile": false, 16 | "For3D": false, 17 | "width": 32, 18 | "height": 32, 19 | "textureGroupId": { 20 | "name": "Default", 21 | "path": "texturegroups/Default", 22 | }, 23 | "swatchColours": null, 24 | "gridX": 0, 25 | "gridY": 0, 26 | "frames": [ 27 | {"compositeImage":{"FrameId":{"name":"b23d500f-6428-4ad1-961e-284b0db5ac72","path":"sprites/spr_wall/spr_wall.yy",},"LayerId":null,"resourceVersion":"1.0","name":"composite","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ 28 | {"FrameId":{"name":"b23d500f-6428-4ad1-961e-284b0db5ac72","path":"sprites/spr_wall/spr_wall.yy",},"LayerId":{"name":"efabce7d-6a84-4ba0-9fe7-ed487f1ffa05","path":"sprites/spr_wall/spr_wall.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, 29 | ],"parent":{"name":"spr_wall","path":"sprites/spr_wall/spr_wall.yy",},"resourceVersion":"1.0","name":"b23d500f-6428-4ad1-961e-284b0db5ac72","tags":[],"resourceType":"GMSpriteFrame",}, 30 | ], 31 | "sequence": { 32 | "spriteId": {"name":"spr_wall","path":"sprites/spr_wall/spr_wall.yy",}, 33 | "timeUnits": 1, 34 | "playback": 1, 35 | "playbackSpeed": 15.0, 36 | "playbackSpeedType": 0, 37 | "autoRecord": true, 38 | "volume": 1.0, 39 | "length": 1.0, 40 | "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, 41 | "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, 42 | "tracks": [ 43 | {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ 44 | {"id":"c9fd955a-0e11-4817-996d-7cf8243cf96c","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"b23d500f-6428-4ad1-961e-284b0db5ac72","path":"sprites/spr_wall/spr_wall.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, 45 | ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"modifiers":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack",}, 46 | ], 47 | "visibleRange": {"x":0.0,"y":0.0,}, 48 | "lockOrigin": false, 49 | "showBackdrop": true, 50 | "showBackdropImage": false, 51 | "backdropImagePath": "", 52 | "backdropImageOpacity": 0.5, 53 | "backdropWidth": 1920, 54 | "backdropHeight": 1080, 55 | "backdropXOffset": 0.0, 56 | "backdropYOffset": 0.0, 57 | "xorigin": 0, 58 | "yorigin": 0, 59 | "eventToFunction": {}, 60 | "eventStubScript": null, 61 | "parent": {"name":"spr_wall","path":"sprites/spr_wall/spr_wall.yy",}, 62 | "resourceVersion": "1.3", 63 | "name": "", 64 | "tags": [], 65 | "resourceType": "GMSequence", 66 | }, 67 | "layers": [ 68 | {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"efabce7d-6a84-4ba0-9fe7-ed487f1ffa05","tags":[],"resourceType":"GMImageLayer",}, 69 | ], 70 | "parent": { 71 | "name": "Sprites", 72 | "path": "folders/Sprites.yy", 73 | }, 74 | "resourceVersion": "1.0", 75 | "name": "spr_wall", 76 | "tags": [], 77 | "resourceType": "GMSprite", 78 | } --------------------------------------------------------------------------------