Week 2

With a nice base terrain in place, I decided to start adding assets based on reference photos — and pretty quickly, I had to face the facts: on my own, I won't be able to achieve something fully realistic. Still, I’m trying to match the general vegetation type.

I'm pulling only the base meshes so I can redo the LODs in InstaLOD (to keep a consistent workflow across all assets — some are free, others come from purchased packs, and a few are custom-modified). InstaLOD is super useful — even though the plugin is paid for big projects, there's a free license available under a certain usage threshold.

Week 2 Image 1

Same for the rocks — some of them don't look great, but I’ll revisit that later. Ideally, I’d pull some meshes from Quixel, do a retopo and export, but I just don’t have the time right now.

And what’s an island without the sea? After some research, I settled on using Unity’s built-in Water Surface system in HDRP.

Week 2 Image 2

And honestly, that feature is absolutely brilliant!

I ended up spending almost a full day just tweaking the details: wave height, reflections, caustics, water color, foam — and the result is very satisfying.

Week 2 Image 3

There’s even a feature to get the water height at a specific point via scripting (though the simulation is heavy on performance, so I’ll skip it for now).

Next, I added an HDRI sky and fine-tuned the visuals using the HDRP Volume system,along with lighting — which also took quite some time to get right.

Week 2 Image 3b

All of this looks great, but… I still hadn’t written a single line of code yet. So I quickly brought over the base script setup from my old Game Jam project.

That went smoothly, but I wanted to level up the system a bit:

  • I rewrote the event system, adding interfaces like IEventApplication, IEventMouse, IEventKeyboard, etc., to make it more maintainable as I add new subscribers.
  • I added a system for managers to enable or disable their Update, LateUpdate, and Tick methods (a small tweak so that these methods can be called at set intervals rather than every frame).
  • I created an event scheduler (never using coroutines again! They’re a nightmare to debug, hard to maintain, and a goldmine for memory leaks). Now I can trigger actions after a delay and even attach a callback.
  • I also improved the CameraManager to allow zooming, rotating, etc. (something I didn’t have in the Game Jam version).
Week 2 Image 4

And finally, a bit of level design work on the base scene… Another busy week in the books!


← Back to DevLog