Activity (Last 30 Days)

Recent Comments

Disqus Scripts

So I've missed a few days and HabitRPG keeps yelling at me and I have 10 minutes until midnight. I blame destiny because most of the time I'm playing until 2 in the morning and miss the midnight mark. This won't be a long post, but this is an attempt at the least and I wanted to talk about how much Destiny inspires me and motivates me.

Checking back in. I missed yesterday's post as I was fighting to reach max level last night and was exhausted. But I'm doing it tonight so that's something. I'm two FULL days into Destiny now and let me tell you...

So we will make this one quick. It has been a long while. I'm still working on Aggro, still becoming a better programmer, and still having fun. But now it is with Destiny and productivity tools in the mix...

Lame I don't get a full extra three hours on Tuesday anymore as my wife's parenting class has finally come to an end. So timing when I can actually post is another factor. Anyway, with the Destiny Alpha past me I am working hard on Aggro once again. I talked about automating things prior to Destiny and that is still the point I'm at... sort of. I've got another completely different piece of automation involved in my work now.

Finishing up with AutoHotKey

But of course the other automation with AutoHotKey is still going forward. I've got a good majority of my AutoHotKey scripts written, I still need to test and tweak most of them though. I've already gone through and replaced my first type of scripts (the Controller that I showed in that Automation post) in the Aggro base. Didn't take too long and now I have 20ish controllers with comment documentation, a standardized structure, an interface, completion signals, and many more. I ran into a couple problems replacing the old controllers with my automation, but once those problems were gone I timed myself, and it takes me 2 mins to create a full blown standardized controller now when I need it. 1:15 minutes to automate the creation of the controller and 45 seconds of other random checking and tweaking (like setting up an old version of the controller to be replaced in this case). These scripts will make game development with this IoC framework (StrangeIoC) a cinch. And every hour I spend on this is WELL worth the work.

Diagrams and Documentation

Now onto the new automation stuff. One of the biggest problems I mentioned with SOLID design principles in the past is that it leads to a system with a LOT of files... like over 20x what would be in a standard built game, but the bonus is re-usability, flexibility, ease of adding new features, etc. This problem brings in a large issue, how does one learn the enire system if there is a lot to learn? Sure you can learn one piece at a time and what it interacts with, but "getting the whole picture" is made much more difficult. Hence bringing on other developers becomes a problem because of that time sync of training new people which takes longer with sooo much to learn. Therein lies the problem.

Visualization for programmers

But I might have discovered a trick to take care of that... well it is a pretty standard trick. They call it documentation and diagrams. Gross... who has time to write these? Seriously... that is a LOT of time not developing. I've already got part of that problem solved, documentation is done in the comments of the code in C# with something called docblocks. And that is part of the automation process with AutoHotKey... so check. But words can only go so far. It is just an easier version of looking at the code. So now we need to automate diagram creation... not really an easy thing. Flowcharts, class diagrams, etc. are also heavily burdened with perfectionism and lining up nodes and coloring and standardizing and notes, etc. SOOO many details. Enter the world of PlantUML + Coding.

Plant UML

PlantUML is a wonderful tool that I discovered a couple weeks back. It essentially turns text into diagrams. Yeah... that's a thing folks. All you do is define the nodes and the interactions between the nodes imagine it like this:
Hello -> World
That creates two class nodes, Hello and World, and links them horizontally because of the single dash (double is vertical) with a standard arrow with the greater than sign (you can also use asterisks, bars, and various other symbols). WHAT!?!?! Yeah blew my mind. As you add more interactions, it figures out what to create, and how to link them. Even better it calculates where to place all of those nodes for a readable display. No more shifting around nodes to line them up for hours. You can even add coloring standards, and define types and other great features. Oh it is a wonderful world indeed. So how do we take this and automate diagram creation? Programming can be used in the entirety of situations. AWAY!!!

My new task

So what I'm working on now is a parser that goes through ALL of the code in Aggro. It generates translations for like interface -> class, it generates all of the relationships based on dependencies, etc. and then writes out a UML file that can be rendered by PlantUMLs application. So now I can just hook that up to automatically run when I make changes to the code. Now I can version these images and we can watch aggro grow together. It will be a great way for me to showcase exactly what has changed in the last version of the game for you guys since it will be more visual. Also it will be great to have that visual representation from version to version that I can compile in the end. Lots of exciting things in the future. Gotta get ready for the new 3 day weekend next week where I will jump back into the code as long as I've finished my autohotkey stuff. See you guys next week.

I've even found time to work on Aggro on the bus to work in the morning. I don't have a license, long story. Basically I grew up overseas and couldn't get a license until 18, then instead joined the military and live 15 minutes from work, then had a wife to drive me, and I've just been lazy. Anyways, I squeeze out work in the mornings on the way to actual work during the weekdays. Originally I was doing code, and design, but recently... as in like last week, I've discovered that that time is better spent writing blog posts. I can write quickly, and think quickly for blog posts. So good news, I'll be posting more. More involved tasks aren't really well suited to a 20-30 minute bus ride. Afternoon buses are really packed so I don't get much typing done then. I try though.

Sorry folks keeping an eye on my indie game Aggro, but this weekend I had to take a break. For good reason. Most of you know that I was very involved with the Halo online scene. Halo 3, Reach, and Halo 4 were a large part of 5+ years of my life. That is a pretty good chunk. Needless to say Bungie has my heart. Hell my kid's C-section was done on Bungie Day (7/7) of '11. Yeah crazy... so I'm sure you'll understand when I'm given the chance to participate early in the Destiny First Look Alpha. ;) HUGE THANKS TO YOU GOOD SIR! You know who you are. Here are my thoughts for the world to see.

Twas a good weekend. There is no update to the game this week, but what I did this weekend will MORE than make up for that. I love the world of software engineering. Most of the things we do regularly can be automated in one way or another. Be it through machines in the physical realm, or through scripting in the virtual realm. Automation is amazing...