Keeping Inspired

Last night I spent 6 hours coding the layout of buttons and the logic associated with level ups, ability points, and managing them, and then decided that the path I was taking needs to be thrown away completely and re-factor the rest.  This isn’t the first time something seems brilliant on paper, but begins to fall apart when it’s out of the gate.  This one was especially annoying though and it really made me think about whether all the sacrifice is worth it.  All the late nights, frustrating bugs, and slow progress adds up.

Today thoughts of condensed unit descriptions and more detailed special abilities dance in my head as the advantages of my gut wrenching decision settles in.  We have been working on Cairn for just over a year, we have hopes for beta testing this month, and we have almost another year of development ahead of us.  Sometimes it feels like trying to empty a lake with a spoon.  Yet here I am editing descriptions, writing pseudo code, and preparing to get back in and knock it out.

I want the game to succeed and I want to make money, but I know that both of those things may not be in our future.  All I know for sure is that we are going to release an amazing strategy game and it will stand as a love letter to all the real time strategy games of old.  The idea of having a game that can stand along side Myth: The Fallen Lords, Warcraft 2 and 3, and so many other great RTS games that have kept me entertained when I was young and keep me inspired today.

I think that’s enough rant for one day.

Meet the team! – Adam Waters

Hello everyone, I’m Adam Waters and I am a life long programmer and new born game designer.  I started programming professionally in the business world and have been creating some of the worlds most boring applications for nearly a decade.  Only a few years ago I found myself as a volunteer designer on the table top miniature game Warlord and it’s expansion the Savage North.  After over three years of balancing spells and special attacks, manipulating unit costs, writing fictional biographies,  and helping to create an incredible game overall, I decided to combine my skills.  So indie game development here I am.

The  fun part of my job as a member of Embalmit comes from creating the lore in our games.  All of us have a part in shaping a games direction, but I’m usually the one who fills up pages to describe some half broken world or writes out an emperor’s speech.

The addicting, infuriating  and most rewarding part of my job is the programming.  I’ve been programming at the whim of corporations large and small for years, but now I can use all that experience to create something from the heart.  We get to create experiences not just programs, and that is incredibly rewarding.

Since the creation of Embalmit, I have been gathering our small team of heroes for something great.  Most of them have already announced themselves, but more are sure to come in the near future.  So sit tight, buckle up, and enjoy the ride.  Embalmit is just getting started.

 

Cairn 0.0.6 – Alpha Build

We are wrapping up another sprint and with that I release another alpha build to be tested. The game is much more stable this build than last and includes a lot of new features.

Overview:

The primary goal of this build was to fix bugs that became very big issues now that special attacks were working.  We also added lots of assets like 3 new sprites, a dozen special effects, and unit sound effects.

Important Changes:

Beautiful new sprites.  Rodrigo really knocked it out of the park with this new, updated sprites.  Check out the scrapper, fighter, and magician.

Our two big bug fixes are out of the way.  The sprite flicker and the collision detection issues should be solved now.  We made a lot of good connections with the 2D toolkit guys and some of the Unity dev community to fix the issues.

Unit Sound Effects are working.  The only unit wired for sound is the Fighter.  So spawn him and listen to him attack.  He should make noise when he spawns, attacks, moves, is selected and dies.  Game rotates through hit sounds, but they sound similar and are very mild right now.  They need more beef cake.

3 fully functional Slayers.  Charging, tossing, multi-spawn, instant, line aoe, healing, & status effects.  So much awesome stuff crammed into those 9 special attacks.  It is very beautiful and adds a lot to an otherwise simple alpha build.  Each build will see the release of more slayers & special attacks.  Next version will see the addition of Thermocrat & Kajarii Adepts.

Enemy selection.  Instead of only being able to select your units, you can select enemy or neutral units and see their stats.  You should not be able to control those units and you can only select 1 at a time through a single click.

Full details past the break

Unity3D Collision Detection Problems

In one of our most recent builds we found that collisions detection wasn’t working.  For those that don’t know, collision detection is exactly what it sounds like.  It is code that recognizes when two objects hit each other.

In Cairn we instantiate special effects & projectiles that use colliders to detect whether it has hit a unit. If it hits the unit it does damage, grants a buff, or assigns a penalty. The problem was that even though units were being hit, the collision detection wasn’t triggering.  I recorded a video of the issue while to help a few programmers who were helping to fix it better understand the issue.

Past the break I’ve got some the cause and solution to the problem.  Hopefully all my headache will help someone solve the issue more quickly in the future.

Continue reading

Cairn Alpha 0.0.4

