hardpointe

Hardpointe - How to play (updated for version 0.3)

You can play it here.

Gameplay

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.

Our Story So Far

Humanity is on the brink of annihilation. Ever since the robotic uprising of the late 1990s, humans have waged a bitter war against their would-be AI overlords. Many decades later, Earth is finally free of war, but elements of the robotic hordes have taken to space and have taken refuge in the asteroid belt.

For a time, many thought the robots dormant, or dead. But they were building. Utilizing self-replicating machinery, they turned countless asteroids into factories, crisscrossed with countless mazes and dungeon-like interiors. Some they turned into weapons, and began hurling them at Earth.

Only a few asteroids have penetrated Earth’s defenses, but even these few have wiped out entire cities.

All efforts to attack and neutralize these strongholds have failed. Your mission is to succeed where others have failed. Infiltrate the asteroid, grab the Control Core, and bring it back safely. Your suit should be able to interface with any weapon systems that you find – human or robot. We cannot get close enough to reliably use our telewarp technology – so you will have to travel on foot. We may be able to link up to your suit at various beacon points. Look for warp crystals – the robots use them as much as we do.

Controls


Keys
Description
WASD, Arrow Keys
Movement (4-directional)
SPACE
Action (Wait, Pickup, Use Stairs, Activate)
e
Wait Only (by popular request)
1, 2, 3
Activate Power
i
Inventory
x
eXamine (look around)
z
Heads Up Display
(cycle with movement keys)
m
Power Listing

How to Play

Winning

For now, you can win by finding the Control Core and returning it to the exit that you started the game on. There are only 6 floors since the game is still rough and fairly unbalanced with all of the items and powers lying around.

Health

You have limited health. (almost nothing in this game goes over 3) All attacks in the game do 1 damage, with a few exceptions.

Powers

You have 3 power slots. You will come across powers during your mission – you can replace these with your current powers. You can also use them, dump them, and then go back and re-install your old powers. Some powers can be upgraded to make them more powerful. All powers come with a limited number of charges – but most are rechargeable.

Shields

You start with a shield power, but you don’t need to keep it. When activated, you’ll get 3 shield points added to your health, for a limited amount of time. The more you UPGRADE your shield, the longer it will last before timing out. Taking 3 hits will destroy the shield regardless. Some enemies also have shields. An EMP grenade can wipe out shields – including your own.

Dash

You start with the dash power, which lets you move quickly across terrain to attack distant enemies. Just be careful putting yourself into harms way. Don’t dash into a 2-hp enemy unless you’ve already hurt them – otherwise they are sure to attack you next turn.

Hack

Allows you to overwrite an enemies programming, turning them into a permanent ally. Allies will try to keep a respectful distance from you – but they still sometimes get stuck in doors, so be patient with them. Enemies will go after allies first if they can get to them. There is at least one “unhackable” enemy in the game – you will know it when you see it.

Cloak

Activates temporary invisibility. Enemies will not be able to see you while cloaked, allowing you to escape or sneak past them unsuspected. Enemies will move towards the last place they saw you, making for an easy way to set up traps. Any attack will remove your cloak, but any melee attack will also gain +1 damage.

Phasewalk

Gives you the ability to walk through walls and enemies. While phased, enemy attacks will go ‘through’ you, so if you can set them up properly, enemies will take each other out while trying unsuccessfully to kill you.

Heavy Axe

A powerful (and rare) ranged weapon. When thrown, the axe can cut through multiple enemies. Because it is quantum-bound to your suit, the axe can also travel back to you – even across twists and turns – further damaging enemies on the return path.

Blasters (Guns)

You will find these one-off weapons during your mission. They are installed just like other powers, except they cannot be upgraded or recharged. Nothing stops you from swapping in a weapon (or two), using up all the ammo, and then swapping back. Great for taking out strategically difficult enemies.

At the moment, they come in four varieties:

  • Kinetic Blaster – No damage but triggers a powerful knockback effect (like a blast grenade)
  • Stun Gun – No damage but temporarily stuns enemies
  • Railgun – Simple 1 damage weapon
  • Cannon – Powerful 2 damage ranged weapon – use wisely

Grenades

