Rendering should move to the SDL GPU renderer so i can do lighting and particles etc
	  - Example suitable for my most primitive use case: https://github.com/TheSpydog/SDL_gpu_examples/blob/main/Examples/Blit2DArray.c
	  - Try vulkan and D3D tutorials to come up to speed on the moving pieces, then figure ou the details from the examples and API docs
	    - https://vulkan-tutorial.com/Drawing_a_triangle/Graphics_pipeline_basics/Introduction
	    - https://learn.microsoft.com/en-us/previous-versions/windows/desktop/bb153302(v=vs.85)
	    - http://www.directxtutorial.com/LessonList.aspx?listid=112
	  - Shaders compiled with: https://github.com/libsdl-org/SDL_shadercross. There are no docs on this tool.
	  - Shader language is tricky. MS is abandoning HLSL and everyone unifying on Spir-V. But Spir-V is intermediate, HLSL is more high level so easier to pick up.
	    - https://flathub.org/apps/org.shadered.SHADERed
	    - Really good HLSL tutorials: https://www.youtube.com/playlist?list=PL78XDi0TS4lEMvytsE_MoWEpzBcukXv9b
	    - Spir-V tutorials: https://github.com/google/spirv-tutor

Actors should collide with each other
       - Box2D is going to be overkill for this for simpler platforms. We're going to benefit from a simpler approach.
       - https://katyscode.wordpress.com/2013/01/18/2d-platform-games-collision-detection-for-dummies/ looks promising

World collision geometry should be loaded from object layers on the map

Actors should collide with the world

Actors should be able to follow a path defined with a polyline on a layer on the map

Maps should be able to have image layers

Map parallax should work

Find a better way to store the character states than the SDL Properties. Having to snprintf() the states every single time is likely not performant. Started a knr library which contains an itoa implementation, try that.
