Learning to Fly: Dealing with Struggles and External Comparisons
Note: The art in the game is from StencylForge because I didn’t have enough time to add Daniel Xiao’s excellent art. His feedback throughout development helped make the prototypes better than they could have been.
“I wished to say to men, ‘If you desire to continue freely in your creative work, it will be necessary for you to enter the struggle and conquer the forces of darkness that are about to invade the world.’” –Jacques Lipchitz, on his sculpture Prometheus Strangling the Vulture II
“Learning to Fly” puts you in the role of a bird struggling to fly as high as possible. It’s also a game about how I’ve felt in my first year as a full-time indie game developer. My overall goals for the project were to convey the following ideas through game mechanics:
- that you should celebrate your accomplishments and progress
- that you should avoid comparing yourself to others
- that you should enjoy the journey instead of doing things for external rewards
Since this game is about personal themes of struggle, it would help to provide some background information.
Ever since I was a child, I would spend a lot of my time exploring video games and their development. I’d consume books and articles on video game development and design. I’d play games with an eye on interesting choices the developers made. When I first learned how to program, I remember the first time I plotted pixels on a screen on my Apple II c+. I realized that making the computer draw images on the screen meant that I had the power to make video games.
I taught myself how to program, and I even made a few simple games. When I got a PC, I remember hacking out my own Pac-man clone in QBasic, complete with bouncing cherries.
When I got to college, I spent a lot less time coding on my own than I wish I had, and I didn’t spend too much time making games. There’s an unfinished Pong/Warlords clone in QBasic somewhere to show for my efforts outside of class and homework. Still, I had this idea that game development was what I ate and breathed.
After college, I participated in a few 48 hour game development competitions. I was able to finish a complete game for a few of them, too. Clearly I knew how to make games. I’ve done it before for years, after all.
Well, after years of struggling with my own projects part-time and saving money, I quit my day job in the summer of 2010 and went full-time indie. I figured by the end of a year I’d have at least a couple of games under my belt.
Well, it turned out that I was woefully unprepared. Making a complete, commercial-quality game is not anything like taking a 48-hour prototype and doing more of it. I underestimated the technical requirements for my project, especially since, as a GNU/Linux user, I had no good choices in 2D game engines or frameworks to leverage. My one month project has turned into a year-long learning experience. I kept missing self-imposed deadlines, I struggled with my lack of skills and experience, and all the while I was painfully aware that every day I didn’t ship meant more of my savings disappearing.
Maybe I Shouldn’t Be an Indie…
Occasionally throughout that year, I’d have feelings of despair. I felt like I had too much to do, yet I didn’t know what to focus on first. Whatever I did do, I’d almost always have a feeling that I’m wasting my time and should be doing something else. Since so much seemed to be going wrong, nothing ever seemed to be going right! Any plans I had kept becoming obsolete since it is hard to do any kind of marketing and sales projections if the game’s schedule keeps slipping. Since I’m the only one running my business, I’m the only one taking on all of the various roles, and it can get quite stressful since there’s no one to go to but me. There would even be days where I’d wonder if I quit my day job too early, especially as month after month passed with no way to make income.
I especially felt like a failure because in the time I have spent working on my first major project, many games have been developed and released by others. Some became critical and financial successes. I’d see these other developers and their games and think, “How can I compete with them if I can’t even get this project out the door in a timely manner?”
Then I realized that I didn’t really have any reason to feel so down. I was a full-time independent game developer! There are people who would love to be in my position. In fact, I was one of those people, and I took the big step to actually make it happen. My project might not be finished, but I’m always making progress on it. It’s much further along than it was weeks or months ago! And since I’ve been focusing my efforts on my project full-time, I’ve learned so much more this past year than in the past five or 10 years combined. Aside from my dwindling savings, what was there to actually despair about?
Dealing with Despair
I realized that there were a few disempowering thought and action patterns which led me to feel frustrated and depressed. Comparing myself to others was one such pattern. When you’re working on your first project, it’s good to know about the competition, but it’s not good to worry that your game is nowhere near the level of depth and complexity of Minecraft or Dwarf Fortress or Civilization. And yet I’d compare my first project to someone’s 10th or 20th, or a project with a much larger budget and team than mine. Imagine playing basketball and getting frustrated that you’re in the same universe as Michael Jordan, thinking that all of your practice and energy expended will, in the end, be for naught because, after all, how could you hope to compete? In a similar way, I’d feel like any progress I made was tiny and pointless compared to what other indie game developers were putting out.
Focusing on end results meant getting frustrated when those results didn’t happen. Getting frustrated by mistakes meant worrying about mistakes and feeling like I’m out of my depth. Worrying that I’m feeling too stressed resulted in me thinking that I’m not cut out for game development. Trying to be realistic made me wonder if I wasn’t capable of anything important. All of these patterns led to feelings of despair.
I found that there are better ways to think and act if I want to avoid feeling helpless. If I focus on the journey as opposed to the destination, I can feel good about progress being made instead of feeling bad about the progress I’m not making. As a result, I can be passionate about the work I’m doing. I can create my own reality instead of worrying about what everyone thinks my reality should be. I can trust myself to make decisions and learn from mistakes. I can deal with the things that are within my control and ignore those things that are not. I can take time to celebrate my victories instead of constantly looking ahead to what’s next and what’s unfinished.
Interestingly, as I worked on my jam prototypes, I found myself dealing with a lot of these issues as I worked. I was learning how to use Stencyl since I didn’t trust that my own code would let me make anything quickly enough. Even though Stencyl was fairly powerful and allowed me to quickly put together a game, it was still new to me, and I struggled at times to figure out how to make it do what I wanted. It didn’t help that I wasn’t sleeping or eating as well as I usually do. At various times throughout the jam I felt like I was wasting my time, that I should work on my own game project, that it would be OK to not finish, and that other participants were probably putting together some awesome games and my game would barely compare even if I could get it finished.
Maybe it was partly because my game’s themes were about pushing through such struggles, or maybe I internalized the better self-talk since I had practice with it throughout the last year, but I persevered.
Prototype #1 Analysis
“Learning to Fly” starts off with your bird on a tree branch, and there is a score at the top of the screen: 784 out of 6000. Soon other birds are flying up at various speeds from the bottom of the screen, giving you encouragement to follow.
If you press the Up Arrow key, you’ll move up a small amount, and gravity pulls you right back down. By pressing up repeatedly, you can move higher, although it is a struggle. Your arm literally gets tired as you press the key over and over again. Luckily, there are other branches to rest on as you proceed.
You’ll note that the other birds seem to fly up with ease, but it’s your option to pay attention to them or not. You can compete with them if you want to, but in the end, it doesn’t matter what they do. It only matters what you do. Some are slower than you, but some are way faster.
As you move higher, you see that the score at the top of the screen increases. It doesn’t decrease as you fall, but it gets closer and closer to 6000 as you fly higher and higher.
Eventually you’ll see the top of the tree, and the screen stops scrolling up. If you fly all the way to the top, you’ll find the score reaches 6001/6000. That extra point was originally a bug, but I liked how it felt to be rewarded with something extra for keeping with it and making it to the top.
But the game doesn’t end. There is no explicit victory or defeat for the game. It’s your choice to care about the arbitrary score. You can choose your own path. You can even fall down to the ground if you want.
I think I managed to convey the feeling of dealing with work struggles and imagined competition well enough in this prototype. It’s a chore to fly, and you can see other birds flying past you with ease. Some of them might be veteran flyers. Others are slow, and once you get the hang of things, you can catch up to them easily, but it is possible that the player never sees them. Of course, the player can choose to ignore all of the other birds since they have no way to impact how well the player does.
But I think I left too much up to the player in terms of focusing on progress and celebrating goals. Resting on branches might help relieve forearm tension, but without an explicit goal, the player might not feel that there is a reason to spend so much energy and effort on trying to fly. The extra point at the top might say something about completion, but there is very little conveyed about focusing on progress.
Prototype #2 Analysis
For the second prototype, I tried to address those issues. I set the starting position on the ground, and I placed a greater number of birds moving up at different speeds to make it even more clear that they are your peers. As you fly up, you’re guaranteed to catch up with at least some of them. Again, some are easy to pass while others are way too fast.
The biggest change I made is related to tracking progress. I removed the score at the top of the screen. Instead, every time you touched a branch, a marker would appear telling you how high you’ve flown, how much higher you’ve flown since the last marker, and how much higher you have to left. These markers become permanent fixtures within the scene.
When you reach the top this time, the game actually ends. You lose control of the bird, who lands on the tree branches, resulting in one last marker appearing which says you made it to the top. After a few seconds, the screen scrolls down throughout the level. You can review the markers you left behind and see where you’ve been. You’ll also see other birds still struggling to fly up to the top. The game fades to black when the ground comes into view, and the game resets.
Work struggles and imagined competition were still conveyed well in this prototype. This time, however, I think the markers did a great job of giving the player a sense of progress while still allowing it to be optional. You can land on every branch, leaving a trail of markers behind you, celebrating every few feet of height attained, or you can fly all the way to the top without stopping. I like to think of the latter as being focused on your end goal, while the former is more about focusing on your progress. You can backtrack without penalty as in the first prototype, but it does allow you to revisit earlier markers to see how you did.
With the score at the top of the screen, the external goal was hard to ignore. Changing to markers gave the player more freedom to decide what to focus on while still emphasizing celebration of progress and goals. The player can acknowledge accomplishments or ignore them. The player can try to create many small pieces of progress or cram everything into one big celebration.
When you see the other birds still flying at the end of the game, it’s a good way to acknowledge your improved skills and abilities. You were there once, and look how far you’ve come. Even if other birds made it before you, you’re here now, and other birds are still trying to get to where you are. While you can acknowledge competition, in the end, it’s only what you do that matters, so who cares who is faster?
There were other mechanics and dynamics I wanted to explore but ran out of time. Improved flying controls based on strength and experience might have made the game less physically challenging while still conveying the idea of struggle. Resting on branches would help the bird recover strength to continue flying up. Another option was to make the bird fly higher based on how far it fell, meaning that true flight could only be attained when falling from the highest branches. Perhaps it would help convey the idea that failure and success go hand in hand.
I thought about providing different kinds of rewards for the player. Eating worms for happiness might have worked, but I didn’t want the player to specifically aim to get to worms. I wanted flight to be the main goal. Perhaps making attempts at flight be official events in the game would make it easier to track the player’s progress. I thought about creating treadmill areas in the game. If the player doesn’t acknowledge progress often enough, the game could replicate the current area on the screen, and the player would continue to fly up without noticing that he/she hasn’t gone any higher. I think it would do a good job of conveying the feeling of unending work, but it wouldn’t reward the player for persistence. I could add a timer to give the player an incentive to fly as quickly as possible. I could even make the timer as inconsequential as the other birds, allowing the player to choose to pay attention or go at his/her own pace. Similarly, displaying scores for the other birds could give a better sense of competition. Going backward is a benign action, but it could be rewarded as a way of acknowledging the player’s history, or it could be punished as a way of representing setbacks.
The biggest thing I would have liked to do was to find a way to make the journey more enjoyable considering how much work it is to fly up.
Making this game was actually a therapeutic experience. In 48 hours, I experienced a lot of the feelings and stress I had during the last year in rapid sequence, and this time I knew how to deal with all of those feelings. In that sense the jam was a microcosm of what I’ve been dealing with. I’m very pleased with how I pushed through the struggle and with the results.