Penguin Panic is a 3D multiplayer exploration game. It has been made for the Ubisoft Game Lab Competition 2018. A brief description of this event is available here: Ubisoft Game Lab Competition.
Won the Best Technical Challenge and Innovation Award.
Our story takes place in 2042s. Human activity has continued to spread, bringing with it the progression of global warming. The Arctic is falling apart and the North Pole is drifting in the ocean. While the situation is critical, a duo of scientists who study the glacial regions makes a strange discovery: the penguins are organizing to bring the Glacier to the North Pole! Amazed by what they have in front of them, the two scientists have a revelation: the courage of these little penguins could well inspire the whole world! They decided to launch a broadcast on a real-time streaming platform very popular in recent years: Twatch.tv. You play the leader penguin of this colony. Your mission: return the Glacier to the North Pole to save the Arctic!
- → The game needs to highlight a real social cause.
- → The game needs to include an AI that change depending on players behaviors.
- → The game needs to include a multiplayer aspect.
- → The game needs to be played with an XBOX 360 controller.
What I’ve done
Player Controller / Animations
I help in the first version of the player controller. Moving from a state to another (walking, swimming, sliding), adapt the speed, the animation, etc. I also made some of the penguin animations since we lack of artists/animators in the team.
At the beginning of the project, we wanted to have our gameplay heavily based on the water of the game. Indeed, since most of it was supposed to be penguins in the water, pushing ice chunks, swimming and creating waves.
We had many hypothesis from the start.
We knew we were going to use a mesh and move vertices in order to create the water but it will not be enough to generate waves.
To have random waves we thought about
It could create the height map that would correspond on the position of each vertex on given time.
At mid-project we realize that a technique called that use
Fast Fourier Transform could generate an ocean.
But we thought this technique alone will not be enough to deal with waves and water interactions.
We found a paper about
IWave algorithm and dig more into it. This paper called Interactive water surface is available on Jerry Tessendorf’s website at the previous link.
We also study a physic based buoyancy to match the water perfectly.
Our sources comes from this Gamasutra article written by Jacques Kerner.
Even if we put a lot of works into it, we did not managed to have something efficient and . We decided to not include it in the final version of the game to avoid to many problems later on.
We developed an adaptive AI because it was a constraints. We decided to make it spawns elements (chunks, killer whales, penguins) depending on the player behavior.
Since the game is multiplayer, we isolate two behaviours:
- Collaborative behavior.
- Competitive behavior.
So the AI will study players actions and decisions in order to attribute them a score corresponding to a specific behavior. The below chart summarize the meaning of the score each players can get. If the score is negative it means he’s in a collaborative mindset. If the score is positive then the player is considered as competitive.
This score will change depending on the action on each players. For example if the player with the most penguins followers decide to eat a fish his score will increase (competitive). But if he decided to give a penguin to the other player than his score will decrease (cooperative).
The most consecutive action in a specific behavior, the more weight will be attribute to the decrease/increase. I helped implementing this system and also some tools related to it like the spawning grid useful for the AI to spawn objects.