Lessons from the Story of an Adventure Game That Grew from a Tiny Flash Game for a High School Contest
Speaker: Haritha Diraneyya
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)
#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
→
.. 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
A Stumbling Block
When scope creep nearly killed the project
A Stumbling Block
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
Throw away all past work done on AGS
Rework story
When scope creep nearly killed the project
A Stumbling Block
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
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
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
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
Where you will be spending most of your tech work time as an indie developer
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
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.
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 |
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 |
Do I want to port my game to Android and/or iOS?
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 |
Is my game 3D or 2D?
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 |
Do the pros of having to learn a more versatile engine (e.g. Unity) outweigh the cons?
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 |
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
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
Puzzle Dependency Charts
Puzzle Dependency Charts
Game Engine
Story and Puzzle Chart
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
Scripting
Filling the Details in as You Go (e.g. Dialogue)
Music and Voice Over
Debugging an Optimization
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
Filling the Details in as You Go (e.g. Dialogue)
Music and Voice Over
Debugging an Optimization
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
Game Engine
Story and Puzzle Chart
Concept Art, Character Design
Hiring Artwork Freelancers
Scripting
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)
Debugging an Optimization
Sample from dialogue script
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
Took 26 seconds to switch scenes
Took 26 seconds to switch scenes
Expectations
Reality
Took 26 seconds to switch scenes
Took 26 seconds to switch scenes
Tried almost everything (exclusion method)
Took 26 seconds to switch scenes
Tried almost everything (exclusion method)
Had nearly given up when I found out, it was voice files!
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
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)
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!
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 |
---|
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!