All posts by [EX3]

Teku Studios: The Stone of Madness

Project: The Stone of Madness
Studio: Teku Studios (supported by The Game Kitchen)
Genre: Strategy, RTS, Stealth, Tactical
Platform: Windows, XBox Series X|S, PS5, Nintendo Swtich
Job description: Gameplay Programmer & Tool Programmer
Technologies: Unity3D, .NET, C#, Plastic SCM
Store links: Steam, Epic Store, Xbox Store, PS Store

"From the creators of Blasphemous"

To be honest, this is an original game designed and developed by the creators of Candle, Teku Studios, with help and support from The Game Kitchen and not viceversa. This is the truth.

The Stone of Madness is a real-time tactical stealth game set in an 18th-century Spanish Monastery. Five prisoners pool their skills and resources to face their phobias, stave off insanity, uncover the mysteries of the Monastery, and find a way to escape.

Senior Game Programmer and Tool Programmer working on the system and tools to manage and design the campaign missions and objectives, used by the game designer to easily structure all the logic involved on the different campaign missions and objetives in the game, and to be able to fast prototyping ideas on  the game levels without affect or collide with all exsisting work.

Also I worked, in minor way, maintaing and extending the code of some systems and entities (players and NPC characters, items, dialog system features...).

Other tasks was help with the optimization the code of some systems (thinking on the porting to consoles) and a QA tool for ease catch unhandled exceptions and end the game session (to prevent false error feedback up from this point due the Unity feature to continue execution with unhandled exceptions) recolecting all possible debug data (exception message, full stack trace, screenshot of the last frame rendered...) pack it on a zip file and show a "BSOD like" screen with all collected data.

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.

MEGA (Mundo Estrella Galicia) Sport Training (Kinect)

Disclaimer: This is a video preview of the published game. This video not shown the final state art.

3D Wire 2019

Details

Project: Estrella Galicia: MEGA Sport Training
Studio: Flying Beast Labs (Cateffects S.L.)
Genre: Sports, Casual
Platform: Windows, Kinect v2
Job description: Lead Programmer, Tool Programmer, Technical Artist
Technologies: Unity3D, .NET, C#, Git, Source Tree, Hercules Setup Utility
Website:
- https://mundoestrellagalicia.es/
- https://flyingbeastlabs.com/proyectos/mega-sport-training/
- https://flyingbeastlabs.com/3d-wire/

Credits

Lead Programmer, Tool Programmer & Technical Artist
José Miguel Sánchez Fernández

Gameplay Programmer
Diego Santiago Sanz

Producer & Game Designer
Carlos L. Hernando Lopéz

Project Manager, Music Composser & Sound Technician
Daniel Nuñez Martín

Art Director, 2D Art & UX Designer
Alberto de Torres Martínez

3D Art, Modeling, Rigging & Animation
Irene Arnaiz Lopéz

Producer
Cesar Piña Mudarra

Description

Lead Programmer and Tool Programmer for the development of MEGA Sport Training, an interactive experience for MEGA: Mundo Estrella Galicia museum, in A Coruña, Galicia, Spain.

My main task in this project was develop the entire game architecture, focused on modularize all critical parts of the project for ease maintenance, upgrade or deep-changes quickly, the creation of requested tools during the development, and supervising the work of a junior programmer, the person that was develop the 4 mini-games that compose the game (basket, football, hockey and rugby) and help me to integrate the Kinect v2 SDK in Unity and study how implement features like the advanced gesture recognition.

Other tasks that I colaborate was supporting the 2D and 3D artists as Technical Artist, optimizing all 3D assets and materials in-game (combining meshes, fixing materials setup in Unity, and advise the 3D artist, a junior profile, in some tasks involved with optimizing modeling and asset exporting), setup the lighting in all scenes and setup all post-processing effects to fit the limited requeriments of the target machine (an Intel NUC without dedicated graphics card) to achieve a good performance without lost quality visual look & feel.

3D Wire 2019

