About the Map
I recommend not making one massive png map. Splitting them into separate png files might work. Then just create the png object when the player becomes within a range that implies that they'll likely interact with that area. This means, not actually loading the image in until they become within a reasonable range.
This is because the engine will constantly be trying to understanding where objects are, what the object is, what the object has, and what the object is doing. This can be taxing on the cpu. This is especially the case if the object is doing events. For example, if you have NPC's walking around and talking while and you have 50 of them- that alone can take cpu even when they're nowhere near the player.
Think about culling methods. If you measure distance to a blank sprite off in the distance you could trigger a function that creates more of the map at a certain location.
Unity does a good job explaining two types of culling in the first paragraph here (quoted below)
"Occlusion Culling is a feature that disables rendering of objects when they are not currently seen by the camera because they are obscured by other objects. This does not happen automatically in 3D computer graphics since most of the time objects farthest away from the camera are drawn first and closer objects are drawn over the top of them (this is called "overdraw"). Occlusion Culling is different from Frustum Culling. Frustum Culling only disables the renderers for objects that are outside the camera's viewing area but does not disable anything hidden from view by overdraw. Note that when you use Occlusion Culling you will still benefit from Frustum Culling."
Occlusion Culling stops rendering objects that are blocked from view.
-> Think of objects inside a building
Frustum Culling stops rendering objects that are outside (too distant from) the camera's view.
-> Think of objects thousands of pixels away
Culling in this case would be destroying objects, closing related groups and so on. You want objects and events only bother the cpu when they absolutely need to. Even if you want NPC's moving dynamically you can have NPC's walk around for a little while when they're too far away from the player. Then when the player returns just have the NPC resume movement or randomly created in select set location that are not too close to the player. This way it looks like the NPC was moving while the player was gone. Illusions =]
Start Small; Build Inside; Build Outwards
Creating a big map straight away will make it hard to impossible to apply logical methods. It will become very difficult to debug. You wont be able to pinpoint the direct cause of issues and finding a solution will become too time consuming. Create a few things you want in your sandbox and test them. Try putting in some culling methods, even when the culling is only 100 pixels away. This way you know that it works.
Populate your small map with the things you have in-mind. This way you get a handle on everything on a small scale. You'll be able to visualize and understand what you're working with. Then, branch outwards. Take what you've created and learned from the small map and replicate it. Use what you've already perfected and understood to branch out from the small playground area to a larger- and larger sandbox map.
I hope that answered your question a least a little bit.
~ Good Luck, Kossglobal