<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.5">Jekyll</generator><link href="https://rroylance.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://rroylance.github.io/" rel="alternate" type="text/html" /><updated>2020-02-25T18:19:10+00:00</updated><id>https://rroylance.github.io/feed.xml</id><title type="html">Richard Roylance</title><subtitle>Richard Roylance</subtitle><entry><title type="html">South Park Space Invaders School Project</title><link href="https://rroylance.github.io/south-park-space-invaders/" rel="alternate" type="text/html" title="South Park Space Invaders School Project" /><published>2018-01-15T00:00:00+00:00</published><updated>2018-01-15T00:00:00+00:00</updated><id>https://rroylance.github.io/south-park-space-invaders</id><content type="html" xml:base="https://rroylance.github.io/south-park-space-invaders/">&lt;h1 id=&quot;south-park-space-invaders-school-project&quot;&gt;South Park Space Invaders School Project&lt;/h1&gt;
&lt;p&gt;Found my old high school project where I chose to make a South Park themed Space Invaders style game.&lt;/p&gt;

&lt;h2 id=&quot;notes&quot;&gt;Notes&lt;/h2&gt;
&lt;p&gt;I do not own the rights to anything South Park related; this is just a little fan game I made in high school using images found online and music and sound effects from South Park Studios website. With a request from the right people I will remove this project, no problem.&lt;/p&gt;

&lt;p&gt;If you look at the code or project please note this was one of my first programming projects past in class examples over 10 years ago.&lt;/p&gt;

&lt;p&gt;Due to this being a school project back in the day, it has a couple quirks… to play the game you need to ‘register’, which just means put whatever you want in the username and password fields on the register screen and you can then login with that info. Part of the project was to have a login screen and so there it is.&lt;/p&gt;

&lt;p&gt;Other than that, just have fun.&lt;/p&gt;

&lt;h2 id=&quot;game&quot;&gt;Game&lt;/h2&gt;

&lt;p&gt;You play as either Stan, Kyle , Cartman, or Butters in a fight against the Crab people and a couple bosses along the way. There is also a 2-player snow ball fight mode.&lt;/p&gt;

&lt;h2 id=&quot;controls&quot;&gt;Controls&lt;/h2&gt;
&lt;h3 id=&quot;single-player&quot;&gt;Single-Player&lt;/h3&gt;
&lt;p&gt;A or LEFT ARROW - Left&lt;/p&gt;

&lt;p&gt;D or RIGHT ARROW - Right&lt;/p&gt;

&lt;p&gt;SPACE - Shoot&lt;/p&gt;

&lt;h3 id=&quot;multi-player&quot;&gt;Multi-Player&lt;/h3&gt;
&lt;h4 id=&quot;player-1&quot;&gt;Player 1&lt;/h4&gt;
&lt;p&gt;W - Up&lt;/p&gt;

&lt;p&gt;S - Down&lt;/p&gt;

&lt;p&gt;SPACE - Shoot&lt;/p&gt;

&lt;h4 id=&quot;player-2&quot;&gt;Player 2&lt;/h4&gt;
&lt;p&gt;UP ARROW - Up&lt;/p&gt;

&lt;p&gt;DOWN ARROW - Down&lt;/p&gt;

&lt;p&gt;NUMPAD 0 - Shoot&lt;/p&gt;

&lt;h2 id=&quot;to-play&quot;&gt;To Play&lt;/h2&gt;
&lt;p&gt;You should be able to simply run the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Final.exe&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Final/bin/Debug/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;You can download the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;south-park-space-invaders-v1.0.0.zip&lt;/code&gt; via the &lt;a href=&quot;https://github.com/rroylance/south-park-space-invaders-school-project/releases&quot;&gt;Releases&lt;/a&gt; page to just get the build.&lt;/p&gt;

&lt;h2 id=&quot;credits&quot;&gt;Credits&lt;/h2&gt;

&lt;p&gt;Designed &amp;amp; Developed by: Richard Roylance (@rroylance)&lt;/p&gt;

&lt;p&gt;Sounds curtesy of: www.southparkstudios.com&lt;/p&gt;</content><author><name></name></author><category term="project" /><category term="visual basic" /><category term="vb.net" /><category term="south park" /><category term="game" /><category term="space invaders" /><category term="school" /><summary type="html">Found my old high school project where I chose to make a South Park themed Space Invaders style game.</summary></entry><entry><title type="html">Git Tips &amp;amp; Tricks</title><link href="https://rroylance.github.io/git-tips-post/" rel="alternate" type="text/html" title="Git Tips &amp; Tricks" /><published>2017-12-18T00:00:00+00:00</published><updated>2017-12-18T00:00:00+00:00</updated><id>https://rroylance.github.io/git-tips-post</id><content type="html" xml:base="https://rroylance.github.io/git-tips-post/">&lt;h5 id=&quot;do-you-have-a-tip-youd-like-added--post-in-the-comments-below-or-send-me-an-email&quot;&gt;Do you have a tip you’d like added ? Post in the comments below or &lt;a href=&quot;mailto:roylance.richard+gittips@gmail.com?Subject=Git%20Tip%20Suggestion&quot; title=&quot;EMAIL ME!&quot;&gt;send me an email&lt;/a&gt;.&lt;/h5&gt;

&lt;hr /&gt;

&lt;h4 id=&quot;what-is-git&quot;&gt;What is Git?&lt;/h4&gt;

&lt;p&gt;By far, the most widely used modern version control system in the world today is Git. Git is a mature, actively maintained open source project originally developed in 2005 by Linus Torvalds, the famous creator of the Linux operating system kernel. A staggering number of software projects rely on Git for version control, including commercial projects as well as open source. Developers who have worked with Git are well represented in the pool of available software development talent and it works well on a wide range of operating systems and IDEs (Integrated Development Environments).&lt;/p&gt;

&lt;p&gt;Having a distributed architecture, Git is an example of a DVCS (hence Distributed Version Control System). Rather than have only one single place for the full version history of the software as is common in once-popular version control systems like CVS or Subversion (also known as SVN), in Git, every developer’s working copy of the code is also a repository that can contain the full history of all changes.&lt;/p&gt;

&lt;p&gt;In addition to being distributed, Git has been designed with performance, security and flexibility in mind.&lt;/p&gt;

&lt;h4 id=&quot;on-to-the-tips&quot;&gt;On to the Tips…&lt;/h4&gt;

