March 13th 2020 by SDGNelson

4.20.4.0 update focused on splitscreen and gamepad (controller) support.

Sorted from most to least interesting.

I have fond memories of splitscreen multiplayer growing up, so supporting the feature is important to me. Next will probably be savedata and basic administrative / social tools.

Splitscreen Fixup

The majority of development for this update was spent tidying up features for splitscreen. There were a lot of interesting cases like:

Outlines on items need to be relevant per-viewer, but that stencil buffer state is per-object.

Spectating yourself as a split-screen local player.

Screen-space features like scope markers or centering the cursor need to make sure they are using the per-player screen region.

Many engine UI features like popup menus did not work properly with multiple players.

Splitscreen Options

If you have a keyboard / mouse and a gamepad there is an input setting to "Skip Assigning to Player 1" for splitscreen. I remember playing splitscreen games where one player uses WASD and UHJK, and the other player uses arrow keys and numpad, so hopefully this is better.

Layout can be switched between "Over and Under" or "Side by Side". My plan is to design with side by side as the default, but for now the menu layouts still suck in both. Side by side can also be nice for dual-monitor setups.

Aim Assist

Aiming using a gamepad thumbstick is almost impossible without aim assist and acceleration. There are surprisingly few online resources about approaching this, so a lot of research and experimentation was needed.

Currently when tracking a target your aim is slightly magnetized toward it depending on the percentage error between your input and perfect tracking. I think this feels fair because the better you are at tracking them the more it helps you. It does bear further feedback though.

Analog Cursor

Certain menus for gamepad show a circular cursor controlled by the thumbstick. When this started becoming popular in games I thought it was lazy, but my opinion has come around. For inventory menus I think it makes a lot of sense because you can quickly navigate directly to an item. I do intend to design menus for D-pad where appropriate however.

Multiple Cursors

Introducing the analog cursor with splitscreen means multiple cursors can be active at any given time. This was a bit of a headache, but thankfully Unreal has been working on some built-in support. For the moment Unturned II has a lot of hacky workarounds related to multi-cursor support, but it should get better in the future.

Scope Sensitivity

Mouse and gamepad aim sensitivity are scaled directly by the optic zoom level. For example an 8x scope divides sensitivity by eight, critical for precise aiming at long range.

This replaces Unreal's built-in FOV sensitivity scaling (similar to Unturned's). Scaling by the zoom factor is superior because it is unaffected by the player's preferred FOV setting.

Cursor Widgets

Unreal's built-in cursor visuals had to be replaced in order to better support multiple users. The implementation is similar, so there is not any extra delay. It has the nice benefit of allowing us to play animations and context sensitivity (e.g. for gamepad) on them as well.