Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics

Yal's SoulsVania Engine

Metroidvania / Soulslike project for GameMaker:Studio · By Yal

Known Issues Sticky Locked

A topic by Yal created Nov 26, 2019 Views: 144
Viewing posts 1 to 1
Developer (4 edits)

These issues are known in the initial release version:

  • Level editor: objects with a sprite larger than one cell can only have integer scale when stretched.
    • This affects water, lava, and a lot of objects that you wouldn't normally stretch, like enemies and checkpoints.

    • If this is inconvenient, consider changing water/lava sprites to a 16x16 sprite instead.

  • Level editor: some objects aren't visible in palette (e.g. locked side door)
    • This affects objects with a lot of transparency in the sprite, so the entire region picked for the palette is transparent.

    • You could consider having a different sprite as the object's default sprite and switch to the in-game sprite in the create event.
  • World map editor: the controls are weird.
    • This is intentional, so that creating a level is a deliberate action.
  • Level editor: sometimes when drawing a large rectangle, nothing is created.
    • This happens if you scroll in a way that makes the top-left corner of the selected region end up inside the palette, making the engine think you were trying to select tiles / objects.
    • You can hide the palette with Backspace to disable this check.
  • Importing the GMS1 version into GMS2 makes the game run super slow!
    • The culprit is tile_layer_find() which is the backbone of the collision checking in the GMS1 version.
    • tile_layer_find() is ridiculously slow in GMS2 since it uses a GML loop to loop through every tile. I solved it in the GMS2 version by hacking tile_add() to add tiles' left and top position to a global 2D array (these two arrays are set up with null values in level_load_ingame() once the room size is known) and then you can just do an array lookup based on the x/y coordinates in pixel_vacant, making it a lot faster. Do away with tile_layer_find entirely and just use the array to look up the tile data. (The tile_get_x/y calls can be replaced with snapping the coordinate to TILESIZE, since all tiles will be on an integer multiple of TILESIZE position anyway)
  • Skeletal animation system: limbs rotates backwards in certain animations.
    • There's a known limitation that limbs will always rotate the shortest way between keyframes. When a limb rotates exactly 180 degrees between keyframes, the shortest way is not clearly defined, and an intended rotation of more than 180 degrees will be done "backwards".
    • When making attack animations (which is where this is the easiest to trigger), you might need to make an intermediate keyframe halfway through the animation to make sure limbs don't rotate more than 180 degrees between keyframes.