&lt;h5 id=&quot;basics&quot;&gt;Basics&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Create empty Git repo in specified directory. Run with no arguments to initialize the current directory as a git repository.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git init &amp;lt;directory&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Clone repo located at &lt;repo&gt; onto local machine. Original repo can be located on the local filesystem or on a remote machine via HTTP or SSH.&lt;/repo&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git clone &amp;lt;repo&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Define author name to be used for all commits in current repo. Devs commonly use –global flag to set config options for current user.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git config user.name &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Stage all changes in &lt;directory&gt; for the next commit. Replace &lt;directory&gt; with a &lt;file&gt; to change a specific file.&lt;/file&gt;&lt;/directory&gt;&lt;/directory&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git add &amp;lt;directory&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Commit the staged snapshot, but instead of launching a text editor, use &lt;message&gt; as the commit message.&lt;/message&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git commit &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;message&amp;gt;&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;List which files are staged, unstaged, and untracked.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git status&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Display the entire commit history using the default format. For customization see additional options.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Show unstaged changes between your index and working directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git diff&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;undoing-changes&quot;&gt;Undoing Changes&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Create new commit that undoes all of the changes made in &lt;commit&gt;, then apply it to the current branch.&lt;/commit&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git revert &amp;lt;commit&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Remove &lt;file&gt; from the staging area, but leave the working directory unchanged. This unstages a file without overwriting any changes.&lt;/file&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git reset &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Shows which files would be removed from working directory. Use the -f flag in place of the -n flag to execute the clean.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git clean &lt;span class=&quot;nt&quot;&gt;-n&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;rewriting-history&quot;&gt;Rewriting History&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Replace the last commit with the staged changes and last commit combined. Use with nothing staged to edit the last commit’s message.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git commit &lt;span class=&quot;nt&quot;&gt;--amend&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Rebase the current branch onto &lt;base /&gt;. &lt;base /&gt; can be a commit ID, a branch name, a tag, or a relative reference to HEAD.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git rebase &amp;lt;base&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Show a log of changes to the local repository’s HEAD. Add –relative-date flag to show date info or –all to show all refs.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git reflog&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;branches&quot;&gt;Branches&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;List all of the branches in your repo. Add a &lt;branch&gt; argument to create a new branch with the name &lt;branch&gt;.&lt;/branch&gt;&lt;/branch&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git branch&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Create and check out a new branch named &lt;branch&gt;. Drop the -b flag to checkout an existing branch.&lt;/branch&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git checkout &lt;span class=&quot;nt&quot;&gt;-b&lt;/span&gt;
&amp;lt;branch&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Merge &lt;branch&gt; into the current branch.&lt;/branch&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git merge &amp;lt;branch&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;remote-repositories&quot;&gt;Remote Repositories&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Create a new connection to a remote repo. After adding a remote, you can use &lt;name&gt; as a shortcut for &lt;url&gt; in other commands.&lt;/url&gt;&lt;/name&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git remote add &amp;lt;name&amp;gt; &amp;lt;url&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Fetches a specific &lt;branch&gt;, from the repo. Leave off &lt;branch&gt; to fetch all remote refs.&lt;/branch&gt;&lt;/branch&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git fetch &amp;lt;remote&amp;gt; &amp;lt;branch&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Fetch the specified remote’s copy of current branch and immediately merge it into the local copy&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git pull &amp;lt;remote&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Push the branch to &lt;remote&gt;, along with necessary commits and objects. Creates named branch in the remote repo if it doesn’t exist.&lt;/remote&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git push &amp;lt;remote&amp;gt; &amp;lt;branch&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;config&quot;&gt;Config&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Define the author name to be used for all commits by the current user&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; user.name &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Define the author email to be used for all commits by the current user&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; user.email &amp;lt;email&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Create shortcut for a Git command. E.g. alias.glog log –graph –oneline will set git glog equivalent to git log –graph –oneline.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; alias. &amp;lt;alias-name&amp;gt; &amp;lt;git-command&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Set text editor used by commands for all users on the machine. &lt;editor&gt; arg should be the command that launches the desired editor (e.g., vi).&lt;/editor&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git config &lt;span class=&quot;nt&quot;&gt;--system&lt;/span&gt; core.editor &amp;lt;editor&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Open the global configuration file in a text editor for manual editing.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--edit&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;log&quot;&gt;Log&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Limit number of commits by &lt;limit&gt;. E.g. git log -5 will limit to 5 commits&lt;/limit&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log -&amp;lt;limit&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Condense each commit to a single line.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log &lt;span class=&quot;nt&quot;&gt;--oneline&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Display the full diff of each commit.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Include which files were altered and the relative number of lines that were added or deleted from each of them.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log &lt;span class=&quot;nt&quot;&gt;--stat&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Search for commits by a particular author.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log &lt;span class=&quot;nt&quot;&gt;--author&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; ”&amp;lt;pattern&amp;gt;”&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Search for commits with a commit message that matches &lt;pattern&gt;.&lt;/pattern&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log &lt;span class=&quot;nt&quot;&gt;--grep&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;”&amp;lt;pattern&amp;gt;”&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Show commits that occur between &lt;since&gt; and &lt;until&gt;. Args can be a commit ID, branch name, HEAD, or any other kind of revision reference.&lt;/until&gt;&lt;/since&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log &amp;lt;since&amp;gt;..&amp;lt;&lt;span class=&quot;k&quot;&gt;until&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Only display commits that have the specified file.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log &lt;span class=&quot;nt&quot;&gt;--&lt;/span&gt; &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;–graph flag draws a text based graph of commits on left side of commit msgs. –decorate adds names of branches or tags of commits shown.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git log &lt;span class=&quot;nt&quot;&gt;--graph&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--decorate&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;diff&quot;&gt;Diff&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Show difference between working directory and last commit.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git diff HEAD&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Show difference between staged changes and last commit&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git diff &lt;span class=&quot;nt&quot;&gt;--cached&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Show difference between two branches, &lt;branch_1&gt; and &lt;branch_2&gt;&lt;/branch_2&gt;&lt;/branch_1&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git diff &amp;lt;branch_1&amp;gt;..&amp;lt;branch_2&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Show difference between two branches, &lt;branch_1&gt; and &lt;branch_2&gt;, based on their common anscestor&lt;/branch_2&gt;&lt;/branch_1&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git diff &amp;lt;branch_1&amp;gt;...&amp;lt;branch_2&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;reset&quot;&gt;Reset&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Reset staging area to match most recent commit, but leave the working directory unchanged.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git reset&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Reset staging area and working directory to match most recent commit and overwrites all changes in the working directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git reset &lt;span class=&quot;nt&quot;&gt;--hard&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Move the current branch tip backward to &lt;commit&gt;, reset the staging area to match, but leave the working directory alone.&lt;/commit&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git reset &amp;lt;commit&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Same as previous, but resets both the staging area &amp;amp; working directory to match. Deletes uncommitted changes, and all commits after &lt;commit&gt;.&lt;/commit&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git reset &lt;span class=&quot;nt&quot;&gt;--hard&lt;/span&gt; &amp;lt;commit&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;rebase&quot;&gt;Rebase&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Interactively rebase current branch onto &lt;base /&gt;. Launches editor to enter commands for how each commit will be transferred to the new base.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git rebase &lt;span class=&quot;nt&quot;&gt;-i&lt;/span&gt; &amp;lt;base&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;pull&quot;&gt;Pull&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Fetch the remote’s copy of current branch and rebases it into the local copy. Uses git rebase instead of merge to integrate the branches.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git pull &lt;span class=&quot;nt&quot;&gt;--rebase&lt;/span&gt; &amp;lt;remote&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;push&quot;&gt;Push&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Forces the git push even if it results in a non-fast-forward merge. Do not use the –force flag unless you’re absolutely sure you know what you’re doing.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git push &amp;lt;remote&amp;gt; &lt;span class=&quot;nt&quot;&gt;--force&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Push all of your local branches to the specified remote&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git push &amp;lt;remote&amp;gt; &lt;span class=&quot;nt&quot;&gt;--all&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Tags aren’t automatically pushed when you push a branch or use the –all flag. The –tags flag sends all of your local tags to the remote repo&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git push &amp;lt;remote&amp;gt; &lt;span class=&quot;nt&quot;&gt;--tags&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h5 id=&quot;tags&quot;&gt;Tags&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;List the local repository’s tags.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git tag&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;List the local repository’s tags that match a pattern. Use a * as a wildcard.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git tag &lt;span class=&quot;nt&quot;&gt;-l&lt;/span&gt; &amp;lt;pattern&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Creates a lightweight tag named &lt;example&gt; as a reference in .git/refs/tags/&lt;example&gt;, which points to the current commit.&lt;/example&gt;&lt;/example&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git tag &amp;lt;example&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Creates an (unsigned) annotated tag named &lt;example&gt; as a reference in .git/refs/tags/&lt;example&gt; with the attached message &lt;message&gt;, which points to the current commit.&lt;/message&gt;&lt;/example&gt;&lt;/example&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git tag &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &amp;lt;example&amp;gt; &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; &amp;lt;message&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Delete all tags in a repo on origin.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git tag &lt;span class=&quot;nt&quot;&gt;-l&lt;/span&gt; | xargs &lt;span class=&quot;nt&quot;&gt;-n&lt;/span&gt; 1 git push &lt;span class=&quot;nt&quot;&gt;--delete&lt;/span&gt; origin&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Delete all tags in a repo locally.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;    git tag | xargs git tag &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h6 id=&quot;thanks-atlassian-for-many-of-these-from-their-awesome-cheat-sheet&quot;&gt;Thanks Atlassian for many of these, from their awesome &lt;a href=&quot;https://www.atlassian.com/git/tutorials/atlassian-git-cheatsheet&quot;&gt;Cheat Sheet&lt;/a&gt;&lt;/h6&gt;</content><author><name></name></author><category term="post" /><category term="tips" /><category term="tricks" /><category term="git" /><summary type="html">Some, hopefully, helpful tips &amp; tricks for Git.</summary></entry><entry><title type="html">Phaser-CE NPM Webpack TypeScript Starter Project</title><link href="https://rroylance.github.io/phaser-npm-webpack-typescript-starter-project/" rel="alternate" type="text/html" title="Phaser-CE NPM Webpack TypeScript Starter Project" /><published>2017-02-01T00:00:00+00:00</published><updated>2017-02-01T00:00:00+00:00</updated><id>https://rroylance.github.io/phaser-npm-webpack-typescript-starter-project</id><content type="html" xml:base="https://rroylance.github.io/phaser-npm-webpack-typescript-starter-project/">&lt;h1 id=&quot;phaser-ce-npm-webpack-typescript-starter-project-catchy-name-isnt-it&quot;&gt;Phaser-CE NPM Webpack TypeScript Starter Project (catchy name, isn’t it?)&lt;/h1&gt;
&lt;h5 id=&quot;needs-a-little-updating-at-the-moment-but-shouldnt-be-too-much&quot;&gt;Needs a little updating at the moment, but shouldn’t be too much.&lt;/h5&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/package-json/v/rroylance/phaser-ce-npm-webpack-typescript-starter-project.svg?style=for-the-badge&quot; alt=&quot;GitHub package version&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/commits/master&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/last-commit/rroylance/phaser-ce-npm-webpack-typescript-starter-project.svg?style=for-the-badge&quot; alt=&quot;GitHub last commit&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/watchers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/watchers/rroylance/phaser-ce-npm-webpack-typescript-starter-project.svg?style=for-the-badge&quot; alt=&quot;GitHub watchers&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/rroylance/phaser-ce-npm-webpack-typescript-starter-project.svg?style=for-the-badge&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/network&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/forks/rroylance/phaser-ce-npm-webpack-typescript-starter-project.svg?style=for-the-badge&quot; alt=&quot;GitHub forks&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/issues&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues/rroylance/phaser-ce-npm-webpack-typescript-starter-project.svg?style=for-the-badge&quot; alt=&quot;GitHub issues&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/pulls&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/issues-pr/rroylance/phaser-ce-npm-webpack-typescript-starter-project.svg?style=for-the-badge&quot; alt=&quot;GitHub pull requests&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://david-dm.org/rroylance/phaser-ce-npm-webpack-typescript-starter-project&quot;&gt;&lt;img src=&quot;http://img.shields.io/david/rroylance/phaser-ce-npm-webpack-typescript-starter-project.svg?style=for-the-badge&quot; alt=&quot;David&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/master/README_HEADER.png&quot; alt=&quot;PhaserNPMWebpackTypeScriptStarterProject&quot; /&gt;&lt;/p&gt;

