The blog of roncli blog
Houston, Texas, United States
CTG Music
Trax in Space Beta
Recent Posts
Steak Burrito Recipe
The Descent DXX-Retro 1.4 Roadmap
Observing the Swiss
BlizzCon franchise roundup
Attention - Gullibility
AMD 16.5.2 error "Qt5Core.dll is missing from your...
The Observatory
Six Degrees of Confusion
Report Card: 2015
Crypt of the NecroDancer Bard Deathless record
February 2005
March 2005
April 2005
May 2005
June 2005
July 2005
August 2005
September 2005
October 2005
November 2005
December 2005
January 2006
February 2006
March 2006
April 2006
May 2006
June 2006
July 2006
August 2006
September 2006
October 2006
November 2006
December 2006
February 2007
March 2007
April 2007
May 2007
June 2007
July 2007
August 2007
September 2007
October 2007
November 2007
December 2007
January 2008
February 2008
March 2008
April 2008
June 2008
July 2008
September 2008
December 2008
February 2009
July 2009
August 2009
September 2009
October 2009
November 2009
February 2010
March 2010
April 2010
June 2010
July 2010
August 2010
September 2010
October 2010
November 2010
December 2010
March 2011
June 2011
July 2011
August 2011
September 2011
October 2011
December 2011
January 2012
February 2012
April 2012
July 2012
November 2012
July 2013
April 2014
July 2014
August 2014
November 2014
December 2014
March 2015
April 2015
May 2015
June 2015
July 2015
September 2015
January 2016
February 2016
May 2016
July 2016
November 2016
March 2017
January 2018
May 2018
Tuesday, May 08, 2018
Steak Burrito Recipe
Posted: 1:06:00 AM 0 comments
Presented with only this comment... if AI is going to take over the world, it ain't coming from New Zealand.


Tuesday, January 02, 2018
The Descent DXX-Retro 1.4 Roadmap
Posted: 5:46:00 PM 0 comments
For some time now, I've been a Collaborator on the DXX-Retro project. Originally I just started helping out on various odds and ends, but lately my focus has been on the observer mode of the game.

Over the past two years, I've essentially been waiting on the project owner, Drakona, to work up the networking code to send client ship status to the observers. It's one thing to see the ships flying around in observer mode, but another entirely to know everything about those ships. That is, shields, weapon loadout, what weapons you're about to fire, etc. Unfortunately, her last commit to the project was February. Of 2016.

I get that priorities in life change, especially when you become a two-time parent. :) The Descent community, however, hungers for more, and as a result I've decided to finish off observer mode in Drakona's absence. There's actually quite a lot to make that happen, so I've created the v1.4 Roadmap. In this post, I discuss the rationale behind the roadmap, and what to expect from Retro in the future.

DXX-Retro has largely served its purpose to the competitive community, but two outstanding features remain to be added. Both of these were promised by Drakona to the late JinX. One of these features, observer mode, was even kind of named after him, "JinX Mode". The other feature was specific for Descent 2, and that is Capture the Flag Classic, which brings D3-style CTF play to D2.

In February of 2016, Drakona and I released an early version of DXX-Retro v1.4X5, which gave us a taste of observer mode. This only gave us the visuals. While we could see ships flying around, we didn't know anything about those ships other than what their opponents knew. This was always wanted, but we never really came up with a plan to do it. And, in the past 2 years, nothing has been worked on to support this. Unfortunately, Drakona just hasn't had time to work on it, and my work has therefore stalled.

While it hasn't been a great situation, the community has gotten a lot of mileage out of observer mode. So much so that a Twitch show was made out of it which continues to enjoy success among the community. However, there's a lot that we miss on the broadcasts because we don't have those shield numbers, the weapon loadouts, and whatnot. And after two years, the time has come to just get it done.

So, I'm getting it done. The roadmap includes 5 future releases along the 1.4 line. The first will be v1.4X6, which I'm hoping to finish this week. This will include the shield numbers appended to the pilot names under the ship. I want to also include a way to indicate damage, and will be working on ideas for that.

The second release will be v1.4X7, which will get the rest of the ship status in the game and make any necessary upgrades to the observer mode UI that we want to change from previous versions. I'm *considering* adding my custom-made Observatory UI to Retro, but am not sure that's needed.

The third release will also be v1.4X7, but this time for Descent 2! Once I know what I'm doing in D1, I can apply that to D2, and we can have an observer mode for both games.

