FormulaProc Dev Report

Ok, here’s what has kept me busy lately.

Thru this last month of dev, the project graduated from a ProcJam entry into an official Slashware project with contributions from QuietGecko, Simernio and Esteban Martinez. All the current stuff can be reached from formulaproc.com

Simulated Events

I set up and ran the events for the Spanish, Monaco and Azerbaijan Grand Prixes and their qualifier sessions, each event has had something new as detailed below.

Check them out at the Youtube Channel

Main Simulation

The first thing I improved was adding the circuit map; this was critical for players to get the feeling of being there. It was implemented with some basic trigonometry allowing to locate the markers alongside a polyline (only straight segments, no curves for simplicity, so long curves in the circuits are just a lot of small segments which works good enough)

Gecko created an upbeat music track for the races, and sound effects for the events such as new lap, surpass, and countdown. We also worked together to create the engine sound which was something critical to get the feeling of the race; it was an iterative work which required tweaks on the simulation itself so that the dynamics of the RPM and the gearboxes on the vehicles matched the variations in pitch we needed to get just the sound we wanted.

I added a couple more visual indications too, first off I added “combat notifications” to let the viewer know when a car was trying to gain a position and when/if he was successful; that ended up being super confusing and useless, and was later replaced by indicators in the newly added “intervals table”, which is a permanent indicator of the positions in the track and the difference in seconds between the drivers.

I also worked with Simernio to fully redesign the appearance, and added a box with the stats of the race leader.

Discord Bot

Along with the creation of FormulaProc’s discord server, I developed a first version of the bot using discord.js (including persistence to mongodb with just its native nodejs driver) and deployed it to DigitalOcean.

Right now you can use it to place a bet on a driver for the next race, buy virtual mechandise and event cast spells over the drivers to affect their performance in the upcoming races.

The Intro

I commissioned Simernio to create a new logo for FormulaProc itself, along with logos for each one of the teams and a full blown animated intro taking all this together. It wound up amazing.

Content

Worked along with Esteban to create a page for the teams and pilots with extended descriptions, incorporating the new logos as well as generating portraits for all of the drivers using Unreal’s MetaHuman creator.

I also created a Calendar page listing all the events of the season and their winners, and another one for the current standings. I still don’t know if I’ll have enough time to simulate all of them before Season 2022 starts.

We have also been trying to give some life to the FormulaProc universe via articles covering the qualifiers and the races. We plan to maybe add more content such as interviews, driver profiles, and events happening in this world besides the Grand Prixes.

The Future?

