top of page
  • Writer's pictureBranden Fowler

Neon Hunter: Pre-Combat Systems Document

Updated: May 4, 2023



This is kind of a long read, but I felt that it could be interesting to document what went into this project.

 

The Rundown


Neon Hunter is an action-adventure game with light puzzles. It features three major sections, “Explore”, “Map”, “Quests”. Each of these systems feed into each other to create the game’s loop. Neon Hunter: Pre-Combat is a proof-of-concept version of this that features each of these sections, with one notable thing: Combat, a feature that affects the Explore and Quests sections, is not yet implemented. Despite this, this proof-of-concept has mostly finalized versions of each section.

All of the game’s concepts, gameplay decisions, and programming have been designed and created by me over the last few months to create this proof-of-concept. The original idea for Neon Hunter was also created by me prior to starting this project. The pixel art and player character model were created by me, but the other art is from open-source packs, specifically created by Kenney and KayKit.


 

The Loop


The three sections feed into each other to create the gameplay loop. “Explore” is the main section that the player will find themselves in. Inside this section, the player gets to explore an area of the playable map. Often, within this playable section, the player will find various quests which lead into the “Quests” section. Quests can then be completed and will reward various things, but primarily, these will be Map Pieces, and lead into the “Map” section. Upon using the “Map” section, the player can use their collected Map Pieces to unlock and place more playable areas. This then leads back to the “Explore” section, which restarts the loop, expanding the total area the player can explore as they play.



 

Breakdown


“Explore”

This section features an isometric camera view and lets the player explore an area determined by what is placed in the “Map” section. The player can move, turn the camera to see different angles, and interact with various objects.

[In a fuller Neon Hunter, attacking, and various combat actions would also be an action the player can do within this section]

Objects in this mode can be interacted with, with various outcomes because of it. In the Pre-Combat Version, Dialogue can be engaged, and certain objects can be picked up for quests using the interact action. This system allows for many other types of interactions, but the ones shown in this version show it quite well.

Quests and Map Pieces can easily be given to the player through the Interact action, all the quests in the Pre-Combat Version are given through this way via the player having a Dialogue with various objects, mainly NPCs, but not exclusively.


 

“Quests”

This is a more nebulous section, as its presentation can/will shift depending on the type of quest. For Pre-Combat, all the quests are based in the “Explore” section, meaning all parts are accessed through the areas they can explore.


While quests can take many shapes, they all have some connected features. They all have: a source of a quest (an NPC usually), a number of steps required to complete, name, description, step description, but most importantly a reward. In Pre-Combat, the reward is exclusively Map Pieces, but the reward is as nebulous as the quest type, and other quests can even be a reward, for example.

Quest types are not hard baked into the quest, but rather the individual steps needed to complete the quest. This means that a single quest may involve doing various types of tasks, as the quest seems fit. For Pre-Combat, there are two types of quest steps: Collect All and Interact, and most quests feature both.


Collect All

Objects will be littered across the explorable areas and can even be located on areas that are either not unlocked or haven’t been placed yet. As the name suggests, the player is tasked with collecting all these objects to complete the step. One major hurdle that makes this step interesting is that the player must collect all the objects without adjusting the playable area, meaning that the player must locate all the objects, and determine if they can all be reached in a given layout. This means that layouts can become very maze-like as the player makes sure they can access all the areas they need to for the step. These are denoted in Pre-Combat by objects with the name of the quest above them.


Interact

Simple step, usually reserved for the turn-in step of quests. All that the player must do is interact with an object, usually leading to a dialogue. Upon finishing the dialogue, the step is complete. In Pre-Combat, these steps are denoted by an exclamation point above an NPCs head. These exclamation points are given a color based on what step they are:

· Red for giving a quest,

· Yellow for advancing a quest,

· and Green for turning-in/completing a quest.















Quest Steps also have a description which is added to the visible quest information.















 

“Map”

Upon completing a quest in Neon Hunter, the player is rewarded, mainly with a new Map Pieces. The Map section can be accessed from specific areas, in Pre-Combat from a single pillar in the center of the map. Once in the Map section, players will see their available Map Pieces and a simplistic view of the explorable area. Each Map Piece represents a different area of this explorable area and can be moved and placed in any location the player sees fit, meaning the overall explorable area can and will be unique to each player. After placing whatever Map Pieces that the player wants to place, the player can then leave the Map section and return to the Explore section. Since each Map Piece represents a unique section of explorable area, any new pieces earned from completing a quest will feature previously inaccessible locations, which will in-turn include new quests for the player to complete.

Map Mode with no Pieces

Map Mode with Map Piece Collected

Map Mode with Map Piece Placed


 

How Does It All Work


“Explore”

Movement