&lt;h5 id=&quot;hit-the-ground-running-and-make-some-great-games&quot;&gt;Hit the ground running and make some great games!&lt;/h5&gt;

&lt;h6 id=&quot;if-you-use-this-templatestarter-project-in-any-capacity-id-love-to-hear-about-your-experience-with-it-whether-you-continued-with-it-or-decided-not-to-i-really-want-to-hear-why-you-made-your-decision&quot;&gt;If you use this template/starter project in any capacity; I’d love to hear about your experience with it. Whether you continued with it or decided not to (I really want to hear why you made your decision).&lt;/h6&gt;

&lt;h1 id=&quot;features&quot;&gt;Features:&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;Phaser-CE 2.11.1 (npm module, no having to download the library separately…)&lt;/li&gt;
  &lt;li&gt;TypeScript + TSLint&lt;/li&gt;
  &lt;li&gt;3 States (Boot, Preloader, Title) showing transition between states and where some things should be done and how a TypeScript state looks&lt;/li&gt;
  &lt;li&gt;Google Web Font loader&lt;/li&gt;
  &lt;li&gt;Webpack&lt;/li&gt;
  &lt;li&gt;Separate Development and Distribution builds&lt;/li&gt;
  &lt;li&gt;Live server (builds and reloads the browser on changes)&lt;/li&gt;
  &lt;li&gt;No hassle asset management requiring no code, on your part, to load and parse assets
    &lt;ul&gt;
      &lt;li&gt;Assets are required and hashed via webpack, you can now guarantee that when you push an update, everyone will get the new files and not cached ones&lt;/li&gt;
      &lt;li&gt;Assets class created automatically allowing you to access all the assets and their frames and sprites (in the case of Atlases and Audiosprites) in a compiler validating way!&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Setting up the game size and scaling through a script that does it all for you
    &lt;ul&gt;
      &lt;li&gt;Automatic template background&lt;/li&gt;
      &lt;li&gt;Sets up the size the game so that it is scaled only when absolutely necessary&lt;/li&gt;
      &lt;li&gt;Refer to src/utils/utils.ts for an explanation on the background_template and the sizing/scaling style&lt;/li&gt;
      &lt;li&gt;Landscape and Portrait support&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;todo-in-no-particular-order&quot;&gt;TODO (in no particular order):&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Clean up generateAssetsClass.js&lt;/li&gt;
  &lt;li&gt;Get Custom/Local Web Fonts hashed by Webpack (to avoid cache issues)
    &lt;ul&gt;
      &lt;li&gt;If anyone has experience webpacking font-face in css style web fonts and loading said fonts via webfontloader, let me know as I was having some trouble getting the font-face src to use the hashed assets.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Multiple resolution asset loader (@2x, @3x, etc…)&lt;/li&gt;
  &lt;li&gt;Yeoman Generator&lt;/li&gt;
  &lt;li&gt;Optional Analytics integration&lt;/li&gt;
  &lt;li&gt;Optional Cordova integration for iOS and Android builds&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;folder-structure&quot;&gt;Folder Structure:&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;assets/&lt;/strong&gt; – This is where your assets that are processed when building goes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;assets_raw/&lt;/strong&gt; – This folder is NOT processed at all and is merely an organizational folder (I use it for things like my individual images that get compiled into a spritesheet, individual sounds that get compiled into an audiosprite, etc…)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;dist/&lt;/strong&gt; – This is where the built game will go&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;node_modules/&lt;/strong&gt; – This is where the node modules required for the game will be put with npm install&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;scripts/&lt;/strong&gt; – This is where node scripts go&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;src/&lt;/strong&gt; – This is where all the games code goes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;templates/&lt;/strong&gt; – This is where the html template that gets built by Webpack goes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;.gitignore&lt;/strong&gt; – List of files and folders that are ignored by git&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;.npmrc&lt;/strong&gt; – List of some project wide npm settings&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;electron-main.js&lt;/strong&gt; – Entry point and application life controller for electron builds&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;package.json&lt;/strong&gt; – Node config for the project&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;README.md&lt;/strong&gt; – This is the README displayed ont he GitHub page&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;README_HEADER.png&lt;/strong&gt; – This is just the header image for the GitHub README&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;tsconfig.json&lt;/strong&gt; – List of some TypeScript settings&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;tslint.json&lt;/strong&gt; – List of some TypeScript Linting rules&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;webpack.dev.config.js&lt;/strong&gt; – Webpack config for the DEV build&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;webpack.dist.config.js&lt;/strong&gt; – Webpack config for the DIST build&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;setup&quot;&gt;Setup:&lt;/h1&gt;
