I didn't write this script but it seems to work, and I think I understand how it works. Script credit
from bge import logic, render
camList = logic.getCurrentScene().cameras
cont = logic.getCurrentController()
own = cont.owner
cam1 = camList[own['cam1']]
cam2 = camList[own['cam2']]
width = render.getWindowWidth()
height = render.getWindowHeight()
cam1.setViewport(0, 0, int(width/2), height)
cam2.setViewport(int(width/2), 0, width, height)
cam1.useViewport = True
cam2.useViewport = True
Now the object that's running this is a cube, and it's logic looks like this:
Notice the two string properties! These define the cameras that will be used. you can see them called in lines 6 & 7. Basically, the script designates the Viewport area of each camera to half the width of the screen, which is perfect for split screen while playing a game with a friend... Like, a really close friend, cause you'll probably have to share a chair. :)
DISCLAIMER!!!: I did not write the script included in this answer