This section uses a simple player-controller which gives the player the ability to move Neon around the playable area. Interact, Attack (not fully implemented), Turn Camera, and Open Inventory are all other actions the player can do in this section, Using Unity’s New Input System. This system allows for the easy addition of multiple control schemes. For example, while currently disabled, most Explore mode actions can be done on a controller as well as a keyboard, already.

 

Interact

Certain GameObjects have the Interactable tag. Objects with this tag will trigger the InteractZone that is located on the player, setting whatever object that triggered it to be the current interactable object. Pressing the Interact key will access what interaction that interactable object has (load into Map section, continue/start dialogue, and pick up quest objects.)

 

Attack

Currently sends out a message indicating the attack key has been pressed.


 

Turn Camera

Has a list of angles, pressing the key rotates the camera smoothly to the next angle.


 

Open Inventory

Disables/Enables Movement, while doing the opposite for the Pause Menu screen.


 

Dialogue System

Some Interactables can have dialogue attached to them. The Dialogue system is a variant to the Interactable System, meaning all Dialogue in Interactable but not the other way. The Dialogue system also features various additives as well.


The base system is split into two parts: DialogSO and Dialog.

The first manages a single Interactable and allows for it to have any number of Dialogs. The DialogSO also features two helpful design variables: which Dialog is shown first (labeled Dialog Start) and which Dialog to show after that, if not overwritten by another variable (labeled Spoken To).


The Dialog part handles each individual dialogue, and includes: the speakers name, a spot for a sprite to represent them, and a spot for any number of sentences that make a particular Dialog. This also tracks if a specific Dialog has been finished (by reaching the last sentence) or canceled (by disengaging with the Interactable). These have their variables placed on a UI object that showcases them for the player to see in-game.


Two types of Dialogue Additives Exist: Quest and Tile. Both give their respective thing upon reaching a specific dialogue determined by the additive. As mentioned before, these additives have a place to input a variable that will overwrite which Dialogue is shown, allowing for greater control on how a dialogue will go. The Quest Additive also features a variable to control whether a particular quest is available or not, based on which quests the player has completed at any time. The Quest Additive has a variant which allows for the Interactable containing it to be disabled after acquiring its quest.






The Interactable object features other variants. Much like the Dialogue ones, there is a Map Piece (labeled Tile) and a Quest one. Rather than opening a Dialog, these will simply reward the player with either, but making sure the player does not already have it in their inventory. One other Interactable variant is the QuestObject, it is linked to a quest step (explained later) but will also disable itself, and visuals if desired, after being interacted with.



 


“Quests”

Quests Base

This is the part that gets added to the player’s inventory upon starting a quest. It features a spot for the name, description, step description, and total number of steps. Since a particular step can be anywhere, sometimes nowhere, within the “Explore” Mode, specific steps are not tracked here. This allows for steps to be added and changed rather easily since the main quest doesn’t need to know exactly where each step is.


 

Quest Step – "The Meat of the quest"

Currently only two of the three main types of quests steps are represented in Pre-Combat: as previously noted – Collect and Interact. The base step which both of these types inherit from include variables for: what quest it goes to, what is its reward (only related to steps that end a quest), and a visual for when the quest is active. The base step also includes a variable to set what step of the quest it is and will actively check to see if its quest is active and currently on its step, at which point it will become the active step. Completing the step’s action will complete the step and will either raise the current step to the next one or reward the player, depending on if it’s the last step.


Interact Step

This step takes in a dialogue, upon finishing the dialogue, the step will be completed.



Collect

This step has a variable to set the number of objects needed. QuestObjects have variable that links it to the step, when the “Explore” section is loaded, all QuestObjects for a particular Collect step will be added to a list, and if the step is not active, then be disabled. Once the step is active, all objects within the Collect step’s list will be active. Collecting a QuestObject will add it to a CollectedObjects list and once that list contains the number needed the step is complete. It is set up like this because not all QuestObjects will necessarily be activated at once, meaning the amount of QuestObjects in the base list may not be the same amount as needed so we check the amount collected at any given time instead.

Quest Object

List of Collect All Steps, located on the GameDataManager


 

Quest Reward

There are two types of rewards currently implemented though only one is used. These are Map Pieces (labeled Tile) and Quests. They are added to Interactables with a quest step, particularly a quest step that is the last step. Upon completing that step, the player will receive the reward.


 

NPC Activator

Linked tangentially to the Quest section is the NPC Activator. Due to how the dialogue and quest systems are set up, one Interactable could not easily have more than one quest to give. This simple addition is used to hold any number instances of an interactable and sets its state based on specific variables. These include: if the player has certain Map Pieces or Quests in their inventory, or if the player has completed certain Quests. This allows for Interactables to ‘move’ around as time progresses and let’s a single Interactable ‘hold’ more than one quest.


 