You’ll find lots of grenades lying around for some reason. You can carry them in your inventory and throw them. At the moment, they come in four varieties:

  • Blast Grenade – has a powerful knockback blast that will send enemies flying back from the center of the blast. Anyone at the actual center will not be affected, making it a sometimes useful escape tool. Any enemies sent into walls will be temporarily stunned.
  • Stun Grenade – has a mass-stunning effect on any targets (including you) caught in the blast. Be careful, there is at least 1 “unstunnable” enemy.
  • Grenade – Does 1 damage to all targets caught in the blast
  • EMP Grenade – Knocks out all shields on targets caught in the area of effect

Nanotech

These are phials of tiny nanites. When thrown, they will begin to replicate and modify the surrounding terrain in mysterious ways. Some affects are beneficial to you, so be careful not to let your enemies take advantage of this. (Note these may temporarily out of the game while I balance them and make them a bit more interesting in terms of useable terrain)

Enemies

Forthcoming – you can use the HUD (z) or EXAMINE (x) to get an idea of what different enemies do. There are no ‘vanilla’ (e.g. 1hp/1dmg) enemies.

Tactics

Wall Smash

When you melee attack an enemy with a wall (or other solid terrain) behind them, your attacks will do +1 damage. This also works for dash attacks.

Wreckage

Any enemies with more than 2 health will leave wreckage behind. You can heave these into other enemies to do damage. Eventually, other parts of the terrain will leave behind wreckage as well, such as consoles, factory equipment, plumbing, etc.

Doors

Closed doors count as solid walls for purposes of  smashing enemies into them. However, a successful smash attack will destroy the door.

Target Locks

Most ranged enemies require a target lock before they can fire. They will flash and turn a different color when they have targeted you. The HUD will also give them a special flag (shown below).
Unless stopped, they will fire and hit you on the next turn. You can interrupt this by making the enemy move, moving out of range, or destroying them.

Warp Crystals and Warp Beacons

You will find warp crystals scattered around the asteroid. These function both as fuel and encrypted locators for Warp Beacons. Using a Warp Beacon will always consume 1 crystal, and will not work unless you have one in your inventory.
Warp Beacons allow you to link back to home base, and acquire upgrades to your current powers, or recharge them. You can also use them to restore health and also call in backup – home base will warp allies to your location. (currently they won’t travel to different levels with you)
Powers can be modified in 3 ways:

  • INCREASE – Increases the number of charges this power has – but will not recharge. You will get 1 charge along with the increase, though.
  • RECHARGE – Restores the power to the full number of charges.
  • UPGRADE – Some powers can be made more powerful (longer duration, further distance), doing this will not affect the number of charges.

Damage Stacking

Unless specifically stated otherwise (Cannons) all attacks in the game do 1 damage. For the player, there are a few ways of bumping this up: a wall smash (melee strike an enemy against a wall or solid object), a surprise attack (melee attack while cloaked), and one or two others. Do what you can to put the odds in your favor, especially against stronger enemies.

Winning the Game

Grab the Control Core at the deepest level and return it to the entrance you started at. Once you grab the core, the enemy will throw even more at you, so be prepared to fight your way up.



Welcome to my underground lair

Hardpointe is set on the asteroid lair of an evil robotic overlord – conveniently enough these lairs are surprisingly similar to dungeons. A bit.

Level design is the great time sink of every roguelike developer. I have a system that I’ve developed over the years (mostly for my 2014 7DRL dungeon dual) that I call the floorplan approach, which basically smashes a bunch of rectangles together. Once you have rectangles, you can easily convert them into rectangular rooms, or other shapes (cross-rooms, ovals, etc.) that will still fit within that bounding rectangle.

For Hardpointe, I have brushed off this algorithm and cleaned it up a bit to make it less wasteful. I am rather liking the results so far.

While level design is great, what I really want to get to is ‘lock and key’ style puzzle rooms. Think of the key rooms in brogue, or the linked challenges in Unexplored. Or zelda. In any event, Tom Ford did a lot of work around this in his 2014 7DRL TraumaRL and then did a great talk on his approach.

In order to accomplish this, I first needed a more intelligent level designer – one that kept track of separate rooms as if they were nodes on a graph. I had to brush off a part of my brain that hadn’t been used since CS classes many years ago, but got a working tree structure that should suit my needs.

I used treant.js to display the resulting graphs.

This first one corresponds with the above dungeon output.

Red nodes/rooms represent the longest (or one of the longest) paths in the level. In most cases, the entrance point will be at the top of the tree and the ending point will be at the deepest node of the tree.