This same year, we make a variation for the 3DWire (https://3dwire.es/), an important spanish annual event of animation, games and new media that is celebrating in Segovia. Weird Games: Food Training is the new name of the game and have a little visual changes as replacing all sport things like the basket ball by a toaster or the hockey disks by spanish omelets, most of the work as rebranding and applied some gamification rewards for the event games.

The true challenge: Kinect 2.0, Windows 10 and beyond

Also of the difficulties recording custom gestures using the official Kinect SDK tools, implmenting a custom gesture system to avoid some issues with some gesture recognitions, and the many other related and technical issues, the true challenge to develop and maintain this project are the Kinect 2.0 + Windows 10 combo:

  • Kinect 2.0 has been discontinued by Microsoft in fall 2017 and removed support on Windows (drivers, tools, etc...) a few months after publising the tools for Kinect 2 for Windows (supported Windows 8.1 as last official version).
  • Never existed an official SDK for Unity, only a few outdated particular user implementations on the web for Unity 5.6 (we developed the game with Unity 2018.3.5). We using the only full implementation solution available and well documented by examples, that can be found in the Asset Store.
  • No all PC configurations supports Kinect 2 hardware. During the pre-production, we found that only 2 PCs in our studio are capable to run Kinect 2 without problems. Other PCs directly can't work, can't recognized the Kinect hardware. Seems the USB 3.0 in most of them has issues related with power supply or the drivers (in some cases, Kinect burned the AC Power unit on a couple of our PCs).
  • Kinect 2 hardware can't works on current versions of Windows 10. The last supported version is the build 1803 (April 2018 Update). The USB 3.0 drivers has many known issues and one of them affect to Kinect 2 USB connector. The solution initially seems very simple: using the build 1803, but...
  • In Windows 10 you can't full disable Windows Update services. And, later or soon, your Windows 10 will be forced to upgrade to latest version. In our case, disconnect the PC from the net is not a solution. The PC can not we unpluged from the net because need access to internet to send mails and send and read signals from an UDP server. Basically, the solution passed to reroute the all Windows Update known server address to localhost in the Windows hosts file, setup all Windows Update related services to manual and disabled it, and blocking the internal Windows folders related with Windows Update downloads and deployments.
  • The official Kinect 2 AC Power Unit not works on current PC configurations. One of the Kinects, supplied by the museum worked with the Surface 3 AC Power Unit instead of the Kinect official unit. For any reason the Kinect 2 official AC Power Unit not works properly on current PCs.

And the final boss...

But the true challenge was the final issue of the Kinect 2 + Windows 10 combo. At the final stages of the development and testing, we found the game sometimes was freeze without any reason! (very inappropiate for a museum experience).

After 2 weeks of deep debugging and testings in the source code of the Unity implementation of the Kinect SDK, I found that the reason of the game was freezing was the avatar recognition event in a driver level. It's seems that the outdated driver in Windows 10 has any internal memory leak or something related bug.

Because I'm not was capable to fix this, because is an internal driver bug and not a source code issue, I designed a little "trick" to able the game to catch the freeze state and reset himself. I developed a little program that works as a monitor instance of the game. A simple terminal program that run in fist place and launch a new instance of the game as child process. Basically the game instances comunicate with the monitor to tell that it's alive. When the game stop to send signals to the monitor, the monitor understand that the game is freezed, kill the freezed process and launch a new one.

For prevent the user noticed the game reseting process, as idea of Carlos L. Hernando, we empty the entire Windows desktop of icons and hide the task bar, and using the same game splash screen background as desktop background. With this, the user not see any stranger thing except that the game has return to the main menu screen.

P.D.: In a way to avoid several freezes and their resepective resets, I needed to reimplemented all avatar recognition logic system in the game to avoid conitnuous calls to native Kinect avatar recognition functions.

Pipe Push Paradise (Nintendo Switch, XBox One & PS4 Port)

Details

Project: Pipe Push Paradise
Author: Corey Martin (ported by Stage Clear Studios)
Genre: Puzzle
Platform: XBox One, PS4 & Nintendo Switch
Job description: Gameplay Programmer
Technologies: Unity3D, .NET, C#, SVN, Tortoise SVN
Store links: XBox One, PS4 (EU), PS4 (US), Nintendo Switch

Credits

Programmers
Juan Escudero Vizcaino
José Miguel Sánchez Fernández

Technical Artists
Sergio Bernardo Sánchez
Francisco Porcel

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

Producer
Raquel Sánchez Illescas

Credits (Nintendo Switch version) on MobyGames site: https://www.mobygames.com/game/switch/pipe-push-paradise/credits

Description

Gameplay programmer for the porting to Xbox One, PS4 and Nintendo Switch.

I worked on optimization tasks on code and graphics assets in scenes, mainly reducing polygons in major objects in scene, like the pipes, implementing a system to switch original pipe models for a low-poly version when the puzzles are solved (the original pipes, that the player see when play a puzzle, are a compound of several high-detailed meshes with detailed interiors, very unoptimal for realtime videogame rendering), and removing several duplicated/overlaped sprites on decorations (and improved the sprite materials with help of our in-house technical artist, Sergio Bernardo) to reduced the several overdraw and draw-calls when the game shows the entire island or large areas with solved puzzles.

Other task consisted in adapted the user session for working with the console systems, and save game implementation and other related game state code to avoid continuously read/write operations on disk (or the NAND memory in Switch) major bugfixes related with the original Steam version and last-hour game workflow changes requested by the game developer.

P.D.: Before the last Nintendo Switch SDK version on november, Unity games on Nintendo Switch they couldn't reach the full potential on the GPU. Because this, initialy, in an effort to reach almost 30 fps, we created an alternate version of the island scene for the Nintendo Switch version and applied several cuts on effects and decorators, like the water waves effects and some sprite layers in most of the wall decorators like the hedges.

Slayaway Camp: Butcher’s Cut (Nintendo Switch & PSVita Port)

Nintendo Switch Trailer

PSVita Trailer

Details

Project: Slayaway Camp: Butcher's Cut
Studio: Blue Wizard Digital (ported by Stage Clear Studios)
Genre: "killer" puzzle
Platform: Nintendo Switch, PSVita
Job description: Gameplay Programmer
Technologies: Unity3D, .NET, C#, SVN, Tortoise SVN
WebSite: http://slayawaycamp.com/
Store links: Nintendo Switch, PSVita (US), PSVita (EU)

Credits

Programmers
Alejandro Machuca Díaz
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

A killer puzzle game where you control Skullface, a psychotic slasher bent on slaughtering camp counselors at the title campground. Slide this adorable voxel murderer around hundreds of isometric puzzle levels to squash, flay, and decapitate the hapless victims in this darkly comic homage to 80s trash horror.

Gameplay Programmer for the porting to Nintendo Switch and PSVita console versions. I worked on optimization tasks on code and graphics assets in scenes. Other task consisted in adapted and improved some UI elements to use in touch screen and major bugfixes on this platforms.

PSVita version was required most of the enfort, was the most difficult platform to port. Mainly I needed to reimplemented most of the original game core to ensured to fit in the low hardware requeriments, I implemented new resource management systems to cached reusable assets (sounds, textures, etc...) and background load processes (this is the only version that requires of loading screens between scenes and other game states). Also I applied extreme optimization in all graphics assets to avoid continous VRAM overflows adjusting size and compresion parameters in a right way to preserved the original visual feel in the PSVita screen resolution.

Ginger: Beyond the Crystal for Nintendo Switch (Porting)

Details

Project: Ginger: Beyond the Crystal
Studio: Drakhar Studio
Genre: Adventure, 3D Platformer
Platform: Nintendo Switch
Job description: Gameplay Programmer, Tool Programmer, Tester
Technologies: Unity3D, .NET, C#, SVN, Tortoise SVN
WebSite: https://www.drakharstudio.com/ginger
Store links: Nintendo Switch

Description

Ginger: Beyond the Crystal is an adventure platformer in which you have to rebuild and restore balance to a world devastated by the explosion of a mystical crystal. Face quests and challenges set over 3 worlds and gain powerful new skills, costumes and powers that will help you to defeat the fiercest.

Gameplay Programmer and Tool Programmer for the porting to Nintendo Switch version. I worked on optimization tasks on code and helped to optimize asset graphic implementations in scenes (mostly consisted in grouping and baking meshes for reducing draw calls). Other task consist in develop small intergrated tools (to help to search large amount of objects in scene by component type and other filter options, mainly to help in light mapping tasks), studied and tested the game against the Nintendo Switch TRC guidelines and testing the game with the last changes on the Nintendo Switch hardware.

Argos: CICE MPV Project (Unity3D Master degree final project)

Details

Project: Argos: CICE MPV Project
Genre: 2.5D action-platformer, Unity3D game framework
Platform: Windows, Linux, Mac
Job description: Gameplay Programmer, Tool Programmer
Technologies: Unity3D, .NET, C#, Git, Source Tree, Argos.Framework (own Unity3D multiplatform framework)

Description

My final project for my Unity3D game development master degree coursed in CICE on 2017. A 2.5D cinematic action-platformer developed over a custom multiplatform framework (the true core of the project).

This project was developed while I was working on the porting to Nintendo Switch of Ginger: Beyond the Crystal in Drakhar Studio. During this period (3 months) I was working in the idea of creating a framework that ease the common tasks in a multiplatform development with Unity3D, like manage the input setup or the file system over the different operating systems or consoles. After finish my contract with Drakhar Studio, I was working on the playable part of the final project, the 2.5D platformer and how integrating the framework in his development. I made it in only 4 weeks.

The framework cover the following areas:

  • Input system:

    A single player oriented input system, based on Input Map assets witch defines actions and axes definitions for use in separate areas of the game like UI or player actions.

    This system is based on Virtual Axes that bring the posibility to define input based on keyboard, mouse and/or gamepad axes (sticks, DPads), and Input Actions to define actions like jump or shoot, using input from keyboard, mouse and/or gamepad buttons, DPad and triggers. Input Actions can managed from events, and both Input Actions and Virtual Axes can allow input rebind in runtime.

    This system nativelly support the popular game controllers like XBox 360, XBox One, PS4 and Nintendo Switch Pro Controller (on supported systems). The input system manages automatically a common map between different controllers, in a way to only uses a unique button list to setup the actions and axes. The system also allow the use of generic gamepads and uses a generic input map asset to setup the input map, also allow this setup in runtime.

    This system implement a custom Standalone Input Module and some custom components to bring full support on Unity UI components for UI navigation.

  • Multiplaftform file system layer:

    A file system layer to safe manage the basic file operations between Windows, Linux and Mac systems. The system manage a predefined paths to manage savegames, settings, screenshots and custom data folders on user document folder, and avoid errors on path formatting or creation/check the current folders.

  • Localization system:

    A simple localization system that allow to localize UI text elements with rich text formatting support. The system implements a simple component that manage the UI Text component content in realtime. For the project, this system was designed for only support English and Spanish languages.

  • UI components:

    A serie of UI components to bring some functionalities like doble click events, customizable text message events and UI input icon system to show text messages with keyboard, mouse or gamepad button or axis icon based on the common input map system implemented on the first point of this list.

  • Misc additions:

    Multipurporsal scripts and components with various ideas learned and implemented during this master degree on each practical excercise.

Argos.Framework, coming soon

Today, I'm working in this framework to pulished some parts and improved ones (Input System code and his editor inspectors) and rewriting others from scratch (file system, localization system and some UI components), and implementing new additions like XInput gamepad vibration support (with visual pattern vibration assets, to allow to design vibration patterns similar to the classic DirectInput Force Feedback patterns), GameJolt API integration (user session, trophies, leader boards and cloud storage) and more.

Other additions that I'm working is the XBox One support, via Universal Windows Platform, with XBox Live basic services (user session, user stats, leader boards and file storage). The goal of this is trying to unify this services with other like the GameJolt or Steam services (even consoles services like PS4, XBox One (not UWP) or Nintendo Switch) under an unique layer to simplify the development between platforms, the main goal of this framework.

Soul Gun

Details

Project: Soul Gun
Genre: 2D Platform
Platform: Web (HTML5/WebGL)
Job description: Game Programmer
Technologies: Unity3D, .NET, C#
Links:
- Itch.io
: https://ex3.itch.io/soulgun
- Ludum Dare 39: https://ldjam.com/events/ludum-dare/39/soul-gun/ (510th position of +2500 games)
Source Code: https://bitbucket.org/VisualStudioEX3/malaga-jam-week-vi

Credits

Graphic Designer
Pablo Dapena

Game Designer
Carlos L. Hernando

Game Designer, Level Designer
Alberto Sageras Roman

Game Programmer
José Miguel Sánchez Fernández - [EX3]

Description

A game made for the Malaga Jam Weekend VI & Ludum Dare 39 Game Jams. A game made in 48h!

A 2D platform game with a gravity and energy mechanic. The player only can move on floor and shoot his weapon. Each shoot invert the gravity on entire level, enemies included, and each shoot consume a part of the player soul. If the player consumes his soul, then he will die instantly. The player can restore his soul when not shooting his weapon during a short time.

This game shared the MalagaJam and Ludum Dare themes: Atraction & Running out of Power.

The Esc4pe, a “primitive shooter” made with Unity3D

Featured tweet from GameJolt

Video reviews from itch.io & GameJolt

Today (August 4, 2018), the game reached +120.000 visits and +50.000 downloads, with a 4/5 avg. rate and featured on cover pages, on itch.io and Game Jolt marketplaces, in 60 days (near of 60.000 visits and 30.000 downloads between March and early May of 2017).

The game received a lot of feedback in the comments, and some users made video reviews with gameplays. This is a Youtube list with videos collected from user comments and Twitter searches:

Details

Project: The Esc4pe
Genre: First Person Shooter
Platform: PC (Windows, Linux, Mac)
Job description: Game Programmer, Game Designer, Level Designer
Technologies: Unity3D, .NET, C#
Links: Post on my blog, Visual Studio EX3, with more details (ES)

Downloads

Featured on itch.io marketplace with +25.000 downloads with a rate of 4/5 stars!

Featured on GameJolt marketplace with +40.000 downloads with a rate of 4/5! (Click on the thumbnail to view on gamejolt page)

Credits

José Miguel Sánchez Fernández - [EX3]
Game Programmer, Game Designer, Level Designer, "Voice" actor

Third party assets

Standard Assets & Cinematics Effects - Unity Technologies
 
 
Sci Fi Characters Mega Pack - PROTOFACTOR, INC: https://www.assetstore.unity3d.com/en/#!/content/19831
 
 
Scifi LowPoly Ammo Pickups - Pixelgraffiti: https://www.assetstore.unity3d.com/en/#!/content/12005
 
Yughues Free Palm Trees - Nobiax / Yughues: https://www.assetstore.unity3d.com/en/#!/content/13540
 

Amplify Color and FXAA Fast Approximation Antialiasing - Amplify Creations: http://amplify.pt/

Light Shafts effect - Robert Cupisz: https://github.com/robertcupisz/LightShafts

Camera Filter Pack (CRT Effect) - Vetasoft: https://www.assetstore.unity3d.com/en/#!/content/18433

Sound weapons & items effects are downloaded from Freesound.org site (http://www.freesound.org). All samples are under Creative Commons licence (Attribution 3.0 License)

Music themes "Hitman", "The Complex" & "Killers" are creations of Kevin MacLeod (incompetech.com) and released under Creative Commons licence (Attribution 3.0 License)

Description

This project is made as practical exercise for the "Master Degree in Video Game Development with Unity3D & 3DS Max Official Autodesk (MPV)" of CICE Madrid (http://cice.es/curso/master-en-desarrollo-de-videojuegos-con-unity-y-3dsmax/).

A "primitive shooter" developed in one month with technical restrictions based on the topics seen in class until the project start date. The game is not optimized (its performance is not stable).

Support XBox360 Controller in all PC platforms (implementing the input map for Linux and OSX following the information found on this wiki).

The game is initially designed to be played in 5~10 minutes (It can take 20~30 minutes to complete).

Developed and full tested under:
- Intel Core i5-2500 @ 3.30GHz
- 8GB RAM
- AMD Radeon HD 6800 Series (with Crimson drivers)
- Windows 10 Pro x64

P.D.: This game will not receive new updates, bug fixes (for now) or new version with more levels.

Pirates: Treasure Hunters

Details

Project: Pirates: Treasure Hunters
Studio: Virtual Toys
Genre: Action-MOBA, Free-To-Play
Platform: PS4, Steam
Job description: Backend Programmer
Technologies: .NET 4.5, C#, LINQ, JavaScript, HTML5, MVC5, Python, PowerShell Script, Bash, MariaDB, MongoDB, RedisDB, IIS, Windows Server (2008 & 2012), Linux (CentOS 6.5), SaltStack, SVN, Tortoise SVN, Git, SourceTree
WebSite: http://piratestreasurehunters.com
PlayStation Store: US Store, European Store
Steam: http://store.steampowered.com/app/413690/

Description

Backend programmer in Virtual Toys, for the Pirates: Treasure Hunter project, a Free-To-Play Action-MOBA game for South Korea (Netmarble) and China (NetEase) markets, and PlayStation 4 and Steam for occident markets (Europe and America). Our tasks consist in maintain and develop new features on the backend and maintain the development and production environments.

Update (16 november, 2016): The game is no longer available in Steam and PS4 Store. Virtual Toys closed in August 2016, because of an ERE. For this reason, the servers were closed in September 2016, and the game was shutdown and removed from the online stores. More information (spanish only) in the following links: