PoC for a zoomable map. personal opinion: I still would very much prefer to see the whole map.
you'll have to do everything needed to make it nice and working with mobile devices. I used the intro map as example, only two hotspots :)
in screen_mainUI.rpy (and place a "default zoomfactor = 1.0" somewhere)
screen localmap_ui(): key "mousedown_4" action SetVariable("zoomfactor", If(zoomfactor<1, zoomfactor+0.1, 1)) key "mousedown_5" action SetVariable("zoomfactor", If(zoomfactor>=0.1, zoomfactor-0.1, 0.1)) # ..unchanged.. if introfinished == False: viewport: at map_ui_ani xysize (config.screen_width, config.screen_height) child_size (int(3360*zoomfactor), int(1950*zoomfactor)) xinitial 0.5 yinitial 0.5 draggable True add "gui/akihabaramain.webp" zoom zoomfactor imagebutton: auto "gui/mapicons/bedroom_%s.webp" at local_mappins_ani pos (int(1625*zoomfactor), int(1200*zoomfactor)) idle_foreground Text("Bedroom", font="fonts/BarlowCondensed-SemiBold.ttf", size=25, xalign=0.5, ypos=70, text_align=0.5, outlines=[(1, "#000000", 0, 0)]) hover_foreground Text("Bedroom", font="fonts/BarlowCondensed-SemiBold.ttf", size=25, xalign=0.5, ypos=70, text_align=0.5, outlines=[(1, "#000000", 0, 0)]) action [ Play("sound", "audio/mainmenu_hover.mp3"), Hide("localmap_ui"), Hide("indoorfloorlevels"), Hide("indoorfloorrooms"), Hide("localmap_ui"), Jump("tampulabedroom") ] imagebutton: auto "gui/mapicons/hq_%s.webp" at local_mappins_ani pos (int(1710*zoomfactor),int(1075*zoomfactor)) idle_foreground Text("Headquarters", font="fonts/BarlowCondensed-SemiBold.ttf", size=25, xalign=0.5, ypos=70, text_align=0.5, outlines=[(1, "#000000", 0, 0)]) hover_foreground Text("Headquarters", font="fonts/BarlowCondensed-SemiBold.ttf", size=25, xalign=0.5, ypos=70, text_align=0.5, outlines=[(1, "#000000", 0, 0)]) action [ Play("sound", "audio/mainmenu_hover.mp3"), Hide("localmap_ui"), Hide("indoorfloorlevels"), Hide("indoorfloorrooms"), Hide("localmap_ui"), Jump("tampulaoffice") ] # ..etc etc..