Release Trailer

We’re excited to announce New Atlas – available for your enjoyment, now!

Make your way through the city of New Atlas, in search of the city’s lucrative new drug, luma. Use your specialists’ unique abilities to conquer all who stand in your way.

Develop strategies to outwit your opponents and see how many rounds you last!

 

Download New Atlas here: gamejolt.com/games/new-atlas/313898

 

ombatshotCombat2

Advertisement

Buildings, characters and animation

Environment

Our game is based in the city of New Atlas which is a mining city that has been mining a substance called Luma. Luma has been used as fuel for many years and recently started being used as a drug. The city broke down and started rioting.

The atmosphere of the city is quite happy with dark undertones. We went for a 20s – 50s American architectural style for the buildings, resembling the type of houses you’d find at a Disney amusement park.

I modeled a house to give ourselves an idea of what we wanted. Aidan worked on a building generator which takes the pieces I modeled an tiles and stretches them to fit in all kinds of house configurations. (Blogpost on that later)

Just scaling the houses and giving them some colour already looks pretty decent. I also worked on a balcony which can be seen on the image below.

Houses


Characters

There are different types of characters. We have the regular units who can be either melee or ranged. The regular units are civilians of the city and will all look relatively similar with some minor changes such as different armor, weapons, colours,…

The specialist however behave more like champions or heroes like in MOBA games. They are outsiders and will look completely different than the other units.

  • Regular Unit
    • Melee
    • Ranged
  • Specialists
    • Commander
    • Healer

Before I started actually modeling unit I wanted to make sure that we could reuse skeletons and animations for each unit. Having the make or find new animations for every unit variation would be ridiculous and take way too much time.

I started off modeling a basic human mesh to test things out with. The things I wanted to test were:

  1. Reusing skeletons for different meshes
  2. Cloth simulation
  3. Animating with Maya

BaseUnit

I used Mixamo to rig and animate the regular unit. The rigging isn’t perfect but will do for our project as the camera is always pretty far from the character. The below characters use the same skeleton and animations. I made the character on the left to get an idea of how long it would take to complete a full character. Being able to reuse parts of the mesh and fully reuse the animations will make sure that next units will go a lot faster.

To use the same skeleton for every unit I use the skeleton Mixamo generated and bind another mesh to that using Maya. Maya’s auto-skinning works surprisingly fine and will suffice for what we need.

09c8505981c1e2da3797fab539ecb85b

I also experimented with animation blueprints and animation blending. I now have a pretty clear idea of what the workflow for a character is to get it from model to implemented in the game.


Animation

While Mixamo is fine to use for the regular units, we will need to do the animations for the specialist ourselves. For the custom animation I wanted to use Maya. In the past I have always run into problems when rigging and animating with Max. However, I have never used Maya or animated a character before so this was quite the challenge.

The first specialist we want to add is the commander unit Uki and her mount Aput. We did not make it easy for ourselves by choosing a quadruped with a character riding on them as a first character. Luckily I got used to Maya pretty quickly and all steps are quite straight forward. Animating still is a time consuming task that we can’t really speed up.

The commander is modeled by Michelle.

Above you can see the animations I made. They’re far from perfect but that was expected from the circumstances. They are still fine for now and can always be polished afterwards.


 

Abilities

A big part of our unit and item identity will be defined by their abilities. Most importantly in the current design our “Specialist” units will each have three. To address the need of a large amount of abilities I have tried to implement them in a flexible and expandable way.

Subclass Sandbox

I based my approach on a design pattern where a subclass implements most of its behavior with functionality provided by the base class. This pattern is called subclass sandbox. In our case the base class provides several functions to apply stat-altering effects to units in different ways (target unit, target area, units in an area,… ). The effects provide the unit with the correct information on how to alter its stats and what particle effects to spawn, each unit handles its own effects.

The base class has an Activate() method, the subclass overrides this one to implement its behavior with base class operations. More specific functionality needs to be coded inside the subclass. Because we’re using Unreal Engine, the Activate() is an event to be used in subclass blueprint. The base class also has Select() and Deselect() functions to be called by the player to toggle the correct ability casting feedback such as a cursor change or decal to indicate the affected area.

 

ApplyEffectToUnitsInArea.PNG

BlueprintCallable function to apply effects to units in an area

DecalGreysOut.gif

This decal is enabled on ability selection. It indicates affected area and becomes grey when out of casting range

AOEEffecTToUnits.gif

Healing effect applied to units in area

TargetedDot.gif

Apply damage over time on target

PBAOE_Heal.gif

Point blank area of effect healing

PassiveSwap.gif

Point blank area of effect that can be swapped for a different one

Unit Selection & AI Behaviors

In the first blog post from Bagged Milk Studios, AJ and Brian will be reporting on what they’ve been working on for this first week of the project. First AJ will explain how he implemented unit selection, then Brian will explain how he made the units come alive!

Unit Selection

In almost every real-time strategy (RTS) game ever made, units can be selected either by dragging a screen-space box around them (called boxing), and by clicking on units directly. This seems like a simple feature, but it comes with a plethora of unforeseen problems. The majority of my time last week was spent experimenting with several methods for selecting units to find the best one.

For box-selecting I ended up choosing the method of checking each unit’s minimum and maximum bounding box points in screen space against the selection box. This is an efficient solution which seems to work well with the size units will be on screen. A unit’s bounding box is visualized below.

unit-hit-box.jpg

A unit’s bounding box, with the minimum and maximum points highlighted in white

For single unit selection, Unreal Engine supplies a few built-in functions which make it trivial to determine if a unit is under the cursor when clicked.

2017-11-17.gif

Selecting units using box-select then giving selected units a target location

Unit Behaviors

AI is going to be a big part of our game, so it’s important that we have strong behaviors to provide a challenge for the player.

We need to give the units the ability to move! Whenever the right mouse button is pressed, and there are units selected, a check is made to see what object is under the cursor. If there is one, we need to check if the object selected was indeed an enemy unit! If it was, the unit will move in range and start attacking. If it wasn’t, it will just keep following this target (If you target a friendly, your unit will follow that friendly). If there was no object, we make the unit go to the clicked location. We run into some issues though. What happens when the unit you’re clicking is dead? In that case, it will use the click location, instead of setting a target.

Let’s say you right-clicked an enemy, what happens when you get into range? Your unit will start attacking, and it will take into account damage, rate of fire, enemy health and armor. Your damage will apply every X-amount of seconds (depending on rate of fire). The damage is then reduced by the enemy armor, but clamped to be between 1 and the damage, so that every unit will always do 1 damage to a target with lots of armor. Once a unit’s health hits 0 or bellow, it dies. Health is indicated with a health bar above the unit.

mdlrhft

Unit health bar

When a unit dies, it will go into rag doll mode. This makes killing a squad more immersive, as you can still see the bodies after the fight. We’ll have the monitor the performance of this.

ragdoll

Unit dying: Rag doll

 

 

Thanks for reading! Stay tuned for more updates as the game progresses to completion!