The fourth release will be v1.4X8, also only for Descent 2. This will include Capture the Flag Classic, where instead of the "egghunt" style game where flags are worth 5 and kills are worth 1, we'll instead make the flags spawn in the base, only have teams be able to score if their flag is in their base, and have team points be based on flag captures only.

And finally v1.4 will be the final release for the 1.4 line, which will include any bug fixes, documentation updates, and any other housecleaning duties we need to do for a proper release.

After that, the future for Retro is murky at best. There are no less than 50 open issues on GitHub for Retro right now which vary from essential to nice-to-have to outright silly. Also to keep in mind, the DXX-Rebirth is nearing a v0.60 release that is essentially a codebase refactoring in addition to a ton of other updates. I would love to see a Retro v2.0 not only based on Rebirth v0.60 but something that can also follow that version as well, instead of being a complete fork that forgets where it came from. This in and of itself would be a monumental task.

Until then, however, we'll keep Retro focused on what we need to release v1.4, and if I can keep it going without the need for added help, perhaps that will be much sooner on the horizon than expected. Here's to some better Descent in the near future!

Labels: , , ,

Tuesday, March 07, 2017
Observing the Swiss
Posted: 2:29:00 PM 0 comments
Running The Observatory is super fun. Being a self-proclaimed 6 degrees of freedom junkie, watching pilots pull off incredible moves just to avoid taking an extra 10 points of damage here or there is fascinating.

The format of The Observatory is largely inspired by CoNDOR, the racing league for the game Crypt of the NecroDancer. Over there, they have their main commentator and several referees who work in the background to ensure that everything goes smoothly. However, on The Observatory, I am afforded no such luxury.

Therefore, I've tried to automate as much as I can to ensure that I can spend time focusing on the action rather than on administering of the tournament. To this end, drawing on my experience from making SixBotGG for Six Gaming, I created FusionBot for The Observatory.

This bot takes care of a number of fun (and not so fun) admin tasks, but the one thing I wanted to highlight was the algorithm I created to create a Swiss pairing system for the qualifier tournaments. In a Swiss tournament, everyone plays a round every game, with the idea being that as the tournament progresses you will play opponents who are closer and closer to your skill range.

A manually-ran Swiss tournament often will have the tournament director throwing players who have the same number of wins in a pile, and randomly determining from that pile who plays who. There are ways to ensure people don't play each other twice, and even ways to govern who gets a bye round.

For The Observatory, I had added constraints that required some custom programming. For instance, players can't play each other if neither of them can host a multiplayer game. But as a general algorithm, here's how I managed to get a working Swiss algorithm in node.js.

1) Get a sorted list of players

This part's pretty easy. You want a list of players sorted by their performance.

