A downloadable framework


This is a free-to-use framework for creating Ren'py games that make use of orthogonal maps created using the Tiled map editor. This download includes a prototype of the framework, as well as a small sample of maps, tilesets and sprite collections to serve as a demo. 


I've set up a Lemmasoft forums thread for discussion, which is where I will also be posting documentation


If you want to ask me questions, or get some insight into the plans for the pink engine, a discord server has been set up here.


I am currently in the process of creating tutorials. Currently available tutorials:


All animated sprites were created by Sevarihk, as are all the assets in the 48 x 48 tile test room.

Other art assets were created by me.



  • Added a distinct console for debugging and testing pink engine functionalities. Allows you to alter the global pink engine variables, move to any map, and switch character sprites. The pink engine console can be accessed by pressing shift+O from a pink engine map if config.console is enabled. Regular ren'py console is accessed by pressing shift+O from anywhere else.
  • Added an orientation argument to the set_to_coords function to make it easy to use to reposition characters for a cutscene. A new test room was added to demonstrate this functionality.

  • Swapped out the eval() statement for executing code with an exec() statement, allowing for a greater range of code execution in code_on_touch and code_on_interaction statements. 


  • The big new feature in this update is parellel processing, which allows designers to create processes that will run in parallel with pink engine maps. A number of parallel processes are included with this version, but they follow a design template that should make it relatively easy to develop your own. The following parallel processes are included (each with a new test room to demonstrate how to use them):
    • A parallel process that updates a ren'py store variable depending on the player's location.
    • A parallel process that changes the track for a given channel depending on the player's location.
    • A parallel process that changes volume for a given channel depending on the player's location.
    • A parallel process that changes panning for a given channel depending on the player's location.
    • A parellel process that switches between camera locations depending on the player's location.
    • A parellel process that causes the game to smooth zoom to a specific level depending on the player's location. Note that there is currently an engine restriction that requires the zoom time to be less than the player's movement time. For slower smooth zooms, you have to use an event.
  • While these parallel processes were all designed to run for specific maps, this update also allows for global parallel processes, which are run for every single map. The smooth zoom controller function has been turned into a global parallel process. 
  • The object properties 'code_on_touch' and 'code_on_interaction' have been added. These properties work similarly to the previously added 'event_on_touch' and 'event_on_interaction' properties, but instead of starting an event, they allow for the execution of a single line of code without interrupting the gameplay. The object property 'code_conditional' was also added, working as a counterpart to the already existing 'event_conditional' function. A test room has been added to demonstrate this functionality. 
  • Smooth zooming has been made slightly smoother.


  • The big new feature in this update is that I added several map-level properties. This include force_run, forbid_run, and, much more interestingly, background_music and background_ambience. Three test rooms have been added to demonstrate the functionality.
  • I've been tinkering around trying to improve the movement code. You should no longer occasionally get stuck as running when releasing the shift key at the same moment as a directional key. In addition, if you release one directional key while still holding another, you will start moving in the direction of the key you're still holding. 
  • When spawning a camera drone, the position of the camera will no longer change if the previous target was larger than a single grid tile, placed off-grid, or makes use of the newly added camera offset features.
  • Two new object level properties were added: camera_offset_x and camera_offset_y. These properties offset the location the camera centers on when focusing on the object by the given amount.
  • I also added a license file, since there was some minor confusion over which license the pink engine fell under a while back. For the record, the pink engine is published under the unlicense license, which means that you're free to do whatever without any attribution requirements. 

Sprite Collection Editor 2.0

  • Like the autotile translator, the sprite collection editor has received an update, adding several new features:
    • There are now duplication buttons for animations and properties.
    • A 'translate' button was added, allowing you to instantly translate rpgmaker-style character spritesheets into sprite collections, including standing, walking and running animations. 
    • Save files now actually contain the image data, rather than just keeping track of the save file paths, so will still function if the original images are deleted or moved.
  • However, these changes are significant enough that save files created by the new version of the sprite collection editor are not compatible with the old save files. For this reason, I'll keep the download for the sprite collection editor v1 up for a while. 

