tag:blogger.com,1999:blog-87580338136063661692024-03-05T18:28:08.467-08:00Sophia vs The UniverseIf you wish to make a Raspberry Pi from scratch, you must first invent the universe.Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.comBlogger25125tag:blogger.com,1999:blog-8758033813606366169.post-87273633730652551482020-07-04T07:43:00.001-07:002020-07-04T07:44:15.929-07:00Tutorial: Making Slack Apps with Python<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "arial" , "helvetica" , sans-serif;">I wrote this tutorial during Unity Hackweek 2020. I helped lead a group that focused on learning rather than producing (but to also hopefully create some small tools to help out the Documentation team!), and I created this to help the team get started with Slack apps. A few people in the group spent the week learning Python, and while I was looking for resources to share, I noticed that a lot of the tutorials available really over complicated the process! Thank you so much to <a href="https://twitter.com/siobhanfgx">Siobhan</a> who edited this tutorial as she worked through it herself.</span></span></div>
<h2 style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-size: large;">This tutorial covers: </span></span></h2>
<ul>
<li><span style="font-family: "arial"; white-space: pre-wrap;">How to send a simple message to Slack</span></li>
<li><span style="font-family: "arial"; white-space: pre-wrap;">How to request API data from a service (such as Favro or Jira)</span></li>
<li><span style="font-family: "arial"; white-space: pre-wrap;">How to send that API data in a Slack message</span></li>
</ul>
<div style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "arial" , "helvetica" , sans-serif;">This tutorial assumes at least a beginner-level understanding of writing Python scripts and working in the command line. Some knowledge of manipulating JSON will also be helpful for the later parts of this tutorial.</span></span></div>
<h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Part 1: Send a simple message to Slack</span></h2>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "arial" , "helvetica" , sans-serif;">First, let’s learn how to send a simple message to Slack. To send messages and data to Slack, you need to use an HTTP POST request. An HTTP POST request is a method that asks a server to accept data. It carries this data in the body of the request message. </span></span></div>
<b style="font-weight: normal;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">To get set up, work through Slack's guide to </span><a href="https://api.slack.com/messaging/webhooks" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Sending messages using Incoming Webhooks</span></a><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> until you’ve completed step 4. You should now have a Slack App, and on the </span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Incoming Webhooks</span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> page of your slack app you should see something like this:</span></span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div align="left" dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none; table-layout: fixed; width: 576pt;"><colgroup><col></col></colgroup><tbody>
<tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div class="separator" style="clear: both; text-align: center;">
<img border="0" data-original-height="507" data-original-width="1258" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2lGarErva5h1v1SqLp-sYOp0NBw4XZP9txc21RhTQh9I4uqq_R2d5ko7MG-4D0p0140c3GuvZYL2VRPq7P3ZfEuK2FmwrCr4CMPTFZoHIDAjOrjdQox4QUGiLdWkypc6xaNeUJ_muhIi1/s640/Screenshot+2020-07-04+at+16.22.46.png" width="640" /></div>
</td></tr>
</tbody></table>
</div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Set up a webhook, and point it at a private test channel or your own slack user for now, while you test it.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">You can copy these curl commands into your command line/terminal to run them and perform the action they represent. You can also translate them to Python and use Python’s </span><a href="https://requests.readthedocs.io/en/master/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Requests library</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> to send POST requests. To use the Requests library, you need to install </span><a href="https://pip.pypa.io/en/stable/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">pip</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> (if it is not already installed), and then open your command line terminal and type </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">pip install requests</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This table demonstrates the curl command in the image above, and a Python translation. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div align="left" dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="115"></col><col width="509"></col></colgroup><tbody>
<tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">curl command</span></div>
</td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">curl =X POST -H 'Content-type: application/json' --data
'{"text:"Hello, World!"}'</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;"><br /></span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">YOUR_SLACK_WEBHOOK_URL_HERE</span></div>
</td></tr>
<tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">Python</span></div>
</td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">import requests</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;"> (put this line at the top of your python file)</span></div>
<div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">slack_response</span><span style="background-color: #eeeeee; color: #3e4349; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;"> </span><span style="background-color: #eeeeee; color: #582800; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">=</span><span style="background-color: #eeeeee; color: #3e4349; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;"> </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">requests</span><span style="background-color: #eeeeee; color: #582800; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">.</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">post('YOUR_SLACK_WEBHOOK_URL_HERE',
data='{"text":"Hello, World! I am posting from a Python
script. Magic!"}', headers={'Content-type':
'application/json'})</span></div>
</td></tr>
</tbody></table>
</div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In the translation, the curl command's </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">-H</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> parameter corresponds to </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">headers</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> in Python, and the </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">--data</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> parameter corresponds to </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">data</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Run your Python script in the command line terminal. If everything is configured correctly, the message "I am posting from a Python script. Magic!" should appear in the target Slack channel. You did it!</span></div>
<h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Part 2: Get API data from a service and send it to Slack</span></h2>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now that you know how to use Python to send a message to a Slack channel, let’s try to get some data from a service and send it in a Slack message. </span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="background-color: transparent; color: #434343; font-family: "arial"; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Part 2.1: Get API data from a service</span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">To request data from a service's API, you need to send an HTTP GET request. An HTTP GET request is a method that requests data from a specified resource (in this case, the service API). </span><br />
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span>
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">For this tutorial, I use the <a href="https://favro.com/developer/">Favro API</a> as an example.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">When you look at a service's API docs, you might see some examples in the form of CURL commands. CURL is a command line tool to transfer data to or from a server.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;"><span style="border: none; display: inline-block; height: 115px; overflow: hidden; width: 624px;"><img height="115" src="https://lh4.googleusercontent.com/ygPR2h4w6xJdJPp8Ut_67rXLb3yQ_yblAa5A7D3Spk7tW1r-YDmjkA4j2R6QNfRyEKLmMaD0drrijOTKRafmXyA0fYouL1tEAIBwvmaQovCbmuCANS8aTdTj8tf59iUR-_0iroXy" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">You can copy these curl commands into your command line/terminal to run them and perform the action they represent. You can also translate them to Python and use Python’s </span><a href="https://requests.readthedocs.io/en/master/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Requests library</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> to send GET requests. This is useful if you want to do this repeatedly, or if you want to use the information you get from the output into another command.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This table demonstrates the curl command in the image above, and a Python translation. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div align="left" dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="115"></col><col width="509"></col></colgroup><tbody>
<tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">curl command</span></div>
</td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="font-size: x-small;"><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">curl =X GET "</span><a href="https://favro.com/api/v1/users" style="text-decoration: none;"><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://favro.com/api/v1/users</span></a><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">"</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">-H "'organizationId': YOUR_ORG_ID"</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">-u "user@example.com":"password"</span></span></div>
</td></tr>
<tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">Python</span></div>
</td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="font-size: x-small;"><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">import requests</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> (put this line at the top of your python file)</span></span></div>
<div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="font-size: x-small;"><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">request</span><span style="background-color: #eeeeee; color: #3e4349; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: #eeeeee; color: #582800; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">=</span><span style="background-color: #eeeeee; color: #3e4349; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">requests</span><span style="background-color: #eeeeee; color: #582800; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">get</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">(</span><span style="background-color: #eeeeee; color: #4e9a06; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">'</span><a href="https://favro.com/api/v1/users" style="text-decoration: none;"><span style="background-color: #eeeeee; color: #1155cc; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://favro.com/api/v1/users</span></a><span style="background-color: #eeeeee; color: #4e9a06; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">'</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">,
</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">headers={'organizationId': 'YOUR_ORG_ID',</span><span style="background-color: #eeeeee; color: #3e4349; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">auth</span><span style="background-color: #eeeeee; color: #582800; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">=
</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">(</span><span style="background-color: #eeeeee; color: #4e9a06; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">'user@example.com'</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">,</span><span style="background-color: #eeeeee; color: #3e4349; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: #eeeeee; color: #4e9a06; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">'password'</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">))</span></span></div>
</td></tr>
</tbody></table>
</div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In the translation, the curl command's </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">-H</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> parameter corresponds to </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">headers</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> in Python, and the </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">-u</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> parameter corresponds to </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">auth</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">NOTE:</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Don't put your Slack or service password in this file! Most API services let you generate a secret API key that you can revoke at any time. Use the API key in place of a password here.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Once you have completed this translation, you can print the output to check the HTTP Status Code that it returns. To do this, insert the following underneath your </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">requests</span><span style="background-color: #eeeeee; color: #582800; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">get</span><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> code:</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">print(r)</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Run your file in the command line terminal. Usually, an HTTP Status Code of 200 means your code works as expected.</span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="background-color: transparent; color: #434343; font-family: "arial"; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Part 2.2: Send API data in a Slack message</span></h3>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It is common for an API to return data in <a href="https://www.json.org/json-en.html">JSON</a> format, but you can send any data back to Slack as long as you format it.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The </span><a href="https://app.slack.com/block-kit-builder" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Slack Bot Kit Builder</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> is a really convenient way to design how your message will look and then use the JSON it generates (on the right).</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I won’t go into to how to <a href="https://docs.python.org/3/library/json.html">parse JSON using Python</a> in this tutorial, but you can replace the “text” sections that you generated using the Block Kit Builder with the information you got from the API you're getting data from (in my case, Favro). Here’s an example:</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div align="left" dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none; table-layout: fixed; width: 576pt;"><colgroup><col></col><col></col></colgroup><tbody>
<tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">JSON as a multi-line Python string</span></div>
</td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-size: x-small;">data_to_send = '''{</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">"blocks": [</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">"type": "divider"</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">},</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">"type": "section",</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">"text": {</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">"type": "plain_text",</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">"text": "%s",</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">"emoji": true</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">},</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">"type": "divider"</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: x-small;"><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">]</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-size: x-small;">}''' % favro_card_name</span></span></div>
</td></tr>
<tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">Python</span></div>
</td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="font-size: x-small;"><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">slack_response</span><span style="background-color: #eeeeee; color: #3e4349; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: #eeeeee; color: #582800; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">=</span><span style="background-color: #eeeeee; color: #3e4349; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">requests</span><span style="background-color: #eeeeee; color: #582800; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">post('YOUR_SLACK_WEBHOOK_URL_HERE', data=</span><span style="background-color: #efefef; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">data_to_send</span><span style="background-color: #eeeeee; color: black; font-family: "courier new"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, headers={'Content-type': 'application/json'})</span></span></div>
</td></tr>
</tbody></table>
</div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Sending a response like the above will send a Slack message that looks something like this;</span></div>
<div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 10pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;"><span style="border: none; display: inline-block; height: 182px; overflow: hidden; width: 515px;"><img height="141" src="https://lh4.googleusercontent.com/_XR7WRaJ4nORmCo9g-8qdxe8KELmq_FAZXzwSGTdZpTfou1Kjdr33-aXy4y1HXx7PVef04y6g-gr4m8UMzekUmf91MZVLyQRNibDyjDfM_QtSzZsIHpzZl4mCD-bd5bTekEEFeRn" style="margin-left: 0px; margin-top: 0px;" width="400" /></span></span></div>
<div dir="ltr" style="line-height: 1.56; margin-bottom: 11pt; margin-top: 11pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="border: none; display: inline-block; height: 182px; overflow: hidden; width: 515px;"><span style="font-family: "arial" , "helvetica" , sans-serif;">And you're done! Hopefully now you have a better understanding of how to use Python to get data from one API and send it to Slack using Slack's API.</span></span></span></div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-15703276863458822782018-07-15T07:18:00.001-07:002018-07-15T07:41:36.493-07:00Making musical toys at Unity Hackweek<h3 style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #434343; font-size: 14pt; white-space: pre-wrap;"><span style="font-family: inherit;">Initial Idea & Inspiration</span></span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">At Unity Hackweek 2018, a group of us worked on a music maker, which was eventually named Super Sound Synthesizer 3000. The aim was to create a music sequencer that lives in the Unity Editor as an editor window.</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">The idea for this came from mentoring at Girl Game Maker Day. We had provided code and art for the girls to make their game, but music was an afterthought (as it too often is in game jam environments, unfortunately). Even asking the girls to download some free music from the internet was a challenge, as most free music sites require registering, and many of them were too young to have an email address of their own. We needed something simpler to create music without learning a new tool.</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">After this initial idea, a lot of the early inspiration came from <a href="https://fernandoramallo.itch.io/doodle-studio-95">Doodle Studio 95</a>. It’s fun, it’s playful, and it’s simple to create sprites and animations that can go directly into your Unity project. One of the main things we wanted to achieve with our music maker was that it should be easy for a beginner to create something, but someone more skilled can also create something great if they want to; Doodle Studio does this so well (as shown by the <a href="https://www.youtube.com/watch?v=Ax0CeKFTavI">trailer</a> for it!)</span></span></div>
<h3 style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="background-color: transparent; color: #434343; font-size: 14pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">The team</span></span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">I started rounding up the team a couple of months before Hackweek even started. First, I approached <a href="http://radianweb.co.uk/">Andy Selby</a>, since I knew he enjoys making digital music, and he had made music-related Unity projects in the past. He said “oh, yeah alright then”. One down.</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Next I asked <a href="https://twitter.com/siobhangx">Siobhan Gibson</a> and <a href="https://www.instagram.com/hopesbeforebros/">Hope Rudd</a>. I can't remember which order I asked them in, but they both said something along the lines of “oh, that sounds fun”. Ideal.</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Siobhan is really passionate about fun and simple game-making tools, so I hoped she’d be keen. Hope is new to programming and I knew this would be a great chance for them to deep dive into a project and work collaboratively with a team, so I’m glad they agreed! Hope is also in a band, so extra points for them.</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGEH-PHF0C10yOKPESW8fe_Vg8ISkEpMNoTlOQAhtuJ2OP1ZK_kvR5ETxu8fMxxrM8DLUq5DFaED1_sAEK4VIG458PaEHirUPYfF-cSyftwu3EKakKeYCL-F3o1J0jL5LPErVA095i6eGt/s1600/Unity+-+Gruppe-13.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1068" data-original-width="1600" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGEH-PHF0C10yOKPESW8fe_Vg8ISkEpMNoTlOQAhtuJ2OP1ZK_kvR5ETxu8fMxxrM8DLUq5DFaED1_sAEK4VIG458PaEHirUPYfF-cSyftwu3EKakKeYCL-F3o1J0jL5LPErVA095i6eGt/s400/Unity+-+Gruppe-13.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
</div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Other people joined our Slack channel to ask questions, but it ended up just being the 4 of us in the team. I didn’t realise until later on how beneficial this would be. We all knew each other’s strengths and weaknesses, so we knew how to work together (even though none of us had actually worked in a group together before). </span></span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="background-color: transparent; color: #434343; font-size: 14pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Further research</span></span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">On the first day of Hackweek, we planned to only research, experiment and prototype. This gave us a chance to get used to the atmosphere of the hacking hall, and all decide how the project should look and feel.</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Siobhan spent the day looking at other playful music tools (because us saying ‘Doodle Studio but music’ is not a sufficient design spec).</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: inherit;"><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">One of the stand-out tools that Siobhan found was </span><a href="https://musiclab.chromeexperiments.com/Song-Maker/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Song Maker</span></a><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. We all fell in love with it pretty much immediately.</span></span><br />
<span style="font-family: inherit;"><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><a href="https://play.google.com/store/apps/details?id=com.BurningPopcorn.TocAndRoll" style="font-size: medium; text-decoration-line: none; white-space: normal;"><span style="color: #1155cc; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">Toc and roll</span></a><span style="font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;"> is also great. We especially loved the way you could use your voice and a sample, and that is has effects pedals! Siobhan was able to quickly made a lovely song (that actually got stuck in my head) and had a fun time showing us how to use it, which the the exact sort of thing we wanted from our music maker.</span></span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><span style="font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;"><br /></span></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Siobhan used these tools as inspiration and created a mock-up in excel for how ours could look.</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><img height="339" src="https://lh3.googleusercontent.com/bsxcaRAlfAxLRK-2RWc2-M-sEcMLnzNopGE3cBTtkfsgsJUQAAMoQZ6VSYbikwaVsyFloleXeY3-YPO945GAtDuAkWK6ul40TKBYrzzuEnqW9K7FQTcjjSMn4g-jg7fFNvYOJznn" style="border: none; transform: rotate(0rad);" width="640" /></span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Andy has been making digital music for years, so he was able to provide great insights from the more professional angle, too. On the more professional side, we looked at tools like FLStudio and Reaper.</span></span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="background-color: transparent; color: #434343; font-size: 14pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Microphone Recorder</span></span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">As a sort of coding warm-up, Hope and I pair-programmed a very mini prototype of one of the desired features. We created an editor window where you enter how long you’d like to record for in seconds, then press record to start a microphone recording. This recording is saved as a .wav file inside the Unity project. We did this so we could get an idea how the workflow could work, and how wav files are created and saved. It also gave Hope a chance to make Editor Windows, and learn about the process that goes into creating tools. (Side note: Hope is a total joy to work with. They made notes about everything we went over, and asked good questions as we went. Not only did they learn a lot (hopefully!) but it made me slow down what I was doing and think about it.)</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjy7Xz5fXfu19-1R8BxVvUmWdzIoTAAjHofCnaIYGpKHLXeELfgENN_GsHfMW9AbdhdY5YY8zdNcJF2fWhjylvDWH5_f1COam4uLNJgUso_xMuhkYSppptHsEKFm8h9yoi0gPvs9hEyOSy/s1600/Screen+Shot+2018-07-15+at+15.27.19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="470" data-original-width="728" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjy7Xz5fXfu19-1R8BxVvUmWdzIoTAAjHofCnaIYGpKHLXeELfgENN_GsHfMW9AbdhdY5YY8zdNcJF2fWhjylvDWH5_f1COam4uLNJgUso_xMuhkYSppptHsEKFm8h9yoi0gPvs9hEyOSy/s320/Screen+Shot+2018-07-15+at+15.27.19.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
</div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: inherit;"><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We used </span><a href="https://gist.github.com/darktable/2317063" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">this code</span></a><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> to save the AudioClip as a .wav file, and we had a lot from the </span><a href="https://docs.unity3d.com/ScriptReference/Microphone.Start.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Unity Manual</span></a><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> to learn about how Microphones work with Unity.</span></span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="background-color: transparent; color: #434343; font-size: 14pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">UI elements</span></span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: inherit;"><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Super Sound Synthesizer 3000 was made using Unity’s </span><a href="https://docs.unity3d.com/Manual/UIElements.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">UI Elements</span></a><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> feature. We chose this instead of the existing Editor GUI so that we’d have more flexibility and a chance to play with a new area of Unity. UI Elements is much closer to web development than EditorGUI. This intimidated me, but Andy was great at learning the information and explaining it back to me. We had to do some odd tricks to make things work (for example, we had to manually flip through frames of a sprite animation because there is no support for gifs out of the box).</span></span><br />
<span style="font-family: inherit;"><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: inherit;"><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Buttons using GUILayout are simple to implements, as shown here: </span><a href="https://docs.unity3d.com/ScriptReference/GUILayout.Button.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">GUILayout.Button</span></a><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. A button in UI Elements requires a few more lines of code, as shown in their example project: </span><a href="https://github.com/Unity-Technologies/UIElementsExamples/blob/master/Assets/Editor/E05_Controls.cs" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">UIElementsExamples</span></a><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="background-color: transparent; color: #434343; font-size: 14pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Wav saving fail</span></span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">The biggest hurdle was trying to get the audio created with our synthesizer to save as a .wav file. I investigated a few different methods:</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li>Joining audioclips</li>
<ul>
<li>This gets confusing when more than one clip plays at a time</li>
</ul>
<li>An asset package: <a href="https://assetstore.unity.com/packages/tools/audio/audio-clip-combiner-82145" style="font-family: inherit; font-size: 11pt; text-decoration-line: none; white-space: pre;"><span style="color: #1155cc; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">Audio Clip Combiner</span></a></li>
<li>Recording from “in-game” audio</li>
<ul>
<li>We couldn’t figure out how to access it without using something like Soundflower</li>
</ul>
</ul>
<div>
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">We ended up using a hacky version of the microphone recorder that Hope and I had worked on earlier in the week. It waits until the audio loop is back at the beginning, and it records for the length of time of one loop. It was terrible and included all the background noise from the room, but creating our own way to record in-editor audio somehow could have been another Hackweek project! Definitely not something to do on a Thursday evening.</span></span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="background-color: transparent; color: #434343; font-size: 14pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Last few hours</span></span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">Earlier in the week, I needed a sound to test the synthesizer. Luckily, I could just easily record a small clip using the Microphone Recorder window. Naturally, I meowed. I did not think about how this would be played whenever someone opened the window. It sort of became a meme within the team. We HAD to include this in the final product, so in the last few hours, Siobhan created a cat icon, and I added The Cat Button to our window.</span></span><br />
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">We also wanted to add tempo buttons, as we pretty much already had the code to do it. To make it beginner-friendly, we opted for a tortoise, a heartbeat, and a hare to illustrate slow, medium, fast. It worked really well and looked cute!</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: inherit;"><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="color: #434343; font-family: inherit;"><span style="font-size: 18.6667px; white-space: pre-wrap;">The Final Product</span></span></h3>
<div>
<span style="font-size: 14.6667px; white-space: pre-wrap;"><span style="font-family: inherit;"><a href="https://drive.google.com/open?id=1tzAtEvJdvj-COiyo3XlEUIr1xsdWy11A">Watch the video here</a></span></span><br />
<span style="font-size: 14.6667px; white-space: pre-wrap;"><br /></span></div>
<div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;">
<span style="color: #434343; font-family: inherit;"><span style="font-size: 18.6667px; white-space: pre-wrap;">The Future</span></span></h3>
</div>
<div>
<span style="font-size: 14.6667px; white-space: pre-wrap;"><span style="font-family: inherit;">We all had loads of fun working on this, and we'd like to keep it up! One of the things Hope started working on in the week was a way to add effects to the audio (like Reverb, for example) but we didn't have time to get this added. Hopefully, we can make some cool guitar-pedal-esque UI and get this hooked up :)</span></span><br />
<span style="font-size: 14.6667px; white-space: pre-wrap;"><span style="font-family: inherit;">
As UI Elements will eventually be usable for in-game UI, we'd like to make a small in-browser demo for this toy, too.</span></span><br />
<span style="font-size: 14.6667px; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNz-kWuxBcYYHJs29nFmxzsgUOfx3eDqPGbFiGi-2CJ8D3mdt1ACpuxS7flpyKIBDrm2hV-ybhETFT0rHOufZ7TDFII7ub-b19DVcptkuTV-YgV9QiJpIHmkFPfGbWYmZ6rFBp8G96QaHq/s1600/Screen+Shot+2018-07-15+at+15.31.43.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNz-kWuxBcYYHJs29nFmxzsgUOfx3eDqPGbFiGi-2CJ8D3mdt1ACpuxS7flpyKIBDrm2hV-ybhETFT0rHOufZ7TDFII7ub-b19DVcptkuTV-YgV9QiJpIHmkFPfGbWYmZ6rFBp8G96QaHq/s400/Screen+Shot+2018-07-15+at+15.31.43.png" width="400" /></a></div>
<span style="font-size: 14.6667px; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-35878864340932552742018-03-07T09:47:00.001-08:002018-03-07T09:58:49.687-08:00Using Linq to count how many times an object occurs in a list<div class="tr_bq">
<br /></div>
You have a list full of objects. Some of the objects are duplicates, and you want know know how many of each distinct item you have in the list.<br />
<br />
I searched around for some answers, and I did find some <a href="https://stackoverflow.com/questions/2010556/get-a-list-of-distinct-items-and-their-count">StackOverflow</a> answers that almost got me to the result, but it wasn’t quite right.<br />
<br />
In my example, the list I want to sort is a list of custom type Run ie List<Run>(). In my code, Run is a struct that looks like:<br />
<br />
<blockquote class="tr_bq">
public struct Run<br />
{<br />
public string RunID;<br />
public string Config;<br />
}</blockquote>
<br />
The StackOverflow responses were mostly long and hard-to-read Linq statements. I like Linq a lot, but it’s not always easy on the eyes, especially once you start adding extensions.<br />
<br />
Instead, I came up with the following:<br />
<br />
<blockquote class="tr_bq">
void ProcessList (List<Run> runConfigs)<br />
{<br />
var grouping = runConfigs.GroupBy(o => o.Config);<br />
foreach (var configGroup in grouping)<br />
{<br />
string configName = configGroup.Key.ToString(); <br />
string count = configGroup.Count<Run>().ToString();<br />
}<br />
}</blockquote>
<br />
Doing the above code allows me to use configName and count however I please (which in my case was outputting them to a csv).<br />
<br />
Here’s the same example but for a List<string>():<br />
<br />
<blockquote>
var grouping = listOfStrings.GroupBy(x => x);<br />
foreach (var stringGroup in grouping)<br />
{<br />
string name = stringGroup.Key.ToString();<br />
string count = stringGroup.Count().ToString();<br />
}</blockquote>
<br />
<div>
If you step through this code with the debugger, it will show that 'name' is one of the distinct values in the list, and 'count' is how many times that object appears in the list. These values can now be used however you like.</div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-88217894282745774572018-03-01T08:42:00.000-08:002018-03-01T10:06:05.046-08:00What is dynamic batching, and why is it off by default?While reading <a href="http://catlikecoding.com/unity/tutorials/constructing-a-fractal/" style="text-decoration: none;">this tutorial</a>, I came to a section where it said something like “as you can see, dynamic batching has stopped working”. I did not see that. In the image in the tutorial “Saved by batching” on the stats panel had dropped to 0, but my stats panel still showed a number in the 1000s.<br />
<br />
When I checked the player settings, I noticed dynamic batching was turned off. After a bit of investigation, I learned that dynamic batching is now off by default for 3d projects as of Unity 2018.1; but why is this useful?<br />
<br />
A mesh is the part of a 3D object that describes its shape. When certain criteria are met, Unity is able to combine meshes from different GameObjects into one big mesh before they are drawn. This is called dynamic batching. The "dynamic" part means it happens while the game is running.<br />
<br />
Sometimes (but not always!), it takes less time to draw one big mesh than it would to draw lots of smaller meshes. Dynamic batching occurs on the CPU, and drawing meshes occurs on the GPU. You can think of dynamic batching as spending CPU time to save GPU time. This means that it becomes more likely that the game becomes CPU-bound (meaning that the frame rate is lower than you want because the CPU is taking the most time), but you should ideally want as much as possible to happen on the GPU; that’s what it’s there for.<br />
<br />
If your game is already CPU-bound, then dynamic batching will not help. But if your game is GPU-bound (meaning that the frame rate is lower than you want because the GPU is taking the most time), then it may help.<br />
<br />
(FYI: The GPU equivalent of dynamic batching is GPU instancing.)<br />
<br />
For these reasons, dynamic batching is desirable for old mobile devices that don’t have a GPU (or have a bad GPU), but it is not efficient for games intended for more modern devices.<br />
<br />
Here is a helpful article that goes into a bit more detail: <a href="https://support.unity3d.com/hc/en-us/articles/207061413-Why-are-my-batches-draw-calls-so-high-What-does-that-mean-" style="text-decoration: none;">Why Are My Batches (Draw Calls) So High? </a><br />
Also: <a href="https://docs.unity3d.com/Manual/DrawCallBatching.html">https://docs.unity3d.com/Manual/DrawCallBatching.html</a>Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-2553160582810000312018-02-23T06:25:00.000-08:002018-02-23T06:25:37.916-08:00Accessing Shader Graph properties via codeYou can create and name properties in shader graph using the Blackboard<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0X1ybEYwo2rQVNCUhtk8BOazojUjCSh6_o2DPEZcF3qgEXRUaOO5WeOaIAwL38ebvCvKqV50_iEJBQJ_XZ5oRGAw2UjvsJWI46yFKx1CzpFQRiSw8sGgOPDI4fql9axYzSWtycvWDhP3X/s1600/Screen+Shot+2018-02-23+at+14.08.20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="310" data-original-width="332" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0X1ybEYwo2rQVNCUhtk8BOazojUjCSh6_o2DPEZcF3qgEXRUaOO5WeOaIAwL38ebvCvKqV50_iEJBQJ_XZ5oRGAw2UjvsJWI46yFKx1CzpFQRiSw8sGgOPDI4fql9axYzSWtycvWDhP3X/s320/Screen+Shot+2018-02-23+at+14.08.20.png" width="320" /></a></div>
<br />
These names really just serve as labels, so if you want to access these properties via code (to use <a href="https://docs.unity3d.com/ScriptReference/Material.SetColor.html">material.SetColor</a>, for example) then you need to peek at the shader code.<br />
<br />
Right-click the master node and select 'Copy shader'<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjeDC5tJ-SkgWULs_tpdEReSesZb7SfbvCB6JMMdjhgF2fXOfOG5rGgJ6mtdnizbYUgqAh58ZeCurXYCwaYIwPT6mOoznzJrWlM5P-xLzg0rLxwVefLPmHyRcr2bdW2pXoYMlDgXgq89Sa/s1600/Screen+Shot+2018-02-23+at+14.14.06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="228" data-original-width="460" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjeDC5tJ-SkgWULs_tpdEReSesZb7SfbvCB6JMMdjhgF2fXOfOG5rGgJ6mtdnizbYUgqAh58ZeCurXYCwaYIwPT6mOoznzJrWlM5P-xLzg0rLxwVefLPmHyRcr2bdW2pXoYMlDgXgq89Sa/s320/Screen+Shot+2018-02-23+at+14.14.06.png" width="320" /></a></div>
<br />
Paste that into text editor of choice and look at the Properties code block at the top<span style="text-align: center;"> </span><br />
<span style="text-align: center;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmQcvbmldShvM48IOcMZsIxl5HjHioX8BBE_MoIL72g5jXH23mEnEPUhUpM6j0GYZutJb-6mRfRr9bAlRF_xzcbUFZdj5OjmHiNJsXyqzLCyIeikNY96vYRcbbhXfOSy5huiV7cD6zW7Ch/s1600/Screen+Shot+2018-02-23+at+14.18.57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="190" data-original-width="854" height="71" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmQcvbmldShvM48IOcMZsIxl5HjHioX8BBE_MoIL72g5jXH23mEnEPUhUpM6j0GYZutJb-6mRfRr9bAlRF_xzcbUFZdj5OjmHiNJsXyqzLCyIeikNY96vYRcbbhXfOSy5huiV7cD6zW7Ch/s320/Screen+Shot+2018-02-23+at+14.18.57.png" width="320" /></a></div>
<br />
My property was named _ColorTest and the <i>actual</i> name of it is Color_A2.. etc<br />
<br />
Now I can do<br />
<blockquote class="tr_bq">
<div style="background-color: #322931; color: #b9b5b8; font-family: Menlo, Monaco, "Courier New", monospace; font-size: 12px; line-height: 18px; white-space: pre;">
<span style="color: #dd464c;">material</span>.<span style="color: #1290bf;">SetColor</span>("<span style="color: #8fc13e;">Color_A208B217</span>", <span style="color: #dd464c;">Color</span>.<span style="color: #dd464c;">magenta</span>);</div>
</blockquote>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx1FuMtibFep1lQlw137t866xjLFulVlbWwYtjWZSD0XwHTBcFwJVgm8-Tv4bnuvCPg9cssSpz-f714twaswqLlceKEY5s6oPi4eL-O2hSR4QhW4yn_LZYGzLEqspvwTceC7l08ygeoaeF/s1600/fractalsmall.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="268" data-original-width="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx1FuMtibFep1lQlw137t866xjLFulVlbWwYtjWZSD0XwHTBcFwJVgm8-Tv4bnuvCPg9cssSpz-f714twaswqLlceKEY5s6oPi4eL-O2hSR4QhW4yn_LZYGzLEqspvwTceC7l08ygeoaeF/s1600/fractalsmall.gif" /></a> </div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-48887273887512889292018-02-15T05:50:00.003-08:002018-02-15T05:50:48.893-08:00CoroutinesI'm working through a tutorial on catlikecoding.com and wanted to take a moment to make some notes about coroutines.<br />
<br />
I have used coroutines in almost every game I've made, but not stopped to think about how they really work.<br />
<br />
<br />
Source for the below text: <a href="http://catlikecoding.com/unity/tutorials/constructing-a-fractal/">http://catlikecoding.com/unity/tutorials/constructing-a-fractal/</a><br />
<br />
<b><span style="color: blue;">My own notes and additions are in bold/blue</span></b><br />
<br />
<h4>
What does yield do?</h4>
<div>
<div>
The yield statement is used by iterators to make life easy for them <b><span style="color: blue;">(this part could potentially be explained better. Iteration is the act of repeating a process. Usually, when people talk about working iteratively, they are talking about working, making a small change or fix, then continuing to work and repeating that process, as opposed to doing it all in one go and fixing everything at the end. In this case, I think the sentence is talking about iterative functions and loops.)</span></b>.</div>
<div>
<br /></div>
<div>
To make enumeration possible, you'd need to keep track of your progress. This involves some boilerplate code <span style="color: blue;"><b>(boilerplate code refers to code that has to be included in lots of different sections without being changed eg declarations or the basic empty template in HTML)</b></span> that is essentially always the same. What you'd really want is to just write something like return firstItem; return secondItem; until you are done. The yield statement allows you to do exactly that.</div>
<div>
<br /></div>
<div>
So whenever you're using yield, an enumerator object is created behind the scenes to take care of the tedious bits.</div>
</div>
<div>
<br /></div>
<div>
<b><span style="color: blue;">Alternate definition: 'The yield statement is a special kind of return, that ensures that the function will continue from the line after the yield statement next time it is called.'</span></b></div>
<div>
<b><span style="color: blue;"><br /></span></b></div>
<h4>
How do coroutines work?</h4>
<div>
<div>
When you're creating a coroutine in Unity, what you're really doing is creating an iterator. When you pass it to the StartCoroutine method, it will get stored and gets asked for its next item every frame, until it is finished.</div>
<div>
<br /></div>
<div>
The yield statements produce <span style="color: blue;"><b>(return)</b></span> the items <span style="color: blue;"><b>(actions?)</b></span>. The statements in between – the stuff that you want to happen – are side-effects of the iterator doing its job.</div>
<div>
<br /></div>
<div>
You can yield special things like WaitForSeconds to have more control over when your own code continues, but the overall approach is simply that of an iterator.</div>
</div>
<div>
<br /></div>
<div>
<span style="color: blue;"><b>Alternate definition: 'A coroutine is like a function that has the ability to pause execution and return control to Unity but then to continue where it left off on the following frame.' (<a href="https://docs.unity3d.com/Manual/Coroutines.html">source</a>)</b></span></div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-91330790017684581972018-02-15T05:29:00.001-08:002018-02-15T05:29:13.863-08:00Post frequency increasingIf you notice that I'm posting more regular blogs, it's because I want to also use this blog as a sort of personal notebook where I store things that I find useful, but other people might also like (inspired my friend <a href="https://cmwdexint.com/">Ming Wai's blog</a>)<br />
<br />
I will still post bigger blogs every now and then, but I also want to write about smaller things to remind myself about them or understand them better.Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-6829652427899265292018-02-03T10:50:00.000-08:002018-02-03T10:50:20.406-08:00Shaders aren't as scary as I thought: My first shader with Unity Shader Graph<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: xx-small;">Disclaimer: I have worked at Unity since September 2016, but this is not a marketing blog or anything like that. This is my personal blog with my genuine experiences and reactions. Also, my boyfriend works on the Shader Graph team, but he wasn’t actually even in the country when I was making these.</span></span></div>
<b id="docs-internal-guid-d6b76e72-5cc9-8496-1253-0be5b6ac9163" style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<div style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
</div>
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><b><span style="font-family: Arial, Helvetica, sans-serif;">***THIS IS NOT A TUTORIAL***</span></b></span><br />
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><b><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b></span>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">If you’ve ever played any of my <a href="https://sophiaaar.itch.io/">games</a>, you will know that I am definitely not an artist. Art is fun and I appreciate it, but I’m not good at it.</span></span></div>
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">For those new here; hello, I’m Sophia. I’ve been working as a programmer for a few years (in various roles/companies). I studied Physics at university, and I’m pretty good at maths, so I have been asked to help when my friends have had issues writing their shaders before. Small stuff like figuring out relationships between variables etc.</span></span></div>
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">While I’ve always wanted to make shaders, I never really knew where to start. It felt very counterintuitive to write code relating to visuals but with no visual feedback.</span></span></div>
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">During <a href="https://blogs.unity3d.com/2017/10/31/a-look-inside-scenario-testing-for-unity-2017-2/">Scenario Test Week</a> at work, my team has been working on a golf game. I was working on pickups/modifiers, and I wanted some cool effects to happen when certain modifiers turn on. My initial thought was ‘I need fire’. Since 2018.1 is the release that includes <a href="https://forum.unity.com/threads/feedback-wanted-shader-graph.511960/">Shader Graph</a>, it felt like the time had come for me to finally make my first shader.</span></span></div>
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">I was going in pretty much completely blind. I just started adding nodes.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><img height="558" src="https://lh6.googleusercontent.com/x1N6XTbFDV7MV7cn1cYIn_8xyzul7BIpnTFiYbp2eLANQRhu5yvDwc8Vx6LXQaQ9ec1AsObkeihpyNtZlt7OsCAQgMvEQNkpqXo05cAQtxiKFFG7NSB9RgCVAEDePTP9eATZZgxw" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="553" /></span></span></div>
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">I’m not sure why I thought the Hue node would be relevant at all, but it turned out pretty fun. It's not included in the gif, but the Time node is definitely involved here.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><img height="528" src="https://lh4.googleusercontent.com/Nmjhw8qBerVrPTW15SzJmYFs6LWrdME44L53fToFsrxFniic8l80pcchzfxFPpCpx5XeAkHwEDUDSjw3t_UbVkLdSC1ACgk7BWpaHgPguPx0OTfEu-xbOiMtJowyip6AtO4Ts4Gq" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="620" /></span></span></div>
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">I came back to this “Disco Fire” later. I didn’t want to get distracted before I even started.</span></span></div>
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Time and noise were definitely relevant, but I just didn’t really know how. Most of these connections are definitely irrelevant, but</span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> I wanted to show what I </span><span style="background-color: transparent; color: black; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">actually</span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> made.</span></span></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><b style="font-weight: normal;"><br /></b></span>
<span style="font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;">So this sort of </span><span style="font-family: Arial, Helvetica, sans-serif; font-style: italic; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;">resembles</span><span style="font-family: Arial, Helvetica, sans-serif; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;"> fire, but it’s definitely not great. </span></span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><img height="481" src="https://lh6.googleusercontent.com/MKmoB7VbpoxrzLML26s2bDFKjsFP8_T8igv_wU5EI5Y6jog3YQdH40jhkEWNRpN535MyCRFoeL-jMH0lloIzplxzlFMKcDszHDzMoyAIavd3iqeunpcBUOI0DheUESJobhONmoDp" style="border: none; transform: rotate(0rad);" width="624" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">At this point, I went back to the Disco Fire, because it was way more fun. </span><span style="white-space: pre-wrap;">This ended up being used on the golf ball when the speed boost is applied, so I was pretty happy with that one and moved on.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><img height="393" src="https://lh6.googleusercontent.com/BnyHFFk052z56nmvHn0nIYQpQBxBvd_5I2cuSYEkoeKFH9PCgghM5za_JDbt3uGIy5eEWbzVMYXQoxfLMyt7NnImtORUZ3atBgrOFh1pqejd4yoWBV8wl6Y6ELm-DRKUNaRr2l-1" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">I don’t know why I didn’t include all the nodes for this one :( sorry. It's meant to be lava-ish.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><img height="324" src="https://lh4.googleusercontent.com/wtNnkG3jSQ48NrD1uWUwwSwuLgzOBaiGn9Twn7-WaWQZq67VSmQvPkjNAOnTp0JFgBpzLogbQyDQc0R8W6zmZ-sHqks_fh_nxVxd2G0ybb_EDtdqqhq_42PFvTtsqi0NY8eKjNfg" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="340" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space: pre-wrap;">I guess with this one I was going for like a… moss… thing? Idk. shaders, man. The checkerboard node was because I wanted to input more than one </span>colour<span style="white-space: pre-wrap;">, and the Voronoi noise was because I wanted it to be sort of blobby (like lava).</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><img height="324" src="https://lh4.googleusercontent.com/e7c60p1GPhqcjJPWj36P0rzmgJKDfCMVYsNZLPhRTtNKuHrP_6LQ-FCil5tJNyZrYw_UB-gdhLa0NkOn9u-e4o4SLkUdH0W1fsAbq4CvPVS0JSZjQKJwpbVnOMRBaLbMVKs9IJC2" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space: pre-wrap;">This one is definitely my </span>favourite<span style="white-space: pre-wrap;">, and I actually started to kind of understand what I was doing. As you can see, </span>there are<span style="white-space: pre-wrap;"> a lot fewer pointless noodles, and the final look is a lot closer to the lava effect I was trying to achieve. I ended up using this one for the slow ball pickup because it made me think of stone.</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><img height="513" src="https://lh6.googleusercontent.com/YobKgc_BnTKV5cRa4ekZmlXmQqxceJikQFurLtb7rTEO-3L466Anp6zHnOg0jdMKzZPK-spswngSueJT7RO_MKuThwFDfcQ7Y5XVE5Ff39X6ILACsPY6a4SluNsAnpopTb36IU2Z" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<span style="white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">Here’s each of them before I added shadows. I was backporting these shaders to a Unity project that wasn’t using the Lightweight Render Pipeline, so I had to make a few changes to the shader file (I don’t want to go into this in this non-tutorial, but happy to make a separate post showing what I did, if anyone wants.)</span></span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><img height="409" src="https://lh6.googleusercontent.com/SbKc1YnvlhPaZ8hBIc5U9DhNHzoiRnJigM8QEa88s8JUSNyKP_fz5nx5Qzc57DR-ADsX35vIDwQjeFc3uvYBcSNXgKH6lylq1p59IFIK9wtg_OXFK2Za2lLRRukljxawt6_UMQ3k" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<span style="font-family: Arial, Helvetica, sans-serif;">Aaaand here's my lil test scene showing the fast ball in action (with shadows!)</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><img height="348" src="https://lh6.googleusercontent.com/0gMsF5MQrcNX_UUVyQvE13mpMWPCU4ezSmDXrkFsld8ajjJbRcGTKEFY-xBd1dsSFP-vgQYySpXsDxVbbe8Jydiq68ZUwerul-5BQpYA7CI6W9mZxq-GggwPcxpbqVO2Us81cdqS" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">So that was my experience with using Shader Graph to make my first ever shader! Hopefully this will encourage more people to try using it because it's really not as scary as it looks.</span></span></div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-19406925618726964232017-09-17T07:07:00.000-07:002017-09-17T12:02:49.818-07:00I made a Unity editor window because of a weird dream I had<blockquote class="twitter-tweet" data-lang="en">
<div dir="ltr" lang="en">
I had a dream about making unity editor windows. In the dream, I added a button "click to mango". It made so much sense in dreamland 🤔</div>
— Sophia Clarke (@sophiaaar) <a href="https://twitter.com/sophiaaar/status/909353572969717760">September 17, 2017</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script> Yep, that's right. I've been thinking about custom Unity editor windows so much that I had a dream about them.<br />
<br />
I originally wanted to make editor windows to create some in-editor tools, and automate certain processes. I had been experimenting and playing, but I hadn't really made anything functional. Then I had the dream.<br />
<br />
Making an editor window itself is pretty simple. I was able to follow the <a href="https://docs.unity3d.com/Manual/editor-EditorWindows.html">Unity docs</a> to make one when I first started learning. If you follow that documentation, you will be able to create an editor window. It won't do much yet, though.<br />
<br />
Unity editor window scripts derive from UnityEditor.EditorWindow as opposed to UnityEngine.MonoBehaviour, and I needed to figure out how to get clicks and events from the custom window to affect game objects and other UnityEngine objects. After a lot of searching, I found a tutorial on <a href="http://blog.theknightsofunity.com/custom-unity-editor-window/">The Knights Of Unity</a>, and I was able to use the examples they provided to help me.<br />
<br />
Since I already knew how to create editor windows, I had gotten as far as:<br />
<br />
<script src="https://gist.github.com/sophiaaar/51b806925f1fa0dbdb2213c82073ede8.js"></script> <span style="font-size: xx-small;">Apologies for the weird Gist formatting.</span><br />
<br />
This gave me an editor window with a toggle (defaulted to false/unchecked), but it didn't actually do anything.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW_exDdVRA10_hyphenhyphen5DeLcQQr5uzhdv4S8naGQEOh-EvZa6OgPZpXpsclu78zQaEgOol5NWz7gPrgptNC8KSzu6EVDr19K4L5eo_-zdQknBFxg6lauiC5sp75OlYdSQ2DWtjmNl7DtiqCXDJ/s1600/mangotoggle.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="350" data-original-width="632" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW_exDdVRA10_hyphenhyphen5DeLcQQr5uzhdv4S8naGQEOh-EvZa6OgPZpXpsclu78zQaEgOol5NWz7gPrgptNC8KSzu6EVDr19K4L5eo_-zdQknBFxg6lauiC5sp75OlYdSQ2DWtjmNl7DtiqCXDJ/s400/mangotoggle.gif" width="400" /></a></div>
<br />
<br />
Obviously, I needed a way to find a way to make this toggle's event actually trigger an action in the scene. For this, I needed to make use of <a href="https://docs.unity3d.com/ScriptReference/EditorPrefs.html">EditorPrefs</a>. Making use of what I had learnt from The Knights Of Unity's blog, I created the following script:<br />
<br />
<script src="https://gist.github.com/sophiaaar/3273e8021526603c9aa848417122cd07.js"></script>
<br />
The script has a public bool (with some editor-only properties), as well as a public reference to a GameObject which gets turned on and off in Update(). This is great, but it means I need to change the window script from<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 12px; white-space: pre;">mangoEnabled = EditorGUILayout.Toggle(</span><span class="pl-s" style="box-sizing: border-box; font-size: 12px; white-space: pre;"><span class="pl-pds" style="box-sizing: border-box;">"</span>Mango Toggle<span class="pl-pds" style="box-sizing: border-box;">"</span><span style="font-size: 12px; white-space: pre;">, mangoEnabled);</span></span></span><br />
<span style="font-family: , "consolas" , "liberation mono" , "menlo" , "courier" , monospace; font-size: 12px; white-space: pre;"><br /></span> to<br />
<span style="font-family: "times" , "times new roman" , serif;"><br /></span> <span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 12px; white-space: pre;">ClickToMango.mangoEnabled = EditorGUILayout.Toggle(</span><span class="pl-s" style="box-sizing: border-box; font-size: 12px; white-space: pre;"><span class="pl-pds" style="box-sizing: border-box;">"</span>Mango Toggle<span class="pl-pds" style="box-sizing: border-box;">"</span><span style="font-size: 12px; white-space: pre;">, </span><span style="font-size: 12px; white-space: pre;">ClickToMango.</span><span style="font-size: 12px; white-space: pre;">mangoEnabled);</span></span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span class="pl-s" style="box-sizing: border-box; font-size: 12px; white-space: pre;"><span style="font-size: 12px; white-space: pre;"><br /></span></span></span> which references the bool in the ClickToMango class/script.<br />
<br />
My Click To Mango dream became a reality.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="white-space: pre;"><span style="font-family: "times" , "times new roman" , serif;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUww2pRnLKQeqfbNIFGkjr-X1db9NuZZY9XFiQGkZh8al9I9EkzV9WkonRtb54qY5ATA_mx4d6ztpDbWVeNBx3tYx7uBl0M8VdHmajUzJ9GMo5BKCMD-0ocPa1pGWPTBFwSXK3k9AWTxSh/s1600/clicktomango.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="396" data-original-width="642" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUww2pRnLKQeqfbNIFGkjr-X1db9NuZZY9XFiQGkZh8al9I9EkzV9WkonRtb54qY5ATA_mx4d6ztpDbWVeNBx3tYx7uBl0M8VdHmajUzJ9GMo5BKCMD-0ocPa1pGWPTBFwSXK3k9AWTxSh/s400/clicktomango.gif" width="400" /></a></span></span></div>
<span style="white-space: pre;"><span style="font-family: "times" , "times new roman" , serif;"> </span></span><br />
<div class="separator" style="clear: both; text-align: left;">
<span style="white-space: pre;"><span style="font-family: "times" , "times new roman" , serif;">Could I have done this just using a regular script in the inspector? Yes, probably. Did I learn more about how custom editor windows by doing this? Yes, definitely.</span></span></div>
<br />
You can look at this on <a href="https://github.com/sophiaaar/Click-To-Mango">GitHub</a> if you want.<br />
<br />
<span style="font-family: "times" , "times new roman" , serif; font-size: xx-small;">PS I got this mango from the <a href="https://assetstore.unity.com/packages/3d/props/food/low-poly-cartoon-fruits-pack-94780">Unity Asset Store</a> <3</span><br />
<br />Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-75682325249547809662017-05-23T06:08:00.001-07:002017-05-23T11:19:00.335-07:00How I taught myself to code<span style="font-size: xx-small;">Disclaimer: I started working for Unity in September 2016. When I reccomend Unity resources, it's because I genuinely use/love them, not because I work for them.</span><br />
<br />
I get asked this a lot; "How did you teach yourself to code?" (or at least, variations of the question). There are a lot of guides out there, and everybody is different, but I'm going to talk specifically about what worked for me.<br />
<br />
I thought about separating this into sections based on age and desired programming language, but I am not an expert, and like I said, <i>everybody is different.</i> However, if you have any questions about teaching yourself (or your kids!) to code, I am always happy to help :)<br />
<br />
In this post, I'll talk about what I actually did and what I used. There may be a few tangents, but that's why it's a blog! This won't necessarily be chronological (certain things I used don't exist anymore, or I discovered things later on which would have been useful to me in the beginning).<br />
<br />
I will start by saying that yes, I did get the very basics in school, but I didn't take special classes or anything like that. I have no formal computer science qualifications. It was just ICT classes.<br />
<br />
<h3>
The basics</h3>
The truth of it is, I started learning to code before I was even trying to learn to code. For me, the first step was logic. I remember using a program in primary school which involved giving commands to a little shape so it could move around the screen. I can't remember what it was called, and I barely remember what it looked like, but <a href="https://scratch.mit.edu/">Scratch</a> is a much cooler, better version of it.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWTuIR3Ctx-HFA-WZTVEPY5WEDR2zbCr0moB1JOf-3RkwPblM5uPEqPksMZmNkVJYooqc6JK-72Q-lxd77koZ_HvL30HOqN0l82uXJAIXFff5i_ec6sUCf_LOMzx0COMP8JXhpwG-Xra_K/s1600/Screen+Shot+2017-05-22+at+19.31.02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="578" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWTuIR3Ctx-HFA-WZTVEPY5WEDR2zbCr0moB1JOf-3RkwPblM5uPEqPksMZmNkVJYooqc6JK-72Q-lxd77koZ_HvL30HOqN0l82uXJAIXFff5i_ec6sUCf_LOMzx0COMP8JXhpwG-Xra_K/s640/Screen+Shot+2017-05-22+at+19.31.02.png" width="640" /></a></div>
<br />
<br />
Scratch is totally free and it's really fun to use. It's aimed at kids, but it will really help anyone get to grips with programming logic.<br />
<br />
There's also games like <a href="https://lightbot.com/flash.html">Lightbot </a>(also available on mobile) which I used in the very beginning. A perfect way to turn commutes/waiting rooms/lunch breaks into a quick programming session.<br />
<br />
More recently, I discovered <a href="https://tomorrowcorporation.com/humanresourcemachine">Human Resource Machine</a> by Tomorrow Corporation (they also made World of Goo and Little Inferno). It's a really fun game and you don't need to know how to program to play it.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxEdXyNrtPr9nVEiuoHpNRFhmNOyLXQVtIQZQZIn4PxAxwHunN7cyl3ZqRghOFSyzLvcGHoOYF65_DabwbBU0tFENBDmWbZ_v07rVbAGWCDNQJ1plQJ-2uN7Lii2G-HiTKV5yYpgvzF3_L/s1600/hrm_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxEdXyNrtPr9nVEiuoHpNRFhmNOyLXQVtIQZQZIn4PxAxwHunN7cyl3ZqRghOFSyzLvcGHoOYF65_DabwbBU0tFENBDmWbZ_v07rVbAGWCDNQJ1plQJ-2uN7Lii2G-HiTKV5yYpgvzF3_L/s640/hrm_03.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
If you're new to programming, this game is great for learning some logic. If you're already comfortable with coding, this game has several levels which get progressively harder, and it's really good for stretching your programming muscles :) I like it a lot.</div>
<br />
<h3>
The first language</h3>
<div>
For me, picking my first language was easy. While studying Physics at university, we used a program called MATLAB (I'm not linking to it because I'm not recommending it). We used this program for data manipulation etc. It wasn't the most fun thing in the world, but I found myself enjoying it. MATLAB is actually its own programming language, apparently, but I never got too into it.</div>
<div>
<br /></div>
<div>
One semester at uni, we started working on a magnetometer for geomagnetic storm detection. It was really cool (<i>I wonder if I'm allowed to post the paper I wrote for it...</i>) and my tutor was using Python for some of the data manipulation on the back-end. I thought it was so cool. I applied to do a summer internship with him, but they weren't allowed to have unpaid interns, and couldn't pay me. This was shortly after the <a href="https://www.raspberrypi.org/">Raspberry Pi</a> came out, so I bought myself a Raspberry Pi 1 B.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhceSrvOdXVmAlxNS-KAoNFUZoqOOtGyUFkIzd6u_h9HOqs7RFS0GToabSxAytKUVXoVkQ78RUfLkWo86CkscjbqtrUUoYOUklt79Q9CqPzqgLPjQB6GiO2c9feCB92SGSCybj8i-UF33iV/s1600/Raspberry-Pi-3-top-down-web.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhceSrvOdXVmAlxNS-KAoNFUZoqOOtGyUFkIzd6u_h9HOqs7RFS0GToabSxAytKUVXoVkQ78RUfLkWo86CkscjbqtrUUoYOUklt79Q9CqPzqgLPjQB6GiO2c9feCB92SGSCybj8i-UF33iV/s320/Raspberry-Pi-3-top-down-web.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pictured: Raspberry Pi 3</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
I've written about Raspberry Pi before, but I basically used it as my Python machine. I didn't use a fancy IDE (integrated development environment) or anything. Just a text editor, the command line, and IDLE (which is bundled with Python).</div>
<div>
<br /></div>
<div>
I can't remember if I used any Raspberry Pi specific tutorials (if I did, they haven't stuck with me) but I know that I spent a lot of time working through <a href="https://inventwithpython.com/chapters/">Invent Your Own Computer Games with Python</a> and I loved it. Whenever I want to practice my Python skills, I go back to this book.</div>
<div>
<br /></div>
<div>
While I was learning Python, I graduated uni and got a job at Reloaded Productions as a QA tester. Basically a dream job for any lover of video games. The office had around 22 people when I joined, so I got to know everyone pretty quickly, and soon enough everyone knew my deal- I was a physics graduate using Raspberry Pi to teach myself Python. I had the elevator pitch down.</div>
<div>
<br /></div>
<div>
Eventually, I moved onto <a href="https://learnpythonthehardway.org/">Learn Python The Hard Way</a>. People seem to have really varying views about this. I thought it was okay; I just wanted to learn from a different angle, just to make sure I covered everything.<br />
<br />
I was very lucky in that some of the engineers at work took an interest, and were happy to look over my work and give me tips. They basically became my mentors. If you can find someone willing to do this, definitely take them up on it.</div>
<div>
<br /></div>
<div>
Soon enough, I was given small tasks and bugs to fix. My mentors told me that one of the best ways to learn to code is to read other peoples' code, and they were right. Looking at old code and figuring out what was happening was really helpful. You start to see patterns, and you become more comfortable reading and understanding the code.</div>
<div>
<br /></div>
<h3>
The next steps</h3>
<div>
So I had Python under my belt. I wasn't an expert, but I sort of knew what I was doing. For me, the next language was C#. The tools we used at Reloaded were mostly WinForms, and I had been wanting to get into Unity, which also uses C#.</div>
<div>
<br /></div>
<div>
The resource I recommend to EVERYONE who wants to learn C# is Microsoft Virtual Academy. C# is developed by Microsoft, so they are very trustworthy :) My favourite tutorial series is <a href="https://mva.microsoft.com/en-us/training-courses/c-fundamentals-for-absolute-beginners-16169">C# Fundamentals for Absolute Beginners by Bob Tabor</a>.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj77iKOoDYOy42UvQtwUM8GNkLG92W_IZXb9c0ZhPLYkfgQ2L71Tq-COK06nOSdDpVCVotOISv8dZj4NZ-W7d3N-jxp-R0LKfIFEeIHrNXSwB_yjK0q5b5ZXwu8B3G2kg4VSPQyPKl2SuWA/s1600/Screen+Shot+2017-05-22+at+20.51.44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="292" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj77iKOoDYOy42UvQtwUM8GNkLG92W_IZXb9c0ZhPLYkfgQ2L71Tq-COK06nOSdDpVCVotOISv8dZj4NZ-W7d3N-jxp-R0LKfIFEeIHrNXSwB_yjK0q5b5ZXwu8B3G2kg4VSPQyPKl2SuWA/s640/Screen+Shot+2017-05-22+at+20.51.44.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
The series is well paced and very easy to follow along with. I didn't have dual monitors at the time, but I would pause when I switched to Visual Studio to type out the code he was going through. I did this every day after work for at least an hour, and at weekends too. Learning C# got me promoted to Tools Engineer at Reloaded.</div>
<div>
<br /></div>
<div>
One of the best things about working as a software engineer was coding every single day. I know that seems obvious, but my first 6 months or so were spent fixing other peoples' bugs. Like I said in an earlier section, reading other peoples' code is a really great way to learn. I also got to look at so many different projects and work with different developers, which then gave me ideas for creating my own tools from scratch. Some of those tools are now hosted on my <a href="https://github.com/sophiaaar">GitHub</a> (after being re-jigged a bit).</div>
<div>
<br /></div>
<div>
So at some point during all this, I went "Hey, I started all this because I want to make games. I should learn how to make games by myself". Working at Reloaded taught me so much about the development process and working as a team, but I wanted to know how to make games by myself. When I first started learning Unity, the tutorials were mostly user-made, but there were some good ones, and I made do by experimenting.</div>
<div>
<br /></div>
<div>
I <i>think </i><a href="https://unity3d.com/learn/tutorials/topics/2d-game-creation/creating-basic-platformer-game">this</a> was my first official Unity tutorial (but I think it was an older version because I'm sure I did it in 2014..) and then when <a href="https://unity3d.com/learn/tutorials/projects/roll-ball-tutorial/introduction-roll-ball">Roll-A-Ball</a> came out, I worked through the whole thing. If you've never used Unity, I recommend starting with Roll-A-Ball. It covers so much ground and it's really good at showing you the basics. When I volunteer at <a href="https://coderdojo.com/">CoderDojo</a>, I work through Roll-A-Ball with the kids who are new to Unity.</div>
<div>
<br /></div>
<div>
When I was still figuring out which engine I wanted to use, I played around a bit with RPG Maker.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/tAq0VFOR3Pk/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/tAq0VFOR3Pk?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
RPG Maker uses very little code, but you can write scripts in Ruby. I didn't go back to RPG Maker, but I did start learning Ruby. I can't remember where I found the tutorial for this, unfortunately, but I think it was on Steam.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div>
I'm going to pause a bit here. I nearly forgot to mention Stack Overflow! Stack Overflow is the saviour of so many programmers. If you've got a question, either it's already been asked and answered, or you can ask it and someone will help you out. It can seem a bit scary to ask (the moderators are very strict), but <a href="https://stackoverflow.com/questions/35461023/perforce-p4-command-line-how-to-list-all-submitted-files-since-a-certain-date">here's an example</a> of something I asked, in case that makes it less scary.</div>
<div>
<br /></div>
<div>
Of course, I need to mention MSDN, too. Writing or reading code, and confused about a method? Highlight it in Visual Studio and press F1, or google the method name followed by "C# msdn" and you will find Microsoft's excellent documentation. I've even cited MSDN in my code comments before. I use it all the time.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Before I left Reloaded, I was the lead engineer/architect on a project called <a href="https://foresight-ts.com/">Foresight</a>. This was the largest tool I ever created, but it got me used to working as part of a very small team. As tools engineer, I kind of got on with my own thing, but with Foresight, I was working one-on-one with a UI/UX designer, and figuring out how to make this tool desirable to QA teams. A lot of my previous work was not super user-friendly, so working with a UX designer was really eye-opening. Part of being a good coder is making your end-products usable, I think :)</div>
<div>
<br /></div>
<h3>
The present</h3>
<div>
As mentioned in the previous section, I started learning Ruby. The best resource I've found to start this is <a href="http://tryruby.org/">TryRuby.org</a>. When you finish it, you get recommended courses on <a href="https://www.codeschool.com/learn/ruby">Code School</a> to continue your training. The Rails For Zombies courses are really great.<br />
<br />
After starting to work at Unity, I took the <a href="https://certification.unity.com/">Unity Certified Developer</a> exam. At the time, I had the fastest time to beat (I took 26 minutes, the exam is meant to last 90 minutes) but I have since <a href="https://twitter.com/sophiaaar/status/864514368582557697">lost my crown</a>. The certification is a nice way to be like "Hey! I know what I'm doing!", especially for people like me with no formal qualifications :)</div>
<div>
<br /></div>
<div>
I mostly use Unity is during game jams or when I'm prototyping an idea. A recent jam game I made was <a href="https://sophiaaar.itch.io/fox-forest">Fox Forest</a> - this was meant to be a vertical slice of a larger game we wanted to make, but doing the game jam made us realise that the project was too large for two people with full-time jobs to make alone. I still learned so much from making it (and from failing to turn it into something larger) and I know that I'll continue to learn more in future game jams. I do use Unity to make tools too, but I'm going to write a separate blog about that.</div>
<div>
<br /></div>
<div>
I'm still learning to code. I think everyone is. No one has mastered everything- there's always something new to learn. I practice as often as I can, and I recently found an app called Streaks which I've started to use to keep track of my coding practice (mark on the calendar when I've done an hour of code, and try to keep the streak up) and I post on <a href="https://github.com/sophiaaar">GitHub</a> fairly regularly, but not as regularly as I'd like to.</div>
<div>
<br /></div>
<div>
My goals for the future are to keep working on my own stuff. If I have an idea for a game mechanic, I'll prototype it. Cool app idea? Prototype it. Basically, I'm just not going to stop working. I don't think engineers ever do, really.</div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com3tag:blogger.com,1999:blog-8758033813606366169.post-9695594767492670722016-02-20T14:50:00.002-08:002016-02-20T14:50:55.201-08:00Reviving old hobbies`I used to draw all the time. As a kid, I wanted to be an artist. Studying art at GCSE kinda beat that out of me, and I haven't <i>really </i>drawn for fun since. It's hard to find time to sit down and make art happen. Work is long and tiring, and I don't ever feel like doing much when I get home.<br />
<br />
But, the games I wanna make need art, and I'd like to do it myself without resorting to crappy MS Paint drawings. I know I'm capable to drawing, I just needed to get back into it.<br />
<br />
Some of you may know that I'm a huge Harry Potter fan. I've got a Deathly Hallows tattoo, and I read the books around twice a year.<br />
<blockquote class="instagram-media" data-instgrm-captioned="" data-instgrm-version="6" style="background: #fff; border-radius: 3px; border: 0; box-shadow: 0 0 1px 0 rgba(0 , 0 , 0 , 0.5) , 0 1px 10px 0 rgba(0 , 0 , 0 , 0.15); margin: 1px; max-width: 658px; padding: 0; width: 99.375%;">
<div style="padding: 8px;">
<div style="background: #F8F8F8; line-height: 0; margin-top: 40px; padding: 50.0% 0; text-align: center; width: 100%;">
<div style="background: url(data:image/png; display: block; height: 44px; margin: 0 auto -44px; position: relative; top: -22px; width: 44px;">
</div>
</div>
<div style="margin: 8px 0 0 0; padding: 0 4px;">
<a href="https://www.instagram.com/p/6Sha97TNZY/" style="color: black; font-family: "arial" , sans-serif; font-size: 14px; font-style: normal; font-weight: normal; line-height: 17px; text-decoration: none; word-wrap: break-word;" target="_blank">✌</a></div>
<div style="color: #c9c8cd; font-family: Arial,sans-serif; font-size: 14px; line-height: 17px; margin-bottom: 0; margin-top: 8px; overflow: hidden; padding: 8px 0 7px; text-align: center; text-overflow: ellipsis; white-space: nowrap;">
A photo posted by Sophia Clarke (@sophiaaar) on <time datetime="2015-08-12T16:06:15+00:00" style="font-family: Arial,sans-serif; font-size: 14px; line-height: 17px;">Aug 12, 2015 at 9:06am PDT</time></div>
</div>
</blockquote>
<br />
On Monday, I'll be visiting the Warner Brothers studio in London to go on the Harry Potter tour. Needless to say, I'm really excited. My excitement spurred me to get out my sketchbook and draw. I could've practised just by drawing anything, but I know Harry Potter so well, and I have such a clear picture of what they look like in the books in my head, so why not draw them?<br />
<br />
It didn't start out well. I kinda wanted to see what I could do from memory, and without any real practice. As in, I just went for it. It was mostly just random sketching so I could remind my hand what it feels like.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGFG53KEVydQy5IEdt5-CSVu3J1t3Ku3ZxKUn-MsXHknHutx6Zi64JC93C5nC-1Xw_bVpyFIPIkI99y0zVQdtFjXAsiWHVfrolCh6sTgLrsOvte5-SKi0WdKHRck3SxsUedGOw-PGs0BB5/s1600/IMG_20160220_213311335.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGFG53KEVydQy5IEdt5-CSVu3J1t3Ku3ZxKUn-MsXHknHutx6Zi64JC93C5nC-1Xw_bVpyFIPIkI99y0zVQdtFjXAsiWHVfrolCh6sTgLrsOvte5-SKi0WdKHRck3SxsUedGOw-PGs0BB5/s200/IMG_20160220_213311335.jpg" width="151" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8tek1QEDTNootFOJ_N32opjV1KgbWYaEGwiFydePheo416pXmFaE66jlWQNdGQI3qxFUq0ASUFo0bbL1v0dY19V6-cSOUs1bXq3hHgWWMK607vk5BUQNBG7M39yU9MlE0AsK60CZxvP1y/s1600/IMG_20160220_213329909.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8tek1QEDTNootFOJ_N32opjV1KgbWYaEGwiFydePheo416pXmFaE66jlWQNdGQI3qxFUq0ASUFo0bbL1v0dY19V6-cSOUs1bXq3hHgWWMK607vk5BUQNBG7M39yU9MlE0AsK60CZxvP1y/s200/IMG_20160220_213329909.jpg" width="112" /></a></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8puw8YjaapI0OlTb4GiBMtnqHl7eZY7I5C2nNfrtaoSQeptQrMIHLI4N2LlhTzd-aEm0ib5cqcr0kZsHuHMrypOBFnnWfZJzNhZJ3Tkn4kFJ6H2hsvgviwDaP-j8SZAFWMyBpa-Wablg0/s1600/IMG_20160220_213405753.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8puw8YjaapI0OlTb4GiBMtnqHl7eZY7I5C2nNfrtaoSQeptQrMIHLI4N2LlhTzd-aEm0ib5cqcr0kZsHuHMrypOBFnnWfZJzNhZJ3Tkn4kFJ6H2hsvgviwDaP-j8SZAFWMyBpa-Wablg0/s640/IMG_20160220_213405753.jpg" width="425" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Gryffindor common room</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqOBeptNCF-vp6snoC6T7CAmZi-KzHdoEq6U1JedN2VkAoHSwbvwh_SyUYvG-Gbx7_xCwdF6AugdpXplEAgD0j0Yfmy-vZzCOcGoOk8IuNmzg5eplDKxjvX3_r37BpVwKkYFRW3qYytK9o/s1600/IMG_20160220_213343453.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="438" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqOBeptNCF-vp6snoC6T7CAmZi-KzHdoEq6U1JedN2VkAoHSwbvwh_SyUYvG-Gbx7_xCwdF6AugdpXplEAgD0j0Yfmy-vZzCOcGoOk8IuNmzg5eplDKxjvX3_r37BpVwKkYFRW3qYytK9o/s640/IMG_20160220_213343453.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Harry in the cupboard under the stairs</td></tr>
</tbody></table>
Later, I decided to actually look up some tips about how to draw people, and I tried to develop my style. Realistic stuff is fine, but it can look really bad unless you're 100% amazing at it, imo (I've always thought cartoonish drawing are cuter anyway, and I think they're fun).<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq7xU_bESEgYqqPyZxhXPUVgjFBeS6qPFINjhGn-H0KY95_U7WVCsV3ihl19589hLjGbkv8sZFyQFr8l35jlgSfedUvkh3pahS89pspMgWc7Eja-OFzsOzHvp8Ajrc2yFhHRtSy8srrrhd/s1600/IMG_20160220_195718876.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq7xU_bESEgYqqPyZxhXPUVgjFBeS6qPFINjhGn-H0KY95_U7WVCsV3ihl19589hLjGbkv8sZFyQFr8l35jlgSfedUvkh3pahS89pspMgWc7Eja-OFzsOzHvp8Ajrc2yFhHRtSy8srrrhd/s320/IMG_20160220_195718876.jpg" width="232" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkseYNVdJ8uiFqaUh962gFNixw2EJShO2ibJckrY-upua-Km62pG7fPf-_pdYEMCSirXI11EIGEkNEn_yWdeFGh0j5nw_2O3dGIxEiJ4DSMWEm2gcb9IYtLwTJ2ZfCOAZmweh1glg9W2Hh/s1600/IMG_20160220_195726025.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkseYNVdJ8uiFqaUh962gFNixw2EJShO2ibJckrY-upua-Km62pG7fPf-_pdYEMCSirXI11EIGEkNEn_yWdeFGh0j5nw_2O3dGIxEiJ4DSMWEm2gcb9IYtLwTJ2ZfCOAZmweh1glg9W2Hh/s320/IMG_20160220_195726025.jpg" width="240" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsux-Z5532X0Oxx5i1Uf9DUk_y77GbCCf1MevEtU5Oz2gQTqi-dOwpXEMH_iu5NjuuaX7yHyTcY3cf1lPAW_T6XbjAhvr6SWiBP3e1gbazEk_wYDr-Lo6alr11qNbFYX_9Sbz0_SycHgTd/s1600/IMG_20160220_163230381.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsux-Z5532X0Oxx5i1Uf9DUk_y77GbCCf1MevEtU5Oz2gQTqi-dOwpXEMH_iu5NjuuaX7yHyTcY3cf1lPAW_T6XbjAhvr6SWiBP3e1gbazEk_wYDr-Lo6alr11qNbFYX_9Sbz0_SycHgTd/s400/IMG_20160220_163230381.jpg" width="260" /></a></div>
Not bad, I guess?<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-gDpxRt4OIYnToQeiLRFHcLky76nf-bW5JWua0WgIGyZxJrm-8duKWUy-c1jFdTYyMvtgHP2wlb8nyax1H7IswuhJJ2dWnqQ4YbatiR9PftkQakkeox9QZjJSdTDEwOzLiaGLJILdRSDW/s1600/lunaandhermione.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-gDpxRt4OIYnToQeiLRFHcLky76nf-bW5JWua0WgIGyZxJrm-8duKWUy-c1jFdTYyMvtgHP2wlb8nyax1H7IswuhJJ2dWnqQ4YbatiR9PftkQakkeox9QZjJSdTDEwOzLiaGLJILdRSDW/s320/lunaandhermione.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
I kinda wanted to draw this picture of Emma Watson; partially because I love it, and partially because I wanted to practice facial expressions. I started out wanting to make it cartoon-like (hence the eyes), but I kinda felt like the shading in this photo is most of what brought across that expression? Idk but I went with it, and it kinda turned out weird.
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUfxIHhAuKP8AGQl9OTI7xt2RHUmxwhI-8pFAhtbvJlSWTZXhm2dHHqNJ2_gMZ8q8qReXFqZvfoyfsHR7KpE1qXK6c_8d2AuqRViOU8HNx5ChojGzCoD09sV9br5Y9PZc3yvZVT0pfLEwg/s1600/hermione.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUfxIHhAuKP8AGQl9OTI7xt2RHUmxwhI-8pFAhtbvJlSWTZXhm2dHHqNJ2_gMZ8q8qReXFqZvfoyfsHR7KpE1qXK6c_8d2AuqRViOU8HNx5ChojGzCoD09sV9br5Y9PZc3yvZVT0pfLEwg/s640/hermione.jpg" width="640" /></a></div>
Tbh I started to get bored, Realistic drawing is not really my jam, and it didn't even look good. Instead, I decided to bring together all the practising I'd been doing and see what I could do with Harry. I wanted to do something that looked bold and cartoonish, but not chibi or manga... Idk, I just wanted to see if I could develop my own style.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg28QjS_7iXaZdKlF9tzVsFewnBB8r-LniMvGXnZPXhEP5MCEs79uHUYkTPVQjZNfL2dqRIm7zZ2kMypeRrm_VcXiR3owDVYeksd7hBk0cxkX2hhM2BrryddilHJkijzwjP4rfcujcm57ad/s1600/IMG_20160220_195803344.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg28QjS_7iXaZdKlF9tzVsFewnBB8r-LniMvGXnZPXhEP5MCEs79uHUYkTPVQjZNfL2dqRIm7zZ2kMypeRrm_VcXiR3owDVYeksd7hBk0cxkX2hhM2BrryddilHJkijzwjP4rfcujcm57ad/s200/IMG_20160220_195803344.jpg" width="141" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS6aqRPDbodwS_ZH2WHr82E-v9xA6X6qsZMSgSK9zUmwwJDG1NiDKItx-t5I0Nfo1MBDnuk0iOP0TZSwpkGKgHRETi5Hp9a5GZSLEnqyLRee6dp8YazKPFV9mjjS7YZPtpYG-7bxQQdaSw/s1600/harry.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS6aqRPDbodwS_ZH2WHr82E-v9xA6X6qsZMSgSK9zUmwwJDG1NiDKItx-t5I0Nfo1MBDnuk0iOP0TZSwpkGKgHRETi5Hp9a5GZSLEnqyLRee6dp8YazKPFV9mjjS7YZPtpYG-7bxQQdaSw/s640/harry.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
And I'm not that mad at it?! Even if he does look <i>a bit</i> manga. I wanted to do something distinctive with the eyes, because Harry's eyes are such a big part of the books (and I remember reading that they were almond-shaped, so I wanted to emphasise that). Obviously I still need a lot more practice, but I'm actually okay with the Harry drawing. I mean, look at how grumpy and disinterested he looks! That's what I wanted! I was aiming for pre-Hogwarts Harry, you see.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I'd like to get out my watercolours at some point and add some colours to these drawings. Bold lines with a soft palette could look strange, but meh, I wanna try! I love painting with watercolour.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Anyway, I just wanted to share my doodles. I don't know.</div>
<br />
<script async="" defer="" src="//platform.instagram.com/en_US/embeds.js"></script>Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-81404946232813610032015-04-26T03:43:00.001-07:002015-04-26T03:43:27.401-07:00My thoughts about Life Is Strange so farI've been wanting to write about this for a while, but it's been put on hold for various reasons. One of those reasons is that I wanted to play the second episode of Life Is Strange before I made my mind up about it. The pilot didn't really amaze me. In fact, it annoyed me. However, the ending intrigued me enough to make me want to carry on.<br />
<br />
There may be spoilers ahead (for episodes 1 and 2), but I personally find that a game of this sort is difficult to spoil, which will become apparent.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://images-eds.xboxlive.com/image?url=8Oaj9Ryq1G1_p3lLnXlsaZgGzAie6Mnu24_PawYuDYIoH77pJ.X5Z.MqQPibUVTc_Rt3482AmxBj6jyysorICwPRDhVGd_sfRkEzF9e9Vk8T9Bu12npq9HCh7dbLrDPhRyTEwxo7kmZ5oR30y2bbBNzS3IBhPrH31NISeV90buQpf7YWP4lkd2YyKncQsQzVKgZdHzsBDvujaJDtdvCQS2VSbWQfZZyILz6XqA4vdEY-&format=jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://images-eds.xboxlive.com/image?url=8Oaj9Ryq1G1_p3lLnXlsaZgGzAie6Mnu24_PawYuDYIoH77pJ.X5Z.MqQPibUVTc_Rt3482AmxBj6jyysorICwPRDhVGd_sfRkEzF9e9Vk8T9Bu12npq9HCh7dbLrDPhRyTEwxo7kmZ5oR30y2bbBNzS3IBhPrH31NISeV90buQpf7YWP4lkd2YyKncQsQzVKgZdHzsBDvujaJDtdvCQS2VSbWQfZZyILz6XqA4vdEY-&format=jpg" height="180" width="320" /></a></div>
<br />
For those who don't know, Life Is Strange is an episodic choice-based game developed by Dontnod Entertainment, and published Square Enix. Its similar in a lot of ways to the choice-centred games created by Telltale, but still incredibly unique.<br />
<br />
The game initially struck me as being Mean Girls mixed with Donnie Darko in game form, but I'll get into that later. You play as an 18 year old girl called Max, dealing with all the issues that being a teen girl brings. This is probably one of the reasons that I felt so unsure about the game. It felt too close to home. Some people might say this is a good thing, but I WAS Max, having to deal with bullies, friends, and boys. It was hard to watch, hard to DO. This is where the main mechanic of the game comes in handy, because Max can also turn back time. You can have a conversation, and if it doesn't go so well, you can have another go. Oh, how I would've LOVED to do that as a teenager...<br />
<br />
Being able to turn back time is great, but it felt very forced. Every time Max spoke to someone, the voice in her head would say something like "Hmmm. That didn't go so well, I should try again" while the corner of the screen is flashing at you to press the button. I didn't like being told when I should change my mind. Yes, it was good being able to hear all the different outcomes of conversation trees, but I felt like I was being pushed in certain directions every time I was prompted to push the time button. I started to just ignore the voice in her head, and play it out my way.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://assets2.ignimgs.com/2015/01/09/latest-01-life-is-strange-games-of-2015blogjpg-7f77af_1280w.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://assets2.ignimgs.com/2015/01/09/latest-01-life-is-strange-games-of-2015blogjpg-7f77af_1280w.jpg" height="180" width="320" /></a></div>
<br />
Max is also a photographer. (She's a teen girl, so of course she's a photographer.) However, despite the fact that the game is set in the modern day, Max prefers to use a little polaroid camera. Somehow it's allowed for her to be studying photography, and have a polaroid as her primary camera. Her teacher has no issues with it. Yeah, I'm not buying it. She even looks at her teacher's camera and says "Wow, I bet that takes pristine digital images, but I'm so analogue", or something to that effect. To top it all off, every time she takes a photo, she SHAKES THE POLAROID. Anyone who actually enjoys using instant cameras would know NOT to do that. Grr.<br />
<br />
On top of the annoying details, the dialogue was pretty.... awful. Okay, that's probably a bit harsh, but it's very obvious that the writers have not interacted with teenage girls much, if at all (I think all the writers are grown-ass men). Nobody says 'hella' or 'bizarro'. I, for lack of a better word, cringed every time one of the girls spoke.<br />
<br />
All of these things make it sound like I hated this game, but that's not true. There's a lot of stories going on at once in this game, much like in life, and they're all interesting in a different way. Max is reunited with a long lost friend, Chloe, who also happens to be friends with a girl who recently went missing in their town. Chloe's step-father is also the creepy security guard at Max's school. At the end of episode 1, Max has a vision of a huge tornado that's going to wipe out the town. It's a bit all over the place, but it left me curious, so I played episode 2<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://theculturemag.com/wp-content/uploads/2015/02/life-is-strange.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://theculturemag.com/wp-content/uploads/2015/02/life-is-strange.jpg" height="182" width="320" /></a></div>
<br />
One of the main things that makes Life Is Strange different from a Telltale game is that there's a lot more exploring involved. The start of episode 2 has you, Max, walking around the girl's dormitories. You could head straight to the shower, like the game suggests, but you'd be missing out. You can speak to each of the characters, enter their rooms, and find out more about them. This becomes especially important later on, but I'll get to that. You speak to Kate, who I only vaguely remembered from the first episode as being the Christian girl who was picked on a lot. I made sure to talk to her, because I know that being bullied sucks, and she looked pretty upset. While talking to Kate, and other characters, you learn that a video of Kate has gone 'viral' (again, the writing annoyed me here. I wouldn't say a video getting spread around the school equates to 'going viral', but here we are). The video contains footage of Kate going 'wild', and long story short, Kate is pretty cut up about it. So as any good friend should do, you try to stop the information spreading.<br />
<br />
Later on, you meet back up with Chloe, and there's a really fun section where you're proving to her that you have powers. It's just things like telling her what she has in her pockets, but I really enjoyed it. I feel like this is exactly what my friends would be like if I tried to tell them I could turn back time.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://static4.gamespot.com/uploads/screen_kubrick/1365/13658182/2761346-trailer_lifeisstrange_20141217.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://static4.gamespot.com/uploads/screen_kubrick/1365/13658182/2761346-trailer_lifeisstrange_20141217.jpg" height="180" width="320" /></a></div>
<br />
Chloe decides that the best way to play with your powers is to shoot stuff (because Chloe is so ~wacky~ like that), so you go to a junk yard for the most annoying section of the game. I felt like I was doing an RPG side quest to fetch an NPCs shit, except it was in the middle of the game and you can't skip it. Chloe is standing there in the junkyard like "could you go find me 5 glass bottles? Thanks" and I thought she'd maybe go find other stuff, but nope. You spend like 30 fucking minutes walking in circles looking for shit, while she's standing about drinking. Fucking Chloe, am I right? What the hell. Bitch, don't tell me to do your chores while you sit about doing FUCK ALL.<br />
<br />
Ahem. Sorry, Got a bit carried away there.<br />
<br />
Whatever, it was dumb, but things get better after that, and you learn that Max's powers aren't unlimited (because that would be over-powered as hell) and Max can do some serious harm to herself if she doesn't keep things under control...<br />
<br />
I'm gonna skip straight to the action, this isn't a fucking walkthrough.<br />
<br />
Long story short, you remember Kate? Yeah. She kills herself.<br />
<br />
BUT DON'T WORRY, YOU CAN TURN BACK TIME?<br />
<br />
Oh wait. That whole "it's not unlimited" thing. Hmm.<br />
<br />
So Max sees Kate fling herself off the top of a building. Not good. Turn back time! Okay, she's up top again. Then Max learns that she can temporarily freeze time, and she manages to get to the roof top for the most intense/heart-wrenching part of the series so far.<br />
<br />
You have to talk Kate down. This is where all the extra exploring you (hopefully) did comes in handy. You're Kate's friend. You should know her.<br />
<br />
But I couldn't do it. She died.<br />
<br />
I couldn't let that happen. I reloaded my save.<br />
<br />
Now, BEFORE you get shitty at me for reloading my save, let me explain. First of all, I just wanted to know that I COULD save her. Again, this is where LIS differs from many Telltale games. In several Telltale titles, it doesn't matter what choices you make, some things are just going to happen. I kind of wanted to prove to myself that I COULD save Kate. I knew it HAD to be possible. They couldn't just let her DIE. If you really paid attention to everything in Kate's room, then you can save her, and I'm so glad I did. Kate didn't need to die, and now you can get on with figuring what the HELL is going on in this crazy town.<br />
<br />
So yeah, episode 2 was awesome, even with the stupid bottle thing. It had some of the most intense moments I've ever experienced in a game, and I felt really immersed in the story. Not to mention, the soundtrack is pretty great. Episode 2 made me forgive the cringey writing, and the damn shaken polaroids. It felt great to play a story-based game where I could feel that my choices really mattered, and I can't wait to play episode 3.<br />
<br />
If you haven't played Life is Strange, I would highly recommend it. I played on Xbox One, but it's available on Xbox 360, PS3, PS4, and PC as well.Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-81404687220584539932015-01-31T09:32:00.000-08:002015-01-31T09:32:20.395-08:00I've been playing around with RPG Maker<span style="font-size: xx-small;">Before I begin, if you're going to come here to tell me that it's not a REAL game engine etc etc, you can just leave now. Because I don't care, and I'm not interested. I'm just having a bit of fun.</span><br />
<br />
As the title suggests, recently I've been playing around with RPG Maker VX Ace. I've always been a very <a href="http://www.learning-styles-online.com/style/visual-spatial/">visual learner</a>, so this program has been perfect for me. The program provides the graphics too, which is even better.<br />
<br />
I started off by making a very simple map.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUk7G1xCEwJwvV7mm2acIkSPtcLUUEemX3-iKaJTXCeDfciW0khiw4ah_sfPGAla1nS7CHCoN7O8hlYYk3s9hWOLlElQ37fQtWbLTrpma7voC5cn9iKaGCoQ-NDIpL_MWCM_lOz74t7J49/s1600/RPG1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUk7G1xCEwJwvV7mm2acIkSPtcLUUEemX3-iKaJTXCeDfciW0khiw4ah_sfPGAla1nS7CHCoN7O8hlYYk3s9hWOLlElQ37fQtWbLTrpma7voC5cn9iKaGCoQ-NDIpL_MWCM_lOz74t7J49/s1600/RPG1.png" height="160" width="320" /></a></div>
<br />
<br />
An NPC came next. She may, or may not be, Taylor Swift. Initially, all she did was wander around saying "I'm Taylor Swift". Kinda boring.<br />
<br />
Then, I added a house. This took a little bit longer to make, but I think it looks quite cute.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0yeWqi2H1O-hOrzKlUYm2j4gtQGrrbFWLl53Wf5nVBJh9sYiWjeNkKQYLYad7sh8xi9J1vr-UJddaWAF9ipVFOtiHLQ-HDUizE5QGL_FhyYiFW6vIirY4dE3uFfA-_QQtAK7dwa36cDq1/s1600/RPG4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0yeWqi2H1O-hOrzKlUYm2j4gtQGrrbFWLl53Wf5nVBJh9sYiWjeNkKQYLYad7sh8xi9J1vr-UJddaWAF9ipVFOtiHLQ-HDUizE5QGL_FhyYiFW6vIirY4dE3uFfA-_QQtAK7dwa36cDq1/s1600/RPG4.png" height="176" width="320" /></a></div>
<br />
Using the "quick event" function, I added a treasure chest. It felt a bit cheaty at first, but then I realised it gives you all the code (RPG Maker uses Ruby, I believe). So I started taking that and applying it to other events, like barrels.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAIMhBVF6r1cP4Uaeuo6kkJSIwkzxKA0Zt71z6N-ycFhG54mVegXd5COUkOId5zkcJGLTBeH-lhqXITfIVY1Zl8ZL_SDWh6n2Lu3d3fmVnxGpCOXW7E4wqU1nD8n4pDN7rdyK7g-K29Vw5/s1600/RPG2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAIMhBVF6r1cP4Uaeuo6kkJSIwkzxKA0Zt71z6N-ycFhG54mVegXd5COUkOId5zkcJGLTBeH-lhqXITfIVY1Zl8ZL_SDWh6n2Lu3d3fmVnxGpCOXW7E4wqU1nD8n4pDN7rdyK7g-K29Vw5/s1600/RPG2.png" height="259" width="320" /></a></div>
<br />
<br />
<span style="font-size: xx-small;">Baby steps...</span><br />
<br />
Adding treasure chests gave me items, so it was time to make a simple fetch quest. Taylor Swift needs a potion! (In retrospect, I should've said it was to mend her broken heart... ah well.)<br />
<br />
It started off with her simply taking the item from me if I had it in my inventory and giving me some gold, but then I added in a Yes/No option. It's starting to look like a real game!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7OWcAxM-tx-XJNNBsHev-FSNlONU9j3JJ5VqNIIWbhzJznOQiWrxO1NHCenHNeUj-ln7JK65AOhevBZHOb7izbBfvmq7xkaWQD8GeFubESuchkYOiaqCz5gin_JJ5j9ZjZRgdVjR9TiqR/s1600/RPG3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7OWcAxM-tx-XJNNBsHev-FSNlONU9j3JJ5VqNIIWbhzJznOQiWrxO1NHCenHNeUj-ln7JK65AOhevBZHOb7izbBfvmq7xkaWQD8GeFubESuchkYOiaqCz5gin_JJ5j9ZjZRgdVjR9TiqR/s1600/RPG3.png" height="260" width="320" /></a></div>
<br />
<br />
Next came adding a conditional branch. There's a chest in there, but some lady is blocking it. I need to complete the quest for Taylor first. Seems fair enough. Just need to find that potion.<br />
<br />
Long story short, here's a quick video of what I've made so far! (Apologies for crappy quality etc, I'm still trying to figure out which capture software I like best)<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/tAq0VFOR3Pk" width="560"></iframe>
<br />
Basically, I'm having fun with this program! I have some fun ideas for other games I want to create with it, and I'll probably keep adding to this one and see what it turns into. Hopefully I'll be able to show off something cool I've made in Python soon, too.Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-72504561103097441612015-01-20T05:23:00.001-08:002015-01-20T05:23:21.735-08:00On falling back in love with Nintendo<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
A few months ago, a late-night grocery run in Tesco resulted in us coming home with a Wii U. We bought the bundle with Mario Kart 8, and an extra Wii U Pro controller. It was kind of impulsive, but I've certainly had no regrets.<br />
<br />
My love for Nintendo probably started with the GameBoy. I didn't own one, but my best friend did. I borrowed hers as often as I could. I mostly played Pokemon, but I don't think I was particularly good at it. It didn't matter, though. I was hooked.<br />
<br />
One Christmas, Santa brought me a GameBoy Advance and Warioland 4. I still have such vivid memories of playing that game, and it brings a smile to my face.<br />
<br />
My collection of games (and Pokemon) grew. I was basically never looking up from the screen. Of course this only became more intense once the DS came out.<br />
<br />
Long story short, I eventually fell out of love with Nintendo. I was busy with school, games were getting way too expensive, and to be honest, I was pretty bored of Mario. It just wasn't doing it for me any more.<br />
<br />
For a while, I was so sceptical of Nintendo in general. Their determination to do things their own way had clearly not been working, and I didn't want to buy a whole new console just to play the games from the franchises I love. I turned to Xbox and PC, and I thought that would be it. Until the late-night trip to Tesco.<br />
<br />
Okay, so I've been making it sound as if I turned up at Tesco and went "FUCK IT", but really, I'd been thinking about the Wii U for a long time. Nintendo's display at <a href="http://www.gamespot.com/articles/why-nintendo-won-e3-2014/1100-6420391/">E3 2014</a> REALLY impressed me. The announcements from Nintendo stuck with me the most. So many of the displays left me thinking "I need to play that game!" In particular, Captain Toad and Yoshis Wooly World, but obviously not forgetting that open-world Zelda announcement, and Smash Bros! And Amiibo! There was just so much that piqued my interest.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
So buying a Wii U just felt like a good choice. How else would I play all those games?<br />
<br />
The Mario Kart 8 bundle is basically fantastic. And the fact that Nintendo have hopped on the DLC bandwagon? I'm all for it! I love having new tracks come out every few months.<br />
<br />
For someone who's never really been able to sink many hours into fighting games, I've had so much fun with Super Smash Bros. Although I will say that the Amiibos level up a BIT too fast. It didn't really feel like AI that was learning, to be honest. It just felt like a really tough CPU. But hey, they're still cute and fun and something new to play with!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCax729bZOU8uXdRomMHkPxa9QKA8iOC6vytXetCqVEl-37XZvxQVcSaw6bEafAudGxh2Xa5tLF267bP3e80iGCfTnuEKBq4abTPcHnsjtf2e7hrQIhexcUQxI5AsWjql2LNmVuklQ12gk/s1600/DSCF2370.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCax729bZOU8uXdRomMHkPxa9QKA8iOC6vytXetCqVEl-37XZvxQVcSaw6bEafAudGxh2Xa5tLF267bP3e80iGCfTnuEKBq4abTPcHnsjtf2e7hrQIhexcUQxI5AsWjql2LNmVuklQ12gk/s1600/DSCF2370.JPG" height="200" width="150" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj11xbTYdofqVQjiRgalXYfRcREupKBgq35s51amdnosJH51p_jSujMCxFqIB8GAT0GHgjZB0bR4pkNz5W_SVKHpf_97Ljwt2p30Mlt1MIJN1A3C2RqXKuDcbI-DsIXrxinsjsHT8yNIF-n/s1600/DSCF2371.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj11xbTYdofqVQjiRgalXYfRcREupKBgq35s51amdnosJH51p_jSujMCxFqIB8GAT0GHgjZB0bR4pkNz5W_SVKHpf_97Ljwt2p30Mlt1MIJN1A3C2RqXKuDcbI-DsIXrxinsjsHT8yNIF-n/s1600/DSCF2371.JPG" height="200" width="150" /></a></div>
Obviously I can't forget to mention the game pad. I loved having a map of the course on the controller while racing on the TV. It's also great if you want to play Captain Toad (which is amazing) while your boyfriend is using the TV to play Xbox (or if your bedroom is conveniently placed above your living room- that game pad is coming to bed with you). It feels like somewhere between a GameBoy and an iPad.<br />
<br />
Nintendo get a lot of stick for putting out a lot of remakes, but they're more than some new textures. For example, Pokemon Omega Ruby and Alpha Sapphire are just outstanding. I got a 3DSXL with Ruby for Christmas, and I didn't put it down for about 2 weeks. It made me nostalgic about the original, but it didn't feel like the same game. It's so much better.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbc6ANpoyW22D0sYfp92thHPuKrZ42qdnQgx2kWuXlxQGa4L5AwbRp2gJ9dLPRgBZFwQJ6oVSJzwcoTNN477mQqsP8Dx_uikWxDMXlxhw7x6lAetbdujLFfK-PsGRlSvWo08hhoSyc5Y0S/s1600/3dsxl.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbc6ANpoyW22D0sYfp92thHPuKrZ42qdnQgx2kWuXlxQGa4L5AwbRp2gJ9dLPRgBZFwQJ6oVSJzwcoTNN477mQqsP8Dx_uikWxDMXlxhw7x6lAetbdujLFfK-PsGRlSvWo08hhoSyc5Y0S/s1600/3dsxl.jpg" height="274" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">3DSXL with decal and case from Etsy (Can you spot Logan's toes?)</td></tr>
</tbody></table>
As well as all the new content, Nintendo have been keeping the classics alive with the Virtual Console. I bought Earthbound, which never had a European release the first time round, so that was great. I also bought the original Legend Of Zelda for my 3DS. It's been a joy.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgHnmVnH4VF4qQlL8RAh0bZ3q_6CtoFYGyL8QzjE1aHUFitHd8SaYoHmZIR9qJj_QsfAtc-g3CNFSb1dTpteyaBZoyZJWyRdFV3AZwh6xATIK4Iu8T2hnvgrXng5yyuZ9-WEIRSJlFAZud/s1600/3dsxl2.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgHnmVnH4VF4qQlL8RAh0bZ3q_6CtoFYGyL8QzjE1aHUFitHd8SaYoHmZIR9qJj_QsfAtc-g3CNFSb1dTpteyaBZoyZJWyRdFV3AZwh6xATIK4Iu8T2hnvgrXng5yyuZ9-WEIRSJlFAZud/s1600/3dsxl2.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Logan, pls.</td></tr>
</tbody></table>
Nintendo also made me realise that it's okay to enjoy "lame" games. All the boys in school who said you didn't <i>really </i>like games unless it was a shooter were clearly idiots. It's okay to play games the way YOU want to play them, and Nintendo are the best at embracing that.<br />
<br />
What I'm trying to say is that Nintendo have really been doing things right recently, and I hope it stays this way. Let's just say that there's far more games that I'm currently excited for on 3DS and Wii U than I am for Xbox One.
<!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F4.bp.blogspot.com%2F-SfaTJYAMaUU%2FVL5VIe4DNEI%2FAAAAAAAAAJc%2Fkt2EtordS8U%2Fs1600%2FDSCF2371.JPG&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj11xbTYdofqVQjiRgalXYfRcREupKBgq35s51amdnosJH51p_jSujMCxFqIB8GAT0GHgjZB0bR4pkNz5W_SVKHpf_97Ljwt2p30Mlt1MIJN1A3C2RqXKuDcbI-DsIXrxinsjsHT8yNIF-n/s1600/DSCF2371.JPG" -->Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-8666018522223215202015-01-02T12:42:00.002-08:002015-01-02T12:48:37.196-08:00Goodbye 20142014 started in the best way. I had just left my job as a waitress, meaning I had my weekends back. New year's eve was a fairly lacklustre night on Ashton Lane, but it was new year's day that was really special. We had pub food, lots of beer, and mini musical sessions in the pubs we stopped in. Impromptu ceilidh dancing even started while we were playing. It was fantastic.<br />
<br />
February brought my 21st birthday. I wasn't expecting much; I just wanted to have a few drinks with some pals. As I was getting ready, I opened my front door to find that 2 of my best friends had travelled half way up the country to surprise me. It was the first time I've ever cried with happiness. I was elated. I truly do have the best friends ever, and I hate that I don't get to see them enough.<br />
<br />
A few days later, my boyfriend and I travelled to Iceland. He bought me the tickets for the birthday. The trip included whale watching, the Blue Lagoon, and best of all, aurora hunting. Probably the best holiday I've ever been on.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr9foymnwwcaZ8_SDFL-sjLdTEDYcm1dfC8h2Ovs1OYg3R2hcwFNrobRMVgIsxeUyRU06j3IdSkWt90g8bM9TKj0THKj7i7sZHzbaFRqqpXYwrLiZsEEn1OieojlopzR9KyfAcxMjv13WJ/s1600/DSCF2024+copy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr9foymnwwcaZ8_SDFL-sjLdTEDYcm1dfC8h2Ovs1OYg3R2hcwFNrobRMVgIsxeUyRU06j3IdSkWt90g8bM9TKj0THKj7i7sZHzbaFRqqpXYwrLiZsEEn1OieojlopzR9KyfAcxMjv13WJ/s1600/DSCF2024+copy.jpg" height="229" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3MoG-jI8DClivDkUvXbOxJBnkpUi7vfChIFJQmHj-dvlc4i8mrSxzRRmcpnblWf_fzLdXQi1BXfqMhind53Af6HrI9cw2AstdDfmPSi6Mi-Enz4jNDpfocsTui4o5adTJ4iegz1AYg56Y/s1600/DSCF2078+copy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3MoG-jI8DClivDkUvXbOxJBnkpUi7vfChIFJQmHj-dvlc4i8mrSxzRRmcpnblWf_fzLdXQi1BXfqMhind53Af6HrI9cw2AstdDfmPSi6Mi-Enz4jNDpfocsTui4o5adTJ4iegz1AYg56Y/s1600/DSCF2078+copy.jpg" height="206" width="320" /></a></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTFszLL3yf6jwOZWQXyOY8Mp41K4Oawk77XT1-pQ1_cCDO-RPa8l9wusFuh76ovLDwOa3QZZD8PrVgULqsGOBcwc8Q-BjRvtOlYlAChsEgTDUYM-ZOzHYq7chyphenhyphenIDMuHTjofpfkPp9w7CsK/s1600/DSCF2114.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTFszLL3yf6jwOZWQXyOY8Mp41K4Oawk77XT1-pQ1_cCDO-RPa8l9wusFuh76ovLDwOa3QZZD8PrVgULqsGOBcwc8Q-BjRvtOlYlAChsEgTDUYM-ZOzHYq7chyphenhyphenIDMuHTjofpfkPp9w7CsK/s1600/DSCF2114.JPG" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">All photos by me :) (and Doug)</td></tr>
</tbody></table>
One of my final astronomy projects involved making a magnetometer to detect geomagnetic activity. Without a doubt, it was the most fun I had during my 3 years at uni. Not only did I enjoy the topic, but it felt like the work was actually worth while. This lead me to writing for <a href="http://the-gist.org/2014/03/the-sun-a-closer-look/">The GIST</a>, and realising that I quite enjoyed coding.<br />
<br />
It was around this time that I realised that it was possible for me to pursue a career in video games; something which always seemed like a dream before. I'm not sure what actually made it click, but I decided to start making that dream a reality.<br />
<br />
I still worked hard on my physics course, but I knew that it was no longer for me. I started to focus my free time on other ventures, such as teaching myself some basic coding, and creating this blog to record my progress (amongst other things).<br />
<br />
Things started to look bad around May, when a job offer <a href="http://www.sophiaaar.co.uk/2014/05/my-dream-job-wasnt-what-i-thought-it.html">went sour</a>, but I always have back-up plans. Sort of.<br />
<br />
I would have probably been a lot worse off if I hadn't decided to adopt Logan form the SPCA.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiN7d-xt-O8Qg36sL0bAnb2yMDxc7SZnVbLm88MQtidccRR6e0cOK74pbhhQ572dDB9HBSH50dwoht3ds055YkRz2Mzs_RMKpNhYzf5g-ZTgmothLJNdP5CtlXqOo2oBDT1Qqunu3ioeQw/s1600/DSCF2263.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiN7d-xt-O8Qg36sL0bAnb2yMDxc7SZnVbLm88MQtidccRR6e0cOK74pbhhQ572dDB9HBSH50dwoht3ds055YkRz2Mzs_RMKpNhYzf5g-ZTgmothLJNdP5CtlXqOo2oBDT1Qqunu3ioeQw/s1600/DSCF2263.JPG" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
He completely brightened my life, and kept me company during my month-and-a-bit of unemployment.</div>
<br />
After sending my CV around, I found a video game company looking for QA testers. I sent off my CV, and got a reply within 10 minutes, asking me to go for an interview. The company was based in Edinburgh. Not the most ideal for someone happily living in Glasgow, but it's not really that far, so I went.<br />
<br />
A few days later, I got the call telling me I got the job, and I started in July.<br />
<br />
This is it. My foot is in the door. I have a job at a game company.<br />
<br />
Since then, the year has FLOWN by. I mean seriously, how have I been working here for 6 months?<br />
<br />
It has been a GREAT 6 months, and the job also allowed me to relax. I've always been the type of person to over-work myself, and stress myself out, but having a job meant I could chill out a bit. (I'm still not completely over the fact that my free time really is FREE. I don't have to worry about exams or report or lab work.)<br />
<br />
I realised that I don't need to rush myself to put out games. I only just graduated, I'm allowed to have some time to chill. I don't need to stress that I haven't published anything yet; I don't need to rush myself. I'm still just 21.<br />
<br />
So, I caught up on games I missed while I was at uni, all while picking up fantastic experience at work. I helped the lead designer work on the matchmaking systems for the game, and I've been playing around in different game engines in my spare time (when I'm not too exhausted after work).<br />
<br />
Oh, and I bought a car. That was good, too.<br />
<br />
The work can stress me out (as I haven't completely forgotten my old ways), and the days are long, but as I said, my foot is in the door. This is all going to be worth it.<br />
<br />
Aside from playing games, I've been getting back into painting and drawing, as these are all things that will help me make games.<br />
<br />
Unfortunately, I've neglected this blog a bit. Partially due to being busy, and partially due to being worried that no one even cares what I write.<br />
<br />
I'm going to start thinking less things like "but will people like this?" and more like "I want to write about this". So that might mean I share my thoughts on a game I played, or I might post pictures of my crappy (but starting to impove!) art. You don't have to read it, don't worry.<br />
<br />
All in all, 2015 has a lot to live up to if it wants to match 2014, but I can't wait to see what's in store for me :)<br />
<br />
EDIT: oh, and Christmas was good too. I wasn't working, so, yay.Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com1tag:blogger.com,1999:blog-8758033813606366169.post-38750379714262749162014-09-13T07:28:00.002-07:002014-09-13T07:28:41.262-07:00Do you remember your first kill?I posed the question to my colleagues a few days* ago; "What was the first game to allow you to kill another human?". I've been thinking about it a lot since then.<br />
<br />
The question came to me as we were playing a shooter. We were so casually talking about killing, dying, and even suicide. What were the first reactions to games that involved "murder"? Were people shocked? Or were they emotionally detached because they didn't look "real"?<br />
<br />
For me, I think the first game I played where I could kill fellow humans was the first Grand Theft Auto. I was 7 or 8 years old, and I had a great time. One of my strongest childhood memories is looking at my TV after going on a GTA killing spree and seeing "You have been arrested for Murder One." It was awesome. I don't think I even completed any missions. I just ran around with a machine gun.<br />
<br />
Infinity Ward's Call Of Duty: Modern Warfare 2 (2009) sparked significant controversy from one of the very first levels in the game. The optional level, No Russian, had the player shooting down civilians in a Russian airport. This blog is not about COD, but you can read about it more <a href="http://en.wikipedia.org/wiki/Controversies_surrounding_Call_of_Duty:_Modern_Warfare_2">here</a> and <a href="http://kotaku.com/5931235/the-designer-of-call-of-dutys-no-russian-massacre-wanted-you-to-feel-something">here</a> if you so wish :)<br />
<br />
Leading on from that, so many "street crime" games (which I use as a general term for games such as GTA and Saints Row) allow the player to kill endless civilians. The police may come after you, but it's only a game, right?<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://img4.wikia.nocookie.net/__cb20110804220030/saintsrow/images/f/fb/Chainsaw_Gameplay.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://img4.wikia.nocookie.net/__cb20110804220030/saintsrow/images/f/fb/Chainsaw_Gameplay.jpg" height="192" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Taken from Saints Row 2. Can I get this as a gif?</td></tr>
</tbody></table>
<br />
This blog post is to encourage you to think about your early gaming experiences. What games did you play? How did you feel when you played them? Did the word "murder" even cross your mind?<br />
<br />
I'm still trying to track down the very first game that had killable humans. I'm not talking knock outs, or a character disappearing. I mean VISIBLE BLOOD, at least.<br />
<br />
If you have any ideas, please <a href="https://twitter.com/sophiaaar">tweet me</a> or leave a commment :)<br />
<br />
<br />
*<span style="font-size: xx-small;">at this point, it's more like weeks since I spoke to my colleagues. I've been putting off writing this for a while, mostly due to being busy.</span>Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com1tag:blogger.com,1999:blog-8758033813606366169.post-39554919273046158282014-07-12T07:56:00.000-07:002014-07-12T07:56:14.929-07:00Mini(ish?) Review: Child Of LightFirst of all: wow. This game is fantastic. I wanted to share with everyone WHY I enjoyed it so much, so here we are. I'll try to keep this as short and spoiler-free as possible :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1hdwallpapers.com/wallpapers/child_of_light.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1hdwallpapers.com/wallpapers/child_of_light.jpg" height="180" width="320" /></a></div>
<br />
<br />
Child of Light is an RPG "arcade" game (I'm not sure what else to call a game that doesn't have the £50 price tag, but isn't just DLC?) by Ubisoft Montréal. It maybe took me <i>about</i> 10 hours to complete, but would take longer if you wanted to explore absolutely everything. I played it on Xbox 360, so I spent a little while trying to get all the achievements (I succeeded).<br />
<br />
This game is GORGEOUS. I loved looking at it. The backgrounds, the characters, the animation, the dialogue images (cutscenes?), EVERYTHING. I could've spent forever moving Aurora around just to see her hair flow.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://media.tumblr.com/8acb4493a1b2b98140f01234038d5326/tumblr_inline_mwix1nrLG41s7qqsk.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://media.tumblr.com/8acb4493a1b2b98140f01234038d5326/tumblr_inline_mwix1nrLG41s7qqsk.gif" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Dat hair physics.</td></tr>
</tbody></table>
The sound of this game is also spectacular. In particular, the song I've embedded below filled me with JOY every time I heard it. I'm listening to it as I write this, in fact. It makes me want to <strike>skip</strike> FLY through a field, but also fight dragons at the same time.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="https://ytimg.googleusercontent.com/vi/LHI_yxFLw8w/0.jpg" height="266" width="320"><param name="movie" value="https://youtube.googleapis.com/v/LHI_yxFLw8w&source=uds" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="https://youtube.googleapis.com/v/LHI_yxFLw8w&source=uds" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The game's combat system is very interesting, and difficult to explain unless you've tried it. It is turn-based, but there is also timing involved. I, personally, have not seen anything like it in any other game. It constantly kept me on my toes, and I didn't tire of it. The names of the monsters are never shown, and you never see their HP either. I would've liked to have seen their names, at least. I'm sure there's people who worked on the game who put a lot of thought into the names, and it would've been nice to see.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I would definitely play this game again (I love that there is a New Game + option) and I have been recommending it to everyone I see. If you enjoy RPGs, play it! If you don't, still give it a go! It's was a joy to experience and I had so much fun. If you're new to video games, I'd say this is a great place to start out, too. I played it on easy, so there's no judgement here.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://childoflight.ubi.com/">Child Of Light Website</a></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://childoflightgame.tumblr.com/">Child Of Light Official Tumblr</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Did you like this review? Have you played Child Of Light? Leave me a comment or talk to me on <a href="https://twitter.com/sophiaaar">Twitter</a>!Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-30734267162878095152014-06-03T03:28:00.000-07:002014-06-03T03:28:25.268-07:00A few updatesFirst of all, <b>I've finished uni!</b><br />I'm still okay with my decision to graduate early. Uni was very stressful for me, and I don't feel like it was the most effective way for me to learn. Physics is quite a practical subject, and we spent more time in labs than we did in lectures, but only 20% of the grade is from laboratory work, the rest is from exams. I don't feel that another year would have actually helped me in any way, especially when I'm so keen to get into game development.<br />
<br />
I've started teaching myself <b>Python</b> (using my <b>Raspberry Pi</b>)!<br />
This is more difficult than I thought it would be. I've been using online resources, including <a href="http://www.diveintopython.net/">Dive Into Python</a>, which has been useful, but it's just very difficult to concentrate on coding, when I'm also in the middle of job hunting (ugh)<br />
<br />
<b>I adopted a kitten!</b><br />
Ahhhhhhhh! Okay, I'm aware this isn't tech-related, but anyone who knows me knows that I am a full-on cat lady. I've been living away from home for 3 years now, and I decided that I wanted a little pal. It's been the best decision I've made in a long time! After all the <a href="http://www.sophiaaar.co.uk/2014/05/my-dream-job-wasnt-what-i-thought-it.html">shitty stuff</a> that's happened, having this bundle of energy come into my life has been perfect. I think if I didn't have my kitten to distract me from the real world, I would not be doing so great right now. (If you want to adopt a cat or kitten, I got this guy from the SPCA. They were so lovely and helpful, I just wish I could give all the cats a home...)<br />
<br />
For any cat lovers reading, here's some pictures of my new baby, Logan.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZeSfyk1rFaeNPm4TQOYTD5ZR8_CaKdbk9AO4KtdDmmUlGdX5NN8PGW2a9K6Bvy5mXJCsYu08op-aijQXy0J7gP9zv_UPDoQ4H0oQ9yjpZzzDb-ZgVi5d0fVqQvBs6Z-X5BPqFXxaTNEg3/s1600/DSCF2210.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZeSfyk1rFaeNPm4TQOYTD5ZR8_CaKdbk9AO4KtdDmmUlGdX5NN8PGW2a9K6Bvy5mXJCsYu08op-aijQXy0J7gP9zv_UPDoQ4H0oQ9yjpZzzDb-ZgVi5d0fVqQvBs6Z-X5BPqFXxaTNEg3/s1600/DSCF2210.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFYts4BOPKbBqaRi_6WbM8qHehoNw-kcxQbdHJdjhD33HKUkWf5ZdwmJn43xDvGc8KOSg4bd_Tlh2zWCc_iVnVo76Y_t4IlAWIVjXfjeMU-4KJvHNNzteJJIHtEWNJEHhNSE2tnGhDdYGD/s1600/DSCF2212.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFYts4BOPKbBqaRi_6WbM8qHehoNw-kcxQbdHJdjhD33HKUkWf5ZdwmJn43xDvGc8KOSg4bd_Tlh2zWCc_iVnVo76Y_t4IlAWIVjXfjeMU-4KJvHNNzteJJIHtEWNJEHhNSE2tnGhDdYGD/s1600/DSCF2212.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUth8lt_Hkn7aqTlh-5qPr2pfeTzDyBOM0PVBI0OIgVFjdVusfzhBHeqOb714YSB6YGZZkhQIexFXChms6DjPjEB197zxBbAy_QFf0uu2rUt6zUaRJRHvLtc-SwFxKhBTxl19ylsjdkULZ/s1600/DSCF2213.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUth8lt_Hkn7aqTlh-5qPr2pfeTzDyBOM0PVBI0OIgVFjdVusfzhBHeqOb714YSB6YGZZkhQIexFXChms6DjPjEB197zxBbAy_QFf0uu2rUt6zUaRJRHvLtc-SwFxKhBTxl19ylsjdkULZ/s1600/DSCF2213.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtX51POaFBKobIk_qSLtLfb7pOFufAoVEBiu6rXhbFqGtbgxfgOsVRJvlfbzIANqDmZMrFYtOLQUGyOugU5oyCVWavV6C9MmVQ_kurEq46bOf2s5ARJsOCezHpsL4y-LMwvJyzvCgG-NuM/s1600/DSCF2218.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtX51POaFBKobIk_qSLtLfb7pOFufAoVEBiu6rXhbFqGtbgxfgOsVRJvlfbzIANqDmZMrFYtOLQUGyOugU5oyCVWavV6C9MmVQ_kurEq46bOf2s5ARJsOCezHpsL4y-LMwvJyzvCgG-NuM/s1600/DSCF2218.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFWz7K6uGzoib2URmvIxRobhl5e2XbzMitzPGrNCZzzWWPMkBdzj1miTR0MfbaftfJPZy2iJmshPnqS4MC-TlVCK1Ie6NNF7gOp8jDH4PaGZAtQ0LENiEJKkjlhhlOhlLaESJsFSmeaBj-/s1600/DSCF2230.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFWz7K6uGzoib2URmvIxRobhl5e2XbzMitzPGrNCZzzWWPMkBdzj1miTR0MfbaftfJPZy2iJmshPnqS4MC-TlVCK1Ie6NNF7gOp8jDH4PaGZAtQ0LENiEJKkjlhhlOhlLaESJsFSmeaBj-/s1600/DSCF2230.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNnMQAoWe8SVgtdCV-ie8IuI2k_R8grQC4_ZZB7ZyCq_Su7uSdfZ8wmZ6TuzgXEASKEcz43STolUDX1t6Xn-Rbnx7Ur_Npx5WP1xQ7VDmWLGSAhFkrJqTAxKsr4KJ6TfG4UkhcnjLOh3vF/s1600/DSCF2237.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNnMQAoWe8SVgtdCV-ie8IuI2k_R8grQC4_ZZB7ZyCq_Su7uSdfZ8wmZ6TuzgXEASKEcz43STolUDX1t6Xn-Rbnx7Ur_Npx5WP1xQ7VDmWLGSAhFkrJqTAxKsr4KJ6TfG4UkhcnjLOh3vF/s1600/DSCF2237.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir6P5yrJUZW5YfosewUcYMbHaXGkFHp7pWgtO5Ub3ZtFb6JHIzlDQkkX5RXlw2uXPBDRaofCOJ2Z1I35XdxNRvg3lnXfSgg5gWxLiMM0Aw1YHIZ55xqHYLN9vj8YfulvNHQ2XyoqfLG-MK/s1600/DSCF2249.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir6P5yrJUZW5YfosewUcYMbHaXGkFHp7pWgtO5Ub3ZtFb6JHIzlDQkkX5RXlw2uXPBDRaofCOJ2Z1I35XdxNRvg3lnXfSgg5gWxLiMM0Aw1YHIZ55xqHYLN9vj8YfulvNHQ2XyoqfLG-MK/s1600/DSCF2249.JPG" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Sooo I think that's all the important stuff covered. If anyone has any advice on teaching myself coding/game development, please let me know!</div>
<br />Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-53947560683388281922014-05-04T05:15:00.000-07:002014-05-04T05:15:51.803-07:00WildStar beta fun: Part 2<b><i><span style="font-size: x-small;"><u>NOTE: </u>This is most certainly written from a noob's point of view. Try not to get too ragey about what you're reading.</span></i></b><br />
<br />
Okay, so I've been playing some more WildStar! I did the first few intro quests, and I'm having lots of fun! It's just been tutorial stuff; combat etc. I helped some guy save his pregnant wife, and now people like me. I dunno. It's all very overwhelming<br />
<br />
My character is on the "Scientist" path, which means it wants to learn and discover etc. One of the quests I did involved having a "scanbot" follow me around and scan relics...? You can also level up your path, which unlocks rewards. It was quite confusing, but I like how there's different quests depending on if you're an Exile or the Dominion, and what path you're on. I'm sure it will make more sense as I go on.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWl5UL9yxMz9Nou7rHOs-fH340qDLBhOLSylt4yzHgccBKDgVN8FyUGmiNQHLG4fxixkx0fUrQEYe3iSxln3eXVJ9TN4oEhqsaUb6Sas01FmNNI6qdNgUCkksEHzy8bF0PW4eCNhW4FRGX/s1600/1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWl5UL9yxMz9Nou7rHOs-fH340qDLBhOLSylt4yzHgccBKDgVN8FyUGmiNQHLG4fxixkx0fUrQEYe3iSxln3eXVJ9TN4oEhqsaUb6Sas01FmNNI6qdNgUCkksEHzy8bF0PW4eCNhW4FRGX/s1600/1.png" height="220" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Aboard The Gambler's Ruin: The Exiles' arkship</td></tr>
</tbody></table>
I haven't seen much of my Esper class much yet, apart from in the first few combat situations (but the combat is so confusing that I don't know what's going on anyway.) I think it's something to do with telekinetic powers? A magical looking bird thing appeared during battle, so there's that. I've kinda just been pressing buttons.<br />
<br />
The controls have been annoying the hell out of me. This is probably mostly due to the fact I'm playing on a 3 year old laptop, but still. I've fallen off of so many ledges.<br />
<br />
<b><i>(1 day later...)</i></b><br />
After some fiddling, I started to get the hang of everything and had MUCH more fun. I completed some more quests, and made my way to Nexus!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUBAw1m4bwR2AV_R0Sntdp20ZTOGTETPOpSjbZeOR1d7pIN-k_BQNhP-NjCYAG4NibEg4eaEfvZj9pwCQfuBtR4TKpdGcoHz1wsK2x5zv5-sPXEbB083a0I4lCajZB6NTse3fmZkel5tMu/s1600/2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUBAw1m4bwR2AV_R0Sntdp20ZTOGTETPOpSjbZeOR1d7pIN-k_BQNhP-NjCYAG4NibEg4eaEfvZj9pwCQfuBtR4TKpdGcoHz1wsK2x5zv5-sPXEbB083a0I4lCajZB6NTse3fmZkel5tMu/s1600/2.png" height="179" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Leaving for Nexus</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<a href="http://wildstar.gamepedia.com/Nexus">Nexus</a> is a lush green planet, but after landing, your character discovers that "the planet is angry", or something along those lines. Either way, there were plants trying to kill me. I got to fight some more powerful enemies, and I even died for the first time while playing! (I think I've got the hang of combat now, too.)<br />
<br />
This is the part of the game where the story really opens up, and I can't wait to keep playing. For now, I'm trying to resist, as I'm in the middle of exam season...<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE_B0mld21UlVZEn89w0Ps7_CIcm4kKy-KGlNTsQgmNPm7MAU9E1Ijr0t5cF6X1uVHKzqRp6sSt3Upkzo0W984aG6hXCqXEALAlr1Vlp7oFUkvSFEcOfPKDpE7o5SLmthbkC_k9a4EJsH-/s1600/3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE_B0mld21UlVZEn89w0Ps7_CIcm4kKy-KGlNTsQgmNPm7MAU9E1Ijr0t5cF6X1uVHKzqRp6sSt3Upkzo0W984aG6hXCqXEALAlr1Vlp7oFUkvSFEcOfPKDpE7o5SLmthbkC_k9a4EJsH-/s1600/3.png" height="266" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Nexus</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
Long story short, WildStar is fantastic. I love games set in space, so combined with the RPG mechanics, I've been having so much fun. I will definitely play more of this game once it is fully released, and I'm looking forward to see how it performs once I build myself a badass gaming PC.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The beta for WildStar closes at 7pm GMT tonight and the full release is June 3rd, 2014.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<i><span style="font-size: x-small;">Do you have suggestions for more games I should play? Or perhaps you'd like to see more alpha/beta game "reviews"? Let me know :)</span></i></div>
<br />Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-55371439500977639572014-05-02T08:46:00.000-07:002014-05-02T08:47:00.940-07:00Wildstar Beta fun: Part 1..?I have always liked RPGs. I love everything about them. Most of all, I love how you mould a unique character. You get to live in a fantasy world. I'm a sucker for that kind of immersion.<br />
<br />
Aside from briefly dabbling in Runescape in my youth, I have mostly avoided MMOs. There are a few reasons for this. Primarily, the cost. As a kid, I could never afford to pay a subscription, and my mum certainly wouldn't pay it for me. There was the lack of a decent PC. Slow computers are worse than no computers at all. Lastly, MMOs intimidate me slightly. I know that I would LOVE WoW, but the game is around 10 years old, and has millions of players who are much better than me. I feel like if I started playing at this point, I'd probably just die over and over again. (This probably is not true, but I'm still a WoW virgin nonetheless.)<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmg2GIO-D1rntbtK5ZqYG1w3uUzUgBaFKF1I2-asQrmwCULQVss5LEckCIeWpRzA9JzRzIbfZG777TnYhmar4T0HQ82iNMduFItRDYnPubbRsiTs4LPOHQ33t2Wf6TK28XGQLFAwCdEJGb/s1600/Jessica-Nigri-as-WildStar-Character.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmg2GIO-D1rntbtK5ZqYG1w3uUzUgBaFKF1I2-asQrmwCULQVss5LEckCIeWpRzA9JzRzIbfZG777TnYhmar4T0HQ82iNMduFItRDYnPubbRsiTs4LPOHQ33t2Wf6TK28XGQLFAwCdEJGb/s1600/Jessica-Nigri-as-WildStar-Character.jpg" height="213" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Jessica Nigri's cosplay of a Wildstar Draken (Photo by Martin Wong)</td></tr>
</tbody></table>
<br />
I first heard about WildStar when I heard Jessica Nigri (above) would be cosplaying for them at PAX East. When I saw that <a href="http://www.vg247.com/2014/04/29/wildstar-super-beta-key-giveaway-10000-codes-must-go/">VG247</a> were offering beta keys, I thought, why not? The full game comes out after I finish uni anyway.<br />
<br />
I was also intrigued by Wildstar, because the guy (below) on a lot of promotional material reminds me of <a href="http://upload.wikimedia.org/wikipedia/en/e/e9/Ratchet_and_Clank.png">Ratchet</a> from one of my favourite games, Ratchet and Clank. It made me quite nostalgic.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnSw7TkwWeIeMMKEdkqFcN_JLkbL1W2KUfoCYChl2ZZ5BDhsX0yXWYqpHW624oaVjFU6JrSW84esiyO1-MRQOaTh4BjoMoQaxxTbpI1c9E99rcPRfwp5ZvpB4bqDMtaFHx8L0G8l0EUO3s/s1600/chua.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnSw7TkwWeIeMMKEdkqFcN_JLkbL1W2KUfoCYChl2ZZ5BDhsX0yXWYqpHW624oaVjFU6JrSW84esiyO1-MRQOaTh4BjoMoQaxxTbpI1c9E99rcPRfwp5ZvpB4bqDMtaFHx8L0G8l0EUO3s/s1600/chua.png" height="269" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The Chua: one of the races available to play in Wildstar</td></tr>
</tbody></table>
So, when the beta realms opened, I immediately logged on (probably not the best idea, seeing as I'm in the middle of revising for my university exams....)<br />
<br />
Today I have only gotten as far as character creation. I chose to be on the side of the Exiles. My race is Aurin, my class is Esper, and my path is Scientist (obviously). The game gives a brief description of what these mean, but right now I have no idea of the story or relevance of any of this. It sounds pretty sweet so far, though.<br />
<br />
The character creation is very detailed for the face; you could probably make it look very similar to yourself if you tried! I kept it simple. Big eyes, big mouth, and I didn't mess around too much with the rest. I decided to have light blue skin, long pink hair, and purple eyes. I was disappointed that the customisation for the body wasn't as detailed. There were around 10 pre-sets to choose from, all of which had big, giant boobs.... sigh.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHdmVD8U7pHZ1Eg7Jo_RE1H3M_pT2dGLEtaBxaocQyiUq_mUpXA5fbiaNFbrrN57ESOyu2IeZDhnzf8Xy0HVHDCb3qBoi5dJBkX-vrC7HjgtmHFswchy5urTiW4Bfj6vuG0_tCJj0yqbM4/s1600/meaurin.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHdmVD8U7pHZ1Eg7Jo_RE1H3M_pT2dGLEtaBxaocQyiUq_mUpXA5fbiaNFbrrN57ESOyu2IeZDhnzf8Xy0HVHDCb3qBoi5dJBkX-vrC7HjgtmHFswchy5urTiW4Bfj6vuG0_tCJj0yqbM4/s1600/meaurin.png" height="241" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My Wildstar character. Obviously I went for cat ears.</td></tr>
</tbody></table>
I started on the first mission, spoke to the first guy who had an exclamation point above his head, and lost connection. This is probably a sign that I should carry on revising... or that I need to upgrade my PC (which I'm planning on doing later this year!)<br />
<br />
I'll try to post more about the Wildstar beta over the course of the weekend. I'm excited to delve into quests, and actually learn what Wildstar is all about!Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-81704973169019978892014-03-28T09:47:00.000-07:002014-03-28T09:47:01.768-07:00New peripherals!Today my new keyboard/mouse arrived!<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiINJFq3njlDcyAaBijQ8hCp1gxqIOVUGhzAfv2rPoSeEIjk42lq1qgBZYZfvR89uP1Awht5VaJEAYR2hqhrwq5zbLR4W0iFSQVmMf6pq5V2pxkYlkjPyjLAazZHHUxTeykb6K7RFuK0zMI/s1600/DSCF2144+copy.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiINJFq3njlDcyAaBijQ8hCp1gxqIOVUGhzAfv2rPoSeEIjk42lq1qgBZYZfvR89uP1Awht5VaJEAYR2hqhrwq5zbLR4W0iFSQVmMf6pq5V2pxkYlkjPyjLAazZHHUxTeykb6K7RFuK0zMI/s1600/DSCF2144+copy.jpg" height="192" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The comic sans was slightly off putting...</td></tr>
</tbody></table>
I bought the <a href="http://www.amazon.co.uk/gp/product/B003UE52ME/ref=oh_details_o01_s00_i00?ie=UTF8&psc=1">RII ProMini 2.4GHz Tiny Wireless Keyboard</a>, because I thought it was so cute, and I liked the idea of having a keyboard/mouse combo, so I've got a USB port free. I didn't realise how TINY it would actually be!<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-znoESTZjyfZVwzld11W4FrMcMxClrLoEUR1kHgRWZ0oq5AoTf_N7Kz755uAQY7-DIUKt2XMu7QeY3m2evv77_QPLoyB7ysyLXmH2nXCGukawKgbmBixf5vyGDscAT3jLMPKDfhBiag4x/s1600/DSCF2151+copy.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-znoESTZjyfZVwzld11W4FrMcMxClrLoEUR1kHgRWZ0oq5AoTf_N7Kz755uAQY7-DIUKt2XMu7QeY3m2evv77_QPLoyB7ysyLXmH2nXCGukawKgbmBixf5vyGDscAT3jLMPKDfhBiag4x/s1600/DSCF2151+copy.jpg" height="320" width="294" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Yep... comparing it to the size of my head/looking insane</td></tr>
</tbody></table>
It feels like the perfect match for the Pi, since it's known for being the credit card size PC! It's all I need for now, while I'm just doing basic commands.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh78TLLW-gwGxUTbdJSmT3fd49gdPD1Pmfq483qRILAXiDKhFevqAi7WfQlNUO1hP3Fw55OKlz853jZaZ30CemH3XzFfd_kSLdVoPkt6cas3ldTOlk8cHJq7NhNeYHk98KmubMPW1zp7Brh/s1600/DSCF2155+copy.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh78TLLW-gwGxUTbdJSmT3fd49gdPD1Pmfq483qRILAXiDKhFevqAi7WfQlNUO1hP3Fw55OKlz853jZaZ30CemH3XzFfd_kSLdVoPkt6cas3ldTOlk8cHJq7NhNeYHk98KmubMPW1zp7Brh/s1600/DSCF2155+copy.jpg" height="199" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Size comparison with the Pi</td></tr>
</tbody></table>
So I've told myself that I won't begin playing until summer (after my exams), but I don't know how long that will last. I can't wait to get programming! I'm also really excited to try out <a href="http://pi.minecraft.net/">Minecraft</a>.<div>
<br /></div>
<div>
Do you have any suggestions about what I should be doing with it? Let me know :)</div>
<div>
<br /></div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com1tag:blogger.com,1999:blog-8758033813606366169.post-31103588130692617702014-03-20T06:35:00.001-07:002014-03-20T08:09:34.687-07:00Review of 'Brothers: A Tale Of Two Sons'<a href="http://www.brothersthegame.com/">Official website for the game</a><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://killstreakmedia.com/wp-content/uploads/2014/01/Brothers-A-Tale-of-Two-Sons-Wallpaper-HD.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://killstreakmedia.com/wp-content/uploads/2014/01/Brothers-A-Tale-of-Two-Sons-Wallpaper-HD.jpg" height="180" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Image via Starbreeze Studios</td></tr>
</tbody></table>
<br />
I decided to write a review for this game because it was my favourite arcade game of 2013, and despite it winning the <a href="http://awards.bafta.org/award/2014/games/game-innovation">BAFTA for Game Innovation</a>, I still feel like not enough people have played it.<br />
<br />
I had no idea what was in store for me when I started this game. I'd heard <a href="http://roosterteeth.com/burnie" target="_blank">Burnie Burns</a> talk about it on <a href="http://roosterteeth.com/gamepodcast/">The Patch</a>, but that was about it.<br />
<br />
<h4>
Controls</h4>
The controls immediately confused me. They definitely took some getting used to, but part of the charm of this game lies in the controls. It it a good physical representation of how close these brothers are, and how they must work together.<br />
<br />
The player controls both players on one controller. After a bit of fiddling, I learned to control them effectively if I aligned them on the sides of the screen that correspond with their positions on the controller, otherwise I'd end up with two characters wandering around aimlessly.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://cdn4.steampowered.com/v/gfx/apps/225080/ss_e94a8b94d508d2b95a384f6701fe319f958389e5.1920x1080.jpg?t=1388417678" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://cdn4.steampowered.com/v/gfx/apps/225080/ss_e94a8b94d508d2b95a384f6701fe319f958389e5.1920x1080.jpg?t=1388417678" height="200" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Image via: http://store.steampowered.com/app/225080/</td></tr>
</tbody></table>
<br />
<h4>
Storyline</h4>
Despite the lack of dialogue, the storyline is very easy to grasp (through a lot of pointing at things from the various characters). It's a simple storyline that we've all heard before in many different forms. A combination of controlling both brothers at once, and the puzzles throughout the game makes a simple tale so engaging. You really <i>want</i> the brothers to succeed.<br />
<br />
Puzzles along the way keep the story interesting. Each chapter is exciting and different. It's also interesting how the achievements aren't story based, which makes it possible to complete the game without getting a single G. I felt like this added another layer to the game- it was almost like little side quests throughout! They range from cute things like playing with rabbits, to very dark moments involving a man trying to hang himself.... (That wasn't really a spoiler, don't worry). I really had fun going through and getting all the achievements. (Hint: It's worth interacting with everything you see)<br />
<br />
This game was an emotional roller coaster. Without giving too much away, there were parts near the end where I actually teared up. I don't even get like that with movies! (Perhaps that's a testament to why video games are better than movies IMO, but that would be a WHOLE different topic)<br />
<br />
<h4>
Summary</h4>
<div>
Like I said, this game was one of my favourites of 2013. I loved every second of playing. It was never repetitive or boring, and I would recommend this to EVERYONE.</div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-66849702419468556972014-03-16T06:27:00.000-07:002014-03-16T06:27:11.035-07:00Another idea for my RaspPiI was thinking about <a href="http://www.twitch.tv/twitchplayspokemon" target="_blank">Twitch Plays Pokemon</a> and wondering if something like that would be possible on a Raspberry Pi.<br />
<br />
Then I thought "Hey, I want to play some old N64 games." and wondered if the Pi could be turned into an emulator.<br />
<br />
<a href="http://supernintendopi.wordpress.com/" target="_blank">Someone else had that idea too!</a><br />
<br />
So that's another idea about what I could do... Could be fun!Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-47729696237283226642014-03-14T05:27:00.000-07:002014-03-14T05:32:28.206-07:00The first step in my Raspberry Pi adventure<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-CelJ0lAnCkB16P8XF_pKVxqLflt_iBy-BIJ9aiacEbKnbrkA3r8uvfktKwCgetbhv6LpddORfDkj-TQRtFXyFTyhfX3pobHbpvio9eFOSidQ8itlN_GWgId3Ce7er6wzSTRqJqqbQ6Wy/s1600/pi.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-CelJ0lAnCkB16P8XF_pKVxqLflt_iBy-BIJ9aiacEbKnbrkA3r8uvfktKwCgetbhv6LpddORfDkj-TQRtFXyFTyhfX3pobHbpvio9eFOSidQ8itlN_GWgId3Ce7er6wzSTRqJqqbQ6Wy/s1600/pi.jpg" height="198" width="320" /></a></div>
<br />
<div>
So here's my Pi in its little case. I bought a 16GB SD card for it with NOOBS pre-loaded.</div>
<div>
<br /></div>
<div>
But I still haven't decided what to do with it!</div>
<div>
<br /></div>
<div>
I briefly thought about turning it into an aurora detector. I've just built a magnetometer to detect geomagnetic storms in my astronomy lab (a slightly more advanced version of <a href="http://aurorawatch.lancs.ac.uk/detectors/compass" target="_blank">this one</a>), and I thought I could apply the same principles here. It would be interesting, but not very interactive. It would be a case of building it, then sitting and leaving it to run. I want to be a bit more involved than that.</div>
<div>
<br /></div>
<div>
I've also thought about using it to build some very simple 2D games. That could be quite complicated?</div>
<div>
<br /></div>
<div>
Anyway, I'm not going to start playing with it till my exams are all out of the way, but that doesn't mean I can't THINK about what to do with it.</div>
<div>
<br /></div>
<div>
Let me know if you have any suggestions about what I should do with it!</div>
Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0tag:blogger.com,1999:blog-8758033813606366169.post-72448954211452980172014-03-08T05:39:00.002-08:002014-03-08T05:39:23.358-08:00My first blog postSo it looks like I've started a blog.<br />
<br />
I'm doing this because I want to have a record of when good things happen, so I can look back and be happy. I also want to be able to share the good stuff with my friends in a more personal format than Facebook or Twitter.<br />
<br />
I haven't really decided how this is going to go yet. It may be posts about a new video game I'm playing, a cool trip I went on, or a new pair of shoes. Who knows.<br />
<br />
Maybe you'll enjoy it, maybe you won't.<br />
<br />
But it's my blog and I'll do what I want to.<br />
<br />
For now, <a href="http://the-gist.org/2014/03/the-sun-a-closer-look/" target="_blank">here's</a> an article I wrote recently for theGIST about solar flares and the aurora. I'll maybe be doing more in the future.Sophiahttp://www.blogger.com/profile/13422188147476693422noreply@blogger.com0