Dungeon Dual is back online! This was my 2014 7-Day Roguelike and probably my most popular successful 7DRL to date.
Unfortunately I lost the domain and a lot of the web pages for some of my old games earlier this year due to myself being a dummy. I was able to bring RoboCaptain and Heavy Axe back online relatively easily.
Since it has co-op multiplayer, Dungeon Dual was a little trickier. It's also entirely written in CoffeeScript, which I have not touched since switching to TypeScript a few years ago. There's also a WebSockets server that handles the back-and-forth between the two players.
In any event, after a long afternoon of hacking, the original 7DRL version is back online in all of it's... glory?
It definitely plays a bit rough, but I must say I was rather surprised at how fun it was. It was cool to see a lot of that old gameplay working again. (like banish! which is still insanely overpowered)
Version 0.55 - Tutorials and More
Saturday, August 10, 2019
I've put the latest version (0.55) of Warning Call here.
The bulk of my time has been spent building a tutorial level. It's not done yet, but it's accessible from the start menu. More to come here - I've never written a tutorial before so it's an interesting challenge. All of the feedback I've gotten from the kind devs on r/roguelikedev has been helpful in seeing the game in a different light.
Major changes from the last version include:
The bulk of my time has been spent building a tutorial level. It's not done yet, but it's accessible from the start menu. More to come here - I've never written a tutorial before so it's an interesting challenge. All of the feedback I've gotten from the kind devs on r/roguelikedev has been helpful in seeing the game in a different light.
Major changes from the last version include:
- Removed Targetbots (t) from the first level
- Fixed bug where Empowering and Ammo-generating nanites would not allow power usages if you had zero charges.
- Enforcing same hotkey press for powers & confirming target. This makes it easy to double-tap a hotkey when targeting quickly. This also allows you to return the Axe using the same key that you threw it with. (pro-tip: you can have more than 1 Axe power installed at once!)
- Made sure Warp Beacons cannot be trapped behind impassable terrain
- Gridbots (x) no longer get stuck in the wall when they explode out of a Xenobot (X)
- Put the Power menu as the first line of the footer
- Added the SEED # to the header (mostly for help in bug reporting, but eventually for game-sharing)
- Spread out the guaranteed powers on the first level - the starting room was way too cluttered
- Fixed mysterious game-crashing bug with 'empty' nanites spawning on the ground in deeper levels
Feel free to post comments, bugs, and feedback below, or on the reddit link above. Or e-mail me: todd AT (this domain).
Latest Version of Warning Call (aka Hardpointe) online
Friday, July 26, 2019
The latest version (0.5) of Warning Call is here. (I changed the name from Hardpointe, but the game is the same). If you have commentary leave it on reddit here.
A full list of changes since the last playable version is below. Thanks, and enjoy!
From 0.5:
- On-screen radial menu replaces 'ambiguous input' menu:
- Makes it simple to double-tap space to wait when standing on wreckage
- Can no longer escape out of radial menu
- Interface updates:
- Warp Beacons and Airlocks are highlighted when not in view
- Significantly expanded HELP content
- Better item and power descriptions all around
- Cycle between enemies while targeting with 'e'
- Inventory is sorted more usefully
- Power install menu has better shortcuts (allows player to quickly tap SPACE + # to install a power into a given slot)
- Grenande targeting shows area of effect
- 3 new nanotech types (found as items and on the grid):
- Recharging nanotech (temporarily makes all power uses 'free')
- Reloading nanotech (temporarily makes all weapon uses 'free')
- Strengthening nanotech (temporarily adds the HULK effect and +1 melee damage)
- New enemies:
- Gridbot (1-hp enemies that always appear in pairs)
- Xenobot (explodes into gridbots when destroyed)
- Megadrone (constructs mini-drones out of nearby scrap)
- Protectobot (casts shields onto nearby allies)
- Interdictor (able to see cloaked targets and use a displacement field to cancel PHASEWALK and CLOAK effects)
- Ability to 'sacrifice' Warp Crystals to double SCORE
- Enemies take damage when falling through chasms
- Different icon for weapon powers vs. ability-based powers
- Better distribution of grenades, powers, and nanotech items
- More wreckage distributed across levels
- HACK effect is now temporary, and scales with power level
- PHASEWALK is now more liberal when calculating if a ranged attack goes through you and hits a nearby enemy
- Power level is now tied to how long (or far) powers last
- Lowered the base duration of most power effects (but they now scale with level)
- Warp beacon menu improved and text made more helpful
- new HULK power that temporarily adds +1 to melee attacks
New Site - Old Games Back Up
Sunday, June 23, 2019
I finally uploaded my redesign of heroicfisticuffs.com and have started restoring some of my older games. First up are roguelikes from the 2012 and 2015 7-Day roguelike challenges, all browser-based and utilizing the amazing rot.js library.
RoboCaptain
Next up will be Dungeon Dual. This one is a bit trickier since I need to get the co-op engine running again as well as a django server that powered the leaderboard and login process.
Let me know if you run into any trouble playing either game.
RoboCaptain
RoboCaptain specializes in ranged combat and power-management similar the old X-Wing games. Looking back at it now it is pretty rough, but also very complete and still fun, which is saying something.Heavy Axe
Heavy Axe is a small-scale classic roguelike featuring extremely tactical combat. Journey through the temple to slay the gods themselves, using a massively heavy axe. Moving with the Axe drains stamina, and stamina determines damage, so moves must be planned carefully to avoid running into an unkillable foe.
Next up will be Dungeon Dual. This one is a bit trickier since I need to get the co-op engine running again as well as a django server that powered the leaderboard and login process.
Let me know if you run into any trouble playing either game.
I can't just kill you, can I?
Sunday, June 9, 2019
One of my overriding design principles of Hardpointe is to keep the number small. Originally the rule was "nothing over 3."
- The player has a maximum of 3 hit points. The player can cheat a bit here and add 3 shield points temporarily using the shield power.
- All regular enemies have a maximum of 3 hit points. For some enemies, this is a combination of health and shields, the later of which are usually temporary and also vulnerable to EMP grenades.
- All attacks do 1 damage. There are no enemies that do over 1 damage. The player can add +1 to their damage by using a wall-smash, surprise attack, or the `hulk` effect.
I really enjoy the tactical decisions that these design choices enforce on the player. But they also force some tough decisions on me, the developer.
When the player only is only ever 3 hits away from death, there is no room for taking easy (or "cheap") hits at the player. Part of this is making information about battlefield as clear as possible. Another part is toning down the usual brutal mechanics that power my favorite roguelikes.
For example, in Hardpointe there are tiny nanites that effect the player when you step on them. You will see them, and you can use the HUD to find out what they do. But, there is always the chance of a player stepping on them accidentally. So, for that reason, there are no cases of 'instant' damage in the game.
Corrosive nanites (orange dots) |
Right now, the closest we get are 'Corrosive' nanites, which make the player (or any enemy) weak enough to kill in one hit - temporarily. This is a great advantage to the player if they can make use of them, but also not instant death if they are forced to step on a square, or they trigger the effect inadvertently while not paying attention.
There are other nanites that will make the player temporarily invulnerable, or temporarily do +1 damage. Again, great advantages for the player, but getting terribly close to an instant-death situation if an enemy steps on them and the player does not notice.
Enemy changes color as a warning* |
In this case we turn the monster a different color when they are either invulnerable (as the player is in this gif above after stepping on the neon green nanites on the left) or `Hulked Up`, after stepping on strengthening nanites (dark green on the right). There's also a HULK power that the player can use but I think it is a bit overpowered.
(* don't worry, I made the color change more dramatic once I saw this in GIF form)
(* don't worry, I made the color change more dramatic once I saw this in GIF form)
A long-dormant chunk of code in Hardpointe deals with radiation and fire as features. Since in most games fire does damage, I've not yet come up with a good way to add it that does not seem unfair. Radiation is a bit different - it will not kill you instantly, but will start a timer on the player. If you don't get out of the irradiated zone before the timer ends, you will take 1 damage. This seems like a good trade-off. There's also a HAZMAT suit power coded up that I can make use of some day and add specialized rooms or levels where the player will need to sacrifice a power to make it through unscathed.
In summary - I can't promise not to kill you. But I can promise that you will see it coming.
Design Goals - How am I Doing So Far?
Thursday, May 9, 2019
When I started Hardpointe as a 7-Day Roguelike nearly two years ago, I posted some design principles. Since I'm well past the point of having a fun and playable game, let's see how I did:
I'm up to at least a dozen enemies now. They DO all have a unique combination of behaviors and abilities (e.g. you're not mildly tougher flavors of Orc). Enemies that explode into other enemies when they die. Enemies that summon other enemies. Enemies that create shields around their allies. This is something I've purposefully stuck to and been inspired by Brogue quite a bit. In fact I've had to cut myself off from coding new monster behaviors since I think I probably have too many at this point and I'm still not sure how 'large' the game world should be. I want to be sure there is enough room for a mix of all of the different enemy types.
One area I've had some fun with is creating 'boss' enemies. Where I take a look at the abilities I've coded, and figure out if there's a weird way I can combine them and make a tougher bad guy.
It's up in the air whether people actually use z (on-screen HUD) and x (examine tile), or if just one is enough.
One other area to consolidate is probably the inventory (e) and power management (q) keys. Maybe another radial menu? I do like the idea of inventory being completely on-screen, but it also can get messy quickly. Menus may be a necessary evil in this case.
Tactical combat built from fun mechanicsCheck. The combat is still very fun to me, and has gotten more tactical with the multiple enemy types. The wall-smash has remained fun since day one. Dashing is always fun. The shield mechanic was mostly a no-brainer in the original version. Now since every use is limited by a timer, even using the shield feels a lot more tactical to me. The knock-back effects still never fail to bring a smile to my face, so I think I'm on the right path here.
The BATT knockback effect |
Interesting enemies, with behaviors that match their abilitiesCheck. The original version had 2 or 3 enemies. Targetbots attacked from kept their distance, making them extremely deadly in a game with such limited hit points. Since then I've tweaked the behaviors for ranged enemies to require target locks. This essentially gives you an extra turn of warning before you're about to get shot, which is a fun mechanic. It feels right at home with the other enemy abilities and behaviors. Killbots were your standard stand-and-smash melee enemies - not much has changed here, but they are still the rare pure 2-hp enemy. BATTs were there from the start as well, but now they knock everyone backwards when they die, which can be dangerous or advantageous.
I'm up to at least a dozen enemies now. They DO all have a unique combination of behaviors and abilities (e.g. you're not mildly tougher flavors of Orc). Enemies that explode into other enemies when they die. Enemies that summon other enemies. Enemies that create shields around their allies. This is something I've purposefully stuck to and been inspired by Brogue quite a bit. In fact I've had to cut myself off from coding new monster behaviors since I think I probably have too many at this point and I'm still not sure how 'large' the game world should be. I want to be sure there is enough room for a mix of all of the different enemy types.
One area I've had some fun with is creating 'boss' enemies. Where I take a look at the abilities I've coded, and figure out if there's a weird way I can combine them and make a tougher bad guy.
No numbers over 3Check (mostly). Hit points and damage all still use numbers under 3. As of now, every enemy attack does 1 damage, and there are only a handful of ways for the player to do more than 1 damage. Since the powers and abilities became less binary and more dependent on timers, there are now plenty of cooldown numbers higher than 3. But I've kept them at multiples of three as a way to pay homage to the original concept.
Minimal buttons/input keysCheck-ish? I've gone back and forth on this one. After some great feedback from Widmo on r/roguelikedev after my v0.3 update, I ripped out a lot of the menu-driven inputs and related functionality and put in a 'radial menu'. This has allowed me to keep the number of separate keys necessary to a minimum. So I have one key (SPACE/Action) that can trigger any of the following: rest/wait (usually), heave wreckage (2nd most common), install a power, use a warp beacon, read a note. So far the radial menu feels very non-intrusive to me. When I'm standing on some wreckage, waiting for an enemy to get closer, hitting a double-tap of the spacebar to wait once or twice is very efficient and doesn't take away any of my focus.
It's up in the air whether people actually use z (on-screen HUD) and x (examine tile), or if just one is enough.
One other area to consolidate is probably the inventory (e) and power management (q) keys. Maybe another radial menu? I do like the idea of inventory being completely on-screen, but it also can get messy quickly. Menus may be a necessary evil in this case.
The radial menu in action |
4b: playable with a gamepadNot yet. But I do have lots of placeholder code in place ready for when I dig back into how to get gamepads working over the browser. I did it once before for my 2015 7DRL 'Heavy Axe', so I know it's possible and relatively simple. I also assume compatibility has gotten better since 2015.
Give me the 30 second version
Tuesday, April 9, 2019
"So, what's it about?"
I'm probably mis-quoting Darren Grey here, but it's close enough. I was in London for a visit last year and while I was there I decided to look Darren up. I've been a big fan of his for quite a while. We've run in the same circles online, from the old rec.games.roguelikes.development (RGRD) to rogue temple and all of the incarnations of the 7-Day Roguelike Challenge to the current rogue-reddit "scene" at (r/roguelikedev and r/roguelikes). He also writes some great games - he's done a lot for the community.
So of course I was excited to meet him in person. And of course we start chatting about development, what are you currently working on, etc. Turns out being a new dad is not so condusive to programming, but I had been continuing to develop my failed 2017 7DRL Hardpointe. That's when I get the question: "So, what's it about?"
Oops. I didn't have a smooth or particularly convincing answer. Something about tactical combat, maybe?
A few months later, here was my first definition:
Here's my 2nd try:
Maybe somewhere in between?
How's that? (They keep getting longer... oops.)
I'm probably mis-quoting Darren Grey here, but it's close enough. I was in London for a visit last year and while I was there I decided to look Darren up. I've been a big fan of his for quite a while. We've run in the same circles online, from the old rec.games.roguelikes.development (RGRD) to rogue temple and all of the incarnations of the 7-Day Roguelike Challenge to the current rogue-reddit "scene" at (r/roguelikedev and r/roguelikes). He also writes some great games - he's done a lot for the community.
So of course I was excited to meet him in person. And of course we start chatting about development, what are you currently working on, etc. Turns out being a new dad is not so condusive to programming, but I had been continuing to develop my failed 2017 7DRL Hardpointe. That's when I get the question: "So, what's it about?"
Oops. I didn't have a smooth or particularly convincing answer. Something about tactical combat, maybe?
A few months later, here was my first definition:
Hardpointe is a "medium" sized roguelike with a focus on tactical combat and movement. Managing a limited set of powers, upgrades, and items will be critical to your success.
Here's my 2nd try:
Hardpointe (name subject to change) is a browser-based roguelike with a focus on tactical movement and finite resource management. Players have 3 power slots that can be upgraded or swapped out as luck and necessity see fit. Combat is deterministic and the numbers are small - almost all attacks do 1 damage and almost nothing in the game goes over 3 hp. (With 1 or 2 exceptions). There are no real 'vanilla' enemies. Fighting 1-on-1 is usually easy, but difficulty can scale quickly with multiple foes.
Maybe somewhere in between?
Hardpointe is a browser-based "medium-sized" roguelike with a focus on tactical combat and finite resource management. A lone soldier must infiltrate and destroy an asteroid fortress filled with robotic hordes bent on Earth's destruction. You will harness unique powers, abilities, and an assortment of weapons that you find along the way. Each enemy has unique abilities and behaviors that will require different strategies. Combat is deterministic and health is extremely limited; positioning and thoughtful movement will be your keys to victory.
How's that? (They keep getting longer... oops.)
Hardpointe still alive
Saturday, March 9, 2019
Despite my lack of posts and entire blog going offline for a bit, I continue to develop Hardpointe in my "free time". Progress did stall for the last half of 2018, but seeing all of the posts around 7DRLs earlier in Feb really pushed me to get back into making progress.
A lot of work has been behind the scenes since the last version. I did a lot of work to add a 'radial' menu. In an effort to reduce on-screen distraction and the number of button presses, when there is an ambiguous action, the radial menu pops up, and the available options always show up in the same spot. (e.g. 'Heave' is always the up key) It makes for much smoother gameplay.
Enemy AI was also changed to make them less omniscient and more cautious about doors. There was an annoying habit for enemies to "wait" behind doors and punch you right as you walked in. This wasn't really by design. Now enemies take a turn to go from non-alert to alert statuses. So if you walk into a room and they DO happen to be behind the door, they will act surprised for a beat. That gives you an opportunity to attack, back away, or do something else.
I didn't do any power switching in this video but that menu has been streamlined as well. You can now just hit space + <slot to replace> and not have to page through multiple screens or even read anything if you don't need to.
Here's me dying on the 1st level because I messed up a dash somewhere and got hit. In a 3-hp game you really need to pay attention to every single hit. Apparently I'm a bit rusty.
A lot of work has been behind the scenes since the last version. I did a lot of work to add a 'radial' menu. In an effort to reduce on-screen distraction and the number of button presses, when there is an ambiguous action, the radial menu pops up, and the available options always show up in the same spot. (e.g. 'Heave' is always the up key) It makes for much smoother gameplay.
Enemy AI was also changed to make them less omniscient and more cautious about doors. There was an annoying habit for enemies to "wait" behind doors and punch you right as you walked in. This wasn't really by design. Now enemies take a turn to go from non-alert to alert statuses. So if you walk into a room and they DO happen to be behind the door, they will act surprised for a beat. That gives you an opportunity to attack, back away, or do something else.
I didn't do any power switching in this video but that menu has been streamlined as well. You can now just hit space + <slot to replace> and not have to page through multiple screens or even read anything if you don't need to.
Here's me dying on the 1st level because I messed up a dash somewhere and got hit. In a 3-hp game you really need to pay attention to every single hit. Apparently I'm a bit rusty.
Subscribe to:
Posts (Atom)