Demons With Shotguns (Xbox One & PS4 port)

Details

Project: Demons With Shotguns
Studio: Mind Shaft Games (ported by Stage Clear Studios)
Genre: Arcade, Brawler, Platform, Shooter
Platform: XBox One, PS4
Job description: Gameplay Programmer
Technologies: Unity3D, .NET, C#, SVN, Tortoise SVN
WebSite: http://mindshaftgames.com/
Store links: XBox One, PS4 (US), PS4 (EU)

Credits

Programmers
Sergio Alonso Martínez
José Miguel Sánchez Fernández

QA
Guillermo Regueiro Martín-Albo
Andrés Conde Herranz
Maria Ruiz Algar
Alberto Relucio Gallego

Producer
Raquel Sánchez Illescas

Description

The ultimate couch fragger gibfest! Armed with a powerful boomstick and bullet deflecting shield, up to four players wage unholy war against each other as they compete for souls in nine different local multiplayer game modes (wave mode for 1-2 players also included) across four realms and 40 arenas. This is demonic local multiplayer action at its bloodiest!

A really fun game for play with one or three friends in local!

Gameplay programmer for the porting to Xbox One and PS4 during  mi period in Stage Clear Studios on 2018. Working to improve the performance and stability on console of this game, performance in code and in draw calls, and to finish the console services integration in code, also solving critical problems with the multiplayer, UI and input implementation, and bad using of plugins and frameworks.

Dependency Injection and the InControl plugin: the downway to the hell in Unity

One of the critical issues in this project was the over engineering applied by the original developers when using a bad implementation of Dependency Injection (or Inversion of Control) architecture in Unity using a third-party framework. This issue results in a very complicated code to debug using the Unity and Visual Studio debuggers because the code makes random and unexpected traces in execution, and this results in more time to port the game to XBox One and PS4 consoles (this project took more of a year to was completed the port to both platforms and pass the TRCs to be published).

Other problem to solve in this port was the bad use of InControl plugin, a popular multiplatform input manager for Unity (and the source of most of the bugs to fix in the most of projects that I worked during a year in Stage Clear Studios). Most of the problems to fix was the InControl implementation with the multiplayer logic and the user session pairing. In PS4 adding a critical bug when the console return from the suspension mode (turn off the console when the game is running and turn on to return the previous session). In PS4 (almost in this project), InControl stop to working after the console return from the suspension mode. This result in fail the TRC process when try to publish a game to Sony.

Because the InControl source code is a mess to apply custom fixes, my solution was the implementation of an own lightweight input system using the built-in Unity input system (based on the input system implemented in my master degree final project, Argos: CICE MPV Project) and the needed calls to PS4 DualShock functions (mostly for vibration). Basically, my system was a wrapper that catch any InControl call, and remaped to Unity built-in input system, recreating all needed classes and structures from InControl API to ease bypass the plugin without rewrite any line of code of the game.