LOCATION: France
AGE: 27
GENDER: male
EMAIL: contact[at]guillaume-puyal.com
GITHUB: https://github.com/apoapse - https://github.com/Guillaume201

Hello! My name is Guillaume Puyal, I live in the south west of France and I've been doing general programming and game development since I'm 15. On this website, you will be able to find my various realizations throughout the years

Realizations

Video game developement

Vanguard: Normandy 1944 Official Site Steam Kickstarter

Vanguard: Normandy 1944 is a video game by Pathfinder Games released on Steam Early Access in 2019. Started as a mod by a small British team, I've joined the project in 2015 as a freelancer.
I've spent most of my time working on everything programming, from gameplay to making new engine features in this strictly multiplayer game. The beauty with independent game development is that because of the limited resources we end up working on all aspects of the game and that was extremely valuable as I was able to create features from beginning to the end across multiple disciplines.
Thanks to my prior experience, I've also been responsible of the conversion of all textures and materials to the PBR workflow. A massive task that took me 4 months to complete.
The game was partially financed by a successful Kickstarter campaign during which I've worked on multiple marketing material, including writing blog articles and getting in touch with the gaming press. Here are the major things I've worked on. This does not include the literally hundreds of bug fixes and small changes I've made over the years:

Programming

- Mercury (HgHTML), a Chromium powered UI backend for CRYENGINE
- Raid game mode and associated systems
- Rewrote from scratch the squad system
- Suppression and shock effects
- Team balancing and auto-selection algorithm
- Player squad persistence
- In-world 3D UI icons framework (player markers, objective markers, ...)
- Leaning stance
- Day/night selection system and destroyable lights entities
- Map variants code
- Spawn point selection and random location
- Low heath postprocess shader
- Both Javascript and C++ localization system
- Dynamic zone boundaries (killzones)
- User option save and retrieval
- Keybinding system and UI integration
- In-game prompt system (ask the players context specific questions about tactics to adopt while playing and handle the answers)
- Dynamic 2D map backend with player placed markers support
- Build tool suite in C# (include patch generation and publishing to Steam)

Game design

- Conceived the Raid game mode
- Implemented the deterministic weapon recoil pattern
- Additional level design on 3 of the maps
- Smoke grenade design and implementation

Art

- Responsible of all the lighting on the levels, including the day/night variant for each map
- Weapon, grenades and bullet impact particle effects
- PBR conversion of all textures
- Made various 3D models (in Maya), including the iconic Café Gondrée building
- LOD and performance pass on all static objects
- All ground textures and materials
- All our custom vegetation assets
- Level art pass on the Carpiquet Airfield map

(HgHTML) Mercury UI

CRYENGINE uses Scaleform for the UI, a middleware that require developement in Adobe Flash with the outdated Action Script 2 language. During the the developement of Vanguard: Normandy 1944, the issue with that was it was impossible to find flash developers working on such outdated flash version and the node based interface between Scaleform and the engine was horrible.
The UI development became by far the biggest hurdle and was completely blocking the development of a lot of features.
To remedy this situation, I've got the idea of using the off-screen rendering feature of the Chromium web engine, feed the data to CRYENGINE and use Ajax as asynchronous communication protocol between Chromium and the game. This idea came just after the work I've done on the HTML based interface of the Apoapse project and this experience was detrimental in building Mercury UI.
Displaying the pixels data from Chromium to the engine renderer with good performance was a difficult task but surprisingly the biggest challenge was dealing with the keyboard and mouse inputs coming from the game. In all, this feature took me 2 months of extensive work with many improvements and optimizations made along the developement of Vanguard: Normandy 1944.

Main features

- Easy integration with any CRYENGINE game
- Full support of the Chrome dev tool, including realtime editing and remote javascript console
- Asynchronous AJAX communication between the game and the UI
- Javascript API with direct call to CRYENGINE features
- Header only C++ API with JSON wrapper

SHOKUDAI Temple ArtStation Galery Video

In 2014 with the arrival of PBR workflow in game engines, I wanted to improve my game art skills and get experience in how to author and light assets in a PBR renderer. To do so, I've made a small environement in CRYENGINE where I've chalanged myself to do everething: 3D modeling in Maya, texture authoring in Photoshop and Quixel Suite and of course lighting and level composition in CRYENGINE Sandbox.
In the end, this personnal project took 4 month to make with a minimal nummber of hour put into it each week.
I've also created a video cimenatic of the scene to showcase it which ultimately is what lead me to be recruited to work on Vanguard.

Exporter HUB for CryEngine GitHub

In the Past, CRYENGINE used a very rigid way to import assets that relied to plugins for specific DCC softwares. This was specifically an issue for importing textures where Photoshop was basically mandatory which was not a great option for indie developers.
To rectify this, I've created a small C# tool which allow to very import assets by a simple drag-and-drop and even import texture from the clipboard. The program take care of the conversion and saving of the files in the format expected by CRYENGINE and display the importer options if the type of file cannot be automatically detected by the tool.
Finaly, because I was using the texturing tool Quixel Suite, I've integrated into the tool a brigde which allowed to preview texture changes into the engine in near real time (depanding of the CPU power).

General programming

Apoapse GitHub

Apoapse was an ambitious project I've worked on for 5 years with a close friend and collaborator. The plan was to create a company dedicated in building and maintaining hightly secure and decentralized communication softwares for entreprises.
Our goal was to reach companies which are large enouth to be hold sensitive data but small enouth so they don't have dedicated cybersecurity personnel.
The base to all of that was (and still is) the Apoapse Protocol which is a C++ framework designed to provide secure transfer and storage of data over the network using a message/command interface defined by a data-driven system.
As the sole developer, I've wrote two prototypes (one in C# and one in C++) and later made the final product in C++ in an excess of 20 000 lines of code. Cryptography was a central part of the product and as such I've spent a huge amount of time researching and designing secure systems using cryptographic algorithms.
Unfortunately for us, because of our young age we did not have self financing capability and reaching both prospect and financing opportunities was near impossible because of our distance to cities. The project was stopped in 2020 with some of the code made available as open source.

Very Simple Unit Test Framework GitHub

There is a large choice of C++ unit tests frameworks but during the development of Apoapse, I've found that none where both simple and flexible enough to meet my requirements. Specifically, I needed to be able to trigger unit tests on actual running instances of the program and do the results retrieval remotely over the network.
As a result, I've created Very Simple Unit Test Framework. Under this very creative name, this small (header only) C++ library is designed to be as flexible and simple as possible. It allows to easily create and categorize unit test in any cpp file and run them anywhere the user want.

Web developement

e-cms e-cms.net (archive)

e-cms was the union of a content management system and a website developement kit. The idea was that with a same tool, a developer would build a complex website and an administrator would then use it to add and manage the content of its site.
e-cms represent a bit more than 21 000 lines of PHP code that I've written myself between 2010 and 2013. Because I was not able reach enough customers, I've stopped working on it in 2015. Overall e-cms was used to build and operate about 30 websites, some still operating today.
To achieve the goal of having a system that can handle very different type of websites with very specific features, I've put a lot of efforts into two aspect: the tooling and a component-based template system. The idea been that a developer with only html experience would be able to build almost any features of his website.

Main features

- Step by step installation wizard with server and install self diagnostic
- Cryptography-based license activation
- User group management system which allow complete control over the rights and access of the users
- Article live broadcast
- WYSIWYG and html code tabs available on every type of content
- Complete template tool within the administration interface with proper code editor for both template and custom files
- Administration interface accessible on mobile devices with all features
- Files manager with drag and drop support and automatic images insertion on content
- Integrated database viewer supporting sql queries and backup download
- Extensive template tags which allow the creation of complex and highly customized system with simple HTML knowledge

e-cms.net e-cms.net (archive)

This website was the main hub on everything around e-cms and as such it required me to create features from the ground up like the whole shopping and license activation system but also make a lot of content including all the marketing marketing material and the documentation.
Of course, the website was made and powered by e-cms.

Main features

- Complete shopping experience including a cart, an automatic payment validation system and a secured license activation
- Documentation section explaining how to use e-cms in details
- License management interface allowing customers to add, activate, deactivate and renew their e-cms licenses
- Customer support interface