Know more about Unforgiven

It's been 2 years since Unforgiven was created and we haven't dedicated a post about what it is like for us to have been together this long.

It all started 2 years ago after we took the decision to create games for a living. As things have progressed, the company's vision started to take shape and we set on the path we are now.

To put it simply, we are just a group of friends who want to create games that makes us proud. Everyone has good memories about how games have affected their lives in many ways, and we want to take the opportunity of creating an indie studio to give back to the world what it gave to us, be the experiences, the good feelings and thousands of hours of fun.

Since we value the time invested by the players who try our games, we are making sure that they can fully enjoy themselves with our work. One of our goals is that the player is happy to spend their precious time playing the games we make. This goal gives us a lot of pressure and pushes our desire to learn more about how to make games in all the areas like art, programming, production or design. Learning is a never ending process and we are grateful to be on a journey where we are all learning and at the same time sharing what we love to the entire world.

Many people don't know it, but we are only 6 people here at Unforgiven, and that forces us to wear many roles in the company.  The team is formed by Mauriccio Torres (3D Artist), Ramanand Purizaga (Programmer), Guillermo Rossell (3D Artist), Andres Revolledo (Programmer), Antonny Vega (3D Animator) and Vania Torres (Concept Artist). However, we still want to specialize in what we enjoy most, be it art, animation, programming, you name it. It's a great feeling to go work to a place where you can tone up your skills, it feels very refreshing and that's something we really enjoy!

We all have common interests here, we love fantasy and RPG games and the kind of games we make reflect our taste in those genres. That led us to decide that we needed to create our own IP such as the Final Fantasy games, Zelda and many more great games.

It took around 5 years to hone our skills in order to turn Stage 3 into what it is now. Since the very beginning, we determined that it was essential to study the basics of game development and all the techniques involved in the process. Polycount became our favorite place to learn and we highly recommend it to anyone who wishes to enter the industry to go into that forum, it is full of invaluable information! 

It's amazing to see what we have accomplished so far and the best is yet to come!

At the very beginning of Unforgiven's existence, we started working on assets for Unreal Engine Marketplace. This decision proved to be very useful to us because it made us learn new techniques and the entire asset production pipeline. Looking back, we are amazed on what we did during that time since we can do better now. But our real vision was to create games that everyone can enjoy around the world. Without Epic, we wouldn't be able to do what we do today, they helped us by creating a great platform to monetize our skills and gave us a tool set that comes with everything we need to create the games we want.

Stage 3 is evolving a lot, the first time we showed it in Colombia, where we worked non-stop for 2 months to create an Action RPG game. It wasn't even called "Stage 3", it was called "Le Blank". Most of the reactions were related to the "Cool" factor and people seemed to enjoy it a lot. It was the first game we created and it served as a proof that we could make something bigger, given enough time and developing consistent discipline. And right after it, we showed it into a local convention called Mas Gamers Tech Festival where we had a blast!

This is the first teaser we made to be shown around in Colombia during the MICSUR 2016 event

A screenshot of Stage 3 in its early stages when it featured procedural generation. (Formerly called LeBlank)

A screenshot of Stage 3 in its early stages when it featured procedural generation. (Formerly called LeBlank)

Mauriccio on the left and Ramanand on the right showing Stage 3 during the  MICSUR 2016  event in the Peruvian booth

Mauriccio on the left and Ramanand on the right showing Stage 3 during the MICSUR 2016 event in the Peruvian booth

From left to right: Antonny, Mauriccio, Guillermo, Andres and Ramanand during the  Mas Gamers Tech Festival

From left to right: Antonny, Mauriccio, Guillermo, Andres and Ramanand during the Mas Gamers Tech Festival

Ramanand in the booth with the LeBlank banner soon to be named Stage 3

Ramanand in the booth with the LeBlank banner soon to be named Stage 3

Because 2 months wasn't enough, we developed a more polished version of the game and we went to the GDC to show it to the public and other companies. The reaction was the same as the previous version, it seemed to give the effect of "cool as hell" factor, that gave the attention of many developers and some publishers. We even got our development kit to develop Stage 3 for PlayStation!

