Posted December 08, 2024 by yosheDev
During my 1.5 years of Unreal experience, I have learned the majority of things necessary to make a game. During this project I didn't learn many new technical skills, but I did learn a few more useful things to know.
Outside of technical skills, I learned first-hand how important a design team really is in game production. We split into "narrative", "art", and "programming" teams, but we did not have a designated "design" team on the project. Because of this, there was no direction for the vision of the game, and no specific group that had the design answers necessary for the remaining departments to implement features.
As Jesse Schell described in "The Art of Game Design: A Book of Lenses vol. 3", a game is made of four elements: Mechanics(Design), Story(Narrative), Aesthetics(Art), and Technology(Programming). With a firm pillar missing in the mechanics, the game became unbalanced. Ideas are formed into mechanics, which everyone in development can do. Designers take mechanics and form them into a system that feeds into primary, secondary, and tertiary gameplay loops. However, our game had no defined systems or gameplay loop, which left departments confused and delayed. Despite proactive communication between departments, this hole could never be filled. And I believe this carries over to all pillars: if one is removed, the game becomes unbalanced and will likely fail to satisfy consumers.
For me, the most surprising part of the project was how different is was working in a large team compared to smaller teams. The programming team was the largest team with 11 individuals.
There's a saying I like to follow, "He who travels fastest travels alone. He who travels furthest travels with others."
For rapid development, 1-2 individuals will complete a prototype and smaller scale games quicker. This is because there is less coordination required to make progress. On the other hand, for projects of larger scale/duration will eventually be able to progress much further than a smaller team could. This is due to everyone being able to spread the weight of the project across the team.
This was a small scale project that spanned 8 weeks of 6 hours for each individual. The work load was fairly low, but the programming team had spread it amongst all 11 of us. Because the nature of the project was a class assignment, we also decided to assign equal responsibility from the start. What surprised me was that this actually made progress slower in the beginning due to everyone only being able to access small pieces of the incomplete whole. It would have been quicker to have 1-2 people create all of the underlying mechanics and structures in the first 1-2 weeks, then have everybody spend the next 6-7 doing everything else. This way, progress would be rapid at the start, and then the team can take some more of the weight only once it becomes heavy and help carry it far.
On the other hand, I was also surprised by how nice it is the have teammates assist with cleaning the plate. In the last 2 weeks, there were many instances of my team mates taking care of tasks that were on my plate that I had no way of getting to that day. This was helpful for maintaining a productive drive, and was a real glimpse of the "He who travels furthest travels with others." part of the saying.
To me, my greatest achievement was maintaining communication throughout the class. I have always had social anxiety, and unless I am in an authoritative position I tend to keep quiet in larger groups. Regardless I tried harder than I usually do to bounce around the room and check in with everyone and help where I could. I would usually spend class sessions helping resolve 4-5 different issues concurrently. I felt like it was important for the team morale to consistently have others to work alongside, and I believe I did a good job at maintaining a culture that encouraged that.
I was also pretty happy with how quickly I got the wall running to work. If I remember correctly, it took 8-10 hours. I used a tutorial as a base, but I had to make many improvements to it for it to actually function. For instance, I wanted it to work on curved surfaces, and the tutorial barely worked correctly on flat surfaces. I also had the wall running working on an actor component, which was helpful for speeding up progress.