Monday, November 20, 2017

How to set up a fractured model in Unreal 4


Achieving the effect shown above isn't nearly as difficult as some might think.  By taking a simple model, splitting it up into a ton of pieces, and then replacing the fractured model with the unfractured one upon a death event, this stunning effect can easily be achieved in whatever game you might be creating!

Setup

In order to obtain the assets required for this effect, all you need is something 3D modeled, both in its fractured and whole form.

Fracturing a model is a simple process, utilizing the ability to run custom scripts from 3DS Max and/or Maya to have a program fracture the model at random into a desired number of pieces that we are able to specify. 

Below are links to download a 3DS Max and Maya script that when ran will fracture whatever model is currently open in the game.


Once the model has been fractured, save it as a .fbx (or whatever other format you use for your game), and import both the fractured and whole model into Unreal.

In Unreal

Once both models have been imported into Unreal, you might notice that the fractured model imported each individual piece of the fractured mesh as a separate mesh object.

If this has happened, a quick fix is necessary.  Create a new actor blueprint, and add an empty object called Root to it.  Then, under Root, add in all the pieces of the fractured mesh as static mesh components.  Make sure all these pieces have physics enabled.

Once you have the fractured model assembled into a blueprint, scripting out the process of replacing the whole model with the fractured on is quite simple!

Open the blueprint on the whole model.  Depending on how you plan to make the object break will determine how the object will know when to replace itself with the fractured model.  In this instance, I am using a float variable that keeps track of the current enemy's health to determine when the model should fracture.

Once the condition for the fracture has been met, all you need to do is to spawn in the fractured actor in the same position as the whole actor, and destroy the whole actor.  An example of this is shown in the screenshot below:


It's as simple as that!  Once health is less than or equal to 0, the fractured model will be spawned at the position of the whole model, and the whole model will destroy itself.  All that will be left is the fractured model in the exact position of the once existing whole one, left to be affected by gravity and fall apart!


Monday, November 13, 2017

Unity3D - A Game Engine Review

Image result for unity 3d

Unity in a Nutshell

Unity3D 2017 is the current version of one of the most popular 3rd party game engines open for the public to use, completely free of cost.  It supports both 2D and 3D development, and has been praised for its easy of use when it comes to learning the engine, porting to different platforms, and developing for mobile especially.  The engine supports both UnityScript (which is just a modified version of Javascript), and C#.

My Experience With the Engine

I started off learning Unity when I decided that I wanted to work with computers, back in November of 2015, my junior year of highschool.  I had recently started teaching myself Javascript through Codeacademy, and decided after making a bunch of simple calculator programs that it'd be cool to learn how to make a game.

Unity was the first engine I stumbled upon, and due to the excess of tutorials I was able to find on both their website and Youtube, I figured it couldn't be too difficult to learn.  I began right away, trying to learn how to work the very basics of the engine.


Once I got the basics of movement and manipulating objects in the scene view, I decided I was ready to create a complete game.  So, with almost no programming, texturing, 3D modeling, or game design experience, I set out to create a newer, better version of the Call of Duty: Zombies mode.


Shortly after realizing that this was more or less an impossible task for someone with no real game development skills, I moved onto a new project.  Something simpler.  A standard Unity horror game.  I spent months working on level design and improving my programming skills, including drafting up a system that would dynamically search for all the doors in a level, save their open/unlocked states, and update based on what parts of the level were loaded.  Sure, it took me 12 hours of straight frustration, but the entire experience was a learning opportunity.

I was so sure that the game was going well that I planned on selling it in October of 2017 (which obviously never happened), and released a public demo for people to test and give me feedback on.


Upon realizing that even my idea for a relatively simplistic horror game was way beyond my scope, I started yet another project, this one by the name of The Great Geometric Multiverse Tour.  This one, however, I am very close to actually completing, and have begun the process of incorporating an LLC in order to sell the game across platforms like Steam and itch.io!

Things I Like

Unity has a ton of features I love.  It'd take far too long to go into detail on them all, so I'll list out just a few.

  • Easy to manage scene system.  Very good for transitioning between levels.
  • Prefabs, and the ability to update all objects in a scene by only modifying one base prefab.
  • Intuitive component stack, making adding, removing, and modifying both entire components and their values on an object very simple.
  • The implementation of C# as a main language, making programming anything in the game easier and more simplistic.
  • The ability to spectate both a game view and scene view side by side, even while the game is running.
  • Ease in porting to a variety of platforms, especially various mobile platforms.
  • Intuitive and simple UI creation.
  • Huge store for free and paid assets, some of which I never start a game without!
  • Excess of online tutorials, even beyond the standard documentation and videos on Unity's website.  You'll never not be able to find someone with a similar problem to yours.

Things I Don't Like

There aren't too many things that I don't like about Unity, though the things that I don't like about it are pretty large.

One of my main issues with Unity isn't so much about the physical engine itself, but rather in the connotation that the engine carries with it.  Due to the fact that Unity is one of the easiest game developing engines to learn out there right now, a lot of people (especially new comers and the inexperienced) gravitate towards it to work on their first projects.  Like any art (because game development is an art), the first pieces created by the artist are, well, usually they're pretty awful. 

