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
deck
By haridira
deck
- 431