Autotile Translator 2.0

  • A major update to the autotile translator has been put out, overhauling the tool in several significant ways. 
    • You can now use animated autotiles, selecting a source frame for each frame of the animation.
    • Rather than selecting a tile type, you now choose a tile format (with 2x2 and 2x3 for rpgmaker vx/mv-style autotiles, and 3x3 and 3x4 for rpgmaker xp-style autotiles) , and a movement type (allowed, blocked, bounded or center only).
    • The order in which the tiles are output now actually has some kind of logic behind it, rather than putting them out in a alphabetized-if-you-write-a-binary-expression-of-the-wang-set-state-in-reverse order. This should make manually selecting tiles a lot easier.
    • Save files now actually contain the image data, rather than just keeping track of the save file paths, so will still function if the original images are deleted or moved.
  • However, these changes are significant enough that save files and output created by the new version of the autotile translator is not compatible with the old save files and output. For this reason, I'll keep the download for the autotile translator v1 up for a while.

  • Animated tiles now also work on object layers.

  • Got rid of a bug that caused a brief flickering of the screen when moving to large maps while having a zoom level greater than 1.0. 


  • The big new feature this release is animated tiles. Animated tiles show a single looped animation, and are used in tile layers. Because they are much lighter on resources than sprite collections, they can be used to animate many objects on your map at once. Creating animated tiles is done through Tiled's built-in tile animation editor. For now, animated tiles only work on tile layers, the feature will be extended to object layers in the next update.
  • You can now transfer between maps with different tile sizes. 
  • A bugfix in regards to the play_animation command: Played animations will no longer repeat for a couple of centiseconds. 
  • It is no longer necessary to specify 'set_movement_time=False' when giving "change_stand_animation", "change_move_animation", "change_movement_speed" or "go_custom" commands. The engine will now assume by default that commands of these types take no time to handle. 
  • A couple of test rooms have been added, implementing Sevarihk's Evil Dungeon tileset, to test the maturity of the engine. These rooms also test the animated tiles and switch between tile size features.

  • A bug related to the "go_to" command had been fixed. It caused a slight delay after the command had been executed. With this fix, there is no delay between "go_to" and the next command, as intended. 
  • The 'event_conditional' property has been added. The value of this property is turned into a python statement and evaluated prior to any event being called, allowing you to put conditions on events being triggered. Useful for only triggering events if the player is facing a certain direction, for example.

  • The engine from 0.9.0 didn't deal well with tile layers with off-screen objects larger than a single tile, causing them to pop into frame rather than gradually appear. This has now been fixed. A test room has also been added to test the efficiency of the engine.
  • All character sprites have had their 'move_from' property removed. This property should no longer be set on sprites, as it overrides the move_from rules of the underlying tile. A new test room has been added to test the move_from rules.
  • You can now disable the movement rules on a sprite collection using the 'can_always_move'  sprite collection property. Useful to make your characters make normally impossible moves as part of cutscenes. 


  • The primary feature in this release is a radical overhaul of the way orthogonal tiled maps are rendered. The new system should result in much smoother framerates on larger and more complex maps. 
  • In addition, two new config options were added, allowing designers to select the movement keys and interaction keys used by your pink engine game. 
    • For movement keys, you can choose between 'wasd', arrow keys, or both.
    • For interaction, you can choose between spacebar, mouse clicks, or both.
  • When configuring a movement scheme, the engine will automatically change the default ren'py keymaps for the relevant keys to also require an alt. So if you have the wasd movement scheme selected and want to take a screenshot, the command is alt+s.

  • While testing the new sprite collection editor (should be released later this week, once I finish working out some final kinks and writing the guide), I discovered that there were a number of issues when combining sprite collections with custom bases with off-grid movement commands. This release should fix those issues.


  • In preparation for publishing the pink engine tutorials, I have made a large, large, large number of name changes, as well as making some slight changes to the structure of the framework. These should make the code less of a hassle to read. However, these renames have broken compatibility for maps designed for old versions of the pink engine (don't worry, I'm not planning on making such renames a frequent thing)
  • A number of common multi-line statements have been turned into singular functions, again to make the code more readable and easily updated.
  • Rollback is now deactivated while you're on a pink engine screen (since this caused errors and didn't conceptually make a lot of sense). Old rollback settings are restored when any event is triggered.
  • Fixed a major issue where saving a pink engine game caused an error. 
Updated 23 days ago
Authorpink productions
Made withRen'Py, Tiled
Tagsframework, renpy
Average sessionA few seconds
InputsKeyboard, Mouse

Install instructions

Extract the zip file in a location of choice and run pink_engine.exe . Tiled-compatible maps and tilesets can be found under game/pink_engine/


pink_engine- 76 MB
pink_engine- 56 kB
autotile translator v2.0.exe 10 MB
sprite collection editor v2.0.exe 11 MB
autotile_translator v1.0 - legacy.exe 18 MB
sprite collection editor - legacy.exe 6 MB

Development log

View all posts


Log in with itch.io to leave a comment.

Looking forward to the sprite collection editor, and everything else is amazing so far!

(2 edits)


I love your engine so much! It's exactly what I need. I try to play around with it, but I only know the Renpy basic codes + just learned how to make Tiled maps so all I do so far is to change the character sprite ha ha. I hope you include a documentation soon! o((*^▽^*))o

I just got this tileset (by GuttyKreum) and made this map on Tiled, but I don't know how to implement it into Pink Engine yet.

Oh my gosh! This looks absolutely AMAZING. Thank you so much for your hard work 🙇‍♂️ I'll try it and let you know my thoughts!