Files
godot-demo-projects/viewport/dynamic_split_screen
Benjamin Navarro f922bcb8c7 Add dynamic split screen demo
Answering PR reviews

Removeing class_name

_get_split_state documentation

Mentioning Voronoi split screen in README

Fixing comments

Use the same script for both players

The input map is configured to work with AZERTY and QWERTY keyboards

Use spaces for comments alignment + code style

Fix empty line and incorrect comment

Add arrow keys to control player 2

Removing most static typing as suggested for demo projects

Removing broken split origin feature

Removing the floor texture to avoid copyright issues

Changing game icon

Make Walls.gd a tool script + randomize

Fixing style

 Handle joysticks for player movement
2020-01-27 08:58:50 +01:00
..
2020-01-27 08:58:50 +01:00
2020-01-27 08:58:50 +01:00
2020-01-27 08:58:50 +01:00
2020-01-27 08:58:50 +01:00
2020-01-27 08:58:50 +01:00
2020-01-27 08:58:50 +01:00
2020-01-27 08:58:50 +01:00

The project

This sample project showcases an implementation of dynamic split screen, also called Voronoi split screen, using the Godot engine.

Dynamic split screen

A dynamic split screen system displays a single screen when the two players are close but a splitted view when they move apart.

The splitting line can take any angle depending on the players' position, so it won't be either vertical or horizontal.

This system was popularized by the Lego videogames.

How it works

Two cameras are placed inside two separate viewports and their texture, as well as some other parameters, are passed to a shader attached to a TextureRect filling the whole screen.

The SplitScreen shader, with the help of the CameraController script, chooses wich texture to display on each pixel to achieve the effect.

The cameras are placed on the segment joining the two players, either in the middle if they're close enough or at a fixed distance otherwise.

How to use it

Open and launch the project inside the Godot engine and then you can use WASD keys to move the first player and IJKL keys to move the second one.

The Cameras node has parameters to tune the distance at which the screen splits and also the width and color of the splitting line.

Try it out

An HTML5 export is testable here.