[FEEDBACK] Hi Everyone,
I am working my way through Rick’s get-a-job course and I am looking for feedback on my portfolio.
https://yitzchakncohen.wixsite.com/portfolio
All feedback is welcome, thanks in advance.
Yitzchak
[FEEDBACK] Hi Everyone,
I am working my way through Rick’s get-a-job course and I am looking for feedback on my portfolio.
https://yitzchakncohen.wixsite.com/portfolio
All feedback is welcome, thanks in advance.
Yitzchak
Hello Yitzchak!
Your portfolio is really good. You hit a lot of important parts. You show the games you have made and it looks like you have a lot of games which adds credibility that you can make games. I would add some videos where you analyze the games you made and show the code you actually wrote. That way they can see you are fluent in code and actually understand how to code. Great stuff man! Keep it up!
I’m gonna get a little mean, but I’m just thinking as a Human Resource guy, I’m not from that area, but I’ve seen enough incredibly talented people get rejected for the absurdest things, so this might get a little mean, if you can take the criticism keep reading, if not, then don’t read, obviously.
Let me give you a little context first, I once met an amazing programmer, his portfolio consisted of severals games made from scratch, literally from scratch, he had his own engine, he was looking for a software engineer position in some of the biggest gaming companies like Blizzard, Ubisoft and others, he got rejected by everyone (He’s Mexican, so the distance might have been an issue), he didn’t only get rejected, but they didn’t even interview him, he just sent his portfolio and CV with only one response from Ubisoft telling him that he’s not what they were looking for. If you are going after a job on a big company I think you need to polish your portfolio a lot.
I’ll point out the first issues I noticed.
Your portfolio, as it is structured, makes for a bad first impression, once I dig deep I got a little more interested. I think you could get a job in an indie company but not in a triple A studio, of course you could start in an indie company and keep improving your portfolio until a big studio hires you (if that’s your goal), or you could not listen to me one bit and just send your current portfolio to the companies you’d like to work in, maybe I’m totally wrong.
I loved that you took a little time explaining charts and other things in each of the projects section, even tho that’s great, you should put some of your code to show how clean it is, try to comment it, sell your programming skills, at this point it’s more a designer portfolio than a programmer portfolio. Most of your games look like you spend more time in the assets store than coding, to be honest, if you are looking for a gameplay programmer position, I wouldn’t care if you send me a jumping cube… just be sure that it works perfectly and you’ll get a job, as it is now, your games look sloppy, unpolished code wise, and absurdly simple, actually, you know what, I’m gonna point out all the weirdness I noticed from the trailers, oh but before that, your Tower Defense page has the 2.5D Rocket Game trailer.
Let me get a little meaner:
Some final words. To be honest I think you still need to put a little more effort, when I started this game dev journey I almost got a job, I had like 2 months using Unity and I almost got a job, that’s because I made an amazing first impression, my CV was a beat em up game, for real, that’s making a point, and a huge one, you are probably a better coder than I was back then, but you gotta walk that extra mile, once you get the interview then your skills come into play, that’s why I didn’t get the job, I wasn’t ready, but you probably are, just make a better first impression, you can do this.
Hi Yitzchak!
I think that your portfolio looks great. I like that you posted on top a preview video of all your projects and that you used a two-column layout - it looks very clear. I’d suggest changing the font color of sub-menu items to white or adding a background.
I’d use simple models (cubes/spheres/capsules) instead of cool assets to focus the attention on the programming part. You may show your gameplay in the Unity Editor and demonstrate what is currently happening by writing some output to the console and recording it as well to show, for example on a split-screen as you did in the case of Castle Cinematic. I always write to the console which function is being executed during the gameplay and what important processes are running, for example, “Game Manager: Update Progress Bar executing”, “Character Controller: Collect Weapon executing”, “Game Manager: Reset Game executing”, and so on. It shows that you have complete control over everything you did yourself and how it’s connected from behind to the gameplay.
It’s just an idea which came to my mind after watching the preview video, where I was focused on cool-looking assets and other stuff, and in the end, you mentioned that many assets were taken from the asset store or the course resources. Since I didn’t enroll in the same courses I was thinking “How far did you go beyond the course material to do all these things?”
I think that you did a great job and I’m curious to see your future projects! Now you have +1 follower! Congrats!
Hi,
I appreciate the time you put in to review my portfolio. To be clear the Airship game is my most recent work so it is the highest quality, so I understand I should develop this more and show off the programming side. Also I tried to be clear that much of the games were course so as not to misrepresent myself. Let me know if this was unclear.
You made a lot of positive suggestions on where to improve. Pretend I have limited amounts of time, which parts should I focus on? Making the airship into a published game? Polishing all of the projects and showing some code?
Thanks again for your help.
Hello,
I was confused by the credits you gave at the end of the preview video. The description is clear to me and you wrote down everything you implemented. Perhaps it’s only my picky mind but it left me with the impression that quite a lot of things are taken from the asset store/course since it was the first thing I watched in your portfolio. You may consider removing credits from the video because they’re already under the description and it looks good to me - you are precise which assets were used for a particular project. In my opinion “Assets by (…)” with a list in the preview video doesn’t look good.
I also noticed that “Airship prototype” and “The Floor is Lava” link to Castle Cinematic site. I’m not sure if this is a mistake or you’re working on their websites and you don’t have them ready yet.
In my browsers the website loads OK, it’s not abnormally slow but I assume it’s because you uploaded your videos instead of embedding a youtube player.
Cheers,
Marcin
I don’t think there’s an issue with your games, but there’s an issue with your brand, watch this video, Rick explains it.
If you don’t have the time, I think you should be laser focused, set very specific goals, What do you want? You want to work at Naughty Dog? Maybe at… I don’t know, Gamefreak? Once you set a goal ask Who can help you, this is something Rick talks a lot about and so does Ben: “The Mad How Disease”, stop asking how and starting asking who, who can help you get in that specific studio, then you’ll know what you should focus on. All of this will take time, I’m going to be honest, if you don’t have the time you’re gonna need to find a way to make it.
Rick talks about how a change of attitude was everything for him, how his indie dev studio got investors and attention, it was because he started acting professional, he was putting of his own money, he started taking risks, putting the time, you gotta do that, you gotta take risks, you gotta put the time, you have to make sacrifices, that’s the main difference between the ones that make it and the ones that not, remember, you are not trying to get just another job, you are basically trying to get into Hollywood, the video game industry is not about tech, is about entertainment, there’s a huge difference, the entertainment industry is the hardest to work in, the hardest to get a job in, the hardest to even keep working at because it’s incredibly time consuming, watch the Playing Hard documentary to get a small glimpse of what I’m telling you, it’s not for everyone, I’m not trying to scare you, I’m giving you a heads up so you prepare yourself.
Is this a good sample of code? should I just post a picture or a text file with the code on the portfolio? Is this a useful way to show my programming skills? I’m trying to understand how best to display coding abilities.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GameDevTV.Inventories;
using AirShip.Iventory;
namespace AirShip.Combat
{
public class Health : MonoBehaviour
{
[SerializeField] float maxHealthPoints = 100;
[SerializeField] private float healthPoints;
[SerializeField] float timeBeforeDestroy = 1f;
[SerializeField] GameObject deathFX;
Equipment equipment;
Shield[] shields;
bool dead = false;
float defaultMaxHealthPoints;
float lastArmourValue;
void Start()
{
//Set up health points
healthPoints = maxHealthPoints;
defaultMaxHealthPoints = maxHealthPoints;
//Check equipment for health upgrades
equipment = GetComponent<Equipment>();
if(equipment)
{
// Subscribe to equipment update and check for new shields and armour.
equipment.equipmentUpdated += checkArmour;
equipment.equipmentUpdated += checkShield;
}
}
void Update()
{
// Check health
if(healthPoints < 0)
{
DestroyTarget();
}
}
public void TakeDamage(float damage)
{
healthPoints -= damage;
}
public bool IsDead()
{
return dead;
}
public float GetHealth()
{
return healthPoints;
}
public float GetMaxHealth()
{
return maxHealthPoints;
}
private void DestroyTarget()
{
GameObject deathFXObject = Instantiate(deathFX, transform.position, transform.rotation);
dead = true;
Destroy(deathFXObject, timeBeforeDestroy + 1f);
Destroy(gameObject, timeBeforeDestroy);
}
private void checkArmour()
{
ArmourItem armourItem = equipment.GetItemInSlot(EquipLocation.Armour) as ArmourItem;
if(armourItem)
{
//Add armour health to player health.
maxHealthPoints = defaultMaxHealthPoints + armourItem.GetArmourAmount();
healthPoints = healthPoints + armourItem.GetArmourAmount();
lastArmourValue = armourItem.GetArmourAmount();
}
if(!armourItem)
{
//If armour was removed, remove health bonus.
healthPoints = healthPoints - lastArmourValue;
maxHealthPoints = defaultMaxHealthPoints;
lastArmourValue = 0f;
}
}
private void checkShield()
{
//Let the shield know which Health gameObject the shield is a child of.
shields = this.GetComponentsInChildren<Shield>();
foreach (Shield shield in shields)
{
if(shield)
{
shield.SetShieldHost(gameObject);
}
}
}
}
}
The thing studios look for when checking for code skills are two main things:
Extra things that are super nice to have:
Now, let me give you a quick review of your code:
using System;
using System.Collections;
using System.Collections.Generic;
using AirShip.Iventory;
“Health” is a terrible name for your script, specially when you are also handling armor and shields inside it. Naming is hard, but if you manage to get that correctly you’ll be one step ahead of many, many people.
You either declare all your variables as private or don’t:
[SerializeField] private float healthPoints;
[SerializeField] float timeBeforeDestroy = 1f;
[SerializeField] GameObject deathFX;
bool dead = false;
Why do you have 3 health values? Is there an actual good reason for it? I check the entire code and didn’t find one. You have maxHealthPoints, healthPoints and defaultMaxHealthPoints, also, two of them are exposed in the inspector, Why? You could easily remove one, also the naming is kinda confusing, What’s the difference between maxHealthPoints and defaultMaxHealthPoints? A currentHealthPoints float that shows in the inspector and a maxHealthPoints is more than enough.
Have you considered removing all those values and putting them in a script? You are adding a bunch of lines (talking about all those “getters”) that could have been easily put in another script. That’s actually a common convention, having your data in another script or scriptableObject.
Why are you calling this every frame? Why not just call it every time the ship takes damage? Why less than 0? That means the ships with this script attached can take another extra hit, Is that intended? Also the comment should be “Check if death”.
void Update()
{
// Check health
if (healthPoints < 0)
{
DestroyTarget();
}
}
Why the lower case “checkArmour” and “checkShield” ?
And finally, I have no idea what “checkShield” does. I saw the comment but I have not a single clue as to why you are doing that, the comment is a little confusing, specially when the method is name “checkShield”, that’s not checking the shield, that is setting something in the shield, don’t know precisely what but that’s what it is doing.
You might want to tell a friend or someone to check your entire code and give you feedback, that’s a very nice way to clean up your code and check places where you over-engineer things, have typos and so on.
Thanks for your input, I will go over all my scripts like you did here before adding them to my portfolio and also have someone else look at them if possible.
Let’s talk health points if I may:
I need 3 values, I have adjusted them base on your suggestions, and added clearer comments to explain them.
base max health points -> the maximum health points the player starts with, set by the designer
max health points -> the current max health points includes buff and armour additions. (this could be calculated every time it’s needed I suppose)
current health points -> how much health the player has left.
I think having these values makes sense, or does max health seem redundant?
Long term as the scope of the game grows I will make a stats class with many of these values contained there.
Base max health points and current health points, at least to me, are doing the same thing, I would modify the base max health points instead of creating a new variable, to me, it’s more comfortable that way because it allows to confirm is health is behaving as expected right in the inspector, I could detect anomalies far easier, like something taking less or more damage than it should, and it doesn’t matter since those values would reset after exiting play mode.
What’s the best practice for showing code in a portfolio? Attach a file? Github? Screen captures?