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.


 

 

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.



Tuesday, May 6, 2025

Tire Fire Rally - The Big Dip








    I told you all that Tire Fire Rally would grow, and now it is. The first update brings a new, stupid track with its own host of new and stupid jokes.



    I am now realizing that one of the reasons Bungie and Bilzzard like to add lore to their maps is to fill up space in add copy and give developers something to say about what they made that is not all technical specs or blatant spoilers. So, let's make some shit up. The first bit of Tire Fire lore.

    Our brand new track, The Big Dip, is sponsored by Dooley Recycling and Byrd Retro Arcades, bringing a lovely bit of green washing to a gas guzzling sport.



    Byrd Retro Arcades makes it their mission to get players as aggressively into the game as possible, sometimes dangerously blurring the line between games and life. As part of their sponsorship, they've been given a chance to add a piece to the track.



    The boys at Dooley Recycling don't actually know anything about recycling and have been, Simpsons-style, just dumping trash in big pits and hoping no one notices. As their piece of the sponsorship, they got to dig a huge pit right in the middle of the track for use as soon as the race concludes. Makes for a nice, stomach-lurching ride.

    There, that wasn't so bad. You have a hazy, but slightly better idea of the new tracks and I got roughly three paragraphs of rambling. Anyway, The Big Dip is the first track in the new Grand Pricks. Go give it a whirl, or if you still need to, go grab a copy of Tire Fire Rally, and come back next week for more.

Later.

Saturday, March 15, 2025

Tire Fire Rally - Designing the Sky

    One of the admittedly attractive parts of making a racing game is how restricted the player is. Open worlds take a lot to fill, and as a one person studio, I don't have a lot of extra time to fill them. In a racing game, the player is pretty much trapped in the track. You can only do so much, or that was my mindset at the beginning of this project.

    My first test map for Tire Fire Rally was a basic oval with high crash walls, partially to keep the player from falling out of the track during a crash and partially to stop the player from seeing the vast, empty plane around them. It was easy to build and took no work on the background scenery to hide the horizon and I thought I had cleverly saved a huge amount of time, but I had a problem with it. I kept getting “lost” on the track. Not actually lost, it was a one lane loop after all, but I kept having trouble orienting myself, figuring out how far I'd gone, how fast I was moving, if I was anywhere near the finish line or not. You know, all the important parts of driving.

    Years ago, I watched a GDC talk about designing non-uniform hallways to keep the player from getting lost in the monotony. I also remember how the hospital hallways were painted up in wild colors and huge numbers on the wall when my kids were born. It helped the sleep deprived new parents not get lost when they wandered out for burnt coffee. My tracks needed landmarks, colors, non-uniformity to give the players some sense of space and direction. It’s not like the tracks on Hydro Thunder are that crazy for no reason.

    For starters, I've taken the crash walls down a little bit. The surrounding scenery might take more work, but it’s there for a reason. I've started to fill the tracks with stupid advertisements, billboards strapped over the track, speakers and cameras hanging into the roadway, unnecessary tunnels, buildings hulking in the background, palm trees lurking just outside the walls. Anything and everything that can flash in the corner of the players eyes and give them a marker. It’s been a lot of fun, somewhere in between writing jokes for Vice City radio and drawing a page for Where’s Waldo.

    It’s also been a nice reminder of what map design actually should boil down to. I personally like simulation games, and sometimes get bogged down in creating a functional simulated world that the player can also exist in, but this world is not like that. The only things that need to exist in this world are the cars, the track, and things directly visible from said track. And all the space visible from the track needs to be filled. It’s a reminder that buildings can stop whenever they fall out of sight and don't need to neatly fit into the ground. Birds don't need to have a fully modeled and textured top side. Crowds can be flat if the player only sees them from one side. It all only needs to look good and hang together from one specific angle, and all the rest can be loose wires and sharp corners.

    I don't think I have any more coherence to this thought. It’s just been fun designing a world in such a different way than I ever have before. And I guess I'm reminding myself that every time I think I am designing a project to avoid some kind of work, I will find a whole new kind to throw myself into.

    If you want to see some flat crowds for yourself, give Tire Fire Rally a wish list on Steam, and maybe spread the game around a bit. Get some other eyeballs on it.

Later.


 

Tuesday, February 11, 2025

Tire Fire Rally - Sports Cars in Traffic



    I'm going to be transparent, I didn't really start this game with any ethos in mind. The original note for the game said “A NASCAR game, but with stupid things on every lap.” But I have a lot of time alone with my thoughts while I'm actually building my stupid idea, and I’ve been going around and around trying to figure out why I wanted to make fun of racing in the first place.

    I’ve been advertising this game as a racing game being made by someone who hates driving, which is mostly true. I hate traffic, car maintenance, insurance, parking, pretending to care about dents and scratches, and of course, car payments. The day to day of owning and using a car is expensive and dull and I despise it, except for one month in 2020.

    That summer, my city was brought to a standstill between COVID, protests, and the presence of the National Guard. I had a job that kept me out a few hours past the curfew and left me driving through a completely deserted city covered in boards and bright protest graffiti with fucking armored Humvees sitting on the overpass. I fucking loved it. I would blast the soundtrack to JSFR and speed through my city at what would have been very dangerous speeds if anyone ever had been out. It is the only time in my life that driving actually felt like the “freedom” all the car companies try to sell it as, and I think that taste of how fun they could actually be made me paradoxically hate cars all the more.

    It really highlighted how we were building these machines with capabilities that had almost nothing to do with how they would be used. Super cars are engineered to handle above 120 mph and bluff emissions detectors only to idle in L.A. traffic for most of their lives. Trucks that can haul multiple tones of steel will move a couch once or twice if they're lucky. SUVs are built like they should be crouched on an overpass enforcing a curfew instead of shuttling kids back and forth. Using my car in the post-apocalyptic, cyberpunk city, it felt like it was a toy instead of an expensive and poor excuse for proper public transit, and I hate that I am paying to keep all these systems that we're designed for speed and agility that I will almost never reach in working order.

    I've also been playing a decent amount of racing games in my little bit of spare time. You know, for “research.” A lot of them treat cars like they're somewhere between religious icons and pornographic. They make them almost deities, which makes me want to act as an iconoclast. I wanted to take these machines that were built for non-existent stretches of open, perfectly maintained highways and race tracks and subject them to the drudgery of traffic, potholes, and toll booths. I think it’s the same instinct that made people tune into The Simple Life to see the disgustingly wealthy working a fast food job.

    That being said, a lot of the original ideas I wanted to throw into the game turned out to be very boring. It’s funny to see a Corvette in traffic, but not fun to be a Corvette in traffic. This is still a game after all. So, a lot of the obstacles got ratcheted up in weirdness. The current mood is a bit like taking fashion models and forcing them to run through a Wipeout course. I think that's close enough to my original notes. I wanted to make fun of the culture of racing and over engineering because it had virtually nothing to do with normal driving, started with frustrating realism, and ended up with something goofy and light hearted.

    If Wipeout with cars sounds cool to you, wish list the game on Steam before the demo comes out.