On Indie Adventure Game Design

Lessons from the Story of an Adventure Game That Grew from a Tiny Flash Game for a High School Contest

Speaker: Haritha Diraneyya

Main Topics

  • A brief introduction about point-and-click adventure games
  • A brief account on the Joyfess project
  • An up close look at a game puzzle
  • Project workflow of a point-and-click adventure game

Being an indie developer

Being an indie developer

Are you ready to be a one-man band?

Being an indie developer

Are you ready to run a one-man band?

A Brief History of Point-and-Click Adventure Games

King's Quest (1990)

Notes

  • Define adventure games
  • It's a story
  • It's like you're watching a movie, but instead of passively watching, you're taking an active part by controlling your main character and helping him/her come over obstacles

#Engine

SCUMM (Script Creation Utility for Maniac Mansion)

Zork (1977)

King's Quest 1 (1984)

Maniac Mansion (1987)

Mystery House (1980)

Maniac Mansion (1987)

Day of the Tentacle (1993)

The Secret of Monkey Island (1990)

The Curse of Monkey Island (1997)

Blackwell Legacy (2007)

Blackwell Legacy (2007)

Deponia (2012)

A Game's Story

A brief account on the major milestones of the Joyfess project

.. that high school Flash contest

.. that high school Flash contest

.. that high school Flash contest

Won second place!

.. that high school Flash contest

A team of three

(with my two brothers Sinan and Kinan)

Won second place!

Sinan

Kinan

.. that high school Flash contest

A team of three

(with my two brothers Sinan and Kinan)

.. that high school Flash contest

A team of three

Started creating the world

(with my two brothers Sinan and Kinan)

.. that high school Flash contest

A team of three

Started creating the world

Snapshots from Story

.. that high school Flash contest

A team of three

Started creating the world

#ConceptArt

#Story

#PuzzleDesign

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

#ConceptArt

#Story

#PuzzleDesign

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Let's hire talents!

#ConceptArt

#PuzzleDesign

#Story

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Prototype time (we used SCUMM)

#Freelancers

#ScopeCreep

#Engine

#ConceptArt

#Story

#PuzzleDesign

Let's hire talents!

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Prototype time (we used SCUMM)

#Freelancers

#ScopeCreep

#Engine

#ConceptArt

#Story

#PuzzleDesign

Let's hire talents!

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Prototype time (we used SCUMM)

#Freelancers

#ScopeCreep

#Engine

#ConceptArt

Over 60% of game's visual assets created - also a full prototype

#Story

#PuzzleDesign

Let's hire talents!

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Prototype time (we used SCUMM)

#Freelancers

#ScopeCreep

#Engine

#ConceptArt

Over 60% of game's visual assets created - also a full prototype

#Story

#PuzzleDesign

Decision to switch engine!

Let's hire talents!

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Prototype time (we used SCUMM)

#Freelancers

#ScopeCreep

#Engine

#ConceptArt

Over 60% of game's visual assets created - also a full prototype

#Story

#PuzzleDesign

Decision to switch engine!

Let's hire talents!

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Prototype time (we used SCUMM)

#Freelancers

#ScopeCreep

#Engine

#ConceptArt

Over 60% of game's visual assets created - also a full prototype

#Story

#PuzzleDesign

Decision to switch engine!

Let's hire talents!

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Prototype time (we used SCUMM)

#Freelancers

#ScopeCreep

#Engine

#ConceptArt

Over 60% of game's visual assets created - also a full prototype

#Story

#PuzzleDesign

Progress on the game slows down..

Let's hire talents!

Let's take a closer look

(a game scenario showcasing puzzle mechanics)

Main character

Inventory items

NPC

Scene object

Scene object

Scene object

Some terms quick..

#PuzzleDesign

#PuzzleDesign

#PuzzleDependencyCharts

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Prototype time (we used SCUMM)

#Freelancers

#ScopeCreep

#Engine

#ConceptArt

Over 60% of game's visual assets created - also a full prototype

#Story

#PuzzleDesign

