1. Automating Visualization

      written by GodlyPerfection
      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.
    1. Organizing My Life

      written by GodlyPerfection
      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.
    1. Destiny Alpha - Dive in with GP

      written by GodlyPerfection
      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.
    1. Automate ALL the things!!!

      written by GodlyPerfection
      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...
    1. First public version of Aggro Tactics... sort of...

      written by GodlyPerfection
      HAHAHA! I did it (link below... but I suggest you read). So things have been quiet around here for a long while... and not just around here either. The team has been awfully quiet. Probably because there has been little to know progress on actual game code. For the past couple months I have been doing a lot of research and learning. When I built Aggro the past couple times, including this most recent start in like December I was doing it all wrong. The codebase was rigid and what we call spaghetti code in the Software Engineering world. This approach would do nothing but cause problems going forward. So my research and prototyping has all gone towards setting up a better architecture for Aggro's code base.
    1. Scipi Signing On

      written by Thomas Stone
      Ray's Note: Woohoo! Another programmer to work with. I've known Thomas for a while thanks to sir David Cobb. Excited to work with Thomas. He already seems very competent and capable of growing his skillset. This will give us both the opportunity to explore design principles and patterns, while building from the ground up. And Thomas being an AI developer, he covers a very important part of the project that I haven't even take the time to delve into. Perhaps one day... regardless, Thomas will be quite the asset moving forward. Welcome to the team bro!
      The introduction of the team's most recent programmer.
    1. Building Foundations

      written by Marc Hughley
      Short update this week friends, we're in the throes of preparation for something... greater.