A Tale of Two Communities Posted: 3:01:00 AM 0 comments
"If you're a high visibility player, it's on you to move the community in a positive direction." -Jonas Neubauer, 1981-2021, seven-time CTWC champion
This quote by Jonas Neubauer has been engraved on the Classic Tetris World Championship's first and second place trophies since 2021, the year he unexpectedly passed away at the age of 39. I met Jonas and his wife Heather, a Dr. Mario world champion at TwitchCon in 2019. We both happened to cross paths at GDQx 2019. I was doing couch commentary for SpootyBiscuit's Cadence of Hyrule run while Jonas was doing couch commentary for Blink's Tetris 99 run. I got a big hug, a photo I'll cherish forever, and I introduced Jonas and Heather to one of the exhibits on the show floor, which was basically a mind-meld Tetris game. I remember the two of them enjoying themselves and having fun, and their laughter was contageous. Jonas was one of the few people I've met who, online, was pretty much the exact same person he was in real life, one of the most genuine individuals I've ever met. He was graceful in his CTWC defeats, and always worked to build up the community he championed.
Since his last win, there have been 4 other tournament winners. Joseph Saelee won twice. Then, Michael Artiaga (dogplayingtetris), won in back to back years. Eric Tolt (EricICX) defeated Justin Yu (Fractal161), the latter of whom won it a year later. Harry Hong also famously won the tournament back in 2014, interrupting Jonas's seven year streak.
All of these players have made a positive impact on the classic Tetris community in some way. Some have even made contributions to the community, hosting their own events, doing content creation, and genuinely being a good ambassador to the game. I had no idea that one side tournament at SGDQ 2018 would get me involved in a community amazing enough that I now find myself contributing my time to almost every classic Tetris organization. Oh, I suck at the game! But I don't let that stop me from being involved in organizing events, commentating for matches, and playing in the lower tournament levels myself, even if I have taken a bit of a step back from competitive lately to keep my competition anxiety in check.
Sure, Tetris has its bad spots. Players cheat. People get upset at others. People do tasteless things that get them banned. It happens, because people suck. But far and away, the classic Tetris community is wholesome, and I am better for being a part of it.
If only every community was like Tetris.
In the fall of 2021, a player showed up on the Overload Teams League team SpaceCowboys by the name of Zor. He was a pretty decent player. Not quite top 10 in a league of some 60 pilots, but someone seen as dangerous to play against. There was a lot of secrecy around this player. Teammates would often go on mute when talking about Zor's past experience with 6DoF games, or just outright not stream. Someone caught a stream and quickly identified the voice as the Descent pilot - and former OTL pilot - Jediluke. With a DCL record of 5982 wins and 348 losses (1413-117 vs Rethink, 809-33 vs Drakona, and 476-24 vs b2af), Jediluke wasn't just a known quantity, he was the most active competitive player while the DCL was around, between 2013 and 2020. And, as the record indicates, he was pretty good, too: he was ranked first at the end of more DCL seasons (7) than anyone else (Mark392 5, Souljah 3, bahamut 1). What's more, he is unquestionably the most successful D1 pilot on my Twitch series The Observatory, a quarterly tournament open to all Descent 1 pilots where games are broadcast and commentated on, something the community never really had prior to this series, which was founded in 2016. To date, he's won 31 out of 34 seasons, losing only to Mark392 (season 5), Zero (season 12), and Morfod (season 26). We'll talk about Morfod's winning season a bit later. Unfortunately, Jediluke's also got a temper. He gets mad when he loses, and winning your first game over what seems like an impossible opponent usually results in him making you feel like shit, rather than celebrating your momentus victory.
Anyway, back to the point, Jediluke decided to compete in the OTL as Zor to "get away" from his Jediluke personality. Thinking it would put less pressure on himself, he adopted the alias and kept his true identity a close secret for a couple weeks. The voice changer was pretty silly, but once the word got out that Zor was Jediluke, he posted something quick in the OTL Discord explaining the name, and barring some critique from some old rivals, that was the end of it. The general vibe was like "yeah, it's weird, but he's got less of an attitude now, so whatever."
Also towards the end of 2021, season 26 of The Observatory occurred. An unknown entrant with the name "Genevieve" (PwnJett in game) showed up for the Finals Tournament as an unqualified player who had to fight from the wildcard anarchy to even get into the knockout bracket. He did so in shocking fashion, taking out Jediluke in the semifinals and Sirius in the finals to win the tournament. And, as the tournament concluded, Morfod revealed that he was in fact Genevieve. It was amusing at the time, and everyone got a good laugh. He had only played under that handle for a couple weeks, enough so that some regulars were aware of the handle. For me, I was kind of kind of amused, but also kind of annoyed that someone would go to such lengths as hide their identity just to gain an advantage. I let it slide, hoping it wouldn't happen again.
Um, remember earlier, when I said that people suck?
Season 35 of The Observatory kicked off this month, and with it Jediluke proclaimed his retirement, supposedly tired of not having a challenge after Mark392 showed up for about a week to play games and then left to become a parent. While Jedi's lack of participation didn't bother me - a more competitive top of the table would benefit the show - a newcomer, Tonka, showed up who had been around since August. Code, a long time Observatory player, did some training with him, and Tonka's skill began to noticeably rise. By the time season 35 began, it was clear that he would be a strong contender, and did in fact win all of his games in the first episode, including against season 34's runner up, terminal.
But something didn't sit right with some pilots, and eventually it was made known to me that he was suspected of cheating. Although there wasn't anything conclusive, and it was later decided that no cheating was involved, it got enough people suspicious that for the second episode, his IP was taken from a game log and compared with some website logs. I noticed that there was a lot of activity with that IP on the Overload game browser that didn't match the player's activity in Overload, which was very low and many months prior. I then decided to compare the IP to logs on the game servers themselves, and that's when the smoking gun was found. That IP was the same IP used by Zor in Overload.
While I had 100% confidence at that point that Tonka was 31-time champion Jediluke, a lot of things didn't add up. This player Tonka showed up in the community about 6 months ago. They were trained on basics like trichording. They had matches with Jediluke. They gave a phone number with a Houston, TX area code. They would chat back and forth with Jediluke, aggressively looking for games. Even now, this whole scheme doesn't make sense to me.
But it was real. Jediluke eventually confessed to the whole thing. And he was totally nonchalant about it. In fact, my current co-commentator, Chillybus, thought it was crazy that he would go through the whole thing. He said on Discord:
"for six months? what do you have to gain against pilots who would take hundreds and hundreds of games to even be competitive with you, let alone take a game? multiboxing discord accounts? faking tracker games? IMO you did competition a disservice and your friends dirty from the sound of it, just chasing shadows of the afternoon someone aliased you to a win. not how a longtime decorated top competitor should compose themselves. it isn't time to go around again, I think it is time to log off. you have shamed yourself here. That's all I'll say in this time and place."
The reply from Jediluke was equally nonchalant: "1 v 1 Chilly?" and "those who don't compete ...commentate".
Is this moving the community in a positive direction? Does he care at all about the community? Is this how a top player is going to treat the community that he represents?
This is literally night and day. In one community, I have players that are leaders, care about the community, and do everything they can to move the community forward. In another, I have players that are selfish, care about themselves, and do everything they can to try to get ahead.
You tell me which community I'm going to put more effort into.
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!
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.
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.
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([firstPlayer.id, potentialOpponents[index].id]);
if (remainingPlayers.length <= 2) {
return true;
}
if (matchPlayers()) {
return true;
}
matches.pop();
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:
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.
Summary
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!
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.
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.
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!
Music
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 flat.io 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.
Coding
2015 Goal: Finish the updated roncli.com 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 roncli.com 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
Gaming
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
Life
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
Overall
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 roncli.com. 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.
Descent's Potential Ascent Posted: 3:20:00 AM 0 comments
On a recent episode of the Six Gaming Podcast, we had a lengthy discussion about our futures in gaming. I mentioned on this episode that I felt I was at the point where one game that I was spending a large chunk of time was ending, and that another game would take its place, but I didn't yet know what game that was. With World of Warcraft sucking as of late, I've been trying to find out what the next game was that was going to grab my attention.
My wife has dove into Final Fantasy XIV Online. I personally have little interest in the Final Fantasy series, and watching her play hasn't done much to pique my interest.
League of Legends isn't it. For the first half of the year I did a segment called Ron's Bronze Plays that tracked my League of Legends play in the bronze tier. While I enjoy playing the game, I find I don't enjoy playing with random people. Despite Riot Games' testimony to the contrary, toxicity in the game is a very real thing. I don't like dealing with people that aren't cooperating in a game that requires cooperation. Sadly, my skill level doesn't allow me to rise above these players enough for me to enjoy the game. I still follow LCS and all, but I'm hardly playing the game any more.
Occasionally I dive into some indie games, and Crypt of the NecroDancer is one I've fallen for pretty hard. I use my XBox One controller for the game, and I am really enjoying challenging myself to do better. But this isn't a game I can play for hours on end every day, there's just not enough to it.
Much of my gaming time has involved me competing on the Descent Champions Ladder. Of course, Descent is old as hell, celebrating its 20th anniversary this year. I've played this game on and off since it came out, but the coming resurgence of Descent via Descent: Underground has me captivated again. I'm still far off of my level of skill I had when I played back in the day, but I'm relearning the moves and the levels, trying to get back into the rhythm I had when I played the first time around. But Descent: Underground doesn't come out until next year, and the active Descent community is so small right now, it's hard to find games. Fortunately, there's things like the 20th Anniversary LAN coming up, but these events are few and far in between these days. I'm really hoping that Descent: Underground is "it", but we'll have to see.
Until then, I'm thinking of ways I can further the Descent community. I've restarted my old Descent dedicated server network project, in node.js of course, and am far enough along that I should have something usable for the LAN. With talk about there being a competitive scene in the new game, I've considered doing a podcast-like show centered around competitive Descent. I've even inquired with the Descendent Studios team to see if they have use for a JavaScript guy like me on their team. (Sadly, they don't yet!) I feel like I want to get involved, but the size of the community makes me wonder if this is worth my time. I do have other projects floating around, you know!
So for now, I continue playing more Descent and working on my Descent DSN project. Nothing else has really stood out and screamed "PLAY ME!".
I've won another series and am now at Bronze II on the season, but not even Colz can stop me from getting wrecked by bad teams it seems, I'm 2-4 since placing into Bronze II. My mechanics are really bad, and I'm starting to wonder if I should be playing more than once a week to improve at my mechanics, but then I remember that it's Ron's Bronze Plays, and the plays won't be bronze if Ron gets good.
I've won 3 more games against silver pilots recently, and that has rewarded me with becoming a silver pilot myself. I was never all that great at competitive Descent 1, and playing the masters of today really makes me feel that I have more to learn than just piloting. Granted, some of these pilots have spectacular aim as well, which is why I'm planning on switching over to mouse once my mouse patch gets into DXX Retro and becomes generally available. I'm almost to where I am today in skill with it, but need a lot more practice. I'm going to a Descent LAN in July, and I'm hoping that is when I'll be able to make the switch over to mouse.
roncli.com
I actually have good news about the website!
That's right, I'm almost DONE! There are only 4 bugs left. The font loading issue hasn't happened lately and I might be able to get rid of it. The login from cookie is a really strange bug that I can't reproduce, but is something I need to figure out and fix before launch. The allowed playlists deal was just a bad design decision I made earlier that I need to fix. And the fix image widths bug is where I have really big images that aren't being scaled down, which is causing the layout to break.
After that, it's all about content. The blog is easy enough, but adding the songs to Soundcloud will take time, and I need to write the pages for all of the rest of the content I intend to have. That alone might take days, but at least the major coding milestones have all been hit. I'm nearly 2 months behind my original target, but I think it'll be worth the wait!
The problem with mice in Descent Posted: 2:07:00 AM 0 comments
Descent was an awesome series. Hell, it still IS an awesome series. Six degrees of freedom, claustrophobic tunnels, murderous robots... what's not to love about this game?
The fact that it was made in 1995 for one. Originally written for MS-DOS, Descent was designed to run on computers that didn't know what a Pentium was. It ran great on those computers, but as computer processing power increased, it started to become obvious that the game was not written to scale well.
At first, the homing missile became impossible to dodge. Written to work fine at 30 frames per second, the homing missile began to turn faster and faster as that 30 became 60, 60 became 100, and 100 became 200. Fortunately, this bug has been fixed and has made playing Descent quite bearable.
However, recently, a new bug reared its ugly head involving mouse play. Descent plays at a constant 200 frames per second, assuming you don't have vsync on, or have otherwise limited the frame rate. The average mouse in Windows is only polled at the rate of 125 times per second. So, your graphics card is getting more frames per second than Windows is getting mouse positions. How does this cause problems in Descent?
One of the quirks about Descent is that, unlike traditional first person shooters, you are not allowed to just 180 your ship in an instant. The Pyro has a maximum turn rate, and is hard-limited in the code, throwing out extra movements that are made beyond the maximum allowed. This means that you can whip your mouse around the mousepad, and you won't move very much.
The turn rate for the mouse, however, is determined per frame. So, what'll happen is you'll move the mouse, say, an inch, within 2 frames. You only need to move it, say, a quarter of an inch to reach maximum turn speed. At the end of the first frame, the first quarter of an inch is processed and the next quarter of an inch is thrown out. Same thing for the second frame, the next quarter of an inch is processed and the final quarter of an inch is thrown out.
However, let's say in the first frame, your mouse didn't get polled at all. At the end of the first frame, Descent - and Windows for that matter - think you haven't moved the mouse. Your Pyro does not move at all. In the second frame, the mouse is polled and sees you moved an entire inch. The first quarter of an inch is processed, and the other three quarters are thrown out. All that movement for nothing!
Having a fellow pilot suffer greatly because of these issues, I decided to dive into the source code and develop a fix. Now what happens is that you turn on the Mouse Overrun Buffer setting, and then instead of throwing out the extra movements of your mouse, it is stored in a buffer, with anywhere between 1/16 of a second and a full second of movement stored, depending on how high you decide to set your buffer. Then, in the next frame, anything already in your buffer is added to whatever mouse movement was detected that frame, and that is used to determine how much your pyro moves, storing any excess back into the buffer again.
You can find this code in a pull request for DXX-Retro, a source port of Descent dedicated to the competitive community. If you own the original game, you can find downloads for DXX-Retro at the Descent Rangers download page.
And if you don't, go get it! Classic first-person shooter action.
I'm finally in Bronze III after having a win on Lux and 2 on Janna. The promotional series games were so hard, we were actually quite behind in one of them. Thanks to Veg for helping me get through them!
I played with Colz last week and only went 1-2, but thankfully the losses came before the wins and didn't hurt my place in the standings any, so I go into week 11 at Bronze III and 26 LP.
Descent
If you've been following my DCL videos on YouTube, you'll see I've finally found some success, winning 6 matches in the past 2 weeks, including a match against the top bronze player to give me that spot. I feel like my aim is slowly coming online, but I'm going to try to play some "measuring stick" games against LotharBot (I've been scoring between 8 and 9 points) and Behemoth (between 5 and 6 points) today to see if that indeed is the case. I rediscovered the map June Bug, and am rapidly learning just how much I loved playing that map, too bad it was never all that popular.
The lagging website
I was expecting to have the new roncli.com done this month, but Descent: Underground has pretty much taken over. However, with that Kickstarter campaign winding down Friday, I should have time to resume my efforts, get something presentable, and move on to the next project.
Not a whole lot going on this week. Work has been slow on roncli.com, but I'm hoping to pick it up and finish off major coding this weekend. Right now I'm working on allowing files to be uploaded straight through the website, which will allow me to manage the files without having to do something silly like FTP.
The Six Gaming Podcast was in rare form this week, as we had a solid episode and a good roundtable discussion about how microtransactions have been shaping modern gaming.
Ron's Bronze Plays returned for more League of Legends action, and this week I teamed up with Veg. The first game seemingly almost guaranteed disaster when I was put onto Jinx, but I outplayed the other ADC enough to earn a win and a promotional series. The next game I was on Janna, but our team could never get going as every lane seemed to feed. The best game of the day was next up with a 54 minute epic Morgana. Despite not having the kill lead, we kept up with objectives enough to grow a 10000 gold lead. Although we got aced twice in the enemy base, being 3-inhibitored multiple times allowed us to just play patient with Baron, and march in and win. The final game wiped all that out, however, as it ended up being a 3v5 after our jungler failed to connect and our ADC didn't start playing until about 3 minutes, and ragequit another 3 minutes later after having a severe level disadvantage. As a result, I remain in Bronze IV, but am still a game away from a second set of promotions. One of these times they'll go my way.
Finally, on my YouTube page, you'll find a metric boatload of Descent and Descent 2 videos I've been uploading, including my horrible start to the DCL. The highlight was an absolute crazy game in Fuzed where Jackeh outlasted me in a game to 20, win by 2. The final score was deep into overtime, 26 to 24. Fantastic game. I still have yet to earn my first win, the skill of the pilots still playing is clearly above mine. I have some targets to try to get that win off of, however, and will hopefully get on the board before the end of the current DCL season, which ends at the end of the month.