BARTG - Global Game Jam 2024
From Friday, January 26 at 6pm to Sunday, January 28 at 7pm by Sud PICCEL - Brassart in Montpellier.
In person, the event will take place at the Brassart school, located near Odysseum, at 300 Av. Nina Simone, 34000 Montpellier. Snacks, breakfast and a few surprises await you over the weekend. Mentors and recruiting companies will also be on hand!
Online, the event will take place on the Sud PICCEL Discord server. We'll give you more details on the tools we've put in place for recruiting and creating teams in future communications.
Theme: Make me Laugh
My role at this Game Jam was essential to the development of the project.
As the sole developer on my team during this Game Jam, I was given full responsibility for the execution of development and implementation tasks on Unreal Engine.
So I concentrated my efforts on the project and its essential mechanics.
I was responsible for implementation, physics, animations, scene transitions, all user interfaces, sound effects, as well as interactive voice reacting to player actions.
Physical Animation
In this project, the character's movements have atypical characteristics. We're implementing a system called Physical Animation, which integrates elements of physics into the player's animations.
Unreal Engine's Physical Animation Component simulates realistic physical interactions on animated characters by linking animations with physical constraints. This creates an effect where an animated skeleton can react dynamically to external forces, such as collisions or impacts, combining the precision of animation with the flexibility of physics. In concrete terms, it allows a character's bones to behave as if they were connected by flexible “springs”, while remaining attached to the basic animation movement.
Operating principle
The Physical Animation Component works by applying “physical profiles” to the various bones of a skeleton. These profiles specify the physical properties of the bones, such as :
- Stiffness : determines the extent to which the bone remains linked to its original animation position.
- Damping : controls the damping level to prevent oscillation or excessive movement after impact.
- Strength : defines the power of the bone to return to its original animation position, making movements more or less responsive.
Depending on these parameters, the character can react more or less flexibly to environments, for example by “flexing” slightly when hit, or falling realistically if the forces exerted are too great.
Example of use
Imagine a character running through a game scene. If this character collides with a heavy object, without the Physical Animation Component, he will either run through the object or show only a predefined, often unnatural animation movement. By using the Physical Animation Component, the character can not only react realistically by “absorbing” the impact, but also by adjusting the movement of its limbs (such as an arm or leg that reacts to the collision by bending slightly).
Concrete applications
The Physical Animation Component is commonly used in :
- Melee combat : so that characters react dynamically to blows and external forces, enhancing immersion.
- Falls and impacts : so that the character falls or suffers forces depending on the environment.
- Environmental interactions : for realistic movements when a character touches or leans on surfaces.
Limits and optimization
Although this component can greatly enhance realism, it can be performance-hungry, requiring real-time physics calculations. It is therefore often used selectively, for example only for key limbs, or in situations where physics brings a significant gain in terms of visual realism.
This component is frequently used in arcade fighter games, such as the following titles:
How do I implement the physical animation component?
Correctly configuring your character's Physics Asset is essential to ensure it works properly.
You need to add the component to your character.
There are many ways to apply physics to a character, and our example shows just a few possibilities.
In our approach, the two main tools you'll need are the “Set All Bodies Below Simulate Physics” and “Set All Bodies Below Physics Blend Weight nodes”, which will generally be placed in your character's Animation Blueprint Event Graph.
However, in my context, we've opted for a different approach that allows us to track the status of each system component, so that we can activate or deactivate the system as required.
The two main tools you'll need are the “Set Skeletal Mesh Component” and “Apply Physical Animation Settings Below” nodes.
Here are the results.
Other functions
The player benefits from a host of features enabling him to interact with his environment, such as the ability to grab objects, slide across the floor, open doors or manipulate objects.
You can activate the ragdoll mode manually or when falling from a great height.
System Narrator
In our game, a narrator adapts to the player's actions, reacting accordingly.
It plays an essential role in enhancing the soundscape of our theatrical production.
The narrator offers the possibility of reacting to different player actions, such as falling, being hit by an object or remaining motionless, while also engaging in its own monologue adapted to the context of the scene.
In fact, programming the narrator turned out to be particularly straightforward, requiring only a call to a universal function that searches for the required action, then stages it and displays the corresponding subtitle.
To create the voices, we used the ElevenLabs online platform.
But what is ElevenLabs?
ElevenLabs is a software company specializing in the development of natural-sounding text-to-speech software using deep learning. It has been recognized as one of the leading companies behind the current AI boom.
Is it free?
Yes, here's an overview of what's included in the free package.
- 10 minutes of high-quality text-to-speech per month
- Generate speech in 32 languages using thousands of unique voices
- Translate content with automatic dubbing
- Create customized synthetic voices
- Generate sound effects
- API access
Setting up the selection of the right audio file is relatively straightforward, mainly involving searches in one or more tables containing data such as audio files or character strings.
We have therefore implemented a structure integrated into a Data Asset, enabling all elements to be loaded as soon as they are used. It's important to note that this tool is not designed to be modified in real time.
Here's our little Data Asset.
This Data Asset contains 4 action type categories:
- Complete: Action when the quest is complete
- Fail : When the player makes a wrong choice
- Idle: When the player stands still
- Quest: Narrator's monologue
Game images