Sunday, September 14, 2025

Sunday Night Lazy DevBlog - 9/14

    Few things to update you on this time around. This week on the demo, I added:

  • Some searchable offices for the player to ransack.
  • A whole new floor with what can barely be called a puzzle.
  • Lots of character. 

    In all seriousness, the new demo is coming along a little slowly because I've been having fun with level design. It's be interesting to take a three path fork and cut it up different ways to make each path feel unique, add some distinct art to an area so players can orient themselves, make things arbitrarily longer.

    I've also been trying to pull design inspiration from and old Tomb Raider game I have been playing in my spare time. Before, I was making very small rooms filled to the bring with loot and searchable things and all clustered together. It made sense to me based on how I would design the space if I were actually using it as an office (or evil lair), but I've noticed in Tomb Raider there are these long, winding paths and tunnels that lead to big, elaborate spaces with something like a single health pack. 

    It doesn't feel like a waste of time somehow as a player. After all, you get to explore and get an item at the end, but I would be incredibly aggravated to have a 20 ft hallway between my sink and where I keep the dish soap. I am trying to keep that in mind while I make the floors. Make everything bigger than it needs to be and don't forget to reward the player, even if it's a small thing like a useless health pack or a cool mosaic.

    Also, I made a stupid, little fortune teller game that you can play for free on Itch.io. I call it Tarrot, pronounced like "Carrot." Give it a whirl and get your fortune told. 

    That's all for this week. Later. 

Micro Tutorial: Mass Messaging with AoT Lists

 

 
    As is tradition with the Micros, let's jump right into it.
     
    This bit of script sends out the message "Trigger" to every object on the AoT List named "Trigger_List" which can all be seen on the left side of the top image. I've linked up "Trigger_List" to a For Each Loop block on the input side. So, this loop will fire once for every item on the AoT list. In this case, five times. 
    It will also cycle down the list during each loop. So, you can see I've linked the output "Item" from the For Each block to the target object on the Custom Event block. This will make sure the message is getting sent to a new item on the list every time.
 

     On the other end, I have a simple Custom Event Arguments block waiting on each target object on the AoT list to receive their orders. (If you need a refresher on Custom Events, check the micro-tutorial here)
 
    If this tutorial was helpful to you, consider throwing me something on Ko-Fi or checking out some of my games. Either way, be back later with more. 

 

Sunday, August 31, 2025

Sunday Night Lazy DevBlog - 8/31

 

    So, last week (or last blog. I think that was two weeks ago) I mentioned that I was putting together the first serious demo for Operation Spilled Martini. Well, good news and bad news.

    Bad news first because I'm a pessimist. The demo level I had in mind let the player explore three floors of a lair, encounter multiple traps, find a good number of gadgets, collect some loot, find a blueprint for an upgrade, and plant some explosives. It was pretty fun. It was also a lot to polish and honestly a lot to take in as a player. Mechanically, everything in that demo is functional, but every little thing from the UI of the pistol to the sound effects of the fire extinguisher all need little tweaks. I could spend the next month or two just polishing all the gadgets and mechanisms in that demo level. 

    So, that one is on hold, or maybe cancelled. Don't worry, I am sure all those burglar-able rooms, traps, and tools will get reused in the final game. You won't miss out on any content.

    Now for the good new, there is a demo right now. You can get it free on Itch.io because I haven't finished setting up the Steam page for OSM yet. It's very simple, just go down a hallway and avoid lasers that will kill you, but it's keeping in spirit with things like Charlies Angels, Mission Impossible, and Archer, the patron saints of this project. 

    I think maybe for the next build of the demo, I'll put some McGuffin in a glass case at the end of the laser hallway for people to grab. That would be fun for me. Also more complex movement for the player to dodge. Speaking of which, I am doing this game in Early Access, partially because I've never really done that before and wanted to give it a go. Even the demo will get some updates as we get closer and closer to the final release.

    Thanks for reading everyone. Here's a parting shot of the laser hallway. 

Laterz.

Sunday, August 17, 2025

Sunday Night Lazy DevBlog - 8/17

    This week I started seriously putting together an early demo for Operation Spilled Martini. This means I didn't actually add a lot to the project, mostly just moved things around. It doesn't feel great as a developer, because it feels like you aren't doing anything at all, but it's necessary to make all the mechanics I've been throwing together actually have a purpose.

    I also took a mid-week break from OSM to build a little prototype where the player can sail a small boat around an equatorial ocean. I went kayaking earlier this week and couldn't stop thinking about it.

    Anyway, I'll try to add more to both OSM and put up some more tutorials for Trash HORSE this coming week. 

    Later. 

Sunday, August 10, 2025

