About four months ago, I completed my first online computer game, called GPD Pong, and I posted it on Newgrounds and Kongregate. It was an opportunity for me to learn game development at a basic level and understand some of the elements such as handling events in a loop, using interfaces, and game mechanics.
About four weeks ago, I came across a YouTube video of someone playing my game on Kongregate, and had some complaints about it. I approached him and listed down all the bad things about the game from watching the video. Those were things that was not mentioned in the reviews on Newgrounds.
- The frame rate is too low; 10 frames per second compared to 30 or 40 frames per second.
- Camera tilt is too distracting and does feel uncomfortable after a while.
- Credit text is too small (you had to get closer to the screen to read it)
- The AI is not really good enough, not even on hard difficulty
- The paddles should have the ability to move when the ball is set up.
- The game should be made with something else than Unity.
So now, I want to address the criticism I got. Unfortunately, I am very busy until May because I am in my third year at university in software engineering, so I can’t guarantee I’ll make a big improvement.
The frame rate is too low; 10 frames per second compared to 30 or 40 frames per second.
I don’t know how to adjust the frame rate when I build the game for WebGL and upload it on a site, because when I do, the entire game runs through a small JavaScript file that loads a 14 MB DATAGZ file. When I build it and run it locally through the index file on a browser, the game plays fine. It may have to do with how the browser has to handle multiple JavaScript code at the same time.
Camera tilt is too distracting and does feel uncomfortable after a while.
To make this clone more unique and feel like it’s more 3D, I had to use camera tilting. Technically, there is a spot light in the game where it could give the illusion of 3D, but it would still look like the game can be just made in 2D.
Credit text is too small (you had to get closer to the screen to read it)
At the time the game was built, I didn’t really bother using a scroll bar and a pane that scrolls, because it would take too long to figure it out.
The AI is not really good enough, not even on hard difficulty.
I did had ideas to make the AI sophisticated, but I felt the game would lag so bad because multiple computations would need to be done in order to make the AI smart. In addition, I did not thought about using machine learning, although by now it may seem complicated to implement. So, instead, I went on with a sloppy, brute-force approach that uses a sphere trigger collider and different values of acceleration. Only Medium and Hard level difficulties use the look-ahead approach to where it predicts where the ball would be on its side.
The paddles should have the ability to move when the ball is set up.
I think by now there is a way to set up the pause only on the ball when it’s set up: just have a function where after it’s positioned at the center of the board, a coroutine is called to prevent the ball from moving right away.
The game should be made with something else than Unity.
As I am still a university student and how I am pushing to learn new technologies, I thought about learning Unreal Engine 4 because it’s entirely C++ based and provides native performance. What I didn’t realize before with Unity is how much abstraction is used to make the game built to different systems. However, the real reason why I used Unity is because it’s easy to learn and understand game mechanics, as well as putting components together. I also got into the habit of programming from learning Java, originally, where C# is somewhat of a bridge between Java and C++. It’s also a learning curve for future projects, where initially I thought about going extreme in my learning curve and build a game for the Nintendo Wii U. Nowadays, I wish I could build a game for the Nintendo Switch for the same reason: building lots of experience with game development technologies including Blender.
However, one of the realities is that Unity is a very popular game engine and has been used for many different applications. At Hack the North 2016, one of the finalists made a project using Unity and the Oculus Rift VR headset to simulate surgery on a patient with the Amazon Echo. It’s also used in several gaming companies that offer university co-ops such as A Thinking Ape from Vancouver. For Christmas 2016, I even asked my dad to see if he could pitch in some money to pay for the Unity Courseware program.
From here, what are some next steps I should take? I have the code for the game available on a public GitHub repository if you like to take a look at it.