Fun with shaders

After getting the debacle with my git repo fixed up, I decided to work on some shader stuff.  I’ve never made a shader before, so I started with some great tutorials Makin’ Stuff Look Good in Unity, a great series of tutorials for Unity devs.

I started out with the tutorial on Winston’s barrier from Overwatch and this is what I had:

Initial Fire Shield
Initial Fire Shield

It looked pretty cool, but wasn’t much different than the tutorial, and also the hex pattern looks far more sci-fi than fantasy RPG.  I made some modifications using temporary PNG assets that I reworked the RGB channels on and ended up with this:

Arcane Fire Shield
Arcane Fire Shield

Much better – arcane symbols work more nicely than the hexes.  Of course, this will be developed over some time to get a better effect, then slightly modified for different elements (there are 12 of them in the game).

Anyone following this at all might be asking: “why the heck are you working on shaders and effects when the game systems aren’t done yet?”  I think it’s a valid question.  Most blogs and books on game development seem to point to it being better to get functionality in, then make things look good.  There’s probably wisdom in that, and I’m sure it works for a lot of people – maybe most people.  But I thrive in chaos.  I also have a bit of the ADD.  And being a (semi-)solo developer, I have to really work on all of the things, so…  sometimes I jump around to not get bored or when I get stuck on something and want to revisit it later.  There’s nothing wrong with this.  Always find the work flow that works for you, rather than trying to fit yourself into the work flow you read or learned about.

Sometimes things just go wrong…

So, I lost 1-2 weeks of development time because I hosed up my git repository.  Anyone else ever do that?  Anyone?  *crickets*

Well, since the whole point of source control is to protect you from these things, clearly I did some very bad things.  Turns out it was a series of bad things.  First, I change my asset serialization to force text.  That part was fine, except then I had a failed merge and merge conflict markers got dumped into the files – which can’t happen with binary files.  At the same time, I was setting up LFS for binary files.  I’m not sure what I did wrong there, but LFS half-worked.  At some point files duplicated, went to LFS but then the pointers in the repo were overwritten by the original binary files.

At this point, I was hosed up good.  My repo was well over it’s limit, I couldn’t push anything (not that I wanted to), and was having a hard time finding a commit I could roll back to that was good.

Now, I have a working copy of my project.  But it doesn’t work for everybody, so something is still amiss.


At least it loads now, right?