&lt;p&gt;To use this you’ll need to install a few things before you have a working copy of the project. But once you have node.js installed it only takes a few seconds and a couple commands to get going.&lt;/p&gt;

&lt;h2 id=&quot;0-install-git&quot;&gt;0. Install Git:&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://git-scm.com/book/en/v2/Getting-Started-Installing-Git&quot;&gt;GIT Installation Instructions and Links&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;1-download-or-clone-this-repo&quot;&gt;1. Download or Clone this repo:&lt;/h2&gt;

&lt;h4 id=&quot;download&quot;&gt;Download:&lt;/h4&gt;

&lt;p&gt;Download the latest zip/tar.gz from &lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/releases&quot;&gt;GitHub Releases&lt;/a&gt;, extract it to where you want your project to be.&lt;/p&gt;

&lt;h5 id=&quot;if-you-want-a-clean-project-ready-for-you-to-just-start-your-own-game-and-not-have-to-worry-about-cleaning-up-the-examples-and-samples-from-the-v1110-release-just-download-the-v1110-fresh-release-instead&quot;&gt;If you want a clean project ready for you to just start your own game and not have to worry about cleaning up the examples and samples from the v1.11.0 release, just download the v1.11.0-fresh release instead.&lt;/h5&gt;

&lt;h4 id=&quot;clone-mustve-completed-step-0-first&quot;&gt;Clone (must’ve completed Step 0 first):&lt;/h4&gt;

&lt;p&gt;Navigate into your workspace directory.&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git clone https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project.git&lt;/code&gt;&lt;/p&gt;

&lt;h5 id=&quot;if-you-want-a-clean-project-ready-for-you-to-just-start-your-own-game-and-not-have-to-worry-about-cleaning-up-the-examples-and-samples-from-the-master-branch-just-pull-the-fresh-start-branch-instead-of-master&quot;&gt;If you want a clean project ready for you to just start your own game and not have to worry about cleaning up the examples and samples from the master branch, just pull the ‘fresh-start’ branch instead of master.&lt;/h5&gt;

&lt;h2 id=&quot;2-install-nodejs-and-npm-npm-is-included-and-installed-with-nodejs&quot;&gt;2. Install node.js and npm (npm is included and installed with node.js):&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://nodejs.org/en/&quot;&gt;NodeJS Installation Instructions and Links&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;3-install-dependencies&quot;&gt;3. Install dependencies:&lt;/h2&gt;

&lt;p&gt;Navigate to the cloned repo’s directory.&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm install&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;4-run-the-dev-server&quot;&gt;4. Run the dev server:&lt;/h2&gt;

&lt;p&gt;Run to use the dev build while developing:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run server:dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Run to use the dist build while developing&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run server:dist&lt;/code&gt;&lt;/p&gt;

&lt;h6 id=&quot;the-only-real-reason-i-can-think-of-to-use-the-dist-server-is-if-the-minification-process-is-breaking-something-in-your-game-and-you-need-to-test-using-the-minified-version-or-something-you-excluded-with-the-debug-flag-shouldnt-have-been-excluded&quot;&gt;The only real reason I can think of to use the dist server is if the minification process is breaking something in your game and you need to test using the minified version, or something you excluded with the DEBUG flag shouldn’t have been excluded.&lt;/h6&gt;

&lt;p&gt;This will run a server that serves your built game straight to the browser and will be built and reloaded automatically anytime a change is detected.&lt;/p&gt;

&lt;h2 id=&quot;build-for-testingdevelopingdebugging&quot;&gt;Build for testing/developing/debugging:&lt;/h2&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run build:dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This will build the game with a few caveats;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;A compile time flag, DEBUG, set to true; allowing you to include or not include certain code depending on if it’s DEBUG build or not.&lt;/li&gt;
  &lt;li&gt;The resulting game.js will not be minified&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;build-for-release&quot;&gt;Build for release:&lt;/h2&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run build:dist&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This will build the game with a few caveats;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;The compile time flag, DEBUG, set to false; allowing you to include or not include certain code depending on if it’s DEBUG build or not.&lt;/li&gt;
  &lt;li&gt;The resulting game.min.js will be minified&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;generate-assets-class&quot;&gt;Generate Assets Class:&lt;/h2&gt;

&lt;p&gt;This project will manage your assets for you! All you need to do is drop your assets in assets/ (subdirectories do not matter) and run (you need to run this manually if you change assets while the server is running, otherwise it’s run automatically when running a build);&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run assets&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or (if your dev GOOGLE_WEB_FONTS is different from your dist);&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run assets:dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;src/assets.ts will be generated which contains sections for all your asset types (the generator is smart enough to distinguish what assets are what !) and classes for every asset, it will also generate an enum containing every frame and sprite in Atlases and AudioSprites respectively!&lt;/p&gt;

&lt;p&gt;No need to remember keys, frames, or sprites anymore; which means no more typos resulting in asset not found errors. Just use, for example, Assets.Images.ImagesBackgroundTemplate.getName() or Assets.Audiosprites.AudiospritesSfx.Sprites.Laser1. This also allows the compiler to warn you if you are trying to use an asset that doesn’t exist!&lt;/p&gt;

&lt;p&gt;The preloader will use this class to load everything, &lt;strong&gt;you don’t have to do anything in code to get your assets loading and available (except for any assets you need for your loading screen…)&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Currently supports the following (if you need a new extension or find an issue with one of your assets not exporting correctly, just let me know);&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Images:
    &lt;ul&gt;
      &lt;li&gt;bmp, gif, jpg, jpeg, png, webp&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Spritesheets:
    &lt;ul&gt;
      &lt;li&gt;bmp, gif, jpg, jpeg, png, webp&lt;/li&gt;
      &lt;li&gt;[frameWidth, frameHeight, frameMax, margin, spacing] - frameWidth &amp;amp; frameHeight are required.&lt;/li&gt;
      &lt;li&gt;Example: spritesheet.[100, 100].png&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Atlases:
    &lt;ul&gt;
      &lt;li&gt;bmp, gif, jpg, jpeg, png, webp&lt;/li&gt;
      &lt;li&gt;json (the loader figures out if it’s a JSONArray or JSONHash, no need to remember or care), xml&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Audio:
    &lt;ul&gt;
      &lt;li&gt;aac, ac3, caf, flac, m4a, mp3, mp4, ogg, wav, webm&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Audiosprites:
    &lt;ul&gt;
      &lt;li&gt;aac, ac3, caf, flac, m4a, mp3, mp4, ogg, wav, webm&lt;/li&gt;
      &lt;li&gt;json&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Local Fonts:
    &lt;ul&gt;
      &lt;li&gt;eot, otf, svg, ttf, woff, woff2&lt;/li&gt;
      &lt;li&gt;css&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Bitmap Font:
    &lt;ul&gt;
      &lt;li&gt;bmp, gif, jpg, jpeg, png, webp&lt;/li&gt;
      &lt;li&gt;xml, fnt&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;JSON:
    &lt;ul&gt;
      &lt;li&gt;json&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Tilemap JSON:
    &lt;ul&gt;
      &lt;li&gt;json&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;XML:
    &lt;ul&gt;
      &lt;li&gt;xml&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Text:
    &lt;ul&gt;
      &lt;li&gt;txt&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Scripts:
    &lt;ul&gt;
      &lt;li&gt;js&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Shaders:
    &lt;ul&gt;
      &lt;li&gt;frag&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which version of the audio to load is defined in the webpack.dev.config.js and webpack.dist.config.js under the DefinePlugin ‘SOUND_EXTENSIONS_PREFERENCE’ section;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Currently I set the order to: webm, ogg, m4a, mp3, aac, ac3, caf, flac, mp4, wav&lt;/li&gt;
  &lt;li&gt;The loader will load the audio using this as the preference; the first supported file that is found is used using the order of this list as most preferred to least preferred&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;change-the-game-size-and-generate-a-template-background&quot;&gt;Change the game size and generate a template background:&lt;/h2&gt;

