logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Recreating Old School Contra With Modern Tech

We’ve talked with a small group of developers, who tried to build their own homage to the famous Contra series in Unreal Engine 4.

Introduction 

We are a group of students currently studying at NAD university in Montreal. Here are the members of the team: Gabriel Jacques, William Paré-Jobin, Christopher Mathieu, Sylvain Picard, Louis-Alex Boismenu, Pierre-Olivier Couture-Goulet, Jimmy Di Nezza and Marc-Olivier Dion.

In short, it was the first time we were working together and also one of the biggest projects we were a part of academically speaking. The team’s main goals were to deliver high-quality video game graphics and reboot Contra.

About the project 

It started as the second project of a course at NAD. The objective was to reboot a game from the 80’s era and to simulate a real production environment. So the main focus was not redoing Contra again with 2017 quality, but more to redesign the whole thing while keeping its original essence. From there, it was pretty much a matter of “What should we change? What should we keep?“. We answered those questions by following the interests of each member of the team as well as playing to our strengths.

We started with a big brainstorm session, searching for ideas on how we could change the game and how much we wanted to change it. We knew we didn’t want to make a sidescroller and we preferred either to go with a first or third person shooter. Ultimately, we settled on a TPS with altered, special moves inspired from Vanquish. Gabriel went in Unreal Engine with the Third Person Template and started messing around and in about an hour we had the base of the shooting and moving controls done. Meanwhile, Louis-Alex drew some concepts for the level art and the level design.

1 of 2

 

  

With a good grasp on what the move set was going to be for the character, Jimmy used Epic Game’s Animation Rigging Toolkit to create a first pass on the skeletal mesh and its placeholder animations. This was very useful to create an animation framework as soon as possible.

1 of 2
1 of 2

 

With the base mechanics, Marc-Olivier, Christopher and Sylvain started sketching and blocking different levels to have a better feel on the mechanics. We then chose what kind of enemies we wanted and what kind of gameplay loop we were looking for. The decision to forego the soldier type enemy was planned. The Ai would have been too complex to create given our short production time period.

Simultaneously, Christopher learned how the Navigation System worked in Unreal Engine 4. After four level blockings, later one was ultimately the one we chose. Marc-Olivier and Sylvain did their research and started getting references to do the modeling. After the blocking was completed, Louis-Alex took screenshots and made paintovers to further push the graphic quality of the environment. As the weeks progressed, Christopher worked on the lighting as well as the foliage. Louis-Alex used his Photoshop skills to create decal sheets that Marc-Olivier then placed in the level. Gabriel did the particles. All assets were 98% done before bringing them in engine (modeling, uvs and textures).

 

Environment Design 

When you only have 8 weeks to create something, it is important to scope your project well so your expectations don’t exceed what you can actually achieve. Creating an arena was one the simplest ways to make our game a reality. During our iteration process for the level design, we added a lot of verticality to let the alien AI jump into the platforms and chase the player while also giving an impression of immensity to the hangar.

Let’s not forget that we did not have any programmers in this team, so we had to scope small and keep things simple. The artificial intelligence is a simple MoveTo node without a behavior tree. This method isn’t really efficient because what will inevitably happen is that the AI will swarm together and they will all follow the same path to chase the player. Worse than that, they won’t even jump. An alien that won’t jump wouldn’t make much sense. So we had to find a method to break that behavior. Our solution was to use navigation links so we could make the alien jump.

Every arrow represents an alternative path an alien can take to jump. It was pretty difficult to setup at first but it worked pretty well for us as the aliens had the tendency to jump to flank the player. Verticality was also there to let the player have more space to play around and make use of the character’s super jump ability.

The level design was made with a super tool from Alessa Baker called Shelling System. With this, we could quickly create and iterate ideas of level designs. When we were happy with what we got, the level artists could then export the meshes to their 3D software and know exactly what are the dimensions for the walls, the crates and so on. It was a huge time saver for us.

For the feel of the arena we decided to mix two levels from the original Contra game on the NES. The first was the first stage in a jungle and the seventh one in a hangar. By blending the two levels together we wanted to bring as much Contra elements as we could with the short time we had. The vegetations is a mix of SpeedTree for the trees on the roof, Megascan for the plants and the Spline generators plugin by S. Krezel for the vines. For the plants, Christopher modeled every cards and created clusters with the textures from megascan. With the spline generator, he exported every meshes into a 3D program and tweaked them so we can have vines that are modular and that can be placed pretty much everywhere in the level. Meanwhile Marc-Olivier and Sylvain did the modeling and the textures of the hangar, from the walls to the platforms, the turret and so on. Finally, Christopher did the final touch with the lighting, with his main goal being that the player should feel that we are in a humid jungle.