Latest teaser for Stage 3 used in our greenlight campaign

Stage 3 screenshot showing the new art

Stage 3 screenshot showing the new art

Stage 3 screenshot showing some gameplay

Stage 3 screenshot showing some gameplay

We managed to show the brochure we made to Tim Sweeney! 

We managed to show the brochure we made to Tim Sweeney! 

Mauriccio carrying the box with the Play Station 4 dev kit in it.

Mauriccio carrying the box with the Play Station 4 dev kit in it.

After that trip, we focused entirely on the IP and reworked the game almost entirely. We reworked the characters, story and the entire world. By that time, we saw the potential of VR and we wanted to translate what we created for the Stage 3's universe into a game that is completely different from what we have tried before. This game would focus on an important character called Azaria and will introduce new characters and enemies that you will find in Stage 3.

The first time we showed Stage 3: Azaria was in a local convention called PGX. Despite being a super early version which didn't show our entire vision for the game, the people enjoyed it a lot. They even waited for 3 hours to play the game! 

Stage 3: Azaria, our new VR game

Stage 3: Azaria, our new VR game

Gameplay of Stage 3: Azaria

Gameplay of Stage 3: Azaria

Environment done for the PGX event

Environment done for the PGX event

People waiting for their turn to play the demo of Stage 3: Azaria

People waiting for their turn to play the demo of Stage 3: Azaria

A local news outlet doing Guillermo an interview

A local news outlet doing Guillermo an interview

Play testing of Stage 3: Azaria in a local convention

From young to old people both males and females enjoyed the experience. That is something very rewarding for us since it's the reason we are doing this and commit to work everyday! Hell we've even been on national TV 3 times and it encourages us a lot when the work being done is appreciated.

We are closer than ever to release the first Demo of Stage 3: Azaria and we are working very hard to deliver a great experience to you guys. It has been an amazing journey so far! We can't wait to see what other amazing things come to our life as we pursue our mission and purpose.

To contact us leave a comment below or you can send us an email at contact@unfgames.com. See you guys in the next blog post!


Koa Dev Diary - Modular Knights !!