“Map”

The Explorable area that the player can explore is based on the map from this section. Both are on a grid, even though player movement is not based on grid movement. Both grids have a size (width and height) and a tile size. Both grids also use the same saved grid, which holds important information, but both use them a little bit differently.


GameDataManager

a script that holds vital information and is persistent in every scene, allowing for information to easily be transferred from Explore to Map. An Important bit for this is that this holds the saved map that both Explore and Map utilize. This map houses MapModeTiles on an X/Y grid, simply put each X and Y coordinate on this grid hold a MapModeTile.


 

MapModeTile

An object that holds the visuals for it on the Map Mode screen, its TileBase and what TileGroup it is a part of. This holds the information that will be accessed by Explore mode and is also the visuals for the Map Mode.


 

TileBase

A simple container that holds the image that Map Mode will use and the Tile that Explore Mode will load. Empty Tiles and the Home Tile (where the object to enter Map Mode exists) are also TileBases and will be saved/loaded like the rest of the explorable map.



 

TileGroup

A group of TileBases all with relative x and y values. These values are relative to where the mouse will be located when the TileGroup is selected. This also holds a variable to keep track of if it’s been placed, which is saved in the GameDataManager.


 

TileCard

This is the object that the player can interact with to place a TileGroup. It creates the visuals based on the TileGroup. A variant of this exists for Explore Mode which removes the interactable part, leaving only the visuals.


Tile Card in Inventory

Tile Card in Map Mode

Tile Card Inspector


 

The Map Grid

This grid takes the saved map and loads the images of the saved MapModeTile and places it at correct X and Y position. This grid can see if the player has clicked a square on the grid, knowing the selected square’s position. This allows the player to be able to place TileGroups. Upon clicking the grid with a selected TileGroup, the grid checks each of the TileBases in the TileGroup, using the square clicked as (0,0). This process makes sure that each TileBase is being placed on the grid and only on top of Empty Tiles. Afterwards, the TileBases are saved on the grid via the MapModeTiles, and the TileGroup is added to the placed list. If a TileBase is selected to be removed, the Map Grid also checks for any other MapModeTiles that are part of the same group, replacing them all with Empty Tiles and removing the TileCard from the placed list.



 

Explore Grid

After exiting the Map Mode, the map is saved to the GameDataManager, which returns to the Explore Mode as well. Upon loading in, a grid of the determined size is created and the values from the saved map are loaded. Rather than load in the UI images like on Map Mode, this one takes the tile prefab and loads it in is correct place (determined by it coordinates and tile size). These prefabs are locations that the player can explore and can be filled with just about anything, but Interactables will be found in some of these prefabs.

Explore Map Prefab


 

Looking Ahead

A Somewhat Darker Future

As noted by the title of this proof-of-concept, this is Neon Hunter sans Combat, a major feature that aids in creating the full Neon Hunter experience. Alongside the other Quest Types, two will be linked to combat: Slay All and Hunts.

Slay All

There are enemies within the explorable area, much like Collect All, slaying all the required enemies completes the step.

Hunts

The player will be tasked to hunt down a particular target or clear out a particular area. A notable distinction from the previous type is that Hunts don’t take place within the explorable area but rather in a separate, unique location tied to the Hunt. This primarily is shown through boss fights, where the player takes on targets in specifically designed arenas built to create unique and memorable boss fights. Hunts can also take the form of small dungeons filled with enemies and puzzles for the player to deal with to complete the Hunt. Whatever happens with the Hunts may be different per Hunt, but all will be in a separate location from the explorable area they are expanding through quest completion.

More Places in Need

Another goal for a much larger Neon Hunter is the inclusion of multiple towns/areas that the player can visit and unlock through quests. These would have different map mode mechanics, creating unique new challenges to conquers.

Who is Neon?

Finally, there is a story for this game that exists that only gets barely scratched within this proof-of-concept. A fuller Neon Hunter would go into "Who is Neon?", "Why are they here and Where are they?", "What is this darkness?", and more.

 

Closing Thoughts

I believe that what I created for this proof-of-concept works very well as a base for a possible larger game. While combat will be a major focus of what makes the full Neon Hunter interesting, the things I was able to create and add to this early version of the title give me immense confidence that I am able to create complex game logic. Learning how to save and use things like the grid-based maps were an interesting challenge, one that I was able to overcome. Designing a quest system that had parts that could be anywhere at any time, even inactive, was also a fun challenge to work through. Although the journey to a fully playable game someone may want to pay for has just begun, I feel as if these initial strides have created a useful framework for the rest of the journey. Even outside of this project, the lessons I’ve learned, like purposefully designing things for multiple purposes, will help me tremendously in any and all future games I may try and design and make.


bottom of page