Gray nodes are flagged as “dead ends” in that they have only one connecting room. This makes them great candidates for locked rooms, special challenges (and rewards) that will give the player a reason to explore the entirety of the level, should they choose to.

Here are a few more because I like them:

Heads up

Finally have a working heads up display (HUD) – one of my requirements for releasing an actual playable version of the game. I really want to keep the screen as uncluttered as possible, but at the same time allow players to get the tactical information they need. In general, all monsters have 1 hp and the behaviors are unique, so there is a lot of information that should be conveyed just from playing a few times.

Other important things to know are status effects, and whatever items or unique terrain is near you. (e.g. is that radiation?)

The code to get this working was actually really fun to write.

Other things tackled this week were ‘conveyed’ flags. Certain powers can now convey flags such as flight, or radiation resistance. In earlier versions I was doing this quite messily – lots of room for error when power systems were being installed or uninstalled. Now it flows quite naturally.

This is important because at some point I plan on adding ‘challenge rooms’ that require you to sacrifice one of your power slots for an otherwise useless power. For example, there is a really amazing item inside the next system of rooms, but the rooms are irradiated. Fortunately, there is a system near-by that conveys radiation resistance – but you’ll have to temporarily sacrifice something else in order to install it. What you choose to do away will may make the next couple rooms harder, depending on what’s inside of them.

Development Update: Handling the environment as a proper actor

I may try doing some smaller updates as I typically code in short bursts these days.

Recent Progress:

Doors
Added doors! (Seems silly & was easy enough to do, I just didn’t have them in there)

Targeting Locks
Target lock – ranged enemies with this setting now need an extra turn before they fire. This gives you a chance to somehow block or otherwise avoid the shot (force them to move is an easy way). Even with the symmetrical FOV changes I did last week, it still felt like ranged attacks were a bit overpowered. This new mechanic has a fun feel to it – and also differentiates monster difficulty. Now I can have ‘easier’ ranged enemies that require a target lock – in later levels you may run into enemies that don’t. Another idea is to give ranged enemies other disadvantages such as being immobile (turrets).

Environmental Effects
This is mostly behind the scenes, but I added a special ‘architect’ actor, who acts on behalf of environmental effects (fire, gas, features that interact with player/monsters standing on them). Because my engine is event-based, it was getting a little kludgey to have terrain/feature effects work properly.

This makes more complicated scenarios much easier to deal with. For example, if you want to have differing speeds for the player at some point (e.g. a haste or slow effect) then you want to be sure the ‘environment’ is behaving. If a player is trying to escape some gas or fire, and somehow speeds themselves up to escape, the fire or gas should not speed up too! Conversely, if a player somehow slowed, the gas should overwhelm them more quickly than normal.

Eventually the architect will also control things like spreading nano-materials and timed explosives.

Actual game mechanics

Lots of tiny steps this week.

I decided to spend some time rebuilding my FOV algorithm, which made it so ranged enemies weren’t quite so deadly. This had some knock-on effects that caused me to clean up some more of the AI and generic ‘awareness’ code behind the scenes. All in all, time well spent.

A main focus of hardpointe is tactical movement, and using the terrain to your advantage. To that end, there are ways for the player to actually create terrain, through various ‘nano cores’. These are basically tubes of little nano-bots, and eventually their contents will be unknown to the player until they actually try them out (much like your traditional potions & scrolls). As a placeholder, affected tiles were simply a 5-square ‘cross’ centered on the point of impact. For the actual gameplay mechanic, I wanted something more interesting, but also predictable. I didn’t want a quasi-random plume or cloud of gas. The mechanic I settled on follows a few simple rules:
1. always covers 5 tiles
2. always covers the target tile
3. only grows in cardinal directions, in order: up, down, left, right.
4. if any of these directions are blocked (by terrain, or existing nano-materials) it will stretch in the following direction

This allows the player to (somewhat) reliably create structures that will advantage them, and disadvantage enemies. For example, one of the nano-materials makes you invulnerable for 3 turns, but this affects anyone who steps on the tile – it does not discriminate between player or monster. Combine this with both negative and positive effects and you (hopefully) get some interesting gameplay.

Default spread

Corner limits spread in 2 of 4 directions

Hallways can give you a straight line

Surprisingly (or not surprisingly?) fun so far!