var eventPlayers = Object.getOwnPropertyNames(event.players).filter((id) => !event.players[id].withdrawn).map((id) => {
    return {
        id: id,
        eventPlayer: event.players[id],
        ratedPlayer: ratedPlayers.find((p) => p.DiscordID === id) || {
            Name: obsDiscord.members.get(id).displayName,
            DiscordID: id,
            Rating: 1500,
            RatingDeviation: 200,
            Volatility: 0.06
        points: event.matches.filter((m) => !m.cancelled && m.winner === id).length,
        matches: event.matches.filter((m) => !m.cancelled && m.players.indexOf(id) !== -1).length
}).sort((a, b) => b.points - a.points || b.ratedPlayer.Rating - a.ratedPlayer.Rating || b.matches - a.matches || (Math.random() < 0.5 ? 1 : -1));

Here, I get all of the players in the tournament that haven't withdrawn and return an array that includes the player's ID (which for a Discord bot is simply their Discord ID), their player information for the tournament, their ELO, the number of wins they have in the match, and the number of matches they play. We then sort this so that the people with the most points are on top, and break ties on ELO, least number of matches played, and in the case that everything is even we just flip a coin.

2) For each player, match them to a potential opponent

Here, we create a recursive function that attempts to match players based on a set of criteria. In that function, we get the players that have yet to be matched up, and find potential opponents for the first player in that list.

var remainingPlayers = eventPlayers.filter((p) => matches.filter((m) => m.indexOf( !== -1).length === 0),
    firstPlayer = remainingPlayers[0],
    potentialOpponents = remainingPlayers.filter(
        (p) =>
   !== &&
            event.matches.filter((m) => !m.cancelled && m.players.indexOf( !== -1 && m.players.indexOf( !== -1).length === 0 &&
            (firstPlayer.eventPlayer.canHost || p.eventPlayer.canHost)

You see here that the list of remaining players can't exist in my "matches" array. We get the first player and a list of potential opponents. Opponents cannot be yourself, cannot have been already played, and as is a special case either you or your opponent must be able to host a game. Inside the recursive function, if there is only one player in "remainingPlayers", we check to make sure that the player hasn't had a bye before. That is, if they've played as many matches as there have been rounds in the tournament, the bye is okay. If not, we fail attempt at making a matchup. Failed attempts get interesting, and we'll get to that in a moment.

if (remainingPlayers.length === 1) {
    if (firstPlayer.matches >= event.round) {
        return true;
    } else {
        return false;

Now we start a loop through potential opponents. As long as there is a potential opponent available, we will try to assign them the match until we run out of opponents. How we determine who to match an opponent up is where the fun math comes in:

let index = Math.floor(potentialOpponents.length / Math.pow(2, event.round + 1));

With this formula, in an 8-person tournament, the top player will play the 5th seed in round 1, the 3rd seed in round 2, and the 2nd seed every round thereafter (assuming all other conditions for being a potential opponent have been met). This is far better than throwing names into a pile and drawing randomly. Since it uses math, it makes later round matches more meaningful, and allows for earlier matches to be scheduled fairly. Here's the loop in its entirety:

while (potentialOpponents.length > 0) {
    let index = Math.floor(potentialOpponents.length / Math.pow(2, event.round + 1));
    matches.push([, potentialOpponents[index].id]);
    if (remainingPlayers.length <= 2) {
        return true;
    if (matchPlayers()) {
        return true;

    potentialOpponents.splice(index, 1);
return false;

We push the match onto the matches array, but if we don't ever return true because we run out of remaining players or we can't match future players, we basically back the match out of the matches array and try again until we run out of matches to try. The "matchPlayers" function is our recursive function this resides in.

3) Determine who's home

In chess, there's a concept of determining who gets the white pieces. In Descent, it's about whose home level you're playing in. Here in The Observatory, we don't want people playing home or away too many times in a row, so we have a way to make sure that happens as infrequently as possible:

match.sort((a, b) => (
    (event.matches.filter((m) => !m.cancelled && m.home === a).length - event.matches.filter((m) => !m.cancelled && m.home === b).length) ||
    (event.matches.filter((m) => !m.cancelled && m.players.indexOf(b) !== -1 && m.home !== b).length - event.matches.filter((m) => !m.cancelled && m.players.indexOf(a) !== -1 && m.home !== a).length) ||
    (Math.random() < 0.5 ? 1 : -1)
eventMatch.home = match[0];

The "match" is the array of players, and we sort the array in a way that makes it so that the player who has played home the least gets it next. In the case they've both played home and away identically, we flip a coin.


Putting together a Swiss algorithm for pairings wasn't too hard, and in fact was more about getting all of the nuances of a Swiss tournament just right. A lot of trial and error was had, and the first two seasons of the Observatory resulted in some pretty spectacular failures. But the code is pretty solid now, and you can find the whole function under "generateround" in fusion.js. I would like to break this algorithm out of the bot and into its own NPM module at some point, perhaps that's something for a future CodeShare episode!

Labels: , , , ,

Sunday, November 06, 2016
BlizzCon franchise roundup
Posted: 11:16:00 PM 0 comments
BlizzCon was as amazing this year as it has ever been. From the Sombra announcement to Weird Al closing out the show, there was more than enough to do this year. What I wanted to do with this post is roundup the six game franchises and give some commentary on their current state, going from best to worst.


Everyone was expecting the release of the new champion Sombra, and sometimes when you're expecting something you really don't get too hype for it. Sombra's reveal was definitely NOT one of those times, because the hype was real. They started the opening ceremony with a retrospective video of Overwatch's release. I thought it was pretty fake, with a ridiculously setup war room, some equally ridiculous lines, and in general a lot of small things that tipped off "this was not real". Sure enough, the video started glitching out, and eventually blacked out entirely before playing the reveal video. Everyone loved it, and it was as amazing as I had hoped it to be.

Overwatch has taken off in popularity since its release, and the main reason is that it makes a genre that was previously associated with hardcore gamers accessible to casual gamers, while at the same time making sure not to lose the hardcore crowd. The Overwatch World Cup was played at BlizzCon, complete with their own mini-stadium built inside of one of the halls. Overwatch is turning into a juggernaut that is continuing to gain momentum with things like arcade mode, new maps, and new game modes. They are constantly tweaking their matchmaking algorithms, improving their server technology to make the game smoother, and listening to fan feedback.

World of Warcraft

While Overwatch has all the hype, World of Warcraft is an established brand that has endured for over 10 years. However, their last expansion, Warlords of Draenor, hmm... sucked. No really, it was awful. They lost a ton of players, released very little content, and seemed to have no plan for the future.

Legion, on the other hand, has been an amazing expansion, with the new artifact weapons, a world quest system to replace the daily quests, other systems inspired by Diablo III, Hearthstone, and Heroes of the Storm, and a ton of content. So, it was pretty telling when on the first day, Ion Hazzikostas took the main stage and spent an hour talking about what was coming to future patches, and did so by himself. He went over the next two patches, 7.1.5 and 7.2, the raid content we'd see in it, and even gave a teaser for a 7.3 patch. This expansion is simply blowing the last one out of the water - not that it would be too hard to do so - and it's clear there isn't going to be any kind of content drought for the foreseeable future. Right now, WoW is pressing all the right buttons, and backing up their words with new content. If you've been wondering whether to get back into WoW after the failure of Warlords of Draenor, the answer is clearly yes.

Heroes of the Storm

Heroes is an oddity in the Blizzard world. It draws upon all of their franchises to take on giants such as League of Legends and DotA2. And to be fair, it does a good job. Again, it's another case of bringing a genre of gaming that is more associated with the hardcore gamers to casual gamers. They announced adding Varian Wrynn and Ragnaros to the game at BlizzCon, and continue to add more variety to the way you can play the game.

What I find odd, though, is that unlike a first person shooter, having all these different ways to play Heroes of the Storm just doesn't appeal to me as much as it could. It lacks player progression, and compared to Overwatch is significantly more difficult to pick up the cosmetics. Not to mention that with as many heroes as there are in the game, the learning curve is really huge when it comes to trying to figure out what each hero does, and how to successfully play against them. Having multi-class heroes like Varian is only going to make the curve grow. On the flip side, there is a plethora of things to do in Heroes of the Storm, so if you enjoy the game you're going to continually have more to do.


Hearthstone is a fun, lighthearted game that tries not to take itself too seriously. However, I personally find that the game tends to move too fast, with multiple expansions per year and a constantly changing meta game. The speed of the meta changing is not a new complaint, but with the new expansion announced at this BlizzCon, that speed doesn't seem to be slowing down any time soon.

To me, Hearthstone is an incredible time sink if you choose to play it. Not only do you have to stay current on the meta, but you spend time analyzing your cards and assemble decks with hopes that you will put together something that will be useful. Not to mention the investment - either time or money - required to get the cards you need to be competitive. Hearthstone can be amazing fun, but to remain competitive you really have to be ready to make the commitment.


Starcraft II is definitely waning in terms of new things happening. Sure, the modding scene is pretty active, but there were no announcements related to Starcraft II, if you don't count the DeepMind announcement. They have completed the story with the 3 chapters of the game but do occasionally add new mission packs to the game which are fairly popular. However, this won't sustain the game forever, and unless they're thinking about moving along to the next chapter in the Starcraft series, there isn't going to be much to talk about when it comes to Starcraft any time soon. At least their e-sports scene is thriving.


Where there is little to talk about for Starcraft, there is much to talk about with Diablo, and it's not very good. Diablo III has become a stale game, with the meta being exactly the same for the past 4 seasons. While they are adding some nice feel good elements such as the annual Diablo I event or the Necromancer, it really isn't clear what they have planned to allow the game to remain relevant. Challenge Rifts were a good thought, but even that will become stale after some time.

Diablo III almost seems like the red-headed stepchild of Blizzard. They have no e-sports scene, the content that gets added to the game tends to pale in comparison to other games, the meta has become stale, and they're even losing some of their top players to boredom. Are they doing enough to keep fans of the game playing it?

On the flip side, this sure feels awfully familiar. It's a long content drought, like those we'd get at the end of an expansion for World of Warcraft. Blizzard isn't dumb, they know when a game they've made is losing its appeal, and they tend to do something about it. They already did it with Reaper of Souls. Perhaps the next expansion or game is just around the corner?

Labels: , , , , , , ,

Tuesday, July 12, 2016
Attention - Gullibility
Posted: 10:05:00 AM 0 comments
Back in 2000, I used to have this completely silly thing on this site called "Letting Off Steam". Back then, I was a programmer and admin with Trax in Space, and I used to field a wide variety of absolutely ridiculous email. You can probably still find some of these out there on the Wayback Machine if you look hard enough. Mind the color contrast if you do.

And color contrast happens to segue perfectly into this email I received at around 3:30 this morning from, apparently, someone named Lily from The Humanity Campaign. It was so good (and by good I mean bad), I pretty much went all "Letting Off Steam" on it. The email should be rather self-explanatory. Enjoy.

Labels: , ,

Wednesday, May 11, 2016
AMD 16.5.2 error "Qt5Core.dll is missing from your computer"
Posted: 11:58:00 PM 15 comments
Sometimes software pisses me off. I mean, really. How hard is it to copy a file to a location on your hard drive?

Apparently, it's too much for AMD. I spent an hour tonight trying to fix an issue with my wife's laptop, and decided getting the latest video drivers would be the best way to do it. After wrestling with AMD's installer, which was stuck at "Analyzing System" until I ran their cleanup utility, I finally got everything installed. On reboot, when trying to run AMD Settings, the laptop got the error "Qt5Core.dll is missing from your computer".

Turns out, the installer fails to install most of the required files, and no one on the Internet knew how to properly resolve this. I went looking for the file myself in the package AMD provides, when I came across this gem:


This is the actual executable file that AMD uses to install AMD Settings. Simply double clicking on this executable and repairing the installation fixed the problem.

I don't know what AMD is doing with their installer, but the person who put it together should probably QA their stuff more, and save me from much frustration.


Labels: ,

Thursday, February 11, 2016
The Observatory
Posted: 11:41:00 AM 0 comments

I'm starting a new Twitch show tomorrow, February 12th at 7 PM Eastern, called "The Observatory". This will feature the original Descent game, with 1v1 DCL matches being played. I will be observing the game using a brand new observer mode, and will be commentating the matches along with co-casters Entropy and Morfod.

Not sure what to expect? Check this out for a visual of observer mode, along with the neat custom HUD that will be used for the event.

Want to learn more? Check out my information page on The Observatory.

Labels: ,

Six Degrees of Confusion
Posted: 12:10:00 AM 0 comments
Note: I come down pretty harshly on a few titles here that probably don't deserve it. Every title listed here is a good title in their own right, and deserves to at least be played through. The point is, nothing, yet, compares to Descent.

As you may know, I'm a pretty big Descent fan. I would even go as far as to say I'm a pretty big fan of the whole Six Degrees of Freedom genre. Really, if you want me to buy your game, make it a first person, Six Degrees of Freedom shooter. I'll buy it.

With that said, I have been a bit confused by the rash of 6DoF titles that have come out claiming they want to be as close to Descent as possible, and yet are doing things that... well, aren't very Descenty.

The Pretenders

There's Descent: Underground. This title seems to be doomed with poor net code that micro-repositions your ship just enough to throw your aim off, and a confusing scoring system that they are stubbornly sticking to. They have the name, but in my opinion they seem to be making their own 6DoF game.

There's Geocore, which I can best describe as a project lacking direction. Its single player mode has changed up literally half a dozen times since I've seen I started paying attention to it, and lacks the polish of other titles. It has a slogan of "competition grade", which is shown in its well-done net code, but honestly the original Descent has much better-looking weapons, and the game taxes my GPU like no other.

There's Sol Contingency, the game that originally was going to be Descent but got yanked from under them. While it has a very polished look, there are definitely some contrast issues that make it difficult to see what kind of action is happening in the game. I am also not a fan of the slow startup on its vulcan-like weapon.

There's Overload, the game made by the original Descent developers, who want to give us a modern version of Descent. Except, they have no initial plans for multiplayer, which is very much a core part of the Descent experience to me.

There's Retrovirus, a Descent-like game with a beautiful single player story, but horribly bad multiplayer play. The MOBA game mode was poorly done, and the spaces feel so large that it feels like it's impossible to properly aim. Not to mention the tech trees that let the king of the hill continue to be the king by granting well-performing players extra powers. Descent was a game that already had a wide skill gap, why make it wider?

While each of these titles are very good in their own right, as a fan of the Descent series, all of these titles miss the mark in one way or another. I am beginning to wonder if the experience of Descent can actually be recreated at all. Did Parallax happen upon some kind of magic formula for success that made the original game still the best game of the genre, even 21 years later? Is this 6DoF revival period just a bunch of pretenders trying to recreate the perfect Descent experience?

Or maybe am I overshooting my expectations?

The New Originals

Take Sublevel Zero. I had no expectations that this would be Descent, or anything like it. However, it is probably my favorite of the modern 6DoF games because of its rogue-like replayability, its crafting system that allows you to play the game the way you want to, and some AI that, while it could be smarter, does just enough to be dangerous if you're not paying attention. It has no multiplayer, but it never claimed to be Descent, so I don't expect it.

Take NeonXSZ. One of the few 6DoF games without inertial dampening (in English: your ship continues to move in the direction you moved it even after you stop moving in that direction), this game takes elements from puzzle games, action RPGs, and of course the 6DoF genre and brings it into an engaging environment where, again, you can play the game the way you want to. I didn't expect this to be Descent-like, and therefore was pleased with the polish of the game, as well as the action that came out of it.

And how about little-talked about Kromaia, the 6DoF bullet hell? This is about as far from the original Descent gameplay as you can get, because you want to kill as LITTLE as possible, or else the difficulty ramps up FAST. It's a different way to play a 6DoF, but it was still a fun game.

It seems the games that I have the LEAST expectation of being Descent are the ones I have the MOST fun playing.

Maybe I should cut my expectations short with these new games and take them for what they are, rather than having them try to be the old experience in new clothes, but I tell you what, that can be really hard to do.

Labels: , , , , , , , , ,

Tuesday, January 19, 2016
Report Card: 2015
Posted: 12:38:00 AM 0 comments
I often do a "Year in Review", but this year I thought I'd change it up a bit. Last year, in addition to reviewing what happened the previous year, I added some goals for 2015. This year, instead of just reviewing what happened last year and adding the goals, I figured I would also add in a kind of "report card", where I grade myself on how I did towards those goals from the previous year.

I'll be honest. These goals stayed with me all year long. When I thought about what I want to do, I compared that to my goals. Having goals I actually thought about has made me learn a bit more about myself than I knew before.

So, without further ado, here's the 2015 report card!


2015 Goal: Complete and release full versions of "All In My Head" and "Paper"

There's no beating around the bush here, neither of these goals happened. In fact, I was musically silent for the first half of the year. I did, however, come out with three different pieces of music, but none of them were original works.

In 2015, I started a podcast with Dr. Zing and Morfod called the Self-Destruct Sequence Podcast, which is a podcast all about Descent. Dr. Zing kind of dropped off the face of the Internet a few months ago, but Morfod and I picked it back up late last year, and have been having fun with the episodes this year. I mention this in the music section because when we were putting the first episode together, we wanted to have some Descenty music, and I delivered in a big way.

Our title music, Self Destruct Sequence, is a remake of the level 1 music, while our outro, Mars Processing Sequence, is a remake of the level 8 music. Both had electronic elements, and two guitar tracks each that I performed myself. This is the first time I've actually been happy with guitar tracks that I've created, especially the lead guitar parts. Hopefully I can take my experience from this and translate that into better guitar tracks in my music in the future.

The third piece was something I couldn't get out of my head, a piano cover of the song "The Wight to Remain" by Danny Baranowsky, which is best known as the music to Zone 4 Level 3 in the game Crypt of the NecroDancer. This has always been a beautiful track to me, and could be the launching point of a piano-only soundtrack to the game, if I get so inspired to complete some day. I even put the song's score up on if you so desire to try to play it yourself.

So while I kept the dust off of my music, I didn't do what I set out to do. At all. I tried to work on "Paper" once, but couldn't get any inspiration for the one part I still don't have a working idea for. Maybe that will change in 2016, but unfortunately, this gets poor marks this year.

2015 Grade: D

2016 Goal: Complete and release full versions of "All In My Head" and "Paper". For real this time.


2015 Goal: Finish the updated site

Well, you're looking at it, baby. I'm still quite proud of this accomplishment, and it really took a load off my shoulders last year when I completed it. It's even gotten a few updates since that fixed some bugs and added (and, sadly, removed) some features.

So with the main 2015 goal accomplished, what else have I done in 2015? A quick glance at my GitHub profile shows I've contributed to Descent's DXX-Retro source port (this was the mouse fix), and started a series of Descent 3 tools written in node.js, including the rebirth of Descent DSN. However, in recent months, coding's not exactly been a priority to me.

The main project I have going right now is getting Six Gaming's official website off the ground. It is going to be started pretty much directly from with a Six Gaming theme. At first it's just going to be a static page with links pointing to most of our presence on social media. Later, it will include episode-specific links for the Six Gaming Podcast, and the final version will be a full fledged social site where people can come to find other people with whom to play games they enjoy.

So 2015 was good, and 2016 has a clear goal. Looks good to me!

2015 Grade: A

2016 Goal: Finish the Six Gaming site


2015 Goal: Grow Six Gaming into a bigger and more general gaming community

So at the beginning of 2015, I had this great idea to make Six Gaming a big community, not just for World of Warcraft, but for all the games we play. Over the years, we found that many of the gamers in Six Minutes To Release enjoyed other games as well, so it made sense to want to cater to that while keeping the close-knit community we've created from the core members of the guild over the previous 7 years.

Two major events accelerated this goal to fruition. First, Showsan got the jump on me. When he returned from his service in the military, he came in and lit a fire under everyone. He basically rebooted the Six Gaming Podcast, gave it a new format and new life. Since then, we've added a ton of cohosts that bring their own unique perspective on the games that we are playing. The Podcast has stayed fresh and has been enjoyable because of it, and we recently completed our 100th episode, which we call... Episode 48. Don't ask.

Second, Warlords of Draenor happened. What a bad expansion! I would rehash what I've already written, but suffice to say that not much has changed, and on top of it we're looking at another 6-8 months until Legion, which will make a 12-14 month content drought, similar to the one at the end of Mists of Pandaria, and exactly what the devs previously said they didn't want to do. Add in their stance on flying, and I honestly couldn't tell you if I trust Blizzard to get WoW right anymore. Legion is their last chance to get it right for me, and until then I am probably going to be doing some different things.

Like Descent. Descent: Underground made it known that Descent still exists for a lot of people, and despite the issues they are having (a topic for a future blog post), I am genuinely excited for a release of a new Descent game, even if it's not by the same people who gave us the first three. Naturally, a new Descent game has raised interest in the original games, and Descent 1, 2, and 3 have all seen an uptick in activity.

Case in point is the Descent Champions Ladder. It went from 1,408 games played in the fall 2013 season, down to 938 games in spring 2014, and down further to only 504 games in fall 2014. At the end of that season, Descent: Underground was announced, and the spring 2015 season saw a massive ressurgance with 2,218 games played. The late 2015 season, which was only 3 months, had 1,416 games played, and not even 3 weeks into early 2016 we have 510 games played.

Playing Descent again has been awesome, and has inspired me to learn a new control scheme. I used to be all keyboard, and now I do mouse and keyboard. I play at the high bronze/low silver level on the DCL currently, but I feel I have a lot to learn about the game both mechanically and philosophically.

I've also been involved with the Crypt of the NecroDancer community, racing most recently in CoNDUIT 7, and will be playing again on CoNDUIT 8 on the 29th. I'm not that great, which is why I'm in the "junior" league, but it's still a whole lot of fun getting some competition in. I still need to complete story mode and an all characters run to unlock Coda (I have no false impressions that I will BEAT Coda, mind you), so there's still plenty of room for improvement. I'm mainly known for having the Bard Deathless world record at 112 wins, and have performed fairly well at deathless mode with a few other characters as well.

I've also done a ton of streaming on Twitch. While I've stopped playing League of Legends, I still stream things such as my DCL games, Crypt of the NecroDancer runs, and even some Sublevel Zero speedruns. Basically, if I play it, it ends up on Twitch at some point.

Gaming has become a central part of what I do. I play a wide variety of games, involve myself in the Six Gaming, Descent, and Crypt of the NecroDancer communities, do two weekly podcasts involving games, and stream many times a week. I don't see this slowing down in the near future, so the only thing to do in 2016 is embrace it.

I have plans to start a regular Descent-themed competition show on Twitch, and am most interested in growing my stream large enough to get partnered. I don't think partnering will happen this year, but I at least want to get started. I've played with some ideas for growing my YouTube channel as well, but nothing's really stuck, but I'll keep trying.

2015 Grade: A+

2016 Goal: Substantially increase my streaming presence on Twitch


2015 Goal: Get back to the Bay Area at least once

I think I nailed this one, at least in text. However, my experience thus far has been... less than ideal.

So instead of taking a trip to the Bay Area, I actually MOVED out here. In October, I packed my things, drove West a few days, and settled into the Belmont area. Central to everything, I've done... nearly nothing since I've gotten here. Sure, I've ventured to Pier 39 in the city, finally ate some Iguanas down in San Jose, and have occasionally taken in some of the area's scenic routes, I've yet to really do something... defining when it comes to the Bay Area. Seriously, I've seen more of the Bay Area the last time Kathy and I came out here in February 2013.

This is compounded by the fact that many of the people I knew and hung out with here are gone. One of the reasons I gave for moving out here was to be close to people I knew and give myself opportunities to "get out" every so often. I have done that a grand total of zero times since I got here.

There have been several reasons why I haven't really capitalized on my new living situation. The first is that I work remotely, yet am wanting to work locally. My job in Houston allowed me to work remotely when I told them I was moving and giving what I thought was going to be my two weeks. While the remote working part of the job has been going okay, I know through my experience with Sift that this isn't something I want to do forever. I have been really slow on advancing this agenda, however.

Second is that I've found myself in somewhat of a funk recently. I can't really put my finger on why, just that I find that I don't have the energy to do a whole lot since just before Christmas. My focus has been poor in coding-related projects, and I don't really feel that I've "settled in" very well. I don't at all regret making this move, in fact I think it's the best thing I've done for myself in a long time. However, I need to really break out of whatever it is that's causing me to, for lack of a better description, lose time doing nothing.

So, yeah, I made it out here, but... what next? Well, the first thing is going to be transitioning to a local job. Even before then, though, I need to find a way to get more active again. I have a plan, it's just acting on it - or more accurately getting over what's preventing me from acting on it - is proving challenging.

I hate these lethargic, stagnant days. I've had them before and have gotten past them, and have no doubt I will again. But the time until that happens can be downright depressing some days.

Oh, and there's this house thing. Yeah, we want a house. Soon.

2015 Grade: C

2016 Goal: Get more active, find local employment, and begin planning moving into a house


I've had an up and down year for sure. I recognize that my strongest point currently is with gaming, and recently that has been the outlet I go to in order to unwind and have a good time. I also find enjoyment in coding, but need to find a way to motivate myself to finish projects like I did with While my music still remains on the back burner, I am doing my best to keep sharp and avoid going flat... okay, I'll stop with the music puns! I recognize that I need to make some changes in order to improve my quality of life in my new surroundings, and am hoping that I can get those taken care of quickly.

2015 Overall Grade: B

Labels: , , , , , , , , , , , , ,

Monday, September 21, 2015
Crypt of the NecroDancer Bard Deathless record
Posted: 2:13:00 PM 0 comments
If you haven't been following my Twitch stream, one of the games I've picked up recently is Crypt of the NecroDancer. It's a rougelike game where normally you have to move your character to the beat of the music, all the while avoiding deadly traps and attacks and killing all the baddies.

I say "normally" because there's one character that's different.

Bard is special in that you control the speed the game moves at. I call it NetHack Mode, because you get time to think about your next move without having to worry about your enemies moving. While it would seem like it's the easiest mode possible, I find that it's the classic case of trying to not beat yourself. You could easily spend 30 minutes or longer per game not only trying to get the best gear in the game and make sure that you never take even a single hit, but man that's boring and this makes it real easy to just go light speed and open the door and *BAM* you're black skeleton'd.

I've streamed some Bard Deathless, which requires you to win as many games as possible in a row without dying, but only to limited success. Prior to last week, my previous best was 27 consecutive wins. While this sounds like a lot, the record as of last week was 60 wins.

Today, the record stands at 112.

I spent four days of playing about 16 minutes per win to set the new Bard Deathless record. It was tiring, as I'd spend 9 hours per day playing, with one day going all the way to 5 in the morning to hit the 100th win. My final death ended as it always does on Bard, a preventable tragedy. I had a fireball and didn't use it against a red dragon, and ended up not having enough room to kill it without it killing me. In short, I beat myself. But not before I crushed the record.

I put up a playlist on YouTube of all 112 wins, but this isn't something you're going to want to go through from beginning to end... that's 30 hours of video. Not a whole lot of highlights to be had (I did highlight one moment of stupidity early in the run), but if you're interested in seeing how a deep Bard Deathless run works, pick one of the videos and watch one or two of the games. I'm usually pretty good at verbally documenting what I'm doing and bringing up any unusual events as they happen.

Up next: actually beating Aria.

Labels: , ,