Search Unity

Constructive criticism on GPD Pong (one of my university student projects)

Discussion in 'General Discussion' started by GregPDesUGD, Jan 28, 2017.

  1. GregPDesUGD

    GregPDesUGD

    Joined:
    Jul 27, 2016
    Posts:
    93
    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.

    http://www.newgrounds.com/portal/view/680565

    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.
     
  2. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    In general I wouldn't bother this much on a student practice project. Pong is several decades old, a remake of Pong is unlikely to make you rich.

    Frame rate feels fine to me.

    The guy was soft on you. I felt like throwing up after the first round. Camera movements should have a purpose. And ideally they should only happen as a result of a player action. Don't just move the camera for its own sake. Not unless you are trying to make people vomit.

    Well yes. You really should test your own game on the target platform before you release it. There is no real excuse for unreadable text.

    Can't comment. To busy throwing up to play again. On easy mode the computer was missing the initial serves. That's a little too easy.

    That's a design choice. I would keep them static until the game starts. But change it if you want.

    This really is a non argument. Unity is the most popular game engine out there. For a good reason, it does the job well. You'd be surprised how many games you play are Unity ones. If you are going to target WebGL, you should at least do yourself the decency of building your own template.
     
    theANMATOR2b and QFSW like this.
  3. QFSW

    QFSW

    Joined:
    Mar 24, 2015
    Posts:
    2,906
    - The frame rate is too low; 10 frames per second compared to 30 or 40 frames per second.
    I notice that is pretty slow compared to the commonly accepted minimum framerate of 25fps but it didn't bother me too much


    - Camera tilt is too distracting and does feel uncomfortable after a while.
    yes, and not even after a while, pretty much instantly


    - Credit text is too small (you had to get closer to the screen to read it)
    I couldn't read it at all. Did you actually play test it outside of the editor?

    - The AI is not really good enough, not even on hard difficulty
    The paddles even moved out of the way when the ball was going directly to them so I wholly agree. Even a basic follow the ball could have done better

    - The paddles should have the ability to move when the ball is set up.
    Design choice

    - The game should be made with something else than Unity.
    Ignore that


    Other than the last 2, all of them were perfectly valid criticism and you shouldn't be thinking of reasons or excuses to counteract them. Either fix them if you care about the project or make sure to keep them in mind for your next project if you dont
     
    theANMATOR2b likes this.
  4. theANMATOR2b

    theANMATOR2b

    Joined:
    Jul 12, 2014
    Posts:
    7,790
    Stupid, biased opinion without any logical reasoning. Disregard completely.

    Further - Unreal seems to be a PITA to build for webGL, though this statement is only based on a 30 second search.
     
  5. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Be less abrasive please.
     
  6. Arowx

    Arowx

    Joined:
    Nov 12, 2009
    Posts:
    8,194
    This is good feedback, and you don't always get this.

    - The frame rate is too low; 10 frames per second compared to 30 or 40 frames per second.

    Test this by doing a development build and attaching the profiler to it (and/or adding an FPS counter). Although I suspect the low ball and bat speeds as well as slow tilt give the player the idea that the game is running slowly. Try faster speeds and maybe adding a set of speed modes.

    - Camera tilt is too distracting and does feel uncomfortable after a while.

    I don't think it adds anything to the game sometimes you need to cut back on things to get just the core of your game. You could make tilt option or maybe you can invent tilt pong (around a cylinder maybe?), where the players bats unbalance the playfield and tilt the game?

    - Credit text is too small (you had to get closer to the screen to read it)

    It is just increase the font size about double should hit the spot. Note everything about UI should be about making it easy for the user to see and understand what is presented.

    - The AI is not really good enough, not even on hard difficulty


    All the AI has to do is move in line with the ball so simple fix, ensure at hard difficulty the AI bat almost matches the ball position (Y plane?).

    - The paddles should have the ability to move when the ball is set up.

    It would be nice for players to get a feel for the controls as the game begins, and would prevent confusion.

    - The game should be made with something else than Unity.

    Making any game is an achievement. What you make it with should simple be an intersection of your skills (or the skills you want to learn) the games requirements and the game engines features.

    Good work.

    You could make the play area larger (move camera forward a bit or adjust FOV).

    You could also juice it up a bit (see this great video on juicing up a game).

     
    GarBenjamin likes this.