So far we haven’t managed to get much traction, and the amount of work that this has required is not small. For now I’ll release the gas pedal a little bit (will continue releasing the simulations but don’t feel like I should put much more dev into it, especially with the upcoming release of NovaMundi and our secret lighting project.

In any case, if you haven’t done so, please subscribe to the channel and join the discord so you don’t miss the fun and the chance to see this evolve 🙂

FormulaProc – ProcJam

I’m creating a procedurally generating Formula One-style racing show! Check it out at https://formulaproc.com, here’s the story so far.

The Story So Far

After many years of wanting to, I jumped into ProcJam for 2021. There was always a reason not to do it, since it’s in December and I’ve commonly run out of jam-power by the time it happens. That was no exception this time, worsened by the fact that it happened almost back to back with the work I did for the Cultural Heritage Game Jam with Muyscamuy.

However, I decided to get off my head this idea that had been haunting me for years of making a spectator-sport kind of thing powered by procgen; not a game, but a kind of show around which people could build stories and create fandoms. It has had different shapes in my brain: soccer, cycling… but my renewed interest in Formula One this year made me think on a good balance between the level of abstraction vs. the amount of excitement that could be provided visually with such a simulation.

The marathon “Special Event” of Gold Medal Challenge’92 for the NES, another possible source of inspiration.

I had been talking for some weeks with Simernio and Gecko about this idea, and while we plan to have something more structured and elaborate in the future, I figured it could be a good idea to put the idea to the test at a smaller scale.

A clear inspiration was the F1 Visualized channel: “Formula 1 results and stats visualized using pixel art. Rewatch the latest races in minutes, without missing any part of it. Keep up with any of the drivers to see the race unfold from their perspective.“.

However, their visualization is much higher level (understandably so, since their idea is to compress a long F1 race into something you can watch much quicker), I wanted to create a somewhat abstract visualization of a race, not seeking to be a representation of the race itself but rather of how the race unfolded, leaving the players to fill the gap in usual roguelike fashion.

The main work in the implementation of the simulation happened from December 6 to 12 (when the jam ended). The jam encourages post-jam work for people not to stress (ha!), but we all know the entire point of a jam is to generate stress so that you produce something complete by a fixed end date, so I ignored that and pushed forward to have something solid by the end of it.

But wait, is this procgen?

I figure this may not be considered a “normal” procedural content generator; for procjam you’d more often expect something that creates things such as maps, level layouts, buildings, worlds, or maybe even something that awkwardly tries to come up with a written narrative or story.

What am I creating here? my intent is to create some facts, events that happened, and around which you can build stories and maybe even a community. And the main tools I’m using for this are physics simulation and artificial intelligence (both at a very, very simple level)

I shared the question in the procjam discord: can something like this be consider procedural generation? There was an interesting discussion about it, in general most people agreed the complexity or level of detail of the algorithm used to generate the content shouldn’t affect whether something is procgen or not.

“PCG is the algorithmic creation of content with limited or indirect user input”

from “Procedural Content Generation in Games”

As always, nothing is completely defined in the field of procedural content generation; but I would say that as long as you are generating content relying on algorithms and there is (pseudo) randomness involved (and you can be genuinely surprised by the results as the author), it IS procgen, and don’t let them tell you otherwise.

How it works

At the core of everything is an abstraction of the circuit based on its corners and the speed needed to transverse them safely; this is derived from the telemetry data of the drivers of recent races and is a bit loose because I’m not looking for a super accurate simulation but rather something that feels good enough.

The circuits are one-dimensional, and the racing is simulated based on both the stats of the cars affecting their acceleration, braking deceleration, gearbox efficiency, max speed, and the drivers having different reaction times, gearbox proficiency, and profile risk. There is a qualifying mode where the cars don’t interact and it’s all up to the performance of the driver and the car, and a race mode that adds more variables into the mix with the interaction between the drivers.

In order to provide the illusion of speed, some bars are placed on the track every 300m. In addition to this, an important aspect of the theming of each circuit is the name of the curves/corners, which are also placed as bars and provide visual feedback of the places where the cars brake.

I also added a kind of “minimap”, scaled-out version of the track, to make it easier to have a glimpse at the status of the entire race especially when the lead cars were too quick and left slower cars behind.

FormulaProc.com

The jam was just the start… while I delivered a complete simulation that could be parameterized with track data and would provide different results every time, I decided to have a single so-called “exhibition race”, happening in the Spa-Francorchamps circuit, be the published “results” of the jam.

But my plan was to build a complete series of this. I thought it would be cool to have the fantasy races happen on par with the real Formula One races, but the F1 2021 season had just finished (Go Max!), so I decided to start with the rebuild of the 2021 season, incrementally building the simulation quality along with the visuals and stuff based on the feedback of a hopefully growing community.

I set up a YouTube channel, a WordPress website, and a Twitter account for it, and started recording some more videos. So far I’ve done 4 races and posted about them in the official newssite. It still hasn’t had a lot of reach but that’s fine because every video is sligthly better than the last one, as I add new stuff to make the races more exciting!

The Portugal race, for instance, added non-critical accidents, allowing for much more varied stories that still felt believable, and the next race will feature some awesome soundworks by QuietGecko.

There is still a long way to go to make this feel more engaging; one of the things I’m already experimenting with is giving the drivers some visual shape so that people can relate to them; Simernio had the idea of using Unreal’s Metahuman Creator which has already yield some interesting results; for now we are just testing but it might be a good idea to make full use of it and render the characters in a fully controlled environment, as well as including more appropriate racing attires.

Biskup T., driver for the Queenscape team in 2021

As always, I’ll keep working on this until I run out of steam… hopefully when we catch up with the F1 2022 season we’ll have something more engaging and fun! in the meantime make sure to follow and subscribe 🙂