Article at a glanceQuick scan
- Starting with weight loss, running, and fitness
- Documenting the excitement and pitfalls of making a game for the first time
- Looking back at the process of an idea truly coming to fruition for the first time
Beginning: Where This Story Starts
A self-introduction story.
Interested in hearing my story, haha?
Actually, there’s not much drama in the story; rather, my first 18 years had only one turning point.
The first 16 years were pretty much a blur.
I just love listening to and telling stories; I’m addicted to it, and it makes me feel like the world is more real, that everyone is a real person.
Back then, I was basically chubby from childhood, never thought about changing, figured it was fine. I just immersed myself in games and videos. The only constant was that I was still socially awkward, haha.
The Day I Turned 16, I Decided to Lose Weight
Then the turning point came one afternoon when I was sixteen. Maybe it was the exhaustion from climbing stairs that sparked the thought, but I decided to lose weight.
It’s strange, but in my first year of high school, I was given insulting nicknames, but I didn’t really care at the time. Sometimes I’d even play along with my own jokes to fit in. I did have a few small outbursts, but they didn’t really help, and all of that disappeared when we chose our majors and re-grouped in the second year.
But it was during one of those stair-climbing sessions in my second year of high school that I made up my mind to lose weight. No one was externally pushing me, and I had never even watched a weight-loss video before.
So I started taking action, inviting friends to run. After a few runs, I caught the attention of the sports ace in our class.
He was a really nice guy, and during evening self-study, he proactively handed me a note saying he could take me running.
From Running to Fitness
And so, in the early stages, I relied purely on running to lose weight, going from a few laps to 3 km, 5 km, and then 10 km.
I lost about 50 jin (approx. 55 lbs) in half a year. It’s still amazing to think about; I succeeded in one go, even though I heard online that it’s usually easy to fail.
However, because I didn’t know how to research proper methods, there were some downsides. Only running without strength training led to some muscle atrophy, and most of the 50 jin I lost was water weight. That’s the principle behind rapid weight loss for larger individuals.
Later, in the second half of my second year of high school, another sports big shot I’d known since my first year recommended I go to the gym.
Because my initial weight loss methods weren’t quite right, fitness was pretty tough for me. I couldn’t lift heavy weights and had to slowly build my muscle back.
And all that running in the beginning might have taken a toll on my knees… but later, in the second half of my second year, I switched to fitness, reduced my running frequency, and my knees recovered somewhat.
So I successfully worked out for half a year. Although it didn’t really look like I’d been training for six months, I definitely did, and I managed to keep the weight off.
After that, I continued to exercise consistently and started watching videos about scientific exercise, right up until after my first major exam in the first semester of my third year of high school.
The ‘first exam’ is a special kind of college entrance exam in Zhejiang, where you take your three elective subjects and English early. After that exam, we still had about two weeks of Chinese and Math classes, I think.
After Third Year High School, I Seriously Learned to Make Games for the First Time
After that first exam, I had some free time, and the idea of trying to learn game development sprouted. This time, I convinced myself to give it a shot.
Actually, the idea of making games had been with me for a long time, probably dating back to elementary school.
Back then, I watched a video about Undertale, which was made by an indie developer who supposedly wrote everything himself (though that was actually marketing hype; the author did have a team behind him, but he was indeed the core, responsible for a lot of the development).
Perhaps that’s when the seed of wanting to make games was planted in me, but unfortunately, I never had the perseverance to water it and let it grow.
Later, in junior high, I was obsessed with watching fan-made content for this game and even tried to participate myself, though all I did was write down settings in a notebook, which I guess would be called OCs now.
I didn’t even dare to post them online.
Then, that time in my third year of high school, I successfully used my persistence in exercise and fitness to convince myself, finally pouring the first bucket of water on that long-planted seed.
During that period, I went to the library to borrow books to learn Python and wrote settings in a notebook.
Following Tutorials, Setting Up Environment, and First Game Jam
Then, during that ten-plus-day winter break in my third year of high school, I went to Bilibili to search for tutorial videos.
At first, I watched those pure tutorial videos that explained various concepts, but I wasn’t very interested. However, after some searching,
I found a 1-hour follow-along tutorial made by a famous foreign game development blogger, designed for beginners.
And I found that I learned very quickly with this hands-on approach, and I really enjoyed it, being able to create my first small finished product.
After finishing that, I decisively abandoned many theoretical parts of the tutorial I had initially watched and jumped straight into practical application.
After completing this practical exercise, I immediately moved on to a more famous advanced practical guide, which could be considered a turning point for beginners.
It explained many advanced concepts and system setups, such as finite state machines, serialization and deserialization, tile maps, and terrain, etc.
I just powered through it, spending the remaining days of winter break on this.
Finally, I completed it by following the tutorial, though I was still a bit unclear on some concepts, but that was okay.
After school started, I continued to search for new tutorials every weekend to follow and practice.
And the more I did, the more I realized that many tutorials for different types of games shared common underlying development philosophies.
These advanced concepts were gradually mastered through practical application, and I also encountered many other concepts, such as design patterns, component-based development, and object-oriented programming.
And so it went, until the summer after the college entrance exam, when I finally had a lot of free time and my own computer.
The very first day I got my computer, I immediately searched for how to set up a development environment and spent three days configuring it.
Because I had always been developing on my mom’s computer before, I couldn’t set up any development environments other than the engine itself, which was killing me.
After getting my computer, I excitedly explored the internet, registered for GitHub and other things, found a bunch of resources, learned some basic computer operations, and installed some useful software.
AI wasn’t particularly advanced back then; I configured everything by watching videos on Bilibili, haha, it left a deep impression.
Then I followed several tutorials in one go, but how should I put it, I felt that tutorials weren’t helping me much anymore. Of course, it might also be related to the fact that most of what I watched were 2D game tutorials.
Since I wanted to make a 2D game, I basically focused on 2D game tutorials. By then, I had already completed many different types of tutorials, and I felt that continuing to follow tutorials wouldn’t contribute much to my growth.
So I went to development communities and asked how to continue growing. Besides the advice to keep following tutorials, I saw a response suggesting participating in competitions.
So I searched for game jams, and coincidentally, the community was hosting one at the time, so I decided to participate.
It was my first game jam, and the theme was ‘wake,’ meaning I had to make a game based on that theme.
I remember they gave us a good amount of time, a month and a half, and then extended it by another half month, probably to attract more participants.
Anyway, I started working on it right from the beginning of the theme. It was my first time conceiving a game from scratch, finding assets, and writing the script for my own game.
This game pretty much let me step into almost every pitfall I could encounter in the future, haha. It was particularly inspiring and memorable for me.
Pitfalls I Encountered in My First Game
First, it’s crucial to do version control, which means saving your project’s progress during development. For this, you’d use a tool called Git for local saves, and GitHub for cloud saves, which is quite convenient.
At the early stage of that project, I once used immature AI for game development.
The initial successes gave me a taste of sweetness, and I started several days of pure AI coding.
It ended up getting messier and messier; the scripts had many unexpected issues, and the logic was flawed.
I had no choice but to painfully revert to a save from a few days prior, not even keeping the few good changes the AI had made initially.
This is actually a big taboo in AI development even now; when using AI, you must ensure proper saving and such.
After that, the project became purely my manual code, and it’s also my only purely manual code project, haha.
Later, AI got smarter, and free AI tools became available. They can improve efficiency, so they should be used, but with caution, prompt constraints, and so on.
The second point is: if you can use a mature plugin, just use it. There’s no need to reinvent the wheel.
Initially, the dialogue and quest systems for that project were something I wrote after following tutorials for three days.
But it was a tutorial system after all; while it had basic functions, it lacked many advanced features. After using it for a while, I felt it was too cumbersome.
So I tried a better, already mature dialogue system plugin made by someone else.
I could get started with it in an afternoon. It integrated many useful features and also had open custom interfaces.
You could even modify the plugin’s source code directly to fit your own development workflow if you wanted.
The plugin itself is also open source.
To this day, the dialogue system in my projects uses this plugin.
And I’ve customized many other advanced settings, making it easier to use and helping me understand the plugin better. Plus, the plugin’s author is still updating it.
And also, don’t be trigger-happy clicking on things you don’t understand, otherwise, it could really lead to bad consequences.
Late in the project development, I rushed for a few days to get a full prototype workflow done, but hadn’t successfully committed it to Git yet.
Then, for the first time, I tried using a graphical interface for committing. I saw many interesting buttons and tried clicking ‘pull’ to see what it meant.
I had always used the command line for commits before. I must have seen a video about graphical commits and tried configuring it then.
It turned out that ‘pull’ overwrites local progress with remote progress, and it overwrote my local progress, which was three days ahead of the remote!
At that moment, I almost lost all motivation and wanted to quit, but there’s always a way out.
The night before the overwrite, I had exported a version for myself to play around with.
Then I thought of unpacking to restore development progress.
How to put it, I was using an open-source engine, which made unpacking quite easy since the source code was all on GitHub.
And someone else had already made an unpacking tool that could unpack with one click. So I sent the APK from my phone back to my computer and used the unpacking tool to restore the project’s progress.
Although it wasted a day, getting back three days’ worth of progress still made me feel fortunate.
After stumbling through these three major pitfalls, I finally, albeit with some bumps, completed my first game. The first version actually only took 14 days, and then I optimized it for another 8 days, adding some new content and settings, with about a week’s break in between.
Finally, when submissions opened on August 1st, I directly submitted the initial version.
Then, after a week’s rest, I continued developing for another week. Actually, I felt that week was too indulgent, so I pushed myself to continue updating for a bit over a week.
And then I submitted it around the originally scheduled August 15th, even though word got out before the submission deadline that it would be extended by half a month.
What I Truly Learned After Finishing
After finishing this for the first time, I also gained the entire start-to-finish process: finding assets, sound effects, writing plot, writing scripts, etc. It was truly exhilarating.
After finishing, I realized that while I could develop a full workflow, I wasn’t very good at many specific details, like particles, UI, animations, and so on. Also, the code organization became quite messy in the later stages (though now, AI can largely assist in organizing it very well).
The following month was spent supplementing these skills. I followed a specialized tutorial on animations and jam experience, and another tutorial teaching development with C#. In between, I remembered Miku’s birthday was August 31st, so I temporarily took a few days to make a small Miku game, which is also on Bilibili, hehe.
Leading Up to After 18
So, that’s where I’ll stop for now, before turning 18 and before college, hehe.
I hope data can model me, helping me solve things I can’t figure out alone, which is why I’m recording all of this.
Some information may be outdated