Decision to switch engine!

Let's hire talents!

.. that high school Flash contest

A team of three

Started creating the world

Sinan finishes drawing the first scene

Prototype time (we used SCUMM)

#Freelancers

#ScopeCreep

#Engine

#ConceptArt

Over 60% of game's visual assets created - also a full prototype

#Story

#PuzzleDesign

Decision to switch engine!

Let's hire talents!

Expectations

Reality

Expectations

Reality

A Stumbling Block

When scope creep nearly killed the project

Notes

  • Project was sprawling out of control
  • My two brothers ate more than they could chew
  • I realized it was time to "pivot"
  • Very difficult decision
  • (1) We would have to throw away much work
  • (2) But also to cut down the project size
  • (3) I would have to invest in learning how to script

More Jarryd photos!

A Stumbling Block

"pivot"

When scope creep nearly killed the project

A Stumbling Block

"pivot"

Throw away all past work done on AGS (but also cut down the project size)

When scope creep nearly killed the project

A Stumbling Block

"pivot"

Throw away all past work done on AGS

Rework story

When scope creep nearly killed the project

A Stumbling Block

"pivot"

Throw away all past work done on AGS

Rework story

Traces of which still remain imprinted in today's game

When scope creep nearly killed the project

A Stumbling Block

"pivot"

Throw away all past work done on AGS

Rework story

Traces of which still remain imprinted in today's game

Didn't regret it for a second

When scope creep nearly killed the project

A Stumbling Block

When scope creep nearly killed the project

"pivot"

Throw away all past work done on AGS

Rework story

Traces of which still remain imprinted in today's game

Didn't regret it for a second

Choosing your game engine

Scripting

Debugging

Story writing

Dialogues

Character design

Concept art

Hiring freelancers

Artwork team

Optimization

Tracking sheets

Managing variable

Game Engine

Story and Puzzle Chart

Concept Art, Character Design

Hiring Artwork Freelancers

Scripting

Filling the Details in as You Go (e.g. Dialogue)

Music and Voice Over

Debugging an Optimization

Game Engine

Where you will be spending most of your tech work time as an indie developer

A good engine choice will spare you from the need to go heavily technical

A good engine choice will spare you from the need to go heavily technical

Visual scripting in Unreal engine (no code writing required!)

Not only when it comes to simplicity of scripting itself, but also relieving you from worrying about having to deal with many moving parts, engine technicalities, and optimization, among other things

Three Popular Adventure Game Engines

  • Adventure Game Studio (SCUMM)
  • Unity (with the Adventure Creator plugin)
  • Visionaire Studio

Three Popular Adventure Game Engines

  • Adventure Game Studio (SCUMM)
  • Unity (with the Adventure Creator plugin)
  • Visionaire Studio

Hint: choosing your game engine is one of the most impactful decisions you will make in your project as it will define your future possibilities as well as limitations. Make  sure to do your research and choose wisely.

For example..

AC (Unity) AGS (SCUMM)
Can handle high res Has res limitations
Versatile but more complicated (you need to be fluent in navigation through Unity itself, on top of mastering AC) A cleaner, simpler platform (fewer "moving parts"), but less versatile
Clean separation of visual layers, making ordering easy and clean Ordering objects requires creating masks - not clean and very cumbersome
Can port to all major platforms (Windows, Linux, Mac, Android, iOS) Can port to Windows only
Messy handling of some AG-specific features (such as heavy dialogue) Being a specialized platform, many AG-specific features (such as dialogue management) is handled more cleanly
Prepare for extra work apart from writing the game itself, such as optimization (very important!) You can completely focus on writing the game and not worry about lower-level concerns such as optimization issues
Can create 3D adventure games Limited to 2D only

Adventure Creator (Unity) Vs. AGS (SCUMM)

For example..