It has been a while since we developed some knights for the first time right?!  (http://www.unfgames.com/blog/game-ready-enemy-knights-giveaway)

So in this opportunity we want to share with you something we are currently working on for a future project !!

Modular Knight Characters !!!


Right now they are on high poly so the next step is to make the low poly versions, UVs and a lot of bakes!

Meanwhile you can check just a 4 variations of thousands available to customize the character:

And here are some render tests to have fun!

Don't hesitate to post your comments if you have any!


Tutorial: How to make Spinning blade using Blueprint

Hey! I'm Ram, Unforgiven's programmer. Today, I wanted to share a little tutorial with you guys, because it shows some interesting concepts that you might use while working in the unreal engine. This blueprint is a part of the new Customizable Deadly Traps, which is coming up soon for Unreal's Marketplace.

Here, I'll talk about timelines, events and instanced static meshes. First, lets see what we are going to accomplish :

Normal spinning blade trap

Any number of blades

Initial Setup

Lets start by finding the meshes that we will use. We need the base of the trap and the blade that will be spinning. You can use the meshes that I used as placeholder when making this blueprint. ->Blade mesh<- and ->trap mesh<- (Click to download)

Now that we are ready to create the blueprint, we will create an actor blueprint with a static mesh component and an instanced static mesh inside.

Change the static mesh in both components.

Change the static mesh in both components.

Also let's set the z location of the blades to 153.

Construction Blueprint

Here's the picture of the construction blueprint

Click image to see it in full size

It won't work properly, but you can use this pastebin as an starting point of the construction blueprint if you don't want to start from scratch, just click on download raw and then copy and paste it in the blueprint.

In the construction blueprint, what we want to do is set the blades up, and also the collisions, so we can do something when a pawn overlaps any of the blades. To start with it, we are going to create a integer variable with the name NumberOfBlades that will be used by the for loop to help us add as much instances of the blades as we need. Set the default value of this variable to 1. Also create a vector variable with the name ModifyBoxExtentBy and a default value of (0;0;0) just in case we are not satisfied with the box collision extent.

Spawning the blades is easy!

What we need to keep in mind is the rotation and location that we are going to use to spawn each blade, since our blade has the pivot at the side we will only worry about the location. Using simple math we take 360 and divide it by the number of blades we have. (ex. 1 blade -> 1 blade with 360 rotation, 2 blades -> 1st blade with 90 rotation and 2nd with 360, etc).

After spawning the blade it is necessary to attach to it a box collision component so we can do something when the blade hits a pawn. Now that we set that up we find ourselves in this problem.

If we use the same transform for the collision boxes it generates a problem, because the pivot for the collision box is in the center.

To solve this problem, we are going to use polar coordinates.

θ is the angle in the image

θ is the angle in the image

With that settled all we need to do is the conversion from polar coordinates to Cartesian coordinates.
That marks the end of the construction script!

Event Graph

In the event graph, the first thing we are going to do is to create some variables that we'll be using for our next step:

  • Bool IsOn | default value = true | If true the trap will start active.
  • Bool IsSpinning | default value = false | If the blades are spinning at full velocity this will be true.
  • Float RevsPerSeconds | default value = 1 | Revolutions per seconds.
  • Float TransitionRate | default value = 1 | Play rate of the transition. Greater number = faster transitions between on and off.
  • Bool UseIntervals | default value = false | If checked the trap will be in the on state for an interval of time before switching off. This behaviour is used for the on and off states.
  • Float StateTimeinterval | default value = 3 | Time in seconds that the trap will be on or off.

Now lets take care of the event that is going to fire every time a pawn begins to overlap a box component created in the construction script.

Event BeginPlay

Click image to see it in full size

What we are doing in the event BeginPlay is going through the CollisionBoxes array and binding an event to OnComponentBeginOverlap, then renaming that event to HittedSomething. When fired, the event HittedSomething will cast the actor to a pawn and if the cast is successful it will execute anything we want.
After the loop is completed we will check if a boolean called IsOn is true and if it is, we will call a custom event named TurnOn.

Event Tick

Click image to see it in full size

In the tick event, we will apply the rotation to the blade(s). With a branch node we check if the trap is On and if it's spinning. Then we proceed to add the relative rotation to the blades in Z. Multiplying the RevPerSeconds by 360 gives us how much rotation should we add in a second and multiplying that value by the delta seconds gives us how much rotation should we add every tick.

Custom Events TurnOn and TurnOff

Right now we have a working blueprint that spins if it is on and when it hits something an event fires but there is no smooth transition between the states on and off. So these events are going to help us in that task and also provide us with a way to easily change the states during execution.

Click image to see it in full size

Let's look at the event TurnOn first. This event sets the isOn variable to true and then uses a for each loop to activate the collision of all the collision boxes. When this loop is completed the timeline named TurningOn will play from start.

One point at time 0 and value 0 and the other at time 2 and value 1.

In each update of the timeline we will add relative rotation to the blade and when it is finished the direction is going to be checked. If the direction is forward it means that the blade was in a off state, is turning on and now its at full speed so IsSpinning should be true. Also we should disablethe collision of the blades because if they collide with something they are going to cut it and not bump it.
Finally, we check if we are going to use intervals, if we are using intervals the time will be set through a delay node that will call the TurnOff event when time is right.

The TurnOff event will be similar to the TurnOn event but with minor changes. instead of playing from start the timeline will reverse form end and when it finishes we will set the variable IsSpinning to false, enable the collision of the blades and disable the collisions of the boxes.

And that's it!

Now you have everything you need to make your own Spinning Blades using Blueprints.

If you liked this tutorial, give us a like, share it with your friends and let us know what would you like to see in the future for more tutorials!


Unforgiven Team


Game Ready: Enemy Knights Giveaway!

Hey! taking advantage that the global game jam is just around the corner, we've taken the chance to release some of our old assets!

Feel free to use them howhever you want in your projects!


I hope you find them very usefull for your current projects or for anything you plan to do in the future.

Do you like them? Is there anything we are missing right now?

Lets us know in the comment section below!

Thank you !