Post Mortem, How It was Made & Concept Art
Welcome to our postmortem! This was taking up a massive amount of space on the game page so we're moving it to a devlog! Sorry if you've already seen all this!
Life In 2 Dimensions
This was the theme for the GameDevTV Game Jam 2023 that we entered. Our idea was that Aria is literally a life within 2 dimensions. What if your two dimensional artwork was sentient and could try to communicate with you. Are these reflections of the artist's own thoughts or something more? Initially we considered taking this in some darker directions, but wanted to keep things a bit more upbeat for the jam!
The Good, The Bad
Overall we're super happy with how things turned out. The general gameplay concept was settled on pretty quickly during the first day and the story continued to evolve along with the rest of the game as we went. Zzzablo knocked it out of the park with the early potential character concepts. They were super hard for us to decide between but Aria won out! I wonder if we might see the others some time...
- Very happy with the general game feel, popping enemies is satisfying!
- We cut it pretty close for time, and had to cut the final two stages, but that is something we'd planned to keep in mind.
- There was some pretty heavy crunch time during the last couple days. Not great, but an experience in its own way!
- Aria's art turned out amazing and her range of expressions help tell the story.
- We ran out of time to do additional polish on the levels. Especially the early ones where the difficulty curve is all over the place.
- The way levels would be planned/created was changed late in the jam. It ended up working great for creating new levels, but made making changes to existing ones a bit grueling once they reached a certain size.
- While we're happy with the ones we used, a greater variety of sound effects and music would've been nicer. Likewise some of the music changes are very jarring! Some fades would've done wonders.
- A LOT of time was spent debugging certain gameplay elements that were never added.
- Debug tools for every aspect of the game were made as we added new features. This saved a lot of time when testing. More time for polish!
Cutting Room Floor
We ran out of time for a lot of plans, or realized that some of them would be way out of scope for the time we had to commit to the project. Here are a bunch of the random things that could've been in One Voice!
- Multiple ending artworks depending on the player's performance. We also considered palette changes based on performance, but realized it was out of scope for the time we had.
- Two final combat stages with her rendered art. These final stages would've introduced the lasso tool and larger enemies with less predictable movement patterns. Another idea was being able to shoot shape tools from Aria's heart.
- Paint color being a gameplay element. It turned out to be unfun for the player to juggle this as well (the dot in the middle of enemies would indicate the paint needed to destroy them). We did consider an eyedropper tool but it seemed too fiddly.
- More advanced enemy movement types such as parabolic waves, spiraling curves, etc.
- More enemy types such as gigantic ones that would require another tool, projectile turrets or enemies that would dash to the center after a short delay.
- Longer combat stages with more varieties of spawn patterns.
- Custom particle textures and more detailed effects, especially for the various types of paint splats.
- Aria's artwork corrupting and showing parts of her previous states as she takes damage.
- More effects for Aria's heart, especially when under attack. The File Integrity became the health bar to compensate when I realized I wouldn't have time to dig too heavily into shader effects.
- More interesting camera positions for Aria during dialogue to better emphasize some of her various expressions.
- A small speaking animation fading between the layers. This was actually mostly setup but we ran out of time.
- Text effects and placement changes during dialogue.
- A cooldown and refill system for the Fill Tool. It's even coded / animated already! But the fairly simple code just wouldn't behave consistently for some reason so it was removed entirely.
- Way more details on the ending screen including some animations and terrible ChatGPT generated fake 'tweets'.
- Having the likes, comments and shares on the final screen represent the player's performance in a meaningful way.
- Free paint mode where the fake Idle Sketcher app would actually behave like a paint program.
- Some creepier storyline elements, such as the artist and Aria not wanting the same goal and the artist being able to 'redraw' parts of her personality and memories.
Important Lessons Followed / Learned
- Scale back your project scope early and brutally. It's easy to get carried away with grand ideas that might never see completion.
- Get debug systems and tools going asap. For One Voice this included a stage/dialogue select/reset menus, various 'cheat' codes like infinite health, stop enemies, reset enemies, complete wave, complete dialogue, spawn custom waves, etc. But also the ability to link any scripts directly to a function key so it could be repeatedly tested/tweaked with ease. Using the Unity event system made this pretty easy!
- Playtest constantly and try to break your own game. Originally the brush combo size could scale limitlessly. Which actually made it super easy to just cover Aria's heart with the cursor and make her mostly invulnerable.
- Keep in mind some fall back plans for when time is quickly running out. Various features were considered stretch goals for if we were ahead on time and others were considered ready for culling if we were behind. The last two stages of the game were dropped on the final day.
- Test an actual build well before the submission deadline. You're bound to come up with at least one or two issues the first time you do a proper build and run the executable.
- Productive procrastination. This probably isn't for everyone, but it works for me. If you're really bumping your head against a problem, focus on something completely different like graphical effects for a while. You're still making progress and there's a good chance a solution will come to you while somewhat distracted on something else.
- Late night sessions can become super unproductive in the general scheme of things. Would've been better to get more rest several times.
- WebGL is well worth trying out. It loses a bit of visual fidelity and effects compared to the stand alone version, but if it lets more people experience the game that's a huge win.
How it was made
It's a pretty simple Unity game overall! Lots of enemies and lots of particle effects. All of the enemy movements, animations, camera shakes, fades and wobbles are controlled using DoTween. I highly recommend checking it out if you're looking to add some 'juice' to your game. One thing that might be interesting is how enemy waves are generated. The plans changed quite a bit from how it was initially intended, but we could keep pushing ahead with a lot of the initial structure!
Each spawning pattern (such a semi circle left, 4s path time to heart) is stored inside of a scriptable object. The scriptable objects each contain int arrays that control how many enemies should be spawned at various set spawning points. There's a bunch of other timing details and other infor stored in there too!
We ended up with tons of patterns that could be reused! Not entirely how the system was designed initially but it worked! Initially the option of a delay/pause before/after a pattern spawn was going to be included per object, but became separate stand alone objects which were easier to work with.
Each of these scriptable objects became little pieces I could then slot into an array in the wave generator in the order I want them to occur. Yep, it's a mess! But it worked! I had some test arrays setup so I could try out smaller segments in isolation as well. If I had more time I would've built a graphical editor to create, sort, test and edit all of this. As level sizes grew quickly it became really hard to go back and tweak things too much with the arrays. Which is part of why the difficulty is a bit all over the place! If you haven't played with scriptable objects in Unity yet, they're literally a game changer.
Aria's expressions are controlled by scriptable objects as well! Each object contains information on the sprite, the local position it should be displayed at, what stage it is associated with, etc. How her spritesheet was setup was super hacky, but it was fast and worked! There was supposed to be a super simple fading speech animation during the dialogue but we ran out of time. It's actually even mostly implemented and you can see the transitions when she takes damage during combat.
The sprite sheets are a bit of a mess, nice clean setups went out the window just to get things working asap.
The first draft of the interface, not too different really! It took up way too much screen space though. I played with having the canvas area more square shaped as well before settling on the current layout. The main reason for change was being able to spawn a full circle of enemies far enough away from Aria and mostly on screen.
Concept Art
Aria had some rivals to begin with. But she won out as the most suitable choice among the concepts for the jam.
Initial concept sketches for possible characters. There are plans for the rest of them to see more artwork in the future on zzzablo's instagram!
Further developing Aria and some variations.
Close ups on some of the details.
Some of the different color schemes for Aria that were considered.
Sketching out chibi Aria!
Conclusion
Thanks for reading! If you enjoyed the game drop us a comment! We're considering what it would take to really polish this in to a finished project with with a greater focus on enemies spawning in time to the music and more characters/stages.
Want To Play?
You can play it directly in browser on the game page
The downloadable version is a bit older currently.
There is also a One Voice v1 that is nearly ready for uploading. It'll bring new features, content, lots of fixes and more!
Get One Voice - Canvas Defense
One Voice - Canvas Defense
Defend your art file from corruption and restore the layers using paint tools and precision mouse skills!
More posts
- One Voice v1.1 - Major update with Japanese LocalizationJul 20, 2024
- One Voice v1.0 Release! Plus ChangelogJun 26, 2023
Leave a comment
Log in with itch.io to leave a comment.