I don't like to talk about politics. However, this pertains to indie game development, so I feel it's worth talking about. As you may or may not have heard, Depression Quest developer, Zoe Quinn, has come under fire for using romantic relationships with game journalists as a means to promote her game. While the idea of relationships affecting the behavior of professional colleagues is not unique to the games industry, it's still something that is disappointing.
What's most unfortunate is that both sides of this particular scandal are in the wrong. On one hand, you have people attacking Zoe on a personal level. They focus on the "Five Guys" meme and lambast her for being a social justice warrior. They just give support to the notion that the gaming community is nothing but scum.
In fact, when looking at the Kotaku and Rock Paper Shotgun articles accused of being manipulated, they're not very in-your-face about promoting Depression Quest (if at all). The Kotaku article focuses more on the failure of GAME_JAM, and only uses Zoe's story as a testimonial. The Rock Paper Shotgun article simply doesn't have much substance. It's just a link-dump of the Steam Greenlight games passed through on that day. Yes, Depression Quest is mentioned as a "standout". So it probably would have done Nathan some good to rephrase it's mention to something like: "my good friend Zoe Quinn's own, Depression Quest". Though maybe that doesn't fit into a non-opinion piece. In that case, it probably would have been better to not mention standouts at all and write an opinion article about Steam Greenlight games.
So yes, the initial attacks on Zoe are way out of proportion. During all this, however, there have been people that have stepped forward about Zoe's mistreatment of other game's industry people. These two posts in particular disturb me, especially the first one: one two. The first post describes the attack on The Fine Young Capitalist's contest. It's disheartening to see something that actually is doing something about the state of women in game development get damaged by someone who claims to be for social justice. The second post is less angering, but still concerning. Before I talk about it, it's worth mentioning that Zoe censored a video about her by MundaneMatt via abuse of Youtube's DMCA takedown feature. TotalBiscuit has talked about this, and received a lot of flak over it. The second post only does more to outline Zoe's behavior when it comes to criticism. The notion that Zoe is infalible, and that anything that might portray her negatively needs to be silenced, is plain wrong.
That about sums up my thoughts. My only hope is that all parties learn that both personal attacks and censorship are evil.
In my last post, I mentioned the plan for a developer menu for Flare. I created an implementation of my idea, but it wasn't very flexible when it came to adding functionality. It also added more than an acceptable amount of code to the MenuManager class (which is already messy). As an alternative, I started working on a developer console.
The end result is something that has more functionality, like being able to specify level range for "spawn_enemy". In addition, the majority of code for the developer menu resides in the MenuDevConsole class itself, as opposed to MenuManager.
I don't regret spending time on the original developer menu. During the process, I ended up looking at my 2-year-old code for WidgetListBox, which was overall poor in quality. I'm also glad that things shifted towards a developer console, since it got me to look at how to draw text items in a WidgetScrollBox. I was able to refactor out the code from MenuLog into a new WidgetLog class, which is then used in MenuLog and MenuDevConsole. Implementing new features isn't just stacking blocks on top of each other. It sometimes forces you to take a step back and look at the base of what you've built.
Moving on, I also spent a bit of time trying to improve how targeting enemies works. It's a common complaint we've been getting, and it's usually due to the fact that melee attacks are using aimassist. In the context of Flare, aimassist is used to target attacks on the ground (where the enemy hitbox actually is) when aiming at the chest of a human-sized enemy. This works for projectile attacks, since it makes the projectile fly directly through the cursor. In order to get a better idea of what was happening with targeting, I made it so that a "target" animation is drawn on the ground where the target actually is. Having such an animation makes combat feel much more solid, since it's more clear where attacks are actually landing.
The next order of business was to sort out melee attacks. Turning off aim_assist for these attacks made them work as expected with short enemies, like antlion hatchlings and goblins. However, there was still the issue of trying to attack larger enemies. If the player clicked on the head of a zombie, their attack would land above the zombie's hitbox. The solution I came up with was to implement some auto-aim for melee attacks. We already determine the enemy under the mouse cursor for MenuEnemy, so we can use the position of that enemy as the target of the melee attack.
Well, enough about Flare. I was somehow able to find time to fix an FFmpeg crash I had encountered. After updating FFmpeg from 1:2.2.5 to 1:2.3.1, SpaceFM was crashing when generating thumbnails for my episodes of Nichijou. The crash was happening because a bit of new code was trying to read Matroska chapter data even if the chapter data wasn't created (in my case, due to a broken chapter in the last episode). So a simple NULL-check did the trick. I'm now just waiting for the patch to get reviewed on the ffmpeg-devel mailing list.
EDIT: Turns out my patch was merged 3 days prior to this post, and I didn't notice since my tiny brain couldn't handle the concept of a mailing list.
I've been a little inactive for the past week. I lost my internet connection for a few days, so I got into playing some single-player games in my free time instead of working. However, I think I'm ready to get back into the swing of things. Today, I outlined my idea for a developer menu to add to Flare. I think it will make creating and iterating on the Empyrean campaign easier once it's implemented.
So Clint filled me in on his plans for the Empyrean campaign. I now have a better grasp on the theme of each map along the path of the main path, so my map concepts should start to fit more closely with the storyline. Today's map is the Book of the Dead, a simple chamber that appears early on, but isn't fully used until later in the game.
I mapped out the cave area for the coastal map I posted the other day. I personally like how the exit is visible near the entrance of the map. The lootable barrel teases the player a bit and makes them want to travel there.