This is a negative for Unity.  Because the barrier of entry is so low, games made in Unity often are pumped out by those still learning the ins and outs of game development, and usually at a much faster rate than the more polished and professional games.  This gives Unity as an engine a bad rep, and people often think that just because a game was made in Unity, it automatically won't be as good as a game made in another engine, such as Unreal.

My other major gripe with Unity is the lack of a proper material editor.  This frustrates me, because one of the major competing factors between Unity and Unreal, as with all engines, is graphics capabilities.  This, if anything, should motivate Unity to have a built in material editor, similar to the extremely popular plugin called ShaderForge.

Beyond these two major reasons and the occasional bug or slight frustration that comes along with any piece of software, I think Unity is an amazing tool, and its worth should be placed on its potential rather than what might typically be made in the engine by those who do not put its full capabilities to use.

Monday, November 6, 2017

Overwatch and its constant state of unbalance - But should we try to fix it?





How is Overwatch Unbalanced?

Put simply, the thing that puts Overwatch in a state of never ending unbalance is the fact that the range of mechanics for each character are so wide and varied.  For instance, some characters like Reaper can teleport across the map, and deal massive amounts of damage up close, while characters like Orisa can shoot enemies from much longer ranges, all wide almost consistently being able to keep a shield up to protect her teammates and herself.

Due to this diversity in movement, attack, and defense mechanics, some characters will naturally balance and counter one another.  For instance. Junkrat, a hero capable of dealing massive amounts of damage in a short amount of time is a counter for a hero like Reinhardt, a character who is large, slow, and uses his giant shield to protect his team.  When put up against one another, Junkrat will most likely have the advantage, due to the fact that he is smaller and harder to hit, has a far greater range compared to Rein's hammer, and can destroy Rein's shield in a matter of seconds.

However, like most characters in the game, Junkrat has a counter as well, the most notable of which is a sky flying, rocket shooting warrior by the name of Pharah.  Due to her ability to almost constantly state airborne, she nearly always has the advantage over Junkrat, as his projectile bombs often don't have enough range to hit her so high up, assuming an accurate shot could be made at her anyways.  Pairings like this exist in Overwatch, though characters do not always have a specific hero to counter them and thus create a greater balance in the game.

Image result for bastion turret


Characters such as Tracer, a hero with the ability to move at extreme speeds across the map, is a character that does not have one specific counter.  Sure, she can be stunned or stopped from time to time by certain heroes's abilities, such as Mcree's flashbang or Junkrat's trap, but more often than not she is able to easily maneuver around these obstacles.  Another character that crucially lacks balance is Bastion, a robot capable of deploying himself into a powerful turret that deals massive amounts of damage very quickly.  While this ability leaves Bastion immobile, given the right positioning, it can often be nearly impossible to kill him, especially given the fact that he can heal himself whenever he takes damage.  Features have been implemented in order to reduce his power, though most would argue that they have been generally ineffective.

Should we fix it?

Image result for overwatch

What's interesting about Overwatch is that while so many people will be quick to complain that the game is unbalanced and unfair, rarely is any real solution proposed to fix the heroes.  This, I believe, is due to two major reasons.

This is perfectly true for whenever a hero is debuffed as well, such as the infamous time when Roadhog's hook no longer resulted in an instant kill almost every time for lower health characters.  Due to this, a huge amount of players begin to avoid Roadhog, and shifted over to dabble in the play styles of other available tanks.  Interesting enough, this led to the increased use in the newest hero was the time, Orisa.
The first reason is that it's just really difficult to balance such a complex game.  Every character is supposed to be fun to play, give the player a sense of purpose and the opportunity to master the mechanics assuming enough time is put forward.  Keeping this in mind, and in order to keep the core mechanics of most of the characters in tact, some abilities will be more naturally overpowering than others, with the possibility to go completely un-countered by any other hero just for the sake of preserving itself.

The second reason, which may just be a fortunate byproduct of the difficulty to balance the game, is the fact that the game goes through intentional cycles of unbalance, which then in turn begins to promote different play styles and the use of different heroes.  For instance, Overwatch has a community that often plays towards whatever the latest "meta" hero composition is, usually revolving around whatever hero has been recently buffed.  When Junkrat was given his second mine, a whole slew of new Junkrat players started showing up in each game.  When Bastion was able to heal while moving, a new wave of players trying out the new Bastion was seen.

Image result for roadhog

The constant shift of the current meta, determined by whatever new buffs or debuffs are given to certain heroes, might be entirely intentional on Blizzard's part.  While yes, this sometimes does actually cause the game to become more balanced and create a more equal playing field, it allows for change in gameplay to occur in between larger happenings, such as the release of new content or the seasonal events.

Considering the style of Overwatch to a lifestyle game, it is important as developers to keep the player base interested in the game.  What spikes more interest than change in the core mechanics?  It keeps players on their toes, gives them something to look forward to, and while not always agreed upon, it keeps the game fresh and new, allowing for the downtime between events and new hero releases to be all the less monotonous.

So how can we fix Overwatch's unbalanced nature?  Long answer: given the heroes currently available, we can't, not without either heavily modifying existing mechanics of certain heroes, or adding new ones to counter those who have yet to be challenged.  Short answer: maybe we shouldn't, for the sake of keeping the game thriving.  So long as nothing is so unbalanced it is more frustrating than it is fun, changing the game simply for the sake of changing it can be more beneficial than anything.