AC (Unity) AGS (SCUMM)
Can handle high res Has res limitations
Versatile but more complicated (you need to be fluent in navigation through Unity itself, on top of mastering AC) A cleaner, simpler platform (fewer "moving parts"), but less versatile
Clean separation of visual layers, making ordering easy and clean Ordering objects requires creating masks - not clean and very cumbersome
Can port to all major platforms (Windows, Linux, Mac, Android, iOS) Can port to Windows only
Messy handling of some AG-specific features (such as heavy dialogue) Being a specialized platform, many AG-specific features (such as dialogue management) is handled more cleanly
Prepare for extra work apart from writing the game itself, such as optimization (very important!) You can completely focus on writing the game and not worry about lower-level concerns such as optimization issues
Can create 3D adventure games Limited to 2D only

Adventure Creator (Unity) Vs. AGS (SCUMM)

Do I want to port my game to Android and/or iOS?

For example..

AC (Unity) AGS (SCUMM)
Can handle high res Has res limitations
Versatile but more complicated (you need to be fluent in navigation through Unity itself, on top of mastering AC) A cleaner, simpler platform (fewer "moving parts"), but less versatile
Clean separation of visual layers, making ordering easy and clean Ordering objects requires creating masks - not clean and very cumbersome
Can port to all major platforms (Windows, Linux, Mac, Android, iOS) Can port to Windows only
Messy handling of some AG-specific features (such as heavy dialogue) Being a specialized platform, many AG-specific features (such as dialogue management) is handled more cleanly
Prepare for extra work apart from writing the game itself, such as optimization (very important!) You can completely focus on writing the game and not worry about lower-level concerns such as optimization issues
Can create 3D adventure games Limited to 2D only

Adventure Creator (Unity) Vs. AGS (SCUMM)

Is my game 3D or 2D?

For example..

AC (Unity) AGS (SCUMM)
Can handle high res Has res limitations
Versatile but more complicated (you need to be fluent in navigation through Unity itself, on top of mastering AC) A cleaner, simpler platform (fewer "moving parts"), but less versatile
Clean separation of visual layers, making ordering easy and clean Ordering objects requires creating masks - not clean and very cumbersome
Can port to all major platforms (Windows, Linux, Mac, Android, iOS) Can port to Windows only
Messy handling of some AG-specific features (such as heavy dialogue) Being a specialized platform, many AG-specific features (such as dialogue management) is handled more cleanly
Prepare for extra work apart from writing the game itself, such as optimization (very important!) You can completely focus on writing the game and not worry about lower-level concerns such as optimization issues
Can create 3D adventure games Limited to 2D only

Adventure Creator (Unity) Vs. AGS (SCUMM)

Do the pros of having to learn a  more versatile engine (e.g. Unity) outweigh the cons?

For example..

AC (Unity) AGS (SCUMM)
Can handle high res Has res limitations
Versatile but more complicated (you need to be fluent in navigation through Unity itself, on top of mastering AC) A cleaner, simpler platform (fewer "moving parts"), but less versatile
Clean separation of visual layers, making ordering easy and clean Ordering objects requires creating masks - not clean and very cumbersome
Can port to all major platforms (Windows, Linux, Mac, Android, iOS) Can port to Windows only
Messy handling of some AG-specific features (such as heavy dialogue) Being a specialized platform, many AG-specific features (such as dialogue management) is handled more cleanly
Prepare for extra work apart from writing the game itself, such as optimization (very important!) You can completely focus on writing the game and not worry about lower-level concerns such as optimization issues
Can create 3D adventure games Limited to 2D only

Adventure Creator (Unity) Vs. AGS (SCUMM)

Notes

  • The intuitive design of object + attributes
  • Simple example of a background sprite
  • Objects layered
  • AC Managers and how they spare you a lot of foundational work
  • Prefabs vs. game assets

Scene made of separate layers of visual objects

Inspector pane (object attributes)

Inspector pane (object attributes)

Prefabs (local objects)

Asset files (globally accessible)

A secret Easter Egg (believe it or not, pun unintended)

Kinan

A secret Easter Egg (believe it or not, pun unintended)

Kinan

Game Engine

Story and Puzzle Chart

Concept Art, Character Design

Hiring Artwork Freelancers

Scripting

