Tears, Tearing Apart & Resolution Update


This build of Carpoon comes with three aspects that I wanted to tackle for a long time: tears for players after being crushed, figuring out how to handle resolution for my friend's 4K monitor, and exploding cars that are being pulled apart on either side.


Tearing apart cars also works for players in 3+ player matches. It was actually the quickest of main updates to implement as I managed to put it together in one afternoon. The tricky part was determining if the players were at opposite angles to the car in the middle. I was hoping their angle to the car would be good enough but in the end I compared their angle to the car vs. the other truck. This doesn't work yet for three or four players yet but I'll figure out a decent testing loop later.

The stretchy build-up to the explosion was something I was worried about as it may have involved drawing more frames. Fortunately, scaling the car along the x-axis slightly with a sine wobble after reaching a certain point. I've ran out of handy GameMaker alarm spots to use but found out about current_time as an easy way to see how much time has passed. Using that, I put a warning sound effect for imminent exploding after the initial stretching SFX as it's very easy to forget about sound.

Finally for the coin explosion, I was able to contain the explosion from the recycling crusher into a function and call that. Using functions is something I wish I used more from the start to simplify things. The player truck is a slightly different vehicle object class but could use similar functions to have the same effect. In the future, I'll try to add rope snapping with a spin-out in situations such as two trucks harpooning each other to avoid stalemates.


Here's an example of a player left with "ghost eyes" after being crushed. There are a couple scenarios here where a player spins out on the tear puddles and another where he brakes in time to prevent a spin-out. Now these ghost eyes players can either choose to go back to a newly dropped truck and start earning points, or try to mess with other players on the way. I always loved how in WarioWare Inc. on GameCube how players out of a match could still block other player's view or be a distraction and I wanted to incorporate some of that.


At first, I drew the 9 frames for the eyes but then figured out they could smoothly rotate around and look fine; From this, I'll likely apply a similar technique to the truck and car eyes to save time. Although I started with the controls of the truck, I ended up reworking them a lot for the tears probably because the sprite angle was the same with the actual direction now. Matching where the tears spawned from in the circle was tricky, and I also had to flip their scaling depending of what side they were coming from, and then flip that again if the eyes were looking upwards.

After that, it was mostly smooth sailing to get the player truck spinning out on the tears. It managed to be not so bad to lock the player going in one direction while spinning out. I imagined one of my friend's being a jerk (or a tear-jerker?) as the ghost eyes and let other players have a chance to avoid spinning out by braking a la Mario Kart 64. A bonus of the tears is that it's far easier to keep track of your location after being crushed.


One of my friends that has a 4K monitor often asked me to fix the resolution but I put it off for a long time because in my mind it was dark magic to try and fiddle around with the display settings I had in place from a tutorial.  I finally became brave enough to take a look and in the end it took about two days to update.

What would happen before is that Carpoon would match the screen resolution and have a huge area shown. While it looks sharper, having a faster frame rate is better and I halved the screen resolution for the game. Eventually, I may add in an option to choose what resolution to use but for now this is fine. What it came down to was setting the view to the actual screen resolution but the port to half of that. After, I kept a global variable of the game's resolution to reference.


A benefit of learning more about how the  viewport worked was that I could create a screen ratio variable for the scale of UI for text and buttons in the various parts of the game. I also changed how the "camera" worked in the player select screen to have the background art match the height or width of the screen to avoid any black bars on the side. I put camera in quotes because I kept with the viewport system of GMS1 that did the job instead of the new camera system in GMS2.

As a final part to the UI resolution update, I added a 3-2-1 GO as seen above that mostly acted as a way to prevent players from running into the invisible walls of falling cars when the match starts. Players can still rotate their tow arm around, but if a car is above a height of 10 pixels, they can't grab them anymore. Previously, you could harpoon where a car would fall and it would materialize in front of you. Due to the added time of the countdown, I reduced the time to confirm starting a match in the player select screen beforehand. Players also now face towards the center of the level, and that was more difficult than it should have been due to smoothing out controller jitter with a list of previous frames.


As a last part of this update, I changed the parked cars to start driving one at a time after the halfway point of a match instead of all of them at once. While potentially exciting to have all of them go at once, it slows down the game and does build up the fun of a round. And as a quick tell for which car is going to start driving, I added a blink as they wake up.

Moving forward, I may experiment with a couple more gameplay ideas but I'm hoping to get a new level and co-op towing of heavier vehicles in. Feel free to try the new build (controller recommended) and let me know what you think! 

Files

Carpoon-7c-c-iii - Tears, Tearing Apart Cars, & Resolution Tweaks 22 MB
Aug 06, 2019

Get Carpoon [Early Access]

Buy Now$4.99 USD or more

Leave a comment

Log in with itch.io to leave a comment.