Unhitched Isles development reflection

This was my second Ludum Dare and I am happy with how it turned out. The gameplay loop is fun (at least once you understand the intent) and I am reasonably happy with how the visuals turned out (for first attempt at 3D at least)

https://ldjam.com/events/ludum-dare/49/unhitched-isles

unhitchedIsles.jpg

My aim for my first Ludum Dare was to make a complete game (audio, tutorial, full loop) and focus on user feedback (Audio cues, animation cues, UI response etc). While I achieved that, the game itself was a little bland, reminiscant of 2000s flash games. ( https://ldjam.com/events/ludum-dare/46/virtual-pet-no-escape-from-life ) The art was also very clip-arty (although my first actual attempt at arting so certainly not disappointed, just didnt add to the game very much!)

The goals for this one were first and foremost to make a game that was fun to play, then make it nicer visually. I brainstormed a range of ideas but fortunately had recently re-stumbled across this little gem: https://www.youtube.com/watch?v=cesSRfXqS1Q

So the idea was born - light builder game on an unstable island!

Physics

First step was the mechanics and making sure it was fun! I didnt want to use built in physics as the problem with real world unstable systems is they tend to snowball - if you are trying to balance something, as soon as you put one thing down off centre, the whole thing will tip!

SO! Custom weight and balancing logic it was! The plan was for the island to tip towards the centre of gravity. This took a bit of time (and thankyou unity primatives!) but was helped significantly by using debug visuals which showed the impact of different weights and locations.

physicstesting.png

Once I tuned the balancing "physics" the testing started becoming pretty enjoyable. Good early sign!

First graphics!

Physics and placement logic down, it was time to start modelling. I had been watching a bit of Imphenzia (https://www.youtube.com/c/Imphenzia) who is great at rapid low poly modelling so had an idea of basic techniques. The first model (which remained largely unchanged) had a deliberate hole in the middle - I knew I didnt want people to be able to place buildings directly in the middle of the island but wasnt sure what the reason would be so it just became a void! (This would later become a volcano)

island1.png

The next challenge was placement areas - this ended up being quite trivial. The workflow for visuals provided everything I needed. The "texturing" was the low poly trick of scaling UV faces to zero and placing on a colour. To get different areas (beach, minable stone etc) I would just group the faces on the UV map. If I needed extra definition, the knife tool and/or manual vert movement helped. Now that I had these faces seperate already - for logic I just separated the relevant faces into a new mesh in blender - just like that free selection collision meshes!

islandcrafting.png

Game logic

The original plan was to make a builder game with resources etc. It quickly became apparent that this might feel a bit clunky and the game is better served with - More direction - More chaos

While I had made mines, lumber yards etc I had not implemented the resource gathering mechanics so it was a trivial pivot to focussing on completing "tasks" and using resource placement etc as the challenge. This was a hugely beneficial change and allowed more time for rapid iteration in design/tuning.

Audio

The audio needs for this were pretty simple in general - button clicks and building sounds. The main area of concern was the ambient sounds; an island needs some soothing ocean souds right?! I figured seagulls and waves would be good but had no idea how to do either. I looked up seagull impersonations and had a go at that.... a bit of time in Audacity later and I had a bunch of surprisingly passable seagull sounds!

I was a bit stuck on the water until I read about a white noise idea. The implementation I did was: - Generate white noise in Audacity and duplicate the tracks - Add a high pass filter to track A and low pass (with minimal overlap) to track B - Add reasonably high frequency random amplitude modulation to track A - Add lower frequency random amplitude modulation to track B - Combine tracks - Get distracted for a few minutes listening to the sea sound and random "seagull" noises

I am happy with the audio in general but very happy with how the ambient audio turned out.

Making the "Game"

The "tasks" were made by scriptable objects and included a static "random" task generator. This allowed me to make a specific series of tasks to be completed in order (based on island design intent) then progress to random tasks in order to make an ongoing challenge.

I added logic to the islands to track the number of forests and logic within the task generator to ensure no lumber mill tasks would be generated above the forest capacity. Tasks can still be generated if forests are underwater but that is part of the challenge to the user to rebalance.

Summary

Overall I am extremely happy with this entry. I did spend a bit too long on the water shader and certainly could have added some UX tweaks (eg. warning sound as timer is getting low) but overall I am very satisfied. I am very strongly considering polishing it a bit and publishing it as a light fun game.

Adding additonal islands was trivial once the main game was set up and allowed me to set up islands that require different tactics and have different challenges.

Lessons Learned

Starter island. The starter island is largely unchanged from the initial test island and offers relatively free building. When you understand the mechanics it is reasonably easy and allows some pretty straightforward balancing. Unfortunately users dont have the benefit of a weekend of playtesting to work out the strategy so this island is actually harder going in than the other two. Probably the biggest regret is having Starter Atoll as the first island - this should have been placed at the end after the more handcrafted islands (which offer more visual direction)

Information to user. - Different buildings have different weight but from the gameplay I watched, not many people realised this. It seemed light a lightbulb moment for people that did (especially how heavy mines were) and it was great to see them attack it with renewed vigour but in a Ludum Dare, it is probably worth including this information up front. - UI tasks popped up with the new requirements with the persistent tracker showing the total required progress. While there was an audio que that buildings had been lost some people didnt realise this and would just build to the task that popped up without considering any lost buildings (which were displayed on the tracker) - An excellent suggestion on the UI provided in comments was to include a text UI element next to the cursor when you have a building selected to show Built/Required on the cursor. Building hotkeys helped a lot with rapid gameplay but this would have elevated it a step further - When buildings arent able to be placed there is just a cross on the cursor. It is probably better still have the building preview

Online Scoreboard. I added scoreboard online functionality as people wanted to compare scores. Hooking this in was a post jam update so many of the early playtests missed out on scores being recoreded. This was a fantastic addition and spurred a bit of community competition (someone even played it directly so they could try and beat a streamer's score). I was not thinking of high scores going in but I think in future I would always assume that high scores will be a key part and look to include online scoreboards.

Development Timelapse

Kinda fun to see it come together, unfortunately recording missed a few of the modelling parts:

https://www.youtube.com/watch?v=Za8BRLE-PIc

Good luck with results all!!!