&lt;p&gt;Note: This is automatically run after running npm install, however you may want to run it again (if you deleted the background.png and want it back, or if you want to change the game size from the default).&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run setupGameSize&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This will run a script that will generate a template background showing the safe and decoration area of your game when it is sized or scaled for different devices as well as updating a couple global values in the webpack configs so that the game knows about the new size when built.&lt;/p&gt;

&lt;p&gt;If you do not want the default 800 x 500 with this scaling style, run the following and all will be updated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DO NOT MODIFY THE (DEFAULT or MAX)_GAME_(WIDTH or HEIGHT) OR SCALE_MODE PLUGINS DEFINED IN THE WEBPACK CONFIGS, OR THIS WILL NOT WORK&lt;/strong&gt;;&lt;/p&gt;

&lt;p&gt;Run the following for descriptions and default values for all possible options;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run setupGameSize -- -h&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Run the following specifying some or all of the options;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run setupGameSize -- --width [whatever width you want] --height [whatever height you want] --aspect-ratio [If you want a different default aspect ratio] --scale-mode [one of the Phaser Scale Modes] [--no-png]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The ‘–’ after setupGameSize is not a mistake; it is required to pass arguments along to the script.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can either provide the width &lt;strong&gt;and&lt;/strong&gt; height (defaults 800 and 500 respectively) and as long as they result in an aspect ratio of what’s set in the script or by –aspect-ratio, or you can provide the width &lt;strong&gt;or&lt;/strong&gt; height and the one you didn’t provide will be calculated for you using the aspect ratio of what’s set in the script or by –aspect-ratio.&lt;/p&gt;

&lt;p&gt;Provide –aspect-ratio to change the desired aspect ratio (default 1.6 or 16:10). The script checks to make sure the width and height match the aspect ratio so you get warned early about an incorrect dimension (maximum precision of 3 decimal places).&lt;/p&gt;

&lt;p&gt;Providing –scale-mode will set this.game.scale.scaleMode to the corresponding Phaser.ScaleManager.SCALE_MODE (default USER_SCALE).&lt;/p&gt;

&lt;p&gt;If you do not want the background to be created just add the flag –no-png (not putting this will let the background generate).&lt;/p&gt;

&lt;h2 id=&quot;google-web-fonts&quot;&gt;Google Web Fonts:&lt;/h2&gt;

&lt;p&gt;Add your desired Google Web Fonts to the webpack.dev.config.js and/or webpack.dist.config.js in the DefinePlugin ‘GOOGLE_WEB_FONTS’ section and they will then be loaded and available via Assets.GoogleWebFonts.&lt;/p&gt;

&lt;h2 id=&quot;customlocal-web-fonts&quot;&gt;Custom/Local Web Fonts:&lt;/h2&gt;

&lt;p&gt;Add your desired Custom/Local Web Fonts to your assets folder and they will then be loaded and available via Assets.CustomWebFonts&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;The various font files, and the css MUST share the same name&lt;/li&gt;
  &lt;li&gt;One CSS file per font&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I recommend one of the following generators for generating your font files;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.fontsquirrel.com/tools/webfont-generator&quot;&gt;Font Squirrel Webfont Generator&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://everythingfonts.com/font-face&quot;&gt;Everything Fonts font-face generator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;plugin-management&quot;&gt;Plugin management:&lt;/h2&gt;

&lt;p&gt;Drop the .js file (or .min.js) of the plugin in the assets/script folder.
Your script(s) will be loaded in the Preloader state with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AssetUtils.Loader.loadAllAssets&lt;/code&gt; call.
If you want the typescript support, you need to drop the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.d.ts&lt;/code&gt; file somewhere (not in assets) and add it to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;files&lt;/code&gt; array in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tsconfig.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here is an example of how to include your plugin in a state:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;export default class MyState extends Phaser.State {

    myPlugin: Phaser.Plugin.MyPlugin;

    public preload(): void {
        this.myPlugin = new Phaser.Plugin.MyPlugin(this.game);
        this.game.plugins.add(this.myPlugin as any);
    }
}

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;desktop-build-via-electron&quot;&gt;Desktop Build via Electron&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Note that I am not, currently, actively using this. So if you do, I’d appreciate if you could pass any changes you make or anything you need out of it. Although I’m not using it, I will still support it as best I can.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can test your game via Electron by running;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run electron:dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run electron:dist&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To build the dev or dist version of your game, respectively, and then open up your game in an Electron instance.&lt;/p&gt;

&lt;h2 id=&quot;package-desktop-app-via-electron&quot;&gt;Package Desktop App via Electron&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Note that I am not, currently, actively using this. So if you do, I’d appreciate if you could pass any changes you make or anything you need out of it. Although I’m not using it, I will still support it as best I can.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can package your game for Windows (win32 ia32/x64), OSX (darwin ia32/x64), Mac App Store (mas ia32/x64), Linux (linux ia32/x64/armv7l) using the following script;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run electron:pack:dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run electron:pack:dist&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To package the dev or dist version of your game, respectively, for the current platform you are on. You can provide many options to build specific platforms, for specific architectures, provide an icon, etc.&lt;/p&gt;

&lt;p&gt;Refer to the &lt;a href=&quot;https://github.com/electron-userland/electron-packager/blob/master/docs/api.md&quot;&gt;API Documentation&lt;/a&gt; for a full list and details; I’m using it kind of oddly in that I’m using the API from the command line and not the command line version… to provide options appaend ‘ – ‘ to the npm run command and then also append ‘–’ to the option name and then either put the value after a space or ‘=’, either way. Examples;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run electron:pack:dist -- --platform win32 --arch=ia32 //32 bit Windows exe&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;npm run electron:pack:dist -- --platform win32,darwin --arch=ia32,x64 //32 and 64 bit Windows exe and OSX app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;All builds will be in the builds/ folder in appropriately named folders.&lt;/p&gt;

&lt;h6 id=&quot;note-that-building-for-windows-from-a-non-windows-device-requires-a--little-bit-of-extra-setup-refer-to-building-windows-apps-from-non-windows-platforms&quot;&gt;Note that building for Windows from a non windows device requires a  little bit of extra setup; refer to &lt;a href=&quot;https://github.com/electron-userland/electron-packager#building-windows-apps-from-non-windows-platforms&quot;&gt;Building Windows apps from non-Windows platforms&lt;/a&gt;.&lt;/h6&gt;

&lt;h6 id=&quot;also-note-that-for-osx--mas-target-bundles-the-app-bundle-can-only-be-signed-when-building-on-a-host-osx-platform&quot;&gt;Also note that for OSX / MAS target bundles: the .app bundle can only be signed when building on a host OSX platform.&lt;/h6&gt;

&lt;h2 id=&quot;bugsissues&quot;&gt;Bugs/Issues?&lt;/h2&gt;

&lt;p&gt;If you have any issues please let me know via &lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/issues&quot;&gt;GitHub Issues&lt;/a&gt;!&lt;/p&gt;

&lt;h2 id=&quot;requestssuggestions&quot;&gt;Requests/Suggestions?&lt;/h2&gt;

&lt;p&gt;If you have any requests or suggestion for the project please let me know via &lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/issues&quot;&gt;GitHub Issues&lt;/a&gt;!&lt;/p&gt;

&lt;h2 id=&quot;contributing-code&quot;&gt;Contributing Code?&lt;/h2&gt;

&lt;p&gt;If you would like to have some of your code included; whether a new feature, a cleaned up feature, a bugfix, or whatever. Please open up a &lt;a href=&quot;https://github.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/pulls&quot;&gt;Pull Request&lt;/a&gt;!&lt;/p&gt;

