Trouble In Paradise

Trouble In Paradise

This game is from ldjam.com, which is currently unavailable.
You can try viewing the original page on Web Archive (may not load correctly).
overall: 3.23
fun: 2.81
innovation: 3.08
theme: 2.71
graphics: 3.08
audio: 3.35
humor: 3.20
mood: 3.15

Click to play in browser!


Game Background


* There's trouble in paradise! Everybody wants margaritas, but they're too drunk to go fetch the ingredients!
* Luckily the archipelago is rich in natural resources, and specifically the ones needed to mix up some margs!
* Explore the islands, locate the ingredients, bring them to the locals, and let the party start!

How to play


* Control your ship with the Up/Down/Left/Right buttons or WSAD
* Your ship cruises and steers at discrete increments. Tap a button to change the speed/heading; there's no need to hold the buttons
* Gather the ingredients (Ice, Tequila, Limes) from islands and deliver them to the houses. Once an island has 1 of each ingredient, it's time to party!
* Bring the party to 10 houses in as short of time as possible!

Tools:


* Unity
* Paint.NET
* Audacity

Meta:


This was my 12th Ludum Dare compo and by far the one I struggled with the most. I actually had a nugget of an idea almost immediately, which is rare for me. The rough idea was "explore a procedurally generated archipelago" and the theme would come in via some kind of cargo management mechanic, but I didn't have a super concrete idea for the actual gameplay. I took most of Friday night to just reacquaint myself with Unity (specifically the Cinemachine camera system), and then nearly all of Saturday fighting with the procedural generation. By Sunday morning, you could pick up stuff, but you couldn't do anything with it. Needless to say, I rushed through Sunday making the most minimum viable product I could, even copping out and just making the "score" time based, which I wanted to avoid since it adds a sense of urgency to a game that is supposed to be chill. I was initially picturing some kind of "overall happiness" rating that you would try to maximize, but it wouldn't necessarily be tied to time.

Like I alluded to, the procedural generation gave me some fits. The initial iteration was very straightforward. With perlin noise, I generate the islands, and easily map that to the Unity TileMap system. I had the basic look of the archipelago within a couple hours. But the devil is always in the details. One problem I ran into is actually identifying the ocean! What if a totally land-locked body of water gets generated that is isolated from the rest? If I start your ship here, you won't be able to get very far in the game. So I used a flood-fill algorithm to detect each "body of water" and assume the largest (by cell count) is the ocean. All others are deemed "lakes" and filled in with a swamp-green color. You can play many rounds and never see one, but you just might. This worked in the end, but at one point the algorithm was using recursion and resulted in consistent stack overflows (hint: don't try to push 32k calls onto the call stack), then my next implementation with a queue worked, but it would take 3 minutes just to flood fill the whole ocean. I finally settled on an implementation that uses a 2D array to track added tiles, and that got the time down to under 3 seconds.

With all the trials and tribulations of the procedural generation eating my time up, I didn't get to many of the features I wanted to:
* Different island graphics to, for example, make "lime islands" distinct from "tequila islands"
* Different types of ships with different cargo capacity and handling characteristics. You would commandeer the ships either in port or at sea with a minimal combat system.
* Detect rare islands (small, far away) and give them something cool to explore like a light-house or pirate camp
* Pirates!
* "Missions" where a particular harbor would hail you to bring a specific resource asap (there were going to initially be many more than 3 resource types)
* Spending more than 20 minutes coming up with, and recording, the background music. Take more inspiration from Jimmy Buffet songs and maybe even incorporate a drum track

Alas, it wasn't meant to be. I'm definitely not going to "expand" on this game directly; the code is too gross for that, but I do think I learned a few lessons about procedural generation that I will (hopefully) remember in the future. As always, it was a fun, but frustrating, experience.
Found a bug?
Tell us on Discord