We are wrapping up another sprint and the release notes for the latest build can be found below!
Main Features:
Sprites -
Our first sprite has been scripted and imported into the game.  The unit is known as the Scrapper.  He pounds in the faces of his enemies with his glorious fists.  The little guy is our test dummy for smoothing animations, timing attacks, testing rotations, and finally giving the game the look it deserves.
Sprites have replaced the capsules on all Grunt level units.  They all use the Scrapper sprite, but I have changed the color of each unit.  So play around with them all you want.
Release Notes:
  • Unit Stats
    • All Grunt Stats have been updated to match Unit Stat Document
  • Animation
    • Added Toolkit utilities to the project
    • Sprite and Animation Script Prefabs created
    • Rotation & Action bugs fixed
  • Music Manager
    • Starts on random song
    • Repeats playlist
  • Input Controller
    • Double Click Selection – grabs all units of the same type when double clicked
  • Bug Fixes
    • Mini-map
      • Fixed Bug that sent camera off playable area
    • HP Regen
      • Fixed In Combat Bug, now hp only regens outside of combat
      • Fixed Regen values for all Grunt class units
    • XP & Level Up
      • Fixed mass level up issue

Unity3D Scaling GUI With Aspect Ratio & Size

Unity3D is a great tool and I’ve been very fortunate to have such a great product to build this game on.  Everyone knows that the Unity GUI tools are a little frustrating to work with though.  One of the issues is the GUI’s size.  The next is making sure it works with all aspect ratios.  Since unity allows us to release to PC, Mac, iOS, and android it’s pretty obvious how this can get annoying quickly.  So to help others, here is how I solved these issues.

Creating the GUI 
When starting off the best way to design the anything with Unity GUI is to hard code the values at whatever resolution you are currently working in.  Keep it consistent and you will have perfectly usable interface in no time.  Here are some helpful links for the Unity GUI:

Scaling the GUI with screen height & width
The easiest way to scale your GUI with different sized screens is to use Unity’s GUI Matrix.  This matrix allows you to hard code the size of your GUI, and will automatically stretch or shrink your GUI to match the users actual resolution.

//set up scaling 
//The native_width & height are the resolutions you have hard coded
float resX = Screen.width / native_width; 
float resY = Screen.height / native_height; 
GUI.matrix = Matrix4x4.TRS (Vector3(0, 0, 0), Quaternion.identity, Vector3 (rx, ry, 1));

This works great, but if the aspect ratio changes then your GUI will be stretched to match it.

Scaling the GUI with Aspect Ratios
To get around this limitation we have to take a more manual approach.  We scale the GUI with the Height of the screen.  By using the height to scale the interface you won’t be able to hard code any values, all of the hieghts and widths will be derived from a fraction of your screen.height.
We decided that our interface should take up about 1/5 of the screen height so that has become our unit of measurement.  So you’ll want to declare a variable with this size in it, we’ll call this variable guiBaseUnit.
Our minimap on the left side of the screen is square, so it’s height and width are both set to guiBaseUnit.
Our control panel features all of our controls, so it’s a larger rectangle that uses a lot of screen space.  So it’s height is guiBaseUnit, but it’s width is guiBaseUnit * 2.5.

This is probably not the cleanest way to create the GUI, but it does create a better user experience and creates a reusable interface system.

 

RTS Combat System

I think a lot about what I want out of a combat system in my RTS games.  I love hard counters, but I feel most games use them incorrectly.  A rock should smash the scissors, but that rock should see some scratches along the way.

Our system has four types of normal damage.  They are Cut, Bash, Stab, and Wreck.  Depending on what type of armor they are attacking they can get a damage bonus of up to 50%, making it very important to pay attention to your offense and defense.

We have three types of armor.  They are Light, Heavy, and Construct.  I didn’t want to focus on what exactly a unit is wearing, so instead we focus on easy to see and understand.  Characters are designed with the idea of no middle grounds so it’s easy to know their armor type at first glance.

The balance between the damages and the armors are split up on usefulness.  If something is very good against one type it gets nothing against others, but some weapon types are useful against multiple types.

Armor VS Weapons—–Light—Heavy—Construct
———————Cut——150%—-100%——100%
——————-Bash——100%—-125%——125%
——————–Stab——125%—-125%——100%
—————–Wreck——100%—-100%——150%

These bonuses are simple, clear cut and consistent.  So the major rules are as follows:

  • Cut up the light armor
  • Bash the thick armors
  • Stab the living units
  • Wreck the buildings and Gears
Oh, but you don’t know what Gears are yet…  Maybe next week…  Until then here is some old video footage of combat.

 

We Call Them Slek

These are the approved concept images of the slek. A race of intelligent creatures for our game Cairn. They are savage in appearance, but aren’t as ferocious as they seem. Some slek undergo a binding with another organism, a sort of symbiotic relationship that creates some pretty bad ass units.
We’re not sure how strongly the slek will be featured in our first release of Cairn, but they’re awesome, so I thought I would share.