Filling the Details in as You Go (e.g. Dialogue)

Music and Voice Over

Debugging an Optimization

Snapshots from Story

Puzzle Dependency Charts

Puzzle Dependency Charts

Game Engine

Story and Puzzle Chart

Concept Art, Character Design

Hiring Artwork Freelancers

Scripting

Filling the Details in as You Go (e.g. Dialogue)

Music and Voice Over

Debugging an Optimization

Notes

  • Is intertwined with story writing and hiring the artwork team!

Some Technical Hints for Finished Artwork

  • The right format (PNG was our go-to)
  • Unity built-in features to compress animation--neat for optimization
  • It is usually cheaper to color lined drawings than non-lined ones
  • Alternatives to traditional animation that might be cheaper (e.g. cut-out animation)

Game Engine

Story and Puzzle Chart

Concept Art, Character Design

Hiring Artwork Freelancers

Scripting

Filling the Details in as You Go (e.g. Dialogue)

Music and Voice Over

Debugging an Optimization

Artwork Freelancers

  • We used both Freelancer.com and Upwork
  • Finding a good freelancer is like looking for a hidden gem, but it is worth it if you know where and how to find one!
  • Best to catch quality freelancers with "potential" before they grow big (and normally you won't have a big window to do that--they will more often than not outgrow you through the project)
  • We had a "production line" because of the complixity of our artwork
  • It really helps if you know your way in sketching!

Sam and Ali

An example of the "production line" of game's artwork

Before

Before

After

Sam & Ali

A screenshot showing correspondence with Adrian

You can also mix and match and give your artist instructions on how to combine the elements!

Our sketched design

Stock photo

Adrian's drawing

Instructions:

Add pipe

Give him a relaxed pose

Game Engine

Story and Puzzle Chart

Concept Art, Character Design

Hiring Artwork Freelancers

Scripting

Filling the Details in as You Go (e.g. Dialogue)

Music and Voice Over

Debugging an Optimization

Get your hands dirty ASAP

Scripting Best Practices

Scripting Best Practices

Get things working ASAP → use dummies very liberally

Scripting Best Practices

Get things working ASAP → use dummies very liberally

Scripting Best Practices

Get things working ASAP → use dummies very liberally

Make sure your script is highly maintainable (avoid redundancies; use reusable functions when appropriate)

Scripting Best Practices

Get things working ASAP → use dummies very liberally

Make sure your script is highly maintainable (avoid redundancies; use reusable functions when appropriate)

Keep track of variables--they can quickly grow out of hand!

Scripting Best Practices

Get things working ASAP → use dummies very liberally

Make sure your script is highly maintainable (avoid redundancies; use reusable functions when appropriate)

Keep track of variables--they can quickly grow out of hand!

Being an indie developer gives you a big advantage when it comes to controlling scope

Being the script writer, I know that Joyfess would need to climb only once in the entire game--not worth the animation costs for a one time thing, so I just found a workaround, instead.

An example of understanding what is missing and resolving it as efficiently as possible

Another example is where I overlooked a small animation entirely. I wrote the script for it using dummies but never filled it with the real animation because, quite frankly as I was able to have the bird eye view of my project, it was low priority and not worth the investment.

Realized an issue caused by Parallax Scrolling after we migrated to Unity

Now layers need to have smaller ignored areas to account for Parallax Scrolling

Responding to Parallax Scrolling

Realized an issue caused by Parallax Scrolling after we migrated to Unity

Now layers need to have smaller ignored areas to account for Parallax Scrolling

Responding to Parallax Scrolling

Getting your hands dirty early is your best bet to expose blind spots when it's still easy to resolve them

An example of avoiding redundancies

I could've used a variable to unlock the Natives' Village scene, but opted to check for an acquired item, instead. It kept my script cleaner and easier to maintain

Animation Status Table

Game Engine

Story and Puzzle Chart

Concept Art, Character Design

Hiring Artwork Freelancers

Scripting

Filling the Details in as You Go (e.g. Dialogue)

Music and Voice Over

Debugging an Optimization

Game Engine

Story and Puzzle Chart

Concept Art, Character Design

Hiring Artwork Freelancers

Scripting

Filling the Details in as You Go (e.g. Dialogue)

Music and Voice Over

Debugging an Optimization

Two options for Music

  • You find your composer (more expensive but you get exclusivity)
  • You use royalty free music (much cheaper but not customized and no exclusivity)

Two options for Music

  • You find your composer (more expensive but you get exclusivity)
  • You use royalty free music (much cheaper but not customized and no exclusivity)
  • Examples of the above:

Two options for Music

  • You find your composer (more expensive but you get exclusivity)
  • You use royalty free music (much cheaper but not customized and no exclusivity)
  • Examples of the above:
  • Note: unlike adding voice-over (which is recommended to start very late on purpose), you can start with music and SFX early (though not necessary)

Voice Talents: Hiring Phase

  • Voice talents should be kept for last for practical reasons
  • Avoid union-rate voice actors (you can use the same freelancing websites for better rates)
  • To hire: you first post a short script sample and an invitation to send auditions
  • You can post publicly or reach directly
  • For budget rates, it is common to base the rate either on the number of words or the number of lines (the second usually offered by more affordable talents)

Sample from dialogue script

Voice Acting Phase

  • Should go smoothly if selection of talents went well
  • Again if talents are chosen wisely, very minimal instructions should suffice for a satisfactory outcome (e.g. background about character, situation, and emotions etc.)
  • It's common practice for the talents to provide multiple takes (three on average) for each line
  • More affordable talents will usually do you the favor of separating lines into different files (that's how you need them as input in the engine), but you should know how to do basic editing yourself and be prepared for it. It's common for indie developers to be well-rounded in their technical skills

Game Engine

Story and Puzzle Chart

Concept Art, Character Design

Hiring Artwork Freelancers

Scripting

Filling the Details in as You Go (e.g. Dialogue)

Music and Voice Over

Debugging an Optimization

A Game Too Slow to Publish

A Game Too Slow to Publish

Took 26 seconds to switch scenes

A Game Too Slow to Publish

Took 26 seconds to switch scenes

Expectations

Reality

Remember this?

A Game Too Slow to Publish

Took 26 seconds to switch scenes

A Game Too Slow to Publish

Took 26 seconds to switch scenes

Tried almost everything (exclusion method)

A Game Too Slow to Publish

Took 26 seconds to switch scenes

Tried almost everything (exclusion method)

Had nearly given up when I found out, it was voice files!

A Game Too Slow to Publish

Took 26 seconds to switch scenes

Tried almost everything (exclusion method)

Had nearly given up when I found out, it was voice files!

I reach out to the community

A Game Too Slow to Publish

Took 26 seconds to switch scenes

Tried almost everything (exclusion method)

Had nearly given up when I found out, it was voice files!

I reach out to the community

I learn the trick to solve it (asset bundles)

A Game Too Slow to Publish

Took 26 seconds to switch scenes

Tried almost everything (exclusion method)

Had nearly given up when I found out, it was voice files!

I reach out to the community

I learn the trick to solve it (asset bundles)

From 26 seconds down to less than one!

Again, one more reason why you may want to go for the less versatile engine!

Decide on game engine Decide on game engine
Story writing Concept art ​Hiring Artwork FL's
Scripting (dirty prototyping) Add to dialogue Music & SFX
Completion and fine tuning
Debugging & optimization
Laying the Groundwork Phase
"
"
Extreme Prototyping Phase
Fine Tuning
Phase
Finalization
Phase

Summary of Project Work Flow

.. publish your game!

Haritha is an aspiring data analyst with a background in econometrics and hands-on experience in building predictive models on Python (mostly Linear and Logistic Regression models).

 

He is an adventure game designer hobbyist who designed the Joyfess game (launched on Steam in 2020).

 

You might randomly run into him on the dancefloor dancing to his favorite: Salsa music!

Bio

Thank you!

Links:

DELETED Slides