James McWilliams makes extraordinary projects, both in games and in middleware. In this post he talked about his work and some of tricks he used to build the project.
My name is James McWilliams. My first industry job began in 2003 at Codemasters, where I worked on a variety of titles including Dragon Empires, Toca Race Driver 3, Operation Flashpoint 2 and Brian Lara Cricket. I then worked at Realtime Worlds in 2009 but the studio closed in late 2010.
I formed “Dry Ice Studios” with the intention of getting my own game made. I pitched it to a publisher and took their offer of funding. “EON” was a 3D side-scroller and had its inspiration from a couple of classic games I loved as a kid: Another World and Flashback. One of my original pitch animations for EON is here:
Development began in 2012 but the project was cancelled in April 2013. Here is a snippet of in-game footage at the time of cancellation. It was a very ambitious game and we had only a team of 8 people…
In late 2013, I started Cubit Studios and began working on a new game called “Infinitesimals“. Although I had been offered publisher funding for the project, I decided to hold off on taking any funding deals until further along in development. Since then I’ve done consultation work for companies during the day and working on my own projects in my spare time.
By choosing the slower burn development I can develop the game on my own terms and retain the vision I had without needing to appease anyone’s schedule. It gives me time to do R&D, iterate on the story, art, design and prototype the core aspects properly.
Some of my Infinitesimals work here:
Ballistics VFX Pack
I had been prototyping FX for Infinitesimals such as seen here:
I then decided to create an entire set of impact FX for different materials to sell to other developers.
I hoped to earn enough to hire assistance for the Infinitesimals prototyping. The first release of Ballistics FX contained some example blueprint systems for showing off the particle FX, with impact sounds and an explosive canister blueprint added in the early update:
The FX pack development also relates directly to the game because many of the systems I’m working on for FX packs will be directly utilized in Infinitesimals. For instance, the penetration system and material interactions:
This isn’t so much about a selection of gun types specifically but I included 3 examples bullet sizes for small/medium/large calibre. This determines the base size of the impact FX being spawned. The latest update 1.2 also dynamically scales the FX based upon impact velocity. I completely revamped a good portion of the impacts for the 1.2 update and entirely redid the blueprints from scratch.
One of the recent additions is the ability for particle debris collisions to spawn decals.
I’m continuing to work on the FX blueprints to add more features, and will create more particles/sounds in further updates. I’m planning on another revamp pass on some of the FX, such as the liquid impacts.
These aren’t too dissimilar from the impact FX themselves. They explode outwards in a sphere instead of upwards from an impact normal. But they share common materials and textures with the impact FX.
The explosion is made up from several components with the main flame and smoke created with sprite sheets.
I take particular care to ensure the smoke naturally dissipates as opposed to simply fading out the alpha (which I see quite often with smoke sprite sheets).
The shrapnel projectiles themselves are using the same system as the bullets, with additional trails enabled. This means they can ricochet and once the penetration system is complete, will be able to pass through objects to inflict further damage.
Ricochets weren’t too tricky. The projectiles simply bounce but there are modifiers for different materials that determine if a bullet should ricochet depending on the impact angle and material type.
In update 1.2 I’ve added a data table system with all the parameters for setting the properties that determine which materials ricochet more than others. Soil and sand are very difficult to ricochet off, whereas metal or rock will deflect much more often. These same data tables are also used to define what effects to spawn and other material properties.
How Do Effects Influence General Performance?
They are designed to be used in game straight out of the box, so there shouldn’t be any need to optimize for general modern hardware. All the additional features such as particle spawned decals and sub FX are entirely optional and can be disabled in the FX blueprints spawn variables.