&lt;h2 id=&quot;games-made-with-this-project-click-the-images-to-play&quot;&gt;Games made with this project (Click the images to play!)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://enzotesta.xyz/games/doublepong/index.html&quot;&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/master/america-first-icon.png&quot; height=&quot;165&quot; width=&quot;264&quot; align=&quot;left&quot; /&gt;
&lt;/a&gt;
Game: America First: The Game&lt;/p&gt;

&lt;p&gt;Author: Enzo Testa&lt;/p&gt;

&lt;p&gt;Github Repo: https://github.com/Shrakka/DoublePong&lt;/p&gt;

&lt;p&gt;Description: This is Enzo’s first game! Well done double pong demo.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://codinginspace.github.io/CoffeeConundrum/&quot;&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/master/coffee-conundrum-icon.png&quot; height=&quot;165&quot; width=&quot;264&quot; align=&quot;left&quot; /&gt;
&lt;/a&gt;
Game: Coffee Conundrum&lt;/p&gt;

&lt;p&gt;Author: Jonathan Grangien&lt;/p&gt;

&lt;p&gt;Github Repo: https://github.com/codingInSpace/CoffeeConundrum&lt;/p&gt;

&lt;p&gt;Description: Cool little SHMUP. Code looks well done and nice and clean and well thought out. Nice job Jonathan!&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://pong.fastner-it.de/&quot;&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/master/p0ng-icon.png&quot; height=&quot;165&quot; width=&quot;263&quot; align=&quot;left&quot; /&gt;
&lt;/a&gt;
Game: P0ng&lt;/p&gt;

&lt;p&gt;Author: ProfitWarning&lt;/p&gt;

&lt;p&gt;Github Repo: https://github.com/ProfitWarning/p0ng&lt;/p&gt;

&lt;p&gt;Description: Nice 2-player pong clone.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://robertgirhiny.com/projects/great-run/&quot;&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/rroylance/phaser-ce-npm-webpack-typescript-starter-project/master/dora-great-run-icon.jpg&quot; height=&quot;165&quot; width=&quot;263&quot; align=&quot;left&quot; /&gt;
&lt;/a&gt;
Game: Great Run&lt;/p&gt;

&lt;p&gt;Author: Róbert Girhiny&lt;/p&gt;

&lt;p&gt;Github Repo: https://github.com/robcaa/great-run&lt;/p&gt;

&lt;p&gt;Description: Nice Dora The Explorer themed platformer/runner for kids.&lt;/p&gt;</content><author><name></name></author><category term="project" /><category term="phaser" /><category term="typescript" /><category term="npm" /><category term="webpack" /><category term="live-server" /><category term="template" /><category term="boilerplate" /><category term="node" /><category term="game" /><category term="electron" /><category term="app" /><category term="desktop" /><category term="mobile" /><category term="windows" /><category term="osx" /><category term="mac" /><category term="linux" /><category term="loader" /><summary type="html">Hit the ground running and make some great games with my Phaser-CE NPM Webpack TypeScript Starter Project!</summary></entry><entry><title type="html">Phaser Tips &amp;amp; Tricks</title><link href="https://rroylance.github.io/phaser-tips-post/" rel="alternate" type="text/html" title="Phaser Tips &amp; Tricks" /><published>2016-05-13T00:00:00+00:00</published><updated>2016-05-13T00:00:00+00:00</updated><id>https://rroylance.github.io/phaser-tips-post</id><content type="html" xml:base="https://rroylance.github.io/phaser-tips-post/">&lt;h5 id=&quot;do-you-have-a-tip-youd-like-added--post-in-the-comments-below-or-send-me-an-email&quot;&gt;Do you have a tip you’d like added ? Post in the comments below or &lt;a href=&quot;mailto:roylance.richard+phasertips@gmail.com?Subject=Phaser%20Tip%20Suggestion&quot; title=&quot;EMAIL ME!&quot;&gt;send me an email&lt;/a&gt;.&lt;/h5&gt;

&lt;hr /&gt;

&lt;h4 id=&quot;what-is-phaser&quot;&gt;What is Phaser?&lt;/h4&gt;

&lt;p&gt;Phaser is a fast, free and fun open source HTML5 game framework. It uses a custom build of &lt;a href=&quot;https://github.com/GoodBoyDigital/pixi.js/&quot;&gt;Pixi.js&lt;/a&gt; for WebGL and Canvas rendering across desktop and mobile web browsers. Games can be compiled to iOS, Android and desktop apps via 3rd party tools like Cocoon, Cordova and Electron.&lt;/p&gt;

&lt;p&gt;Along with the fantastic open source community Phaser is actively developed and maintained by &lt;a href=&quot;http://www.photonstorm.com&quot;&gt;Photon Storm Limited&lt;/a&gt;. As a result of rapid support and a developer friendly API Phaser is currently one of the &lt;a href=&quot;https://github.com/showcases/javascript-game-engines&quot;&gt;most starred&lt;/a&gt; game frameworks on GitHub.&lt;/p&gt;

&lt;p&gt;Thousands of developers worldwide use it. From indies and multi-national digital agencies to schools and Universities. Each creating their own incredible games. Grab the source and join in the fun!&lt;/p&gt;

&lt;h4 id=&quot;on-to-the-tips&quot;&gt;On to the Tips…&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;When using tweens, set the value to a string instead of a number to make the tween relative to the current value.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;style&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;font&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;65px Arial&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;fill&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;#FF0000&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;align&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;center&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;world&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;centerX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;world&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;centerY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;PHASER!&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;anchor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;alpha&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;c1&quot;&gt;//This will tween the alpha to 1 since the alpha starts at 0.5 and the value was used as a string.&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tween&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;0.5&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Linear&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;//This will do nothing, since the alpha is already 0.5.&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tween&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.5&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Linear&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;//This will do tween the alpha to 1, but is more verbose than just using the string.&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tween&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;alpha&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.5&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Linear&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;When working with pixel art set roundPixels to true to prevent Phaser from rendering graphics at sub pixel locations (which causes blurring)&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;renderer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;renderSession&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;roundPixels&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;When you need to set a property on all children in a Group, don’t use a loop, simply use setAll.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;group&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;setAll&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;property.evenSubPropertiesAreSupported&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Need the benefits of using a sprite as a container and a group just wont cut it? Use a blank sprite!&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;    &lt;span class=&quot;c1&quot;&gt;//This leaves the sprite frame, sprite sheet ID, and parent group blank;&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;//Adding the sprite to the world.&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

    &lt;span class=&quot;c1&quot;&gt;//This leaves the sprite frame, and sprite sheet ID blank;&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;//Adds the sprite to the specified group.&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;undefined&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;undefined&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;group&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Destroying an object in the onComplete callback of a tween being performed on the object will cause errors. You can either kill the object (does not destroy the object or remove it from memory), or delay the destroy call by one frame using pendingDestroy.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;    &lt;span class=&quot;c1&quot;&gt;//Causes errors&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tween&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;Linear&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;onComplete&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;addOnce&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;destroy&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

    &lt;span class=&quot;c1&quot;&gt;//.kill method&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tween&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;Linear&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;onComplete&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;addOnce&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;kill&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

    &lt;span class=&quot;c1&quot;&gt;//.pendingDestroy method&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tween&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;Linear&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;onComplete&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;addOnce&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;pendingDestroy&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;

    &lt;span class=&quot;c1&quot;&gt;//or&lt;/span&gt;

    &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;tween&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alpha&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;Linear&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;onComplete&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;addOnce&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;pendingDestroy&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;sprite&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Have a full screen background? Set Phaser.Game.clearBeforeRender to false to get rid of the un-needed clear screen draw call.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;clearBeforeRender&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Making a production build of your game? Disable Phaser.Debug to get rid of the un-needed empty texture draw call (Even if you are not using Phaser.Debug at all (which you should never do in production anyway) an empty texture is drawn.)&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;config&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;800&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;600&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;enableDebug&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// this flag right here!&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
    
    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;game&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Phaser&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Game&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h6 id=&quot;doing-the-previous-2-tips-you-can-possibly-get-your-game-down-to-a-single-draw-call-without-them-the-minimum-draw-calls-you-can-get-is-3&quot;&gt;Doing the previous 2 tips, you can possibly get your game down to a single draw call! Without them the minimum draw calls you can get is 3.&lt;/h6&gt;</content><author><name></name></author><category term="post" /><category term="tips" /><category term="tricks" /><category term="phaser" /><category term="javascript" /><category term="code" /><summary type="html">Some, hopefully, helpful tips &amp; tricks for Phaser.</summary></entry><entry><title type="html">Setting up Acer CB3-531-C4A5 Chromebook for development</title><link href="https://rroylance.github.io/setting-up-chromebook-for-dev-post/" rel="alternate" type="text/html" title="Setting up Acer CB3-531-C4A5 Chromebook for development" /><published>2016-05-13T00:00:00+00:00</published><updated>2016-05-13T00:00:00+00:00</updated><id>https://rroylance.github.io/setting-up-chromebook-for-dev-post</id><content type="html" xml:base="https://rroylance.github.io/setting-up-chromebook-for-dev-post/">&lt;p&gt;Back at the end of March I saw the &lt;a href=&quot;http://www.newegg.ca/Product/Product.aspx?Item=N82E16834315227&quot;&gt;Acer CB3-531-C4A5 Chromebook was on sale on Newegg&lt;/a&gt; for the pretty decent price of $170 CAD (&lt;del&gt;as of writing this, still on sale for $200 CAD&lt;/del&gt; now out of stock), so I thought ‘What the hell, let’s see what we can do with these Chromebook things’. I was pleasently surprised and love my Chromebook, this post will take you step by step from factory fresh to running the latest and greatest Ubuntu 16.04 LTS codename ‘Xenial Xerus’ along side the latest Chrome OS with the ability to run Ubuntu Desktop (XFCE in this case) or even specific programs in a window within Chrome OS !&lt;/p&gt;

