Overwatch, Blizzard's latest game, has been out for nearly two weeks and it has filled up a considerable amount of my free time so far. The game is a fast-paced fusion of a MOBA (DOTA 2/League of Legends) and a class-based team shooter (Team Fortress 2). I'm a big fan of both genres so a fusion has felt perfectly natural. On the whole, Overwatch is my kind of game and I'd grade it highly if I was the type to rate game.
The annual seven day Roguelike challenge returns once more. Lotus will be my 4th entry. This post will go over a lot of my initial design plans for Lotus and what I hope to achieve within a week.
Lotus is based on the (currently) private source for Revenge of the Starmen and will also be borrowing a number of improvements from Once An Hour (e.g., a config file).
The main addition to Lotus is a type of "home base" or town. The player begins her quest at the doorstep of a small trading post built on top of a labyrinthine maze full of traps, treasures, and monsters. By delving into the dungeon, the player can return to the surface and improve the lonely trading post into a full town.
Note that Lotus isn't trying to be Stardew Valley or Animal Crossing. The systems for interacting with the town are going to be fairly abstract. The player won't be chopping down logs and gathering stone to slowly build up a mountain home. Instead, she'll directly add new buildings to the town with gold and interact with those buildings with a small handful of other materials.
Slice and dice
Lotus is not using the combo "step" system introduced in Grid and being refined for Revenge of the Starmen. Instead, it's using a more traditional system with damage ranges and hit chances - for both the player and enemies.
One of the buildings the player will be able to acquire is the Forge. The functionality of the Forge is inspired by Dark Souls and a handful of other JRPGs. The player can bring certain types of minerals to the Forge to improve the raw quality of her weapons & armor. She can also apply and improve elemental effects on that same equipment.
Lotus will feature 3 classic attributes: Agility, Dexterity, and Strength. Agility improves the player's chance to dodge. Dexterity improves her chance to land blows and Strength improves her ability to hit hard. Pretty standard stuff, right? Not quite.
Direct chance modification is left to the player's equipment. Attributes will scale up (and down!) as a percentage. For example, the player might have an AGI of 50%. In that case, there would be a 50% chance for the player's chance to dodge to be rerolled if it would have otherwise failed.
Attributes can be exercised by engaging in combat. An attribute can be exercised once per dungeon floor. When the player descends deeper into the dungeon with an exercised attribute, that attribute will be automatically improved and will no longer be exercised.
Back on the surface, the player can have a Training Ground built. By trading valuable minerals away, the player can have a specific attribute "super-exercised". An attribute exercised in this way will improve even faster than normal, if only for a short while.
Praise the Sun
The last of the three purchasable buildings is the Temple. Here the player can commune with the various deities of the world and improve her magical prowess. This is the least complete element of the design "triangle" for Lotus so far. I'll make another post later in the week going into more depth on the Temple.
On Friday I decided I wanted a very simple timer for my desktop. Today I have an idle game with a timer as an added bonus.
The "game" is quite simple. It's a barebones console window that will, at regular intervals, popup a window and progress you forward in the game when you "Ok" the popup away.
The game features a config.txt file that allows you to modify most of the prominent values in the game. Like how long it takes for the game to update, if the game generates a popup at all, what the popup says, and a variety of strings.
The remainder of this post is about the source code for OnceAnHour.
The game is written in Python 2.7 and uses a handful of builtin modules. It's wrapped into an .exe via py2exe.
Most of what I'd like to improve with the game has very little to do with the game itself. It was written rather hastily and features a variety of anti-Python elements (notably, it's classless). I'm also working on exposing more of the game in the config file. The end goal is to rewrite it to fully integrate Class and expose as much as is reasonable to the config file.
Edit: the crossed out paragraph is no longer as relevant as of 2/25/2016. A central Player class replaced the vast majority of globals and greatly improved the readability of the project.
The game is not cross-platform because it uses "ctypes.windll.user32.MessageBoxA" to generate the popup window. I believe this is relatively easy to solve by using something like Tkinter instead, but I haven't Googled enough about it yet to be certain.
The windshield effect, as I've read about in the context of Roguelikes, is when the player can absently mindedly drift through enemies. This is akin to the passive mass murder of insects many people engage in on a daily basis thanks to the power of windshields. My games, at least starting with Dead Man Walking, have all been guilty of this windshield effect to a substantial degree.
The substantial nature is important. Most Roguelikes I've played have something that could constitute as a "windshield moment". For example, the player might wade through a swarm of giant butterflies rapidly in Dungeon Crawl Stone Soup. This isn't necessarily the most engaging moment of gameplay within DCSS, but it happens rarely and has some tactical implications.
Contrast the DCSS moment with something like the zombies in Dead Man Walking. Zombies are a constant nuisance and every single level of the dungeon is full of them. The least egregious game I've made in regards to windshield moments is probably my most recent release, Lost Valkyrie. There's a pretty large variety of enemies that can spawn on any given floor and thus there's never a swarm of any one particular foe.
However, even Lost Valkyrie suffers a bit: while it avoids repeating the exact monster, the concept of slaughtering large numbers of mobs is still very much alive. Contrast this with some other Roguelikes, like Nethack or Shiren the Wanderer, where the player will encounter a few monsters on each floor, but the threat level of those monsters is considerably higher than the zombies of Dead Man Walking.
One of my goals with Revenge of the Starmen is to embrace the idea of meaningful encounters. I don't want every instance of combat to be a windshield moment. Hell, I don't even want every other instance to be a windshield moment. My goals with this change are to emphasize the importance of exploration, treasure hunting, and careful consideration of each foe. When each floor contains only ~10 mobs instead of ~25 I suspect the player will be more invested in each individual encounter.
In Lost Valkyrie, each room spawned between 1-2 mobs with a small chance to spawn a 3rd. In Revenge of the Starmen, each room spawns between 0-1 mobs with an even smaller chance to spawn a 2nd. Enemies have, of course, been tuned to be much more threatening in general.
A couple days ago I teased a new Roguelike, Revenge of the Starmen. I'm not quite ready to release the public alpha to the universe, but it does seem like a good time to reveal some of the mechanics key to the game.
Today I'm going to give a quick overview of the combat system, at least as far as the player character is concerned. The system is derived from the combos in Grid. For the uninitiated, combos in Grid were a 1-2-3 build up where each successive attack dealt more damage than the last until you hit the maximum amount of damage.
In Revenge of the Starmen, the idea of the 1-2-3 is preserved, but the player now progresses to the next link in the chain on each turn regardless of whether or not you make an attack. Unlike Grid, Revenge of the Starmen is constantly looping regardless of the situation (e.g., 1-2-3-1).
The aim of the "combat step system" is to remove utterly random damage, allow for a deterministic approach to tactics, and still allow for a more complex approach to damage than simply always doing 2 damage or whatever.
The goal of moving away from the chained attacks from Grid is to encourage the player to make clever use of movement and waiting. For example, if the player is at step 1, it might be best to move away from an enemy, wait a turn, and then turn around and smack the enemy for maximum damage potential.
I'm going to post a few more of these mechanical previews over the next week or two leading up to the first public release.
2015 was a big year for me in a lot of ways, including development productivity. I released Grid, Iron Fist, and Lost Valkyrie in the front half of the year. Later on I decided to break off from Python and learn Unity3D, which lead to the creation of CubeTV and several other mini-projects.
It was a great year for simply learning stuff. The three Roguelikes are really a trilogy that isn't thematically connected. Each one of them was an attempt to push the mechanical envelope forward. Not surprisingly, I think Lost Valkyrie hit the nail on the head. Placing 10th place at 7DRL 2015 was a great confidence booster.
One thing I've craved throughout much of the latter half of 2015 is something I can continuously work on. The three Roguelikes are solid games, but I think they work best as bite-sized pieces. Expanding on them feels wrong.
CubeTV was meant to satisfy the aforementioned desire for a couple months, but unfortunately real life got in the way and I just haven't been able to find the motivation to return to it. It's a fun game and I've enjoyed my time with Unity, but now is not the time for it.
In an effort to scratch that itch I've been working on a new Roguelike I'm not quite ready to fully reveal yet. It's working title is Revenge of the Starmen and I'm sure you can guess its thematic inspirations. It is being built off the remains of Lost Valkyrie, but is considerably longer and has more mechanical layers. It also has a title that shouldn't be horrendously hard to Google, unlike some games (ahem, Grid...).
Blog content has been lackluster this year to say the least. I basically post here any time I'm comfortable in releasing something or when I want to have a meaningful discussion about something I've released. It's a little telling that there's been so few posts this year. I'm not going to promise more posts since I have a bad history of making false promises here, but I will say that if I stick to Revenge of the Starmen you can expect considerably more blog content.