Hi. Any chance we'll see support for bigger sprites soon? Cheers.
Tile Based Moving Platform Engine for Gamemaker
A downloadable game
Tile Based Moving Platform Engine for Gamemaker
This is a tile based platform engine which uses efficient tiles for instance collisions, as well as incorporating those efficiencies into horizontal and vertical tile layer moving platforms.
Some of the features of the engine :
- Tile Based Collisions : Tiles offer the fastest collision system in Gamemaker
- Moving Platforms : My system uses fast Tile Based Collisions to move multiple platforms either Horizontal, Vertical or Circular. Settings for wait time, speed, distance and slow down.
- One Way Platforms : Allows the player to drop through tiles, or jump up through them.
- Player State Machine : A system which makes building your player quick and easy, as it allows faster bug resolution. Includes Combo Attacks (light and heavy), Double Jump, Block, Crouch, Crouch Block, Death and Knockback abilities.
- Juice : Game enhancing features like player dust for jumping, landing and walking. Squashing and stretching of the player when jumping and landing, giving the game a better feel. Screenshake for hitting enemies, or making an impact.
- Enemy Setup : Enemy object with weapon swing and pummel ground attack pattern, which support player block and knockback.
- Item Collection : Enemies drop gems, which animate in the air before flying to the player for collection. This is then shown in the GUI.
- Dual Controller and Keyboard support : Both a controller and keyboard work as input, at the same time.
- Simple lighting system : A light object can be used to give anything a nice radiant glow. Any colour can also be set.
- Smooth moving Camera system : Can be used to follow any object, and offers various panning speeds.
- Room transition : Allows a fade to black transition between rooms.
- Room Spawning System : Multiple room spawning positions depending on room entrance.
- Lives and Damage System : Entities can take multiple damage before being destroyed. Normal and Critical Damage is shown when enemies are hit, and a HP GUI element is included.
- Game End : After all lives are lost, game returns to the Main Menu.
- Initialisation Room : Allows for easy persistent object management.
- Template Parent Room : Allows quick reproduction of room structures for faster level creation.
- Fully Tiled Sample Room : A completed room to demonstrate how to build your rooms correctly, including multiple moving platform examples.
- Rain System : Rain and lightning, including sound, can now randomly occur.
- Sound effects : Basic 8-bit sound effects are included.
- YYC Compatible : Compiling in YYC allows for the most efficient and fastest build.
- Documented Code : All lines are commented as to their purpose, and the entire project has a complete write up to make understanding the engine as easy as possible.
Change log 1.0.30 - 27 May 22 :
- Bbox Changes : Gamemaker 2022.x changed bbox values from integers to reals, and this changed a few things for tile collisions. Upon entering a room, it caused the player to sometimes fall 1 pixel and then recover the next step. I've added a check to the player room start. This path fixes that by simulating the calc_movement and collision scripts for a few steps at room start.
- Position Changes : Room entry positions updated vertically by -1 pixel to cater for the bbox changes.
- HD UI Update : Updated the s_hp_bar file to show you can use HD images for the players face in the UI.
Recent additions 1.0.29 - 21 Aug 2021 :
- Enemy Collisions : If you wanted to run into enemies and take damage, uncommenting the player <> enemy_parent collision now works correctly. Uncomment this line in the collision event to enable it. Also process_enemy_attack has been restructured, so refer to the readme.
- Enemy Masks : Enemy idle collision mask adjusted, and used as the default mask, to now make collisions with the player fairer when player <> enemy collisions are enabled.
Recent additions (change log 1.0.27 19 Oct 2020) :
- Object Persistence : objects destroyed in the room will not be respawned when returning. See read_me for more details.
- GMS2.3 compatibility : Current bugs in GM2.3 related to the importing of rooms caused room order to not be imported, causing errors. This has been manually fixed by recreating the rooms again. We're still waiting on a bug fix to GMS2 though. UPDATE Aug 21: Current versions of Gamemaker should not have this problem now.
Recent additions (change log 1.0.25 16 Oct 2020) :
- EULA : Added EULA outlining your rights in relation to the code use (EULA is at the bottom of this file)
- Death Tiles : These now deal damage and knockback the entity, instead of instant death.
- New script : damage_entity() used to deal damage to any entity. Damage is unblockable. e.g. used for dealing damage to all entities touching death tiles.
Recent additions (change log 1.0.24 14 Oct 2020) :
- Circular platforms : Multiple configurations are possible, allowing for full circle, half, quarter, or any custom angles. Also includes slowdown and wait on start and end. Pivot and support structure is also drawn.
- Enemy attacks : Enemy now can attack player. Full swing and wave attack pattern included.
- Gem Collection : Enemies drop gems, which animate in the air before flying to the player for collection. This is then shown in the GUI.
- Very fast platform movement : Room 2 demonstrates new code changes to the vertical platforms allowing the player to move on even faster platforms.
- Wait options for platforms : Can be set to pause the platform at start/end points
- Better damage system : Now shows damage numbers and enemy hp bars
- Rain system : Random showers can occur, including lightning and sound.
- Bounce pads : Hay bales serve as bounce pads
- Many small bug fixes
Try the Windows Demo here.
Note : Tile collisions are reliant on the size of the tiles and the size of the masks. This system is setup for a maximum of 32 x 32 tiles and sprites. Larger sizes will require changes to the code in order to work correctly.
This package incorporates the use of graphics, which are free assets from external sources. The graphics are included, but these are free assets and are available below if needed :
* Tileset - https://www.openpixelproject.com
* Main Character - https://itch.io/queue/c/686097/sano-214s-collection?game_id=444209
* Background - https://opengameart.org/content/mountain-at-dusk-background
Lastly the graphics and player setup can easily be removed so you can use the collision and platform system as the basis for your own projects, and instructions are provided outlining how to achieve this.
Hope you can make a cool game using this asset. All the best!
Peter Morgan aka Slyddar
End User License Agreement - http://m.uploadedit.com/busd/1602837828168.pdf
In order to download this game you must purchase it at or above the minimum price of $19.99 USD. You will get access to the following files:
Log in with itch.io to leave a comment.
Well the notes do advise it is for 32 x 32, but in saying that, I have dabbled in adding code for 64 x 64 collision masks, but using 32 x 32 tiles. It's still not something I'm completely happy with, as there are a couple of bugs to iron out. If I can get them sorted I'll release it though.
Here's an update on what I've been working on. I have easily added 64 x 64 masks into the collision system, but the circular moving platforms are still not perfect with these larger masks. I have other projects I need to complete right now, so need to put this update on hold, but I will come back to it in a few months when I have time.
It's great, except I've uncommented the code for simply running into the enemy, and I still run straight through them.
I'm sorry for not replying sooner. Itch doesn't seem to notify me of comments here, so I need to update my settings to fix that.
As for the bug you mentioned, I totally agree it did not work. So I've released an update with a restructured process_enemy_attack script, adding a source_id and owner_id argument, so it now can process collisions, as well as make sure entities face the correct direction more efficiently. The enemy idle mask has also been adjusted, and set as the default, which makes it fairer for the player.
Hopefully it works as intended now.
Is this working on GM 1.4 ?
Sorry, it is made in Gamemaker 2, and the setup of tiles are very different for GM1.4, so it will not work there.
can you add slope movement?
Heya! At the moment I don't have a tiled slope method that is very different from what others have to offer, as it's not something I've worked on too much. So for now I don't have any plans to add slopes to the engine.
Do you plan to update Udemy course and add moving platforms or other stuff from this project?
That course is almost 2 years old, and even though it's still completely relevant and useful to anyone making a game now, the weeks I would need to update the course with this content would be a massive undertaking.
This engine could be thought of as an extension of that course though, and the descriptions in the read me outline how everything works, so if you have knowledge of the Udemy course, you would be very well placed to understand the code in this.
So even though I keep the Tile Based course current, and have recently recorded new sections to ensure it is GMS2.3 compatible, I'm currently working on my next course, so do not have the time to add new content into that course.
Thanks for the question though.
I already purchased it, it is good but I think there are something miss as @edusword said. Moreover, I think you should add one more boss with more attacking or effecting like that will enrich type of enemies (because this asset now just has one type of enemy). I hope you will do that
The problem with adding too much is it essentially becomes a game on it's own. The structure I have added allows others to learn from how I've designed and layed out various elements, and then build upon it.
The one enemy shows how to set up enemies, so it can be replicated and reproduced for others. If I add too many enemies, your game is not unique, as everyone ends up with the same. I really wanted the engine to be a base demonstrating best practices, allowing you to extend with the knowledge from the examples in the project.
In saying that, I'll look at adding a few enemies that I had used in my Tile Based Platformer Udemy Course, and I guess people can just not use them if they don't want to.
Thanks for the feedback though, and also thank you for purchasing.
Great engine! Something I miss (suggestions): - Diagonal terrains: slopes (up and down)
- Diagonal stairs (as Castlevania)
- Vertical ladder or rope movement (up and down)
- Horizontal ladder or rope movement (hang from it)
- Moving vines (jump to and from them)
All these actions will be amazing!!
Thank you very much!