Quick Tip: The Long One-Page Resumes should always be one page, but if you’re very close you can actually just make the page taller without folks noticing! Ingenious, right? I can use Microsoft word to extend the page size and, when it’s exported as a PDF, recruiter’s can’t tell that they scrolled the extra inch. Since people rarely print resumes these days it’s pretty hard to get caught with this trick so it’s definitely worth considering. Quick Tip: Multiple Resumes If you have multiple skills you may want to be seen as multiple applicants. In practice this might be a person, who is both a designer and engineer. In this case, they should create two resumes; one to focus on their design background and one on their engineering background. Avoid creating a resume that includes wildly different titles (for example, Matthew the artist/designer/engineer/CEO). Case Study (Before and After): Scott Below are two versions of my friend Scott's resume. This case study was a difficult challenge because Scott had a wide variety of background experiences, many unrelated to the jobs he was applying for. The key to revising this resume was nailing a specific title "Developer Relations Coordinator" and whittling down the experiences to the relevant examples. Notice how the headline of each experience clearly identifies the project, role, and date. The Profile section was used similar to a cover letter in order to frame his experiences. A bold line down the center helps the resume stand out. This resume could be further improved by making the role descriptions more concise and perhaps squeezing education into the top right if more space is required. Generally I would advocate avoiding a list of skills but it served as a nice space-filler in this case. Case Study (Before and After): Melissa Below are two versions of my sister Melissa's resume. The focus of this case study became balancing an appealing visual design with concise text to describe her work experience. I made a particular effort to replace vague statements such as "Generated cash flow" with measured, numerical achievements such as "Increased purchase orders by 10%". Excessive detail was removed where possible and a firm title of "Junior Business Associate" was placed directly beneath her name. This title and an objective section, similar to a cover letter, provide a space for her to briefly contextualize her work experience with respect to whichever position she applies to. Deep Dive In this video, I provide feedback on the resume and portfolio of an aspiring Gameplay Engineer.
2 Comments
Using Google Sheets we can store and edit our data to make live changes to our games! This tutorial covers how to download CSV's from Google Sheets and then parse them for data!
Overview In this tutorial we will breakdown an approach to downloading data from Google Sheets in a CSV format. This will allow you to update your game by simply changing a few values online! This approach will make use of three classes...
TermData
CSVDownloader
Loader
Overview
We will be covering three methods of collecting user feedback including... - Opening the user's email client - Opening a link to a Google Form for the user to manually fill out - Automatically completing a Google Form using a UnityWebRequest This tutorial include snippets from the full FeedbackCollecter.cs found here. Setup I have created a simple Unity scene for testing which includes an input field, a button, and the script we will be writing. The script has the text of the input field and the button linked to it as Serialized Fields. There is also a serialized enum so that switch between methods.
Setup
I have created a simple Unity scene for testing which includes an input field, a button, and the script we will be writing. The script has the text of the input field and the button linked to it as Serialized Fields. There is also a serialized enum so that we can switch between methods.
For now, we don't need to worry about the last two lines, they will only be needed once we get to the Google Forms approach. the kReceiverEmailAddress should be initialized with the email address you would like the feedback emails to be sent to. This may be your email or your company's email. The following code will complete our setup including connecting several methods we will write to the submit button's onClicked event.
Opening the user's email client
For our first approach, we will use data entered into the text field to populate an email that will open on the native email app of their device. To do this, we construct a link using the information provided and we will make use of a OpenLink helper method. This method is required because we must escape space characters on iOS devices (they simply cannot open links that contain spaces, poor Apple). It would just so happen that google search results also reject spaces so I included that in the method in case you use it elsewhere in your code. (Preview of what it looks like on device: LINK).
Opening a Google Form
The email approach was great for empowering players but I have found it can sometimes be easier to sift through player data on a spreadsheet. Google Forms is an easy alternative. With the below method we can simply direct them to a form for them to fill out. This method will require that we create a Google Form on a Drive account. Then view the form and to find it's URL. That should look something like this: "https://docs.google.com/forms/d/e/1FAIpQLSchQzdbNs_wY_EWSpAtohQHRDQeliy0o6yLoRs7C5D17B-1qg/viewform" We will be using the "base URL" which is everything before the "viewform" in my case, my base URL would be: "https://docs.google.com/forms/d/e/1FAIpQLSchQzdbNs_wY_EWSpAtohQHRDQeliy0o6yLoRs7C5D17B-1qg/" Find your base URL and use it to for the kGFormBaseURL constant which we defined earlier.
Automatically completing a Google Form
The above code will successfully open a Google Form for the user to edit. But we can do better. Below is an approach that uses Unity's web request system to complete the Google Form all on its own. For this method to work we will need to find the kGFormEntryID we defined earlier. This ID corresponds to the question on the form, each question has a unique ID. To find the ID of your question, right click on the form, select "inspect page" then Ctrl+F your way to the text "entry." this text is a prefix of the ID we desire. See this .gif if you have any trouble finding it!
Once you find the entry ID, use it to properly intialize kGFormEntryID and then the below code will be good to go! Note that is makes use of a JSON serializer. This can be useful if you want to save data this is not a string. For example, you may desire to record a player's save data or settings. By converting this data into a JSON string, we can send it along to the form. However, we need to avoid using the utility when dataContainer is actually of type string because the serializer will otherwise convert the string to simply "{}". Not very helpful!
These are only a few homebrew approaches to collecting player data, trying different approaches is the best way to find the right fit for your needs. Please consider "liking" this post or commenting on which aspects were most helpful / confusing. Your readership is very much appreciated!
Update (June 3, 2021):
Hey it's me, from the FUTURE! I would no longer recommend these methods expect in one special case where you do not want to show the user that you're sending an email (secret email). If it's okay to show the user the email, and allow them to send it from their personal address, I would advise an alternative approach: https://pastebin.com/EKHsvWNQ (also uploaded below if this link dies).
Introduction / Motivation
Here are some reasons why you might consider sending emails from your game: - Setup two-factor authentication - Enable players to give you feedback or bug reports - Secretly record error messages, crash logs, or suspicious player activity For these purposes and more, we shall explore two methods of sending an email... Overview of "Method 1: Direct message" This method will require us to setup a Gmail account from which we can send an email using .Net libraries. This is the best, fastest, method for sending emails. However, this method will not work on games that are hosted online such as the WebGL target platform (for example a game hosted in-browser on itch.io). Overview of "Method 2: Server request" This method involves sending an email to a server script which can then forward our data to the destination address. This is a slower method and we face a greater risk of Gmail labeling our messages as spam. However, this method will work on all platforms. Setup I have created a simple Unity scene for testing which includes an input field, a button, and the script we will be writing. The script has the text of the input field and the button linked to it as Serialized Fields. There is also a checkbox we can toggle to switch between methods of delivery. Implementing "Method 1: Direct message" First we need to create a Gmail account. I highly recommend creating a new one explicitly for this purpose because we will need to include both the username and password of this account in the source code. A naughty hacker could, in theory, get access to the code so please be careful what you include there. With our Gmail setup, we can now start defining the code for our Emailer.cs file. Some code is preceeded by the comment "Method 2" to let you know it will not be needed for this first approach. Mind the import statements here which include the .Net libraries we will need to verify our email credentials. Of course, make sure you replace my email credentials with yours. By using the .Net support for emailing along with the Gmail we created, the above method SendAnEmail will reliably get our message where it needs to go! However, a limitation of this method is that it will not work on WebGL games. For these cases, we need to consider an alternative approach. Implementing "Method 2: Server request" Method 2 will allow us to send a WWW request to a server-hosted php script that can forward our data. While it is not as fast or reliable as Method 1, it does work on all platforms! The C# side of this approach is included in the code of Emailer.cs (above) and includes creating a WWWForm with the data we want to send, then forwarding it to our server. With that aspect completed, all that is left for us to do is create and host our server script! Let's setup the hosting first. I used the free hosting website https://www.000webhost.com.
Once you have a server host setup you can use the code of "Emailer.php" (below) to receive the form we sent from our C# code. This code ensures that it is receiving a form with the necessary data before sending an email. The headers include data which is meant to suppress Gmail's spam filters allowing your message to reach an inbox as desired (however in my test, it did get stuck in a spam folder at first).
These are only two of many approaches you may consider for sending emails in your games. Please consider "liking" this post or commenting on which aspects were most helpful / confusing. Your readership is very much appreciated! |