Sunday Night Lazy DevBlog - 8/10

      In the past, I've done write ups for my games and ended up wasting so much time on editing and graphics that I could/should have spent improving my games. I want to start keeping track of how my project progresses without getting weighed down by making a proper developer blog. So, this is my first entry for my Sunday Night Lazy DevBlog, where I just casually list all the things I've added to my current project, or whatever.

      Right now, my main project is Operation Spilled Martini, a rogue-lite dungeon crawler where you get to play as a pulp spy and break into a villains secret lair to carry out annoying missions. Here are some of the newest additions.

-Added a turret trap that currently shoots poison darts when the player is in range.

-Fixed up the trip laser trap and made the darts that shoot out of the wall more deadly.

-Polished the fire extinguisher mechanic that lets the player see the trip lasers.

-Made some amazing improvements on the pistol, including reloading and picking up extra magazines.

-Built a main menu with some pretty fucking dope graphics. 

-Built a prototype for a new trap where a giant saw blade pops out of the wall and decapitates the player.

-Spent an hour chasing a glitch and debugging different audio scripts only to realize that the volume on my headphones was turned off.

      Thanks for reading. Come back again soon. Eventually I'll have a demo for you all. 

 

HORSE Tutorial: Grab

    In this tutorial, we'll go over the script that controls the grab and throw mechanics for the paper balls in the game Trash HORSE, which can be played here, or the full game package can be downloaded here.

    This portion of the script controls whether or not the player can pick up the ball. The Distance block checks the distance between the paper ball (this) and the player (player) which is a scene variable. Once we have that distance, we use the If block to check if the distance between the player and the paper ball is less than or equal to 4 meters. So, basically checking if the player should be able to reach the ball or not, so they aren't grabbing a paper ball from across the room.

    Also in this script is the On Mouse Down block. This is to say when the player has their mouse hovering above an object and they clock the Left Mouse Button, the script will fire. The object in question needs to have a collider for this to work.

 


    New stop, we have a check to see if the player already has something in their hands. So, we have a boolean variable called Holding which is a scene variable so lots of different scripts attached to lots of different objects can check and change it. We check if Holding = false, meaning the players hands are empty, and if they are empty we move on and set the variable to true, so the players hands are now full. And now even if there is another paper ball within 4 meters, the player can't grab it.


     Next, we move the paper ball into the players "hands" by making the paper ball a child of an empty object we have attached to the First Person Controller just under the camera, or where we usually see a gun held in a generic FPS. Then we set the Local Position to 0,0,0 meaning the paper ball will be at exactly the same place as the Hold_Point and change the rotation to match.


     Next we change the Object specific variable of Held to equal true. So, the paper ball is now in position and it registers itself as being held. Then we move to the Rigidbody block, Set Constraints, and freeze all, which will stop the paper ball from moving away from the players hands. After that, we turn the collider off (Set Enabled = False) so the ball doesn't smash into the players own collider and create weird problems like the player standing on what is in their own hands.

This took so much longer than I expected, so we're going to stop here and go over the next part of the script, throwing, in the next tutorial. Again, you can test out how all of this works in the web version here on Itch.io, or if you want to dive into the scripts yourself, you can download the whole package here for Unity.

Later.


 

 

Buy Me a Coffee at ko-fi.com

Sunday, August 3, 2025

Micro Tutorial: Adding "Crouch" to the First Person Controller

 

    Alright, so I recently needed to add a crouch function to the basic Unity First Person Controller for a project I'm working on. Not sure why it doesn't have one to begin with, but whatever. Here's how I went about it.

    In the red box, we have a toggle function. When the player clicks the Left Control button, the script goes to an If block and checks the players height. Notice we are getting the players height, not scale. 2 is the players crouch height.

    If the players height is equal to 2, the script registers that the player is not crouching and goes to the blue box. There, we set the players height to 0.9 with the first block, set their waling speed down to 2, and their sprint speed down to 3. It makes them short and slow, you now, like crouching does.

    If the players height is not equal to 2, the script takes us to the yellow box, sets the player back to their normal height, which is 2, pulls the players walk speed back to 5 (but in this screenshot it pulls the speed from a variable because I want the player to be able to upgrade their move speed) and sets their sprint speed back to 8. All pretty simple. 

    I've made a version of this script before and done it in some worse ways that we can go over. I originally had a boolean Object Variable that could check if the player was couched and toggle the boolean on and off at the end of each arm. This is a lot more work than we need to do since we can just check the players height to see if they're already couched.

    I also originally had the script change the players scale on the Y axis, but this change in scale also changed the scale for any child objects of the player. So, it smashed everything in their hands. Changing their height doesn't come with that same unwanted side effects.

    Anyway, thanks for reading. Hope this works out for you.



Buy Me a Coffee at ko-fi.com