5)The game also features a very cool protagonist and I’m really interested to learn more about the way you’ve decided to animate this character and make him work with the gameplay? Let us know how it all works for you? What techniques did you use and how did you make it all work?

Everything about the character, including how the character moves and interacts with the aliens and the environment, started with some impressions and “feels” we wanted to get. We really wanted a middle ground between a tactical John Wick and John Matrix in Commando. So we did a bunch of concepts just to get the personna, exploring designs from an  old Texan charismatic man to a more “sci-fi” soldier. Here are some of the early concepts.

As soon as the we knew we wanted to go in a “sci-fi” direction, we had to design the actual outfit. So we iterated on that and ended up with a first vision of the character that we liked.

 Immediately after, the 3d modeling started intensively. But there was still some design adjustments that we had to do on the 3d model directly to make sure it was A1.

While we’re at it. Here’s the making of the alien by Pierre-Olivier Couture-Goulet from the concepts to the final render. Our inspiration came from the alien in the cover of the original game on the NES.

Animation

The most important move our character performs is the iconic Contra jump. These jumps had to keep their original flare, so as to keep some of the game’s essence. However, during early animation tests, Jimmy found out that trying to recreate the jumps 100% like in the original NES title would break the suspension of disbelief in a more realistic context. The jump then became a more nuanced feat of acrobatics, with momentum stopping after a certain amount of flips. This also allows for mid air gunplay to occur, another fun feature in the game.

As for the additional mechanics like the hyperjump and the Vanquish inspired slide, they were added while we were trying to diversify what our character was able to do to kill aliens. They also infuse our character with a kickass personality. A lot of shooters in recent years have been devoid of life; we aimed to break from the pattern by having a character who could do more than just aim and shoot.

 The mechanics weren’t especially challenging to integrate gameplay wise, most of what they do is slightly alter the character’s movement. The most challenging part was making them look dynamic and satisfying to use. This was mostly achieved through animation, particles and VFX.

Overall, our goal with handling all the animations was for them to blend well together while still keeping the gameplay fast paced and exciting.

 

Weapons 

When we started messing around in the engine while integrating the weapons it was obvious that shooting a straight line wasn’t very satisfying and it wasn’t the experience people are looking for in a game. So we progressively started adding bullet spread and recoil and the weapons started feeling right and much more satisfying to use. We then continued by adding particle systems, bullet casings, refraction, and camera shakes so that our weapons had a more organic feel to them. This was all before we had the actual gun model integrated in the engine and it just improved tremendously from there.

8)Overall, what were the biggest challenges in creating such an amazing and huge project? What were the difficulties and how did you manage to overcome these challenges?

We had a lot of difficulties to find an AI that worked well. Right now, their state is somewhat mediocre in our opinion. They still need a lot of work but at least they are not game breaking. As we wanted an AI that jumps everywhere the player goes, they also got stuck everywhere. So we had to make sure the alien made successful jumps, but also make sure that the alien doesn’t land on a region where the navigation mesh can’t reach. When that happens, the alien will just stay in an idle forever. This is a problem we can’t get rid of and trying to find an alternative way of doing it would cost us too much time. So what we did finally was to program a check that if an alien is in an idle position for more than 5 seconds, it automatically launches the alien up and forward. This fixed around 95% of our problems.

The character animations were also one of the biggest challenges we had to face. Our animator Jimmy made at least 50 different animations for the character that had to be smoothly integrated in engine. Because this is a school project, and that we had a limited amount of time to realise the project, the final result is not as polished as we wished it could have been.

The shaders for the character were challenging for William. It was the first time he tried making skin and hair shaders in UE4 that had to look optimal in both natural and artificial light. With the help of Christopher and a lot of work,

Moreover, the actual fact that we had only 8 weeks to develop the game was in itself a big challenge. This constraint made the pipeline a little bit more chaotic and organic than usual. We had to do a lot of back and forth between the team members to make sure everything would fit at the end. We had to develop an Art Direction in the same time lapse we had to produce this Art. So it’s been a challenging but really rewarding experience.

What really helped us create was the motivation the team had for the project. The final result shows how dedicated we were from start to finish to make a fun and enjoyable game in a short time. As of this article we had over 30 000 downloads and we generated a lot of interest around the web. After our last semester this winter, we’ll graduate in April 2018.

Join discussion

Comments 3

  • Justinas

    Awesome, downloading the game right now! I am a digital contents student majoring in game programming, Busan, South Korea

    0

    Justinas

    ·5 years ago·
  • Mr Motivator

    sexy af. good job!

    0

    Mr Motivator

    ·6 years ago·
  • duplivert

    This is outstanding work!!!

    0

    duplivert

    ·6 years ago·

You might also like

We need your consent

We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more