&lt;h4 id=&quot;step-1-set-your-chromebook-to-developer-mode&quot;&gt;Step 1: Set your Chromebook to Developer Mode&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Press and hold the &lt;strong&gt;esc+refresh&lt;/strong&gt; keys, then press the &lt;strong&gt;power&lt;/strong&gt; key (while still holding the other two). This will reboot your Chromebook into Recovery Mode.&lt;/li&gt;
  &lt;li&gt;As soon as you see Recovery Mode pop up (the screen with the yellow exclamation point) press &lt;strong&gt;ctrl+d&lt;/strong&gt;. This will bring up a prompt asking if you want to turn on Developer Mode.&lt;/li&gt;
  &lt;li&gt;Press &lt;strong&gt;enter&lt;/strong&gt; to continue, then give it some time. It’ll pop up with a new screen for a few moments, then reboot and go through the process of enabling Developer Mode.&lt;/li&gt;
  &lt;li&gt;When it’s done, it will return to the screen with the red exclamation point. Press &lt;strong&gt;ctrl+d&lt;/strong&gt; or leave it alone for 30 seconds and it will boot into Chrome OS, now in Developer Mode.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id=&quot;step-2-install-crouton-extension&quot;&gt;Step 2: Install crouton extension&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Navigate to &lt;a href=&quot;https://goo.gl/OVQOEt&quot;&gt;crouton integration Extension @ Chrome Webstore&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Click ‘+ ADD TO CHROME’ button in the top left of the popup&lt;/li&gt;
  &lt;li&gt;Click ‘Add extension’ in the next popup&lt;/li&gt;
  &lt;li&gt;After a few seconds you should see a new page open up saying ‘Thank you for installing the crouton extension!’&lt;/li&gt;
  &lt;li&gt;You can now close those tabs and confirm that the extension is running by looking for the &lt;strong&gt;C icon&lt;/strong&gt; in the top right of Chrome.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The crouton integration extension is now installed and we can move on to actually installing Ubuntu.&lt;/p&gt;

&lt;figure class=&quot;half&quot;&gt;
    
    &lt;a href=&quot;../assets/img/step2-1.png&quot;&gt;&lt;img src=&quot;../assets/img/step2-1.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step2-2.png&quot;&gt;&lt;img src=&quot;../assets/img/step2-2.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step2-3.png&quot;&gt;&lt;img src=&quot;../assets/img/step2-3.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step2-4.png&quot;&gt;&lt;img src=&quot;../assets/img/step2-4.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h5 id=&quot;note-from-this-point-on-i-assume-that-you-havent-changed-your-default-download-location-your-crouton-installer-script-is-located-in-downloads&quot;&gt;Note: From this point on I assume that you haven’t changed your default download location/ your crouton installer script is located in Downloads&lt;/h5&gt;

&lt;h5 id=&quot;note-2-i-recommend-having-a-usb-keyboard-and-mouse-handy-as-once-crouton-nears-completion-your-chromebooks-keyboard-and-touchpad-may-be-disabled-due-to-a-recent-bug-in-chromeos-plugging-in-the-usb-keyboard-and-mouse-once-your-input-is-locked-will-allow-you-to-complete-the-installation-at-which-point-you-can-restart-your-chromebook-and-input-will-be-re-enabled&quot;&gt;Note 2: I recommend having a USB keyboard and mouse handy; as once crouton nears completion your Chromebooks keyboard and touchpad may be disabled due to a recent bug in ChromeOS. Plugging in the USB keyboard and mouse once your input is locked will allow you to complete the installation; at which point you can restart your Chromebook and input will be re-enabled.&lt;/h5&gt;

&lt;h4 id=&quot;step-3-download-crouton&quot;&gt;Step 3: Download crouton&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Navigate to &lt;a href=&quot;https://goo.gl/fd3zc&quot;&gt;crouton download link&lt;/a&gt; which will save the crouton installer script to your Downloads folder.&lt;/li&gt;
&lt;/ol&gt;

&lt;figure&gt;
    
    &lt;a href=&quot;../assets/img/step3.png&quot;&gt;&lt;img src=&quot;../assets/img/step3.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4 id=&quot;step-4-install-ubuntu&quot;&gt;Step 4: Install Ubuntu&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Anywhere inside ChromeOS press &lt;strong&gt;ctrl+alt+t&lt;/strong&gt;; this opens up a crosh shell (Chrome OS developer shell).&lt;/li&gt;
  &lt;li&gt;Once the crosh shell is open type &lt;strong&gt;‘shell’&lt;/strong&gt; to get the shell prompt.&lt;/li&gt;
  &lt;li&gt;Next it’s time to start the installation of Ubuntu; type the command &lt;strong&gt;‘sudo sh ~/Downloads/crouton -r xenial -t xfce,xiwi’&lt;/strong&gt; and hit enter to start the process.
    &lt;ul&gt;
      &lt;li&gt;The &lt;strong&gt;‘-r’&lt;/strong&gt; in the command specifies what distribution you want to install. By default crouton will install an older LTS version, we want the latest and greatest.&lt;/li&gt;
      &lt;li&gt;The &lt;strong&gt;‘-t’&lt;/strong&gt; in the command specifies what targets to install; xfce is the desktop envioronment and xiwi is what allows us to run the Ubuntu desktop or applications in a window within ChromeOS.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;The installation will take a while; once it is done downloading and installing things it will prompt you for a username to use for Ubuntu. Enter whatever you want that to be and hit &lt;strong&gt;enter&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;You now need to enter your password for Ubuntu; note that you can’t not have a password, you must set something.&lt;/li&gt;
  &lt;li&gt;Give it another minute and once you see ‘chronos@localhost / $’ (the only green in the entire process) you’re all done and ready to use Ubuntu on your Chromebook!&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;third&quot;&gt;
    
    &lt;a href=&quot;../assets/img/step4-1.png&quot;&gt;&lt;img src=&quot;../assets/img/step4-1.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step4-2.png&quot;&gt;&lt;img src=&quot;../assets/img/step4-2.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step4-3.png&quot;&gt;&lt;img src=&quot;../assets/img/step4-3.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step4-4.png&quot;&gt;&lt;img src=&quot;../assets/img/step4-4.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step4-5.png&quot;&gt;&lt;img src=&quot;../assets/img/step4-5.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step4-6.png&quot;&gt;&lt;img src=&quot;../assets/img/step4-6.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step4-7.png&quot;&gt;&lt;img src=&quot;../assets/img/step4-7.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step4-8.png&quot;&gt;&lt;img src=&quot;../assets/img/step4-8.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4 id=&quot;step-5-setup-ubuntu&quot;&gt;Step 5: Setup Ubuntu&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Enter the command &lt;strong&gt;‘sudo startxfce4’&lt;/strong&gt;; this will start the xfce desktop environment that we installed.
    &lt;ul&gt;
      &lt;li&gt;You will need to open up the crosh shell, type &lt;strong&gt;‘shell’&lt;/strong&gt; and then &lt;strong&gt;‘sudo startxfce4’&lt;/strong&gt; everytime you reboot your Chromebook.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;After a second or two Ubuntu should now start up fullscreen; click &lt;strong&gt;‘Use default config’&lt;/strong&gt; on the popup that appears and wait until the desktop fully loads.&lt;/li&gt;
  &lt;li&gt;You can now click the &lt;strong&gt;fullscreen button on your Chromebook keybaord to put Ubuntu in windowed mode&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;While in windowed mode, or minimized, we can now confirm that the &lt;strong&gt;crouton integration extension&lt;/strong&gt; is functioning by looking at the &lt;strong&gt;C icon&lt;/strong&gt; in Chrome; there should be a 1 badge and clicking on it should show Chrome OS and xenial.&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;half&quot;&gt;
    
    &lt;a href=&quot;../assets/img/step5-1.png&quot;&gt;&lt;img src=&quot;../assets/img/step5-1.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step5-2.png&quot;&gt;&lt;img src=&quot;../assets/img/step5-2.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step5-3.png&quot;&gt;&lt;img src=&quot;../assets/img/step5-3.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step5-4.png&quot;&gt;&lt;img src=&quot;../assets/img/step5-4.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4 id=&quot;step-6-setup-git&quot;&gt;Step 6: Setup Git&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;In Ubuntu open up a terminal by clicking the icon on the dock on the bottom of the screen.&lt;/li&gt;
  &lt;li&gt;We are going to use apt to download and install git; first you need to run the command &lt;strong&gt;‘sudo apt-get update’&lt;/strong&gt; to update the list of available packages. You will need to type the password you set back in the crouton setup to run the command using sudo (which is necessary).&lt;/li&gt;
  &lt;li&gt;Once that completes type the command &lt;strong&gt;‘sudo apt-get install git-all’&lt;/strong&gt;; you do not need your password this time because you already authenticated this session in the update command.&lt;/li&gt;
  &lt;li&gt;Once that completes you now have git cli installed and almost ready to use.&lt;/li&gt;
  &lt;li&gt;Lastly you need to set your email and name in the git config; run the command &lt;strong&gt;‘git config –global user.email ‘your@email.com’‘&lt;/strong&gt; to set your email.&lt;/li&gt;
  &lt;li&gt;Now run the command &lt;strong&gt;‘git config –global user.name ‘Name’‘&lt;/strong&gt; to set your name. You are now ready to use git to your hearts content.&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;third&quot;&gt;
    
    &lt;a href=&quot;../assets/img/step6-1.png&quot;&gt;&lt;img src=&quot;../assets/img/step6-1.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step6-2.png&quot;&gt;&lt;img src=&quot;../assets/img/step6-2.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step6-3.png&quot;&gt;&lt;img src=&quot;../assets/img/step6-3.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step6-4.png&quot;&gt;&lt;img src=&quot;../assets/img/step6-4.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step6-5.png&quot;&gt;&lt;img src=&quot;../assets/img/step6-5.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step6-6.png&quot;&gt;&lt;img src=&quot;../assets/img/step6-6.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step6-7.png&quot;&gt;&lt;img src=&quot;../assets/img/step6-7.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4 id=&quot;step-7-download-sublime-text-3-clone-a-project-from-github-and-open-that-project-in-sublime-text&quot;&gt;Step 7: Download Sublime Text 3, clone a project from Github, and open that project in Sublime Text&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;We are going to use apt again to install Sublime Text 3; open up a terminal.&lt;/li&gt;
  &lt;li&gt;We need to add the repository that hosts the Sublime Text installer; so to start we need to install the command that allows us to add a repository to apt. Run the command &lt;strong&gt;‘sudo apt-get install software-properties-common python-software-properties’&lt;/strong&gt; 
2.1 Type &lt;strong&gt;‘Y’&lt;/strong&gt; then press &lt;strong&gt;‘enter’&lt;/strong&gt; when prompted.&lt;/li&gt;
  &lt;li&gt;Once that is complete run the command &lt;strong&gt;‘sudo add-apt-repository ppa:webupd8team/sublime-text-3’&lt;/strong&gt;
3.1 Press &lt;strong&gt;‘enter’&lt;/strong&gt; when prompted.&lt;/li&gt;
  &lt;li&gt;Now to actually install Sublime Text 3; run the comman &lt;strong&gt;‘sudo apt-get install sublime-text-installer’&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Sublime Text 3 is now installed; open the program from the &lt;strong&gt;Applications (top left of desktop) &amp;gt; Development &amp;gt; Sublime Text&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;For demonstration here, I’ll be cloning the repo for this site; start by navigating to whatever directory you want to store the project in, in this case Documents. Run the command &lt;strong&gt;‘cd ~/Documents/’&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Next clone the repo by running the command &lt;strong&gt;‘git clone https://github.com/rroylance/rroylance.github.io.git’&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Back in Sublime Text open the folder through &lt;strong&gt;‘File &amp;gt; Open folder… &amp;gt; username (on left pane) &amp;gt; then the the project folder &amp;gt; Open in bottom right of popup’&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Ready to go.&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;third&quot;&gt;
    
    &lt;a href=&quot;../assets/img/step7-1.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-1.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-2.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-2.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-3.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-3.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-4.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-4.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-5.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-5.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-6.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-6.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-7.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-7.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-8.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-8.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-9.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-9.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-10.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-10.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-11.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-11.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-12.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-12.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-13.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-13.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-14.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-14.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-15.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-15.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-16.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-16.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-17.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-17.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;a href=&quot;../assets/img/step7-18.png&quot;&gt;&lt;img src=&quot;../assets/img/step7-18.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
    
    &lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&quot;any-questions-issues-etc-please-post-in-the-comments-section-below-thanks-for-reading-and-hope-you-enjoy-your-chromebook-&quot;&gt;Any questions, issues, etc. please post in the comments section below. Thanks for reading and hope you enjoy your Chromebook !&lt;/h3&gt;</content><author><name></name></author><category term="post" /><category term="chromebook" /><category term="acer" /><category term="CB3-531-C4A5" /><category term="Intel Celeron N2830" /><category term="crouton" /><category term="linux" /><category term="ubuntu" /><category term="xenial" /><category term="development" /><category term="tutorial" /><category term="sublime text" /><category term="github" /><category term="terminal" /><category term="shell" /><category term="crosh" /><category term="developer mode" /><summary type="html">Setting up Acer CB3-531-C4A5 Chromebook for development</summary></entry></feed>