How I Developed My First Adventure Game

As a software engineer and lifelong gamer, I‘ve always been fascinated by the alchemy of code, art, and storytelling that makes adventure games tick. Some of my earliest gaming memories are of whiling away hours pointing and clicking my way through classic LucasArts titles like Day of the Tentacle and the Monkey Island series. I loved the colorful worlds, zany humor, and satisfying "aha!" moments upon solving a clever puzzle.

Fast forward a couple decades and I‘m now an experienced full-stack developer specializing in web technologies. While perusing Steam in my free time, I stumbled upon Machinarium, a strikingly beautiful point-and-click adventure by Amanita Design. Playing it rekindled my childhood love for the genre and got me thinking: could I apply my programming chops to create my own adventure game?

Turns out, the answer was yes! It‘s been a long and winding journey, but after over three years of part-time development with a remote team, we‘re nearing completion on our first title – Occulto.

A Renaissance Era Murder Mystery

Set in a vibrant town in 1500s Lombardy, Occulto casts you as Arturo Gallo, an artist‘s apprentice who discovers his master Leonardo has been murdered. With all evidence pointing to occult ritual sacrifice, Arturo takes it upon himself to investigate the mystery, discover the killer‘s identity, and thwart an ancient conspiracy.

The gameplay will be familiar to anyone who‘s played a classic point-and-click adventure. You explore richly detailed environments, talk to quirky characters, gather clues and items, and solve puzzles to advance the story. Some key features include:

  • A balanced mix of dialog and observation-based puzzles, environmental interactions, and inventory challenges
  • 40+ hand-painted backgrounds with parallax and atmospheric effects
  • An original orchestral score and professional voice acting
  • In-game journal and tasklist to track progress
  • Branching dialog trees with meaningful choices that impact story outcomes
  • Unique ‘Inspiration‘ mechanic that has Arturo sketch observations for hints

Here‘s an early look at one of the interior scenes, Leonardo‘s workshop, where the murder mystery begins:

Occulto screenshot - Leonardo's workshop

From Web Tech to Unity

My initial prototype was built using the PixiJS rendering engine, Redux for state management, and a custom scene scripting language implemented in TypeScript. The idea was to leverage my expertise in web development to create a fast, lightweight adventure game engine that could be played on any device with a web browser.

After completing a vertical slice of the game with placeholder art, I began testing on various devices. Performance was a major issue, particularly on mobile. The complex layered scenes with lots of alpha transparency resulted in too many WebGL draw calls, tanking the frame rate on low-end phones. Memory management was also tricky, as you really need to keep the whole scene in RAM for snappy navigation.

Concerned about the performance limitations and steep optimization curve, I made the difficult decision to pivot to Unity about a year into the project. Having little experience with C# or the Unity editor, it was a daunting prospect. But Unity‘s mature 2D tooling, asset pipeline, and cross-platform build support convinced me it was the right choice for Occulto.

That said, there are still many advantages to rolling your own engine, especially for developers coming from a web background. The excellent Adventure Game Studio is a popular choice and a new wave of browser-based tools like Trenchbroom are making it easier than ever for indies to create custom adventure game engines.

Ultimately, I believe it comes down to your team‘s skills and the specific needs of your game. If fast iteration, web playability, and full control over every aspect of the engine are crucial, it may be worth building from scratch. But for most small teams, it‘s hard to beat the productivity boost and reliability of a battle-tested engine like Unity.

Tips and Takeaways

Shipping your first game is a major undertaking filled with ups, downs, and plenty of hard-won wisdom. I‘m still learning every day, but here are some key insights for fellow developers looking to create their own adventure games:

Focus on the core experience first

It‘s easy to get sidetracked adding secondary features and polish before your core game loop is fun and functional. Resist that temptation. In an adventure game, the most important pieces are an engaging narrative, satisfying puzzles, and the moment-to-moment tactile joy of poking and prodding a reactive world. Get those fundamentals solid before expanding your scope.

Make everything accessible to non-programmers

Your team likely includes people from diverse disciplines like art, audio, and writing. Don‘t force them to dig through code to make content changes. Invest time in creating user-friendly tools that expose the knobs and levers of your engine. We used Unity‘s scriptable objects extensively to allow our designers to create interactive props and NPCs without any programming.

Prioritize performance from the start

Adventure games are often graphics-heavy with lots of layering, alpha transparency, and effects. Those visual flourishes can quickly add up to crippling performance on mobile devices. Optimize your assets and rendering pipeline early and test on low-end hardware frequently. Profile regularly to catch memory leaks and identify performance bottlenecks before they become entrenched.

Create an atmosphere, not just a game

The best adventure games transport you to another world. Small details like ambient animation, particles, sound effects, and music make the environment feel alive. Arturo‘s ‘Inspiration‘ journal records his musings and sketches, deepening his character. Think holistically about the player‘s experience, not just the moment-to-moment gameplay.

Cut, cut, and cut some more

During development, your game will inevitably grow in scope and complexity. And that‘s great – it means you‘re dreaming big! But you must be ruthless about cutting features that aren‘t essential to your core vision. Chasing too many ideas leads to a bloated, buggy, unfocused game that may never see the light of day. Keep your eyes on the prize and don‘t be afraid to axe things that don‘t serve the player‘s primary experience.

Until the Next Adventure

So there you have it, a whirlwind tour through over three years of part-time passion, experimentation, and perseverance. Occulto has been an incredible opportunity to stretch my coding skills while exploring my love for visual storytelling and game design. I can‘t wait to get it into your hands and hear what you think.

We‘re planning to release on Steam and mobile app stores later this year. To stay up to date on launch plans, behind the scenes development, and future projects, head over to www.playocculto.com and sign up for our mailing list or follow us on Twitter @PlayOcculto.

I hope this peek behind the curtain inspires fellow developers to dive into the wonderful world of adventure game creation. It‘s a ton of work, but bringing your vision to life and connecting with players makes it all worth it. If you have any questions or just want to chat adventure games, drop me a line!

Until the next mystery needs unraveling,

Andrea Koutifaris
Occulto Creator / Lead Developer

[Include headshot of author]

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *