Nodebound & Keybored operator DevLog

These two games are the submission to the Lost Relic Game – Game Jam.

The game jam lasted for 9 days, which means that it’s from Friday to Sunday. As I only looked at the day in week instead of the actual date, I thought it’s a 2-days jam. When I rushed my first game and submitted it in 48 hours, I realized that I have 7 days left to spare, so I decided to make a second game.

Anyway, back to the game.

Nodebound

The theme is connection, so the idea for the first game is that the player is connected to a node, and can only move around it. The player can hack nearby nodes and connect to them once the hack is finished. The goal is to connect all the nodes as fast as possible, while fighting against some sort of enemy.

First thing first, the movement. It can be done easily using the RotateAround method. I just need to calculate the angular speed when the user jumps to another node, which can be in different sizes.

That brings us to the next point: node generation. I did this by selecting a random size, placing it in a random location with a random distance to an existing node. If it collides with any existing node then the placement will be cancelled. The game will keep doing this until a certain amount of nodes are placed (*30).

Now to implement the hacking and jumping to different nodes, I’ve added links between nearby nodes. If the player is near the link the hacking will begin automatically. Once the hacking is done the player can press a button to jump to the associated node.

Next up, camera tracking. The game would not be playable if the camera doesn’t follow the player. Luckily this can be done easily by using Lerp. I’ve also tried to track the rotation as well but it’s too disorientating so I didn’t go for it.

I’ve also noticed that it’s very hard to get a full picture of the surroundings. So I added a minimap at the bottom left corner. To do that it’s simply just adding a second camera, then adjust the viewport, and tweak the culling mask.

Now for the combat system, I’m gonna zoom over it real quick as it’s just the basic stuff. When the player presses a button, spawn a bullet on top of the player and make it keep going in the same direction. If it collides with an enemy, deduct a health point from it and if it reaches zero then despawn it. For the enemy, use the A-start pathfinding to guide itself to the player, position itself on top of the player and then shoot the bullet. If it hits the player then deduct a health point and if it reaches zero then game over. Oh I’ve also added some variety by implementing a few more enemy types. A melee type, a tanky type, and a AOE type.

The gameplay is quite boring, and it’s lacking progression. So I’ve added some points to the nodes, which can be acquired when the player connects to it. The points can then be used to purchase upgrades, which can help the player to connect more nodes faster.

Since the game looks a bit dull, I decided to do a quick visual update. I changed to color of the material to HDR, and turned on the bloom, which gives a more neon look. Quick tip, you can create a fancy 2D background by using the particle system.

Next, I added the music and sound effect, which I got from the Ultimate Music and SFX bundle from Unity asset store.

Lastly, to polish up the game a bit, I did the bare minimum for the UI (at least that’s my standard for minimal UI). That includes a main menu with play button, audio settings, an exit button if you’re building it as a downloadable. A pause menu with a resume button and a main menu button. A game over menu which I re-used the pause menu, I just need to change the resume button to try again button, and display the score.

Keybored Operator

So for the second game I decided to make a game about keyboards. For context, I’m a custom keyboard enthusiast, and I have like a few keyboards to switch around. The inspiration is that I’m connecting and disconnecting different keyboards for different purposes, and I want to make a game based on that.

So the first thing I did is setting up the scene with assets from the polygon office pack by Synty.

One of the main mechanics is that you can drag the connector around with your mouse. When the connector is selected, there will be a force pushing it towards the mouse position.

The next step would be dropping the connector at the port. It should connect it to the port but currently it’s just falling down to the table. So let’s fix it! When the mouse button is released, a ray will be cast at the mouse position, if it hits the port’s collider, then we know the connector is dropped on the port and they should be connected together. I’ve also prevented any new connector from connecting the port if the latter is already connected to one. 

The connecting and disconnecting is working well, but there isn’t a purpose to do so. Let’s generate a task, where the user has to input using the keyboards, and also, implement the keyboard buttons. The task manager will handle the input from the keyboards, and if the input matches the current task, it will generate a new one.

Cool, in the meantime I’ve added outlines to the object the mouse is hovering on, using X from the asset store. This makes it much clearer which object the mouse is hovering on.

Now we have most of the game mechanics implemented, but there’s still one thing missing. There’s no way to lose the game. So I added a timer, which the player will need to complete a task before it runs out.

In terms of UI and menus and audio, there’s not much to say about them. I did the minimal requirement for the pause menu: resume button and  main menu button. For the main menu: play button, difficulty selection, and audio settings.

And then there’s one thing I was very reluctant to do: wire physics. I tried multiple ways to implement it but none of them ever worked. I ended up using the method Sebastian Lague used in one of his videos, the result is a cable that looks pretty legit, but doesn’t have any collision implemented. Ideally the cable should be able to tangle together but I guess this is enough for now.

For the difficulties, it’s actually quite simple, I just have to remove the things I added to the game. For example, for second level, I removed the color coding; For third level, I removed the cable; For the last level I removed the keycap legends, so the player will need to rely on the memory to play the game. Honestly this only took me like 10 mins to implement, or technically it can be called de-implement, not sure if that’s a word or not.

For this game I’ve also attempted to do some writing for the first time. I’ve added some dialog with some sort of “storyline” where the player progresses through the difficulty.

Lastly I added a tutorial for the intern difficulty. This is done by simply checking a few factors: which input is expected, and also if the port is connected to a connector and if it’s the right one, and if the player is holding the connector. All these factors runs down the logic and the game will determine which object should be the target and put an arrow and text on it.

1 thought on “Nodebound & Keybored operator DevLog”

Leave a Comment

Your email address will not be published. Required fields are marked *