<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tom Connors</title>
    <description>The latest articles on DEV Community by Tom Connors (@codingtomusic).</description>
    <link>https://dev.to/codingtomusic</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F474405%2F997e8feb-6799-42fe-8723-3c8083f90dd0.jpeg</url>
      <title>DEV Community: Tom Connors</title>
      <link>https://dev.to/codingtomusic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codingtomusic"/>
    <language>en</language>
    <item>
      <title>Skyscanner</title>
      <dc:creator>Tom Connors</dc:creator>
      <pubDate>Mon, 16 Dec 2024 02:25:05 +0000</pubDate>
      <link>https://dev.to/codingtomusic/skyscanner-1jm0</link>
      <guid>https://dev.to/codingtomusic/skyscanner-1jm0</guid>
      <description></description>
      <category>emptystring</category>
    </item>
    <item>
      <title>MIT's Premier Programming Competition, Battlecode, open to all, registration is now open</title>
      <dc:creator>Tom Connors</dc:creator>
      <pubDate>Mon, 05 Dec 2022 23:22:03 +0000</pubDate>
      <link>https://dev.to/codingtomusic/mits-premier-programming-competition-battlecode-open-to-all-registration-is-now-open-4f0</link>
      <guid>https://dev.to/codingtomusic/mits-premier-programming-competition-battlecode-open-to-all-registration-is-now-open-4f0</guid>
      <description>&lt;h2&gt;
  
  
  It's Battlecode Season, open to all
&lt;/h2&gt;

&lt;p&gt;Battlecode 2023 begins on January 9th, 2023!&lt;/p&gt;

&lt;p&gt;Register Now  &lt;a href="https://play.battlecode.org/register/" rel="noopener noreferrer"&gt;https://play.battlecode.org/register/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About
&lt;/h2&gt;

&lt;p&gt;MIT's Premier Programming Competition&lt;/p&gt;

&lt;p&gt;&lt;a href="https://battlecode.org/" rel="noopener noreferrer"&gt;https://battlecode.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See the schedule  &lt;a href="https://battlecode.org/schedule.html" rel="noopener noreferrer"&gt;https://battlecode.org/schedule.html&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Battlecode?
&lt;/h2&gt;

&lt;p&gt;Battlecode is a real-time strategy game, for which you will write an autonomous player. Your player will need to strategically manage a robot army and control how your robots work together to defeat the enemy team. As a contestant, you will learn to use artificial intelligence, pathfinding, distributed algorithms, and communications to make your player as competitive as possible.&lt;/p&gt;

&lt;p&gt;Teams are given the Battlecode software and a specification of the game rules in early January. Throughout the month, you will refine your player, and compete in scrimmages and tournaments against other teams. During these tournaments, the autonomous players are pitted against each other in a dramatic head-to-head fashion. At the end of the month, the Final Tournament is played out in front of a live audience at MIT, with the top teams receiving cash prizes. The total prize pool is over $20,000.&lt;/p&gt;

&lt;h2&gt;
  
  
  Video of example Battlecode Gameplay
&lt;/h2&gt;


  


&lt;h2&gt;
  
  
  MIT Class
&lt;/h2&gt;

&lt;p&gt;Our official MIT course number is 6.9610. Register for the class by IAP to receive 6 units of credit for participating in Battlecode!&lt;/p&gt;

&lt;h2&gt;
  
  
  Eligibility
&lt;/h2&gt;

&lt;p&gt;Anyone can write a bot, create a team, and participate in scrimmage matches/rankings. The Sprint Tournaments are open to everyone, but the other tournaments have stricter eligibility rules.&lt;/p&gt;

&lt;p&gt;Your team must meet all three conditions by a tournament’s submission deadline to be eligible for it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have uploaded a bot&lt;/li&gt;
&lt;li&gt;Have correctly indicated your eligibility on your Team Profile page&lt;/li&gt;
&lt;li&gt;Have all members upload a resume, at your personal profile page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tournament specific eligibility is listed below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sprint Tournaments: All teams are eligible.&lt;/li&gt;
&lt;li&gt;US Qualifier: Teams must consist entirely of US students studying full-time, or in a transition phase.&lt;/li&gt;
&lt;li&gt;International Qualifier: Teams must consist entirely of college students studying full-time, or in a transition phase, where at least one team member is not a US student.&lt;/li&gt;
&lt;li&gt;MIT Newbie Tournament: Teams must consist entirely of MIT students who have never competed in Battlecode before.&lt;/li&gt;
&lt;li&gt;High School Tournament: Teams must consist entirely of US high school students.&lt;/li&gt;
&lt;li&gt;Final Tournament: Teams must have qualified via the US or International Qualifier. The final match of the Newbie and High School tournaments will also be played at the final tournament.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Contact us on Discord or at &lt;a href="mailto:battlecode@mit.edu"&gt;battlecode@mit.edu&lt;/a&gt; if you are unsure of your eligibility.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>java</category>
      <category>springboot</category>
      <category>functional</category>
    </item>
    <item>
      <title>Playing around with Open.ai's ChatGPT-3 to ask how to upload multiple images to AWS S3 with MongoDB and Firebase Auth</title>
      <dc:creator>Tom Connors</dc:creator>
      <pubDate>Mon, 05 Dec 2022 22:45:22 +0000</pubDate>
      <link>https://dev.to/codingtomusic/playing-around-with-openais-chatgpt-3-to-ask-how-to-upload-multiple-images-to-aws-s3-with-mongodb-and-firebase-auth-48h0</link>
      <guid>https://dev.to/codingtomusic/playing-around-with-openais-chatgpt-3-to-ask-how-to-upload-multiple-images-to-aws-s3-with-mongodb-and-firebase-auth-48h0</guid>
      <description>&lt;h2&gt;
  
  
  It Works!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://chat.openai.com/chat" rel="noopener noreferrer"&gt;https://chat.openai.com/chat&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Question 1&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use typescript to put multiple images into a s3 bucket
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response 1&lt;/p&gt;

&lt;p&gt;To put multiple images into an Amazon S3 bucket using TypeScript, you can use the putObject method provided by the AWS SDK. Here is an example of how you might do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as AWS from 'aws-sdk';

// Configure the AWS SDK
const s3 = new AWS.S3({
  accessKeyId: 'ACCESS_KEY_ID',
  secretAccessKey: 'SECRET_ACCESS_KEY',
});

// Specify the bucket and the files you want to upload
const bucketName = 'my-bucket';
const files = ['image1.jpg', 'image2.jpg', 'image3.jpg'];

// Upload each file to the bucket
for (const file of files) {
  const fileContent = fs.readFileSync(file);
  const params = {
    Bucket: bucketName,
    Key: file,
    Body: fileContent,
  };
  s3.putObject(params, (err, data) =&amp;gt; {
    if (err) {
      console.log(`Error uploading file ${file}:`, err);
    } else {
      console.log(`Successfully uploaded file ${file} to ${bucketName}`);
    }
  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code imports the AWS SDK, configures it with your access key ID and secret access key, and then uses the putObject method to upload each of the specified files to the specified bucket. Note that you will need to install the aws-sdk package and import the fs module to read the file contents.&lt;/p&gt;

&lt;p&gt;Question 2&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use typescript to put multiple images into a s3 bucket and store the results in mongodb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response 2&lt;/p&gt;

&lt;p&gt;To put multiple images into an Amazon S3 bucket and store the results in a MongoDB database using TypeScript, you can use the putObject method provided by the AWS SDK to upload the files to the S3 bucket, and then use the insertOne method provided by the MongoDB driver to store metadata about the uploaded files in the database. Here is an example of how you might do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as AWS from 'aws-sdk';
import { MongoClient } from 'mongodb';

// Configure the AWS SDK
const s3 = new AWS.S3({
  accessKeyId: 'ACCESS_KEY_ID',
  secretAccessKey: 'SECRET_ACCESS_KEY',
});

// Connect to the MongoDB database
const client = new MongoClient('mongodb://localhost:27017');
client.connect();
const db = client.db('my-database');

// Specify the bucket and the files you want to upload
const bucketName = 'my-bucket';
const files = ['image1.jpg', 'image2.jpg', 'image3.jpg'];

// Upload each file to the bucket and store metadata in the database
for (const file of files) {
  const fileContent = fs.readFileSync(file);
  const params = {
    Bucket: bucketName,
    Key: file,
    Body: fileContent,
  };
  s3.putObject(params, (err, data) =&amp;gt; {
    if (err) {
      console.log(`Error uploading file ${file}:`, err);
    } else {
      console.log(`Successfully uploaded file ${file} to ${bucketName}`);

      // Store metadata about the uploaded file in the database
      db.collection('files').insertOne({
        name: file,
        url: `https://s3.amazonaws.com/${bucketName}/${file}`,
      });
    }
  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code imports the AWS SDK and the MongoDB driver, configures the AWS SDK with your access key ID and secret access key, connects to the MongoDB database, and then uses the putObject method to upload each of the specified files to the S3 bucket. After each file is successfully uploaded, it stores metadata about the file (such as its name and URL) in the files collection of the database. Note that you will need to install the aws-sdk and mongodb packages and import the fs module to read the file contents.&lt;/p&gt;

&lt;p&gt;Question 3&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use typescript to put multiple images into a s3 bucket and store the results in mongodb and wrap with firebase auth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response 3&lt;/p&gt;

&lt;p&gt;To put multiple images into an Amazon S3 bucket, store the results in a MongoDB database, and wrap the whole process with Firebase authentication using TypeScript, you can use the putObject method provided by the AWS SDK to upload the files to the S3 bucket, the insertOne method provided by the MongoDB driver to store metadata about the uploaded files in the database, and the Firebase Admin SDK to authenticate the user before allowing them to upload files. Here is an example of how you might do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as AWS from 'aws-sdk';
import { MongoClient } from 'mongodb';
import * as admin from 'firebase-admin';

// Configure the AWS SDK
const s3 = new AWS.S3({
  accessKeyId: 'ACCESS_KEY_ID',
  secretAccessKey: 'SECRET_ACCESS_KEY',
});

// Connect to the MongoDB database
const client = new MongoClient('mongodb://localhost:27017');
client.connect();
const db = client.db('my-database');

// Initialize the Firebase Admin SDK
admin.initializeApp({
  credential: admin.credential.cert({
    projectId: 'my-project',
    clientEmail: 'firebase-adminsdk@my-project.iam.gserviceaccount.com',
    privateKey: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n',
  }),
  databaseURL: 'https://my-project.firebaseio.com',
});

// Specify the bucket and the files you want to upload
const bucketName = 'my-bucket';
const files = ['image1.jpg', 'image2.jpg', 'image3.jpg'];

// Authenticate the user and upload the files to the bucket
admin.auth().verifyIdToken(idToken)
  .then((decodedToken) =&amp;gt; {
    // Upload each file to the bucket and store metadata in the database
    for (const file of files) {
      const fileContent = fs.readFileSync(file);
      const params = {
        Bucket: bucketName,
        Key: file,
        Body: fileContent,
      };
      s3.putObject(params, (err, data) =&amp;gt; {
        if (err) {
          console.log(`Error uploading file ${file}:`, err);
        } else {
          console.log(`Successfully uploaded file ${file} to ${bucketName}`);

          // Store metadata about the uploaded file in the database
          db.collection('files').insertOne({
            name: file,
            url: `https://s3.amazonaws.com/${bucketName}/${file}`,
            userId: decodedToken.uid,
          });
        }
      });
    }
  })
  .catch((error) =&amp;gt; {
    console.error('Error verifying Firebase ID token:', error);
  });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code imports the AWS SDK, the MongoDB driver, and the Firebase Admin SDK, configures the AWS SDK with your access key ID and secret access key, connects to the MongoDB database, initializes the Firebase Admin SDK with your Firebase project's credentials, and then uses the verifyIdToken method of the Firebase Admin SDK to&lt;/p&gt;

&lt;p&gt;Summing up: This is pretty amazing, IMHO&lt;/p&gt;

</description>
      <category>career</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>BattleCode 2021 - Overview and instructions - create java bots in a virtual world</title>
      <dc:creator>Tom Connors</dc:creator>
      <pubDate>Fri, 15 Jan 2021 19:16:29 +0000</pubDate>
      <link>https://dev.to/codingtomusic/battlecode-2021-overview-and-instructions-create-java-bots-in-a-virtual-world-4ibn</link>
      <guid>https://dev.to/codingtomusic/battlecode-2021-overview-and-instructions-create-java-bots-in-a-virtual-world-4ibn</guid>
      <description>&lt;h1&gt;
  
  
  BattleCode 2021 - Overview
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xlZcwDK4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/2021_Battlecode.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="800px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--xlZcwDK4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/2021_Battlecode.png%3Fraw%3Dtrue" alt="Battlecode 2021 Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  
&lt;/h2&gt;



&lt;ul&gt;
&lt;li&gt;
BattleCode 2021 - Overview

&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Why this document is needed&lt;/li&gt;
&lt;li&gt;Account and Team Creation&lt;/li&gt;
&lt;li&gt;Links and resources for this year's Battlecode&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Setup your computer, we will cover each item

&lt;ul&gt;
&lt;li&gt;Enable Linux on your Chromebook&lt;/li&gt;
&lt;li&gt;Details about your computer and operating system&lt;/li&gt;
&lt;li&gt;Chromebook is Debian&lt;/li&gt;
&lt;li&gt;Digitalocean is Ubuntu&lt;/li&gt;
&lt;li&gt;Handy aliases and abbreviations into .bashrc and .bash_aliases&lt;/li&gt;
&lt;li&gt;Installing Git so you can work with GitHub&lt;/li&gt;
&lt;li&gt;Configuring GitHub git config user.name user.email&lt;/li&gt;
&lt;li&gt;VS Code install for Debian and Ubuntu based distributions&lt;/li&gt;
&lt;li&gt;Installing Visual Studio Code on Ubuntu&lt;/li&gt;
&lt;li&gt;Starting Visual Studio Code&lt;/li&gt;
&lt;li&gt;Connect with vscode in the cloud so your settings persist over devices and sessions&lt;/li&gt;
&lt;li&gt;Setup a password for cloud sync - you will be prompted each time you start vscode&lt;/li&gt;
&lt;li&gt;If you previously have a cloud account you can merge your data&lt;/li&gt;
&lt;li&gt;Updating Visual Studio Code - every month need to do this&lt;/li&gt;
&lt;li&gt;Create .ssh directory and generate SSH public and private keys&lt;/li&gt;
&lt;li&gt;Create a directory for the public keys&lt;/li&gt;
&lt;li&gt;Create SSH Key for Github&lt;/li&gt;
&lt;li&gt;GitHub - set your ssh key and get your GitHub token for vscode&lt;/li&gt;
&lt;li&gt;Get your vscode token from github account settings&lt;/li&gt;
&lt;li&gt;Let vscode know about the GitHub token at the bottom left of vscode click bottom-left and paste github token into the command prompt area in the top menu toolbar&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;- End general setup of your computer&lt;/li&gt;
&lt;li&gt;
- Begin MIT Content

&lt;ul&gt;
&lt;li&gt;- Java version 8&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Install Java Release 8

&lt;ul&gt;
&lt;li&gt;Installation Instructions for Java JDK using OpenJava - we won't use this but it is another option&lt;/li&gt;
&lt;li&gt;We will use Oracle's version of Java - Download the correct Java Version 8&lt;/li&gt;
&lt;li&gt;- Set environment variables &lt;code&gt;PATH&lt;/code&gt; and &lt;code&gt;CLASSPATH&lt;/code&gt; &lt;code&gt;JAVA_HOME&lt;/code&gt; etc&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
- Begin Battlecode

&lt;ul&gt;
&lt;li&gt;- Clone the Battlecode Scaffold, where you can run your robot&lt;/li&gt;
&lt;li&gt;Changes to .bashrc for your environment variables, PATH and JAVA_HOME&lt;/li&gt;
&lt;li&gt;This update-alternatives is something that may be useful but you probably do not need it&lt;/li&gt;
&lt;li&gt;Validating Java works correctly&lt;/li&gt;
&lt;li&gt;To verify the installation, get the Java version&lt;/li&gt;
&lt;li&gt;'Which' Java as a validation test&lt;/li&gt;
&lt;li&gt;Cleaning up&lt;/li&gt;
&lt;li&gt;Download (clone) the Battlecode competition scaffold for BATTLECODE&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
- Setup editor such as vscode, IntelliJ, Eclipse etc

&lt;ul&gt;
&lt;li&gt;Download IntelliJ IDEA&lt;/li&gt;
&lt;li&gt;Idea Installation Instructions&lt;/li&gt;
&lt;li&gt;Changes to .bashrc for your PATH variable&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Use VSCode&lt;/li&gt;
&lt;li&gt;
Install IntelliJ - I usually use vscode, turn it off to preserve memory

&lt;ul&gt;
&lt;li&gt;When IntelliJ IDEA first starts it may take 12 minutes for the full build on a Chromebook&lt;/li&gt;
&lt;li&gt;Time for a first build!&lt;/li&gt;
&lt;li&gt;Now execute the runner and run the default example robot&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
Using the terminal - Build the game - &lt;code&gt;./gradlew update&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;Build the gradle&lt;/li&gt;
&lt;li&gt;each robot you build lives in it's own src directory&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Modify the bot and make it your own&lt;/li&gt;
&lt;li&gt;
RUNNING GAME FROM THE TERMINAL

&lt;ul&gt;
&lt;li&gt;gradle.properties file is what will be run&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;If you're experiencing memory problems with the client, please try:&lt;/li&gt;
&lt;li&gt;
Upload the bot to compete against others

&lt;ul&gt;
&lt;li&gt;Upload Your Bot and Scrimmage&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;This is my scrapbook for the Battlecode 2021 contest, I will attempt to keep it up-to-date for all Battlecode-related things for the duration of the contest. For a general overview of what Battlecode is, visit the &lt;a href="https://2020.battlecode.org"&gt;Battlecode landing page&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
This year's game is a thrilling survival adventure involving 🍲, ▀⛓, 🐮, 🤖, and more. You will write bots in Java.  &lt;/p&gt;
&lt;h2&gt;
  
  
  Why this document is needed
&lt;/h2&gt;

&lt;p&gt;In software it is common to write good documentation. This is so that other members of the team can be equally up-to-date with how things work. This is normal documentation for any well-run organization.&lt;br&gt;&lt;br&gt;
You really don't want to have some production problem and not have written down important details. Everything should be documented that you will need to be successful. Team members who do not document leave behind a technical debt of unfinished work that snowballs up and eventually really disrupts the stability and effectiveness of the organization.  &lt;/p&gt;
&lt;h2&gt;
  
  
  Account and Team Creation
&lt;/h2&gt;

&lt;p&gt;To participate in Battlecode, you need an account and a team. Each team can consist of 1 to 4 people.&lt;br&gt;&lt;br&gt;
Create an account at &lt;a href="https://2021.battlecode.org/getting-started"&gt;battlecode.org&lt;/a&gt;, and then go to the &lt;a href="https://2021.battlecode.org/team"&gt;team&lt;/a&gt; section to either create or join a team.  &lt;/p&gt;
&lt;h2&gt;
  
  
  Links and resources for this year's Battlecode
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://2020.battlecode.org/getting-started"&gt;battlecode.org - getting started&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://discord.com/channels/386965718572466197/386965718572466199"&gt;Discord&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/battlecode/battlecode21"&gt;Battlecode Github&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/battlecode/battlecode21-scaffold"&gt;Scaffold Repository&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://2021.battlecode.org/javadoc/index.html"&gt;Robot properties&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://2021.battlecode.org/specs/specs.md.html#"&gt;Game Specifications for this year&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Some tweets about battlecode are on &lt;a href="https://twitter.com/search?q=thomasconnors%20battlecode"&gt;Twitter&lt;/a&gt;&lt;br&gt;&lt;br&gt;
A great postmortum from 2020 &lt;a href="http://web.mit.edu/agrebe/www/battlecode/20/index.html"&gt;Team Battlegaode&lt;/a&gt;    &lt;/p&gt;

&lt;p&gt;It is assumed you will be developing on a linux environment, this document provides instructions for Chromebook and also there are some references to Digitalocean, that way you can use the cloud for your development environment, giving access to greater stability and unlimted resources. By developing in Digitalocean you can create specific environments and install and remove software without worrying about it messing up your Chromebook or main computer. Generally I have to wipe and rebuild my chromebook linux environment several times per year, all the various changes end up hurting the stablility of the chromebook, so better to use Digitalocean in the cloud as your messy sandbox.&lt;/p&gt;
&lt;h1&gt;
  
  
  Setup your computer, we will cover each item
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Enable Linux on your Chromebook
&lt;/h2&gt;

&lt;p&gt;In your Chromebook settings, enable the Linux (Beta)&lt;/p&gt;
&lt;h2&gt;
  
  
  Details about your computer and operating system
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Chromebook is Debian
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;release&lt;/span&gt;
&lt;span class="no"&gt;PRETTY_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Debian GNU/Linux 10 (buster)"&lt;/span&gt;
&lt;span class="no"&gt;NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Debian GNU/Linux"&lt;/span&gt;
&lt;span class="no"&gt;VERSION_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"10"&lt;/span&gt;
&lt;span class="no"&gt;VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"10 (buster)"&lt;/span&gt;
&lt;span class="no"&gt;VERSION_CODENAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;buster&lt;/span&gt;
&lt;span class="no"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;
&lt;span class="no"&gt;HOME_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://www.debian.org/"&lt;/span&gt;
&lt;span class="no"&gt;SUPPORT_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://www.debian.org/support"&lt;/span&gt;
&lt;span class="no"&gt;BUG_REPORT_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://bugs.debian.org/"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Digitalocean is Ubuntu
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// this chart would be different on Ubuntu. Here is a Debain example&lt;/span&gt;
&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;release&lt;/span&gt;
&lt;span class="no"&gt;PRETTY_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Debian GNU/Linux 10 (buster)"&lt;/span&gt;
&lt;span class="no"&gt;NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Debian GNU/Linux"&lt;/span&gt;
&lt;span class="no"&gt;VERSION_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"10"&lt;/span&gt;
&lt;span class="no"&gt;VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"10 (buster)"&lt;/span&gt;
&lt;span class="no"&gt;VERSION_CODENAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;buster&lt;/span&gt;
&lt;span class="no"&gt;ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;
&lt;span class="no"&gt;HOME_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://www.debian.org/"&lt;/span&gt;
&lt;span class="no"&gt;SUPPORT_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://www.debian.org/support"&lt;/span&gt;
&lt;span class="no"&gt;BUG_REPORT_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://bugs.debian.org/"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Handy aliases and abbreviations into .bashrc and .bash_aliases
&lt;/h2&gt;

&lt;p&gt;There are some useful aliases in .bash_alias of this repo:&lt;br&gt;
&lt;a href="https://github.com/coding-to-music/bash_aliases_docker_alias_cheat_sheet"&gt;https://github.com/coding-to-music/bash_aliases_docker_alias_cheat_sheet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this file here &lt;a href="https://raw.githubusercontent.com/coding-to-music/bash_aliases_docker_alias_cheat_sheet/master/.bash_aliases"&gt;.bash_aliases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Edit the file .bash_aliases and put the contents from GitHub&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="o"&gt;~/.&lt;/span&gt;&lt;span class="na"&gt;bashrc&lt;/span&gt;

&lt;span class="c1"&gt;// in the future, you will just need to type 'sc' and it will source your .bashrc which calls .bash_aliases&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Installing Git so you can work with GitHub
&lt;/h2&gt;

&lt;p&gt;Download and install Git&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;git&lt;/span&gt;
&lt;span class="c1"&gt;// Now git should be installed. To check use&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;
&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="mf"&gt;2.19&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuring GitHub git config user.name user.email
&lt;/h3&gt;

&lt;p&gt;Once the installation has successfully completed, the next thing to do is to set up the configuration details of the GitHub user. To do this use the following two commands by replacing "user_name" with your GitHub username and replacing "email_id" with your email-id you used to create your GitHub account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;global&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt; &lt;span class="n"&gt;coding&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;music&lt;/span&gt;
&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;global&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;email&lt;/span&gt; &lt;span class="n"&gt;connors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;tom&lt;/span&gt;&lt;span class="nd"&gt;@gmail&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;com&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The following image shows an example of my configuration with my "user_name" being "akshaypai" and my "email_id" being "&lt;a href="mailto:abc123@gmail.com"&gt;abc123@gmail.com&lt;/a&gt;"&lt;/p&gt;

&lt;h2&gt;
  
  
  VS Code install for Debian and Ubuntu based distributions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://code.visualstudio.com/docs/setup/linux"&gt;https://code.visualstudio.com/docs/setup/linux&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The easiest way to install Visual Studio Code for Debian/Ubuntu based distributions is to download and install the &lt;a href="https://go.microsoft.com/fwlink/?LinkID=760868"&gt;.deb package (64-bit)&lt;/a&gt;, either through the graphical software center if it's available, or through the command line with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;./&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;.&lt;/span&gt;&lt;span class="na"&gt;deb&lt;/span&gt;

&lt;span class="n"&gt;download&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;website&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;downloads&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;move&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;linux&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;system&lt;/span&gt; &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="nl"&gt;run:&lt;/span&gt;

&lt;span class="nl"&gt;https:&lt;/span&gt;&lt;span class="c1"&gt;//code.visualstudio.com/docs/setup/linux&lt;/span&gt;
&lt;span class="nl"&gt;https:&lt;/span&gt;&lt;span class="c1"&gt;//github.com/nodesource/distributions/blob/master/README.md#debinstall&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nc"&gt;If&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;older&lt;/span&gt; &lt;span class="nc"&gt;Linux&lt;/span&gt; &lt;span class="n"&gt;distribution&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;need&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="nl"&gt;instead:&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;dpkg&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;.&lt;/span&gt;&lt;span class="na"&gt;deb&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nc"&gt;Install&lt;/span&gt; &lt;span class="n"&gt;dependencies&lt;/span&gt;
&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;
&lt;span class="mf"&gt;1.51&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;e5a624b788d92b8d34d1392e4c4d9789406efe8f&lt;/span&gt;
&lt;span class="n"&gt;x64&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Installing the .deb package will automatically install the apt repository and signing key to enable auto-updating using the system's package manager. Note that 32-bit and .tar.gz binaries are also available on the &lt;a href="https://code.visualstudio.com/Download"&gt;VS Code download page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The repository and key can also be installed manually with the following script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;curl&lt;/span&gt; &lt;span class="nl"&gt;https:&lt;/span&gt;&lt;span class="c1"&gt;//packages.microsoft.com/keys/microsoft.asc | gpg --dearmor &amp;gt; packages.microsoft.gpg&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="mi"&gt;644&lt;/span&gt; &lt;span class="n"&gt;packages&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;microsoft&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gpg&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;keyrings&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;sh&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;echo&lt;/span&gt; &lt;span class="s"&gt;"deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sources&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;d&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vscode&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;list&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then update the package cache and install the package using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;transport&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;https&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;insiders&lt;/span&gt;

&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;gnome&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;keyring&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Installing Visual Studio Code on Ubuntu
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/"&gt;https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To install Visual Studio Code on your Ubuntu system, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First, update the packages index and install the dependencies by typing:&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo apt install software-properties-common apt-transport-https wget&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Next, import the Microsoft GPG key using the following &lt;a href="https://linuxize.com/post/wget-command-examples/"&gt;wget command&lt;/a&gt;:&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;And enable the Visual Studio Code repository by typing:&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Once the &lt;a href="https://linuxize.com/post/how-to-add-apt-repository-in-ubuntu/"&gt;apt repository is enabled&lt;/a&gt;, install the latest version of Visual Studio Code with:&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo apt install code&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it. Visual Studio Code has been installed on your Ubuntu desktop and you can start using it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Starting Visual Studio Code
&lt;/h3&gt;

&lt;p&gt;Now that VS Code is installed on your Ubuntu system you can launch it either from the command line by typing &lt;code&gt;code&lt;/code&gt; or by clicking on the VS Code icon (&lt;code&gt;Activities -&amp;gt; Visual Studio Code&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;When you start VS Code for the first time, a window like the following should appear:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0FGQPt0V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/vscode-default-home-screen.jpg%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="800px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--0FGQPt0V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/vscode-default-home-screen.jpg%3Fraw%3Dtrue" alt="vscode-default-home-screen.jpg"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect with vscode in the cloud so your settings persist over devices and sessions
&lt;/h3&gt;

&lt;p&gt;vscode-&amp;gt;settings-&amp;gt;Sync Data&lt;/p&gt;

&lt;p&gt;There is a very good set of detailed instructions about vscode cloud settings sync &lt;a href="https://code.visualstudio.com/docs/editor/settings-sync"&gt;HERE&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup a password for cloud sync - you will be prompted each time you start vscode
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MbOLUon9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/choose-password-for-vscode-sync-data.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="800px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--MbOLUon9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/choose-password-for-vscode-sync-data.png%3Fraw%3Dtrue" alt="choose-password-for-vscode-sync-data.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  If you previously have a cloud account you can merge your data
&lt;/h3&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qZ3myE4g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/merge-or-replace-cloud-sync-data.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="800px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--qZ3myE4g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/merge-or-replace-cloud-sync-data.png%3Fraw%3Dtrue" alt="merge-or-replace-cloud-sync-data.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;  &lt;/p&gt;

&lt;p&gt;You can now start installing extensions and configuring VS Code according to your preferences.&lt;/p&gt;
&lt;h3&gt;
  
  
  Updating Visual Studio Code - every month need to do this
&lt;/h3&gt;

&lt;p&gt;When a new version is released you can update the Visual Studio Code package through your desktop standard Software Update tool or by running the following commands in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;upgrade&lt;/span&gt;
&lt;span class="c1"&gt;// or just this&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt; &lt;span class="n"&gt;upgrade&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create .ssh directory and generate SSH public and private keys
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Create a directory for the public keys
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// In root&lt;/span&gt;
&lt;span class="nc"&gt;Mkdir&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ssh&lt;/span&gt;
&lt;span class="nc"&gt;Chmod&lt;/span&gt; &lt;span class="mi"&gt;700&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ssh&lt;/span&gt;
&lt;span class="nc"&gt;Cd&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ssh&lt;/span&gt;
&lt;span class="c1"&gt;// Create SSH public and private keys  &lt;/span&gt;
&lt;span class="c1"&gt;// Store them here  &lt;/span&gt;

&lt;span class="nc"&gt;Chmod&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt; &lt;span class="n"&gt;private_key&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create SSH Key for Github
&lt;/h3&gt;

&lt;p&gt;Now you need to create your SSH key for Github&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;ssh&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;keygen&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;rsa&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;C&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;connors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;tom&lt;/span&gt;&lt;span class="nd"&gt;@gmail&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;com&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;  

&lt;span class="c1"&gt;// It will get saved to &lt;/span&gt;
&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tom&lt;/span&gt;&lt;span class="o"&gt;/.&lt;/span&gt;&lt;span class="na"&gt;ssh&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;id_rsa&lt;/span&gt;                &lt;span class="c1"&gt;// this is the private key, very long paragraph&lt;/span&gt;
&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tom&lt;/span&gt;&lt;span class="o"&gt;/.&lt;/span&gt;&lt;span class="na"&gt;ssh&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;id_rsa&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;pub&lt;/span&gt;         &lt;span class="c1"&gt;// this is the public key,         short paragraph&lt;/span&gt;
&lt;span class="c1"&gt;// Copy that key in that file. I would suggest using Win SCP to download the file similar to FTP&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;file: ssh-rsa &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;7 lines long private key &lt;/li&gt;
&lt;li&gt;a short paragraph &lt;/li&gt;
&lt;li&gt;this is what you will paste into GitHub and Digitalocean
e1f0vfsMPOANChLOUWbSJTtf4s4P2x6CAYCOQYcd “&lt;a href="mailto:connors.tom@gmail.com"&gt;connors.tom@gmail.com&lt;/a&gt;”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-----BEGIN RSA PRIVATE KEY-----&lt;br&gt;
really big long private key&lt;br&gt;
-----END RSA PRIVATE KEY-----&lt;/p&gt;
&lt;h2&gt;
  
  
  GitHub - set your ssh key and get your GitHub token for vscode
&lt;/h2&gt;

&lt;p&gt;Once you copy the key, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sign into Github and &lt;/li&gt;
&lt;li&gt;goto “Settings-&amp;gt;SSH and GPG Keys” and &lt;/li&gt;
&lt;li&gt;add and name of the new key
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yfPelKOg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/ssh-keys-in-GitHub.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="800px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--yfPelKOg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/ssh-keys-in-GitHub.png%3Fraw%3Dtrue" alt="Battlecode 2021 Image"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Get your vscode token from github account settings
&lt;/h3&gt;

&lt;p&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fBCmFFv9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/vscode-github-token.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="400px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--fBCmFFv9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/vscode-github-token.png%3Fraw%3Dtrue" alt="vscode-github-token.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Let vscode know about the GitHub token at the bottom left of vscode click bottom-left and paste github token into the command prompt area in the top menu toolbar
&lt;/h3&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rASE4VeK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/bottom-left-of-vscode-click-and-paste-github-token.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="600px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--rASE4VeK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/bottom-left-of-vscode-click-and-paste-github-token.png%3Fraw%3Dtrue" alt="bottom-left-of-vscode-click-and-paste-github-token.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;  &lt;/p&gt;
&lt;h1&gt;
  
  
  - End general setup of your computer
&lt;/h1&gt;
&lt;h1&gt;
  
  
  - Begin MIT Content
&lt;/h1&gt;
&lt;h3&gt;
  
  
  - Java version 8
&lt;/h3&gt;
&lt;h1&gt;
  
  
  Install Java Release 8
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Installation Instructions for Java JDK using OpenJava - we won't use this but it is another option
&lt;/h2&gt;

&lt;p&gt;If you're unsure how to install the JDK, you can find instructions for all operating systems here (pay attention to PATH and CLASSPATH).  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.datastax.com/en/jdk-install/doc/jdk-install/installOpenJdkDeb.html"&gt;https://docs.datastax.com/en/jdk-install/doc/jdk-install/installOpenJdkDeb.html&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;a href="http://openjdk.java.net/install/"&gt;http://openjdk.java.net/install/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;I am using a chromebook, which is Debian flavor of Linux&lt;br&gt;&lt;br&gt;
There are two related packages  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JRE - Java Runtime Environment&lt;/li&gt;
&lt;li&gt;JDK - Java Development Kit&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  We will use Oracle's version of Java - Download the correct Java Version 8
&lt;/h2&gt;

&lt;p&gt;Before the file can be downloaded, you must accept the license agreement. The archive binary can be installed by anyone (not only root users), in any location that you can write to. However, only the root user can install the JDK into the system location.&lt;br&gt;
// Change directory to the location where you would like the JDK to be installed, then move the .tar.gz archive binary to the current directory.&lt;br&gt;&lt;br&gt;
That leads to this page &lt;a href="https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html"&gt;here, you are looking for Java SE 8&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Previously I had Java - let's see if it works&lt;/span&gt;
&lt;span class="c1"&gt;// Oops, I ran into a problem and got this error &lt;/span&gt;
&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;
&lt;span class="nl"&gt;bash:&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nl"&gt;java:&lt;/span&gt; &lt;span class="nc"&gt;No&lt;/span&gt; &lt;span class="n"&gt;such&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;directory&lt;/span&gt;
&lt;span class="c1"&gt;// yet I appeared to have java installed&lt;/span&gt;
&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;find&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jre&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jre&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bash&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;completion&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;resources&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;extensions&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From this video &lt;a href="https://youtu.be/kiaWng4wR-k"&gt;How To Install Oracle Java 8 JDK on Linux - Ubuntu 20.04 / 18.04 / 16.04 LTS / Debian&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// You will need to log into Oracle and agree to the conditions to start the download  &lt;/span&gt;
&lt;span class="c1"&gt;// ok lets try this one&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Linux&lt;/span&gt; &lt;span class="n"&gt;x64&lt;/span&gt; &lt;span class="nc"&gt;Compressed&lt;/span&gt; &lt;span class="nc"&gt;Archive&lt;/span&gt;   
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mf"&gt;136.51&lt;/span&gt; &lt;span class="no"&gt;MB&lt;/span&gt;  
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;jdk&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="n"&gt;u271&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x64&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;tar&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gz&lt;/span&gt;  
&lt;span class="c1"&gt;// I downloaded this and left it in my root home directory, it is just a temporary file we will delete it later&lt;/span&gt;
&lt;span class="n"&gt;jdk&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="n"&gt;u271&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x64&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;tar&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gz&lt;/span&gt;
&lt;span class="c1"&gt;// you may not need to make this next directory, you may already have it&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;
&lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;
&lt;span class="c1"&gt;// untar the file that is located in your home dir&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;tar&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;xzvf&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="n"&gt;jdk&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="n"&gt;u271&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x64&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;tar&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gz&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Java Development Kit files are installed in a directory called &lt;code&gt;jdk1.8.0_version&lt;/code&gt; in the current directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// this directory was just created&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  - Set environment variables &lt;code&gt;PATH&lt;/code&gt; and &lt;code&gt;CLASSPATH&lt;/code&gt; &lt;code&gt;JAVA_HOME&lt;/code&gt; etc
&lt;/h3&gt;

&lt;h1&gt;
  
  
  - Begin Battlecode
&lt;/h1&gt;

&lt;h3&gt;
  
  
  - Clone the Battlecode Scaffold, where you can run your robot
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Changes to .bashrc for your environment variables, PATH and JAVA_HOME
&lt;/h2&gt;

&lt;p&gt;Paste thise into your Path in your .bashrc&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;export&lt;/span&gt; &lt;span class="no"&gt;JAVA_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/usr/lib/jvm/jdk1.8.0_271"&lt;/span&gt;
&lt;span class="n"&gt;export&lt;/span&gt; &lt;span class="no"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;$PATH&lt;/span&gt;&lt;span class="o"&gt;:/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nl"&gt;bin:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jre&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;

&lt;span class="c1"&gt;// then at the command line in root:&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;bashrc&lt;/span&gt;

&lt;span class="c1"&gt;// then in the future you just need to source .bashrc by using the alias 'sc'&lt;/span&gt;
&lt;span class="n"&gt;sc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  This update-alternatives is something that may be useful but you probably do not need it
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// probably not needed&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alternatives&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="s"&gt;"/usr/bin/java"&lt;/span&gt; &lt;span class="s"&gt;"java"&lt;/span&gt; &lt;span class="s"&gt;"/usr/lib/jvm/jdk1.8.0_271/bin/java"&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alternatives&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="s"&gt;"/usr/bin/javac"&lt;/span&gt; &lt;span class="s"&gt;"javac"&lt;/span&gt; &lt;span class="s"&gt;"/usr/lib/jvm/jdk1.8.0_271/bin/javac"&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alternatives&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alternatives&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;javac&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;javac&lt;/span&gt;
&lt;span class="c1"&gt;// you can test this but it did not work for me&lt;/span&gt;
&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alternatives&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alternatives&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="n"&gt;javac&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Validating Java works correctly
&lt;/h2&gt;

&lt;h3&gt;
  
  
  To verify the installation, get the Java version
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;grep&lt;/span&gt; &lt;span class="no"&gt;JAVA&lt;/span&gt;
&lt;span class="no"&gt;JAVA_HOME&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;
&lt;span class="c1"&gt;// test to find the java version&lt;/span&gt;
&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;
&lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s"&gt;"1.8.0_271"&lt;/span&gt;
&lt;span class="nc"&gt;Java&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;TM&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="no"&gt;SE&lt;/span&gt; &lt;span class="nc"&gt;Runtime&lt;/span&gt; &lt;span class="nf"&gt;Environment&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt; &lt;span class="mf"&gt;1.8&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0_271&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;b09&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nc"&gt;Java&lt;/span&gt; &lt;span class="nf"&gt;HotSpot&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;TM&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;Bit&lt;/span&gt; &lt;span class="nc"&gt;Server&lt;/span&gt; &lt;span class="nf"&gt;VM&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt; &lt;span class="mf"&gt;25.271&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;b09&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mixed&lt;/span&gt; &lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  'Which' Java as a validation test
&lt;/h3&gt;

&lt;p&gt;This will print the version of the java tool, if it can find it. &lt;br&gt;
If the version is old or you get the error &lt;code&gt;java: Command not found&lt;/code&gt;, then the path is not properly set.&lt;br&gt;&lt;br&gt;
Determine which java executable is the first one found in your PATH&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;which&lt;/span&gt; &lt;span class="n"&gt;java&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jdk1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.0_271&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Cleaning up
&lt;/h2&gt;

&lt;p&gt;Delete the .tar.gz file if you want to save disk space.  &lt;/p&gt;

&lt;p&gt;This may also be useful but I have not tested it yet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="o"&gt;/.&lt;/span&gt;&lt;span class="na"&gt;profile&lt;/span&gt;  
&lt;span class="c1"&gt;// Verify that the path is set by repeating the java command  &lt;/span&gt;
&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;java&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Modify build.gradle to view the Java version  &lt;/span&gt;
&lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;  
    &lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;battlecode&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;  
    &lt;span class="n"&gt;doLast&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;  
        &lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"\nJDK version: ${System.properties['java.home']}"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;  
        &lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"\nVersion: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;versions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;battlecode&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;"\n"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;  
    &lt;span class="o"&gt;}&lt;/span&gt;  
&lt;span class="o"&gt;}&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Download (clone) the Battlecode competition scaffold for BATTLECODE
&lt;/h2&gt;

&lt;p&gt;Next, you should download the Battlecode 2021 scaffold. To get up and running quickly, you can click "Clone or download" and then "Download ZIP," and move on to the next step.&lt;br&gt;&lt;br&gt;
We recommend, however, that you instead use Git to organize your code. If you haven't used Git before, read this &lt;a href="https://guides.github.com/introduction/git-handbook/"&gt;guide&lt;/a&gt; (or wait for our lecture covering it). On the &lt;a href="https://github.com/battlecode/battlecode20-scaffold"&gt;scaffold page&lt;/a&gt;, click &lt;code&gt;"Use this template."&lt;/code&gt; Importantly, on the next page, make your new repo private (you don't want other teams to steal your code!). You can then clone your newly created repo and invite your team members to collaborate on it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~/&lt;/span&gt;&lt;span class="n"&gt;aprojects&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;clone&lt;/span&gt; &lt;span class="nl"&gt;https:&lt;/span&gt;&lt;span class="c1"&gt;//github.com/battlecode/battlecode21-scaffold.git&lt;/span&gt;
&lt;span class="nc"&gt;Cloning&lt;/span&gt; &lt;span class="n"&gt;into&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;battlecode21&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;scaffold&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="nl"&gt;remote:&lt;/span&gt; &lt;span class="nc"&gt;Enumerating&lt;/span&gt; &lt;span class="nl"&gt;objects:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;done&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="nl"&gt;remote:&lt;/span&gt; &lt;span class="nc"&gt;Counting&lt;/span&gt; &lt;span class="nl"&gt;objects:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="n"&gt;done&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="nl"&gt;remote:&lt;/span&gt; &lt;span class="nc"&gt;Compressing&lt;/span&gt; &lt;span class="nl"&gt;objects:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="n"&gt;done&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="nl"&gt;remote:&lt;/span&gt; &lt;span class="nc"&gt;Total&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;delta&lt;/span&gt; &lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="n"&gt;reused&lt;/span&gt; &lt;span class="mi"&gt;36&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;delta&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="n"&gt;pack&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;reused&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="nc"&gt;Unpacking&lt;/span&gt; &lt;span class="nl"&gt;objects:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="n"&gt;done&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  - Setup editor such as vscode, IntelliJ, Eclipse etc
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Download IntelliJ IDEA
&lt;/h2&gt;

&lt;p&gt;The JetBrains website to &lt;a href="https://www.jetbrains.com/idea/download/#section=linux"&gt;downlowd Intellij IDEA is located Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose windows/mac/linux&lt;br&gt;&lt;br&gt;
then, below that,&lt;br&gt;&lt;br&gt;
Choose the Community button   &lt;/p&gt;
&lt;h2&gt;
  
  
  Idea Installation Instructions
&lt;/h2&gt;

&lt;p&gt;Note: A new instance MUST NOT be extracted over an existing one. The target folder must be empty.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// install into a new directory&lt;/span&gt;
&lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;  
&lt;span class="c1"&gt;// untar the file that is located in your home dir&lt;/span&gt;
&lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;tar&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;xzvf&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="n"&gt;ideaIC&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2020.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;tar&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gz&lt;/span&gt; 

&lt;span class="c1"&gt;// to clean up, remove the original tar file&lt;/span&gt;
&lt;span class="n"&gt;rm&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="n"&gt;ideaIC&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2020.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;tar&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gz&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Java Development Kit files are installed in a directory called &lt;code&gt;idea-IC-203.6682.168&lt;/code&gt; in the current directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// this directory was just created&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;idea&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;IC&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;203.6682&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Changes to .bashrc for your PATH variable
&lt;/h2&gt;

&lt;p&gt;Paste thise into your Path in your .bashrc&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;export&lt;/span&gt; &lt;span class="no"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;$PATH&lt;/span&gt;&lt;span class="o"&gt;:/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;idea&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;IC&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;203.6682&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now run IntelliJ!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Run&lt;/span&gt; &lt;span class="n"&gt;idea&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sh&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;bin&lt;/span&gt; &lt;span class="n"&gt;subdirectory&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Use VSCode
&lt;/h1&gt;

&lt;p&gt;&lt;span&gt;some white text&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;span&gt;some &lt;em&gt;white&lt;/em&gt; text&lt;/span&gt;  &lt;/p&gt;

&lt;p&gt;&lt;span&gt;some yellow text&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;span&gt;some &lt;em&gt;yellow&lt;/em&gt; text&lt;/span&gt;  &lt;/p&gt;

&lt;p&gt;&lt;span&gt;some green text&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;span&gt;some &lt;em&gt;green&lt;/em&gt; text&lt;/span&gt;  &lt;/p&gt;

&lt;p&gt;&lt;span&gt;some red text&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;span&gt;some &lt;em&gt;red&lt;/em&gt; text&lt;/span&gt;  &lt;/p&gt;

&lt;p&gt;&lt;span&gt;some blue text&lt;/span&gt;&lt;br&gt;&lt;br&gt;
&lt;span&gt;some &lt;em&gt;blue&lt;/em&gt; text&lt;/span&gt;  &lt;/p&gt;
&lt;h1&gt;
  
  
  Install IntelliJ - I usually use vscode, turn it off to preserve memory
&lt;/h1&gt;

&lt;p&gt;Battlecode 2020 uses Gradle to run tasks like &lt;code&gt;run&lt;/code&gt;, &lt;code&gt;debug&lt;/code&gt; and &lt;code&gt;jarForUpload&lt;/code&gt; (but don't worry about that — you don't need to install it).&lt;/p&gt;

&lt;p&gt;Install IntelliJ IDEA Community Edition from &lt;a href="https://www.jetbrains.com/idea/download/"&gt;here&lt;/a&gt;.&lt;br&gt;
In the &lt;code&gt;Welcome to IntelliJ IDEA window&lt;/code&gt; that pops up when you start IntelliJ, select &lt;code&gt;Import Project&lt;/code&gt;&lt;br&gt;
In the &lt;code&gt;Select File or Dictionary to Import&lt;/code&gt; window, select the &lt;code&gt;build.gradle&lt;/code&gt; file in the scaffold folder.&lt;br&gt;
Hit OK.  &lt;/p&gt;

&lt;p&gt;We need to set the jdk properly; open the settings with &lt;code&gt;File &amp;gt; Settings (IntelliJ IDEA &amp;gt; Preferences on Mac&lt;/code&gt;) or &lt;code&gt;ctrl+alt+s&lt;/code&gt;. Navigate to &lt;code&gt;Build, Execution, Deployment &amp;gt; Build Tools &amp;gt; Gradle&lt;/code&gt; and change &lt;code&gt;Gradle JVM&lt;/code&gt; to 1.8  &lt;/p&gt;
&lt;h3&gt;
  
  
  When IntelliJ IDEA first starts it may take 12 minutes for the full build on a Chromebook
&lt;/h3&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CrFf8nGc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/IntelliJ_IDEA_Battlecode_Scaffold_full_screen.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="800px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--CrFf8nGc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/IntelliJ_IDEA_Battlecode_Scaffold_full_screen.png%3Fraw%3Dtrue" alt="IntelliJ_IDEA_Battlecode_Scaffold_full_screen.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;  &lt;/p&gt;
&lt;h2&gt;
  
  
  Time for a first build!
&lt;/h2&gt;

&lt;p&gt;On the right side of the screen, click the small button that says gradle and has a picture of an elephant. Navigate to battlecode20-scaffold &amp;gt; Tasks &amp;gt; battlecode and double click on build. This will install the client and engine for you.&lt;br&gt;
If you haven't seen any errors, you should be good to go.&lt;/p&gt;

&lt;p&gt;There should now be a folder called &lt;code&gt;client&lt;/code&gt; in your scaffold folder; if you go in there, and double click the &lt;code&gt;Battlecode Client&lt;/code&gt; application, you should be able to run and watch matches. (Please don't move that application, it will be sad.) If you're on Linux, navigate to the &lt;code&gt;client&lt;/code&gt; folder and run &lt;code&gt;./battlecode-visualizer&lt;/code&gt; to launch the client.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eD5yZLCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/battlecode-visualizer-initial-spash-screen.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="800px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--eD5yZLCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/battlecode-visualizer-initial-spash-screen.png%3Fraw%3Dtrue" alt="battlecode-visualizer-initial-spash-screen.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;  &lt;/p&gt;
&lt;h2&gt;
  
  
  Now execute the runner and run the default example robot
&lt;/h2&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0oguk5Hf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/battlecode-visualizer-runner-execute.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="800px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--0oguk5Hf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/battlecode-visualizer-runner-execute.png%3Fraw%3Dtrue" alt="battlecode-visualizer-runner-execute.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;  &lt;/p&gt;
&lt;h1&gt;
  
  
  Using the terminal - Build the game - &lt;code&gt;./gradlew update&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Open a terminal in the scaffold you just downloaded. Run the commands &lt;code&gt;./gradlew update&lt;/code&gt; and &lt;code&gt;./gradlew build&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Now run "./gradle update"&lt;/span&gt;
&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~/&lt;/span&gt;&lt;span class="n"&gt;aprojects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;battlecode21&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;scaffold&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;gradlew&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;

&lt;span class="nc"&gt;Welcome&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nc"&gt;Gradle&lt;/span&gt; &lt;span class="mf"&gt;6.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;

&lt;span class="nc"&gt;Here&lt;/span&gt; &lt;span class="n"&gt;are&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;highlights&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="nl"&gt;release:&lt;/span&gt;
 &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Substantial&lt;/span&gt; &lt;span class="n"&gt;improvements&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;dependency&lt;/span&gt; &lt;span class="n"&gt;management&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;including&lt;/span&gt;
   &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Publishing&lt;/span&gt; &lt;span class="nc"&gt;Gradle&lt;/span&gt; &lt;span class="nc"&gt;Module&lt;/span&gt; &lt;span class="nc"&gt;Metadata&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;addition&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;pom&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;xml&lt;/span&gt;
   &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Advanced&lt;/span&gt; &lt;span class="n"&gt;control&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;transitive&lt;/span&gt; &lt;span class="n"&gt;versions&lt;/span&gt;
   &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Support&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;optional&lt;/span&gt; &lt;span class="n"&gt;features&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;dependencies&lt;/span&gt;
   &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Rules&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;tweak&lt;/span&gt; &lt;span class="n"&gt;published&lt;/span&gt; &lt;span class="n"&gt;metadata&lt;/span&gt;
 &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Support&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nc"&gt;Java&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;
 &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Faster&lt;/span&gt; &lt;span class="n"&gt;incremental&lt;/span&gt; &lt;span class="nc"&gt;Java&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="nc"&gt;Groovy&lt;/span&gt; &lt;span class="n"&gt;compilation&lt;/span&gt;
 &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;New&lt;/span&gt; &lt;span class="nc"&gt;Zinc&lt;/span&gt; &lt;span class="n"&gt;compiler&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nc"&gt;Scala&lt;/span&gt;
 &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;VS2019&lt;/span&gt; &lt;span class="n"&gt;support&lt;/span&gt;
 &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Support&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nc"&gt;Gradle&lt;/span&gt; &lt;span class="nc"&gt;Enterprise&lt;/span&gt; &lt;span class="n"&gt;plugin&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;

&lt;span class="nc"&gt;For&lt;/span&gt; &lt;span class="n"&gt;more&lt;/span&gt; &lt;span class="n"&gt;details&lt;/span&gt; &lt;span class="n"&gt;see&lt;/span&gt; &lt;span class="nl"&gt;https:&lt;/span&gt;&lt;span class="c1"&gt;//docs.gradle.org/6.0.1/release-notes.html&lt;/span&gt;

&lt;span class="nc"&gt;Starting&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="nc"&gt;Gradle&lt;/span&gt; &lt;span class="nf"&gt;Daemon&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;subsequent&lt;/span&gt; &lt;span class="n"&gt;builds&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;faster&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Task&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;
&lt;span class="nc"&gt;Updated&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="mf"&gt;2021.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt;

&lt;span class="no"&gt;BUILD&lt;/span&gt; &lt;span class="no"&gt;SUCCESSFUL&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;actionable&lt;/span&gt; &lt;span class="nl"&gt;task:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;executed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Jg48xSEi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/gradlew_update_which_java_JAVA_HOME.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="600px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jg48xSEi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/gradlew_update_which_java_JAVA_HOME.png%3Fraw%3Dtrue" alt="gradlew_update_which_java_JAVA_HOME"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Build the gradle
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~/&lt;/span&gt;&lt;span class="n"&gt;aprojects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;battlecode21&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;scaffold&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;gradlew&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Task&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;compileScala&lt;/span&gt;
&lt;span class="nc"&gt;Scala&lt;/span&gt; &lt;span class="nc"&gt;Compiler&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;compilation&lt;/span&gt; &lt;span class="n"&gt;took&lt;/span&gt; &lt;span class="mf"&gt;38.592&lt;/span&gt; &lt;span class="n"&gt;secs&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Task&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;compileTestScala&lt;/span&gt;
&lt;span class="nc"&gt;Scala&lt;/span&gt; &lt;span class="nc"&gt;Compiler&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;compilation&lt;/span&gt; &lt;span class="n"&gt;took&lt;/span&gt; &lt;span class="mf"&gt;38.471&lt;/span&gt; &lt;span class="n"&gt;secs&lt;/span&gt;

&lt;span class="nc"&gt;Deprecated&lt;/span&gt; &lt;span class="nc"&gt;Gradle&lt;/span&gt; &lt;span class="n"&gt;features&lt;/span&gt; &lt;span class="n"&gt;were&lt;/span&gt; &lt;span class="n"&gt;used&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;making&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;incompatible&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="nc"&gt;Gradle&lt;/span&gt; &lt;span class="mf"&gt;7.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="nc"&gt;Use&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;warning&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;mode&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;show&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;individual&lt;/span&gt; &lt;span class="n"&gt;deprecation&lt;/span&gt; &lt;span class="n"&gt;warnings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="nc"&gt;See&lt;/span&gt; &lt;span class="nl"&gt;https:&lt;/span&gt;&lt;span class="c1"&gt;//docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings&lt;/span&gt;

&lt;span class="no"&gt;BUILD&lt;/span&gt; &lt;span class="no"&gt;SUCCESSFUL&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="n"&gt;actionable&lt;/span&gt; &lt;span class="nl"&gt;tasks:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="n"&gt;executed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--04rHkJr2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/gradlew-build.png%3Fraw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img width="600px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--04rHkJr2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/coding-to-music/battlecode2021/blob/main/Assets/gradlew-build.png%3Fraw%3Dtrue" alt="gradlew_update_which_java_JAVA_HOME"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  each robot you build lives in it's own src directory
&lt;/h3&gt;

&lt;p&gt;Run a Match&lt;br&gt;
Player code is in the &lt;code&gt;src&lt;/code&gt; directory of the scaffold: each package inside &lt;code&gt;src&lt;/code&gt; corresponds to one distinct player. We have provided &lt;code&gt;examplefuncsplayer&lt;/code&gt;, and you can create your own player by either modifying it or copying and renaming it. The only restriction is that each player must have a file named &lt;code&gt;RobotPlayer.java&lt;/code&gt; which implements a &lt;code&gt;run(RobotController rc)&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;You should have a client application in the &lt;code&gt;client&lt;/code&gt; folder. Launch it, and go to the &lt;code&gt;Runner&lt;/code&gt; section. There, you can specify which players to run against each other, and on which map, and you can view the match as it is running.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// run at the command line - need to verify  &lt;/span&gt;
&lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;runner&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also run a match without the client, by invoking the Gradle task &lt;code&gt;run&lt;/code&gt;. For example, &lt;code&gt;gradle run -PteamA=examplefuncsplayer -PteamB=examplefuncsplayer -Pmaps=FourLakeLand&lt;/code&gt; runs &lt;code&gt;examplefuncsplayer&lt;/code&gt; against itself on the &lt;code&gt;FourLakeLand&lt;/code&gt; map. This produces a replay file in the &lt;code&gt;matches&lt;/code&gt; directory of the scaffold, which you can upload to the client to view.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;
&lt;span class="c1"&gt;// run the game as defined in the gradle.properties - but to the console, it is huge&lt;/span&gt;
&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~/&lt;/span&gt;&lt;span class="n"&gt;aprojects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;battlecode21&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;scaffold&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;gradlew&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; 

&lt;span class="c1"&gt;// this went on forever I needed to kill it with ctrl-C ^C&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;A:&lt;/span&gt;&lt;span class="no"&gt;SLANDERER&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;11514&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt; &lt;span class="n"&gt;am&lt;/span&gt; &lt;span class="n"&gt;trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;move&lt;/span&gt; &lt;span class="no"&gt;NORTH&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="mf"&gt;9.072361313166404&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;A:&lt;/span&gt;&lt;span class="no"&gt;POLITICIAN&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;10475&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="no"&gt;POLITICIAN&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nc"&gt;Location&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10007&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23925&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;A:&lt;/span&gt;&lt;span class="no"&gt;POLITICIAN&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;10475&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt; &lt;span class="n"&gt;am&lt;/span&gt; &lt;span class="n"&gt;trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;move&lt;/span&gt; &lt;span class="no"&gt;NORTHEAST&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="mf"&gt;1.6308742204463966&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;B:&lt;/span&gt;&lt;span class="no"&gt;POLITICIAN&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;11218&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="no"&gt;POLITICIAN&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nc"&gt;Location&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10027&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23928&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;B:&lt;/span&gt;&lt;span class="no"&gt;POLITICIAN&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;11218&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt; &lt;span class="n"&gt;am&lt;/span&gt; &lt;span class="n"&gt;trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;move&lt;/span&gt; &lt;span class="no"&gt;SOUTHEAST&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="mf"&gt;2.282011952169438&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;A:&lt;/span&gt;&lt;span class="no"&gt;MUCKRAKER&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;13908&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="no"&gt;MUCKRAKER&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nc"&gt;Location&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10005&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23927&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;A:&lt;/span&gt;&lt;span class="no"&gt;MUCKRAKER&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;13908&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt; &lt;span class="n"&gt;am&lt;/span&gt; &lt;span class="n"&gt;trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;move&lt;/span&gt; &lt;span class="no"&gt;EAST&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;A:&lt;/span&gt;&lt;span class="no"&gt;MUCKRAKER&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;13908&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt; &lt;span class="n"&gt;moved&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;B:&lt;/span&gt;&lt;span class="no"&gt;SLANDERER&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;10110&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="no"&gt;SLANDERER&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nc"&gt;Location&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10025&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23927&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;B:&lt;/span&gt;&lt;span class="no"&gt;SLANDERER&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;10110&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt; &lt;span class="n"&gt;am&lt;/span&gt; &lt;span class="n"&gt;trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;move&lt;/span&gt; &lt;span class="no"&gt;NORTHEAST&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="mf"&gt;2.5545705508935868&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;B:&lt;/span&gt;&lt;span class="no"&gt;SLANDERER&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;13348&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="no"&gt;SLANDERER&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt; &lt;span class="n"&gt;just&lt;/span&gt; &lt;span class="n"&gt;got&lt;/span&gt; &lt;span class="n"&gt;created&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nl"&gt;B:&lt;/span&gt;&lt;span class="no"&gt;SLANDERER&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;13348&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="mi"&gt;68&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="no"&gt;I&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="no"&gt;SLANDERER&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nc"&gt;Location&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10026&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23927&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;// run the game as defined in the gradle.properties - but output it to a junk.txt file - add that to the .gitignore&lt;/span&gt;
&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~/&lt;/span&gt;&lt;span class="n"&gt;aprojects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;battlecode21&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;scaffold&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;gradlew&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;junk&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;txt&lt;/span&gt;

&lt;span class="c1"&gt;// find out how many lines of output are in the console output&lt;/span&gt;
&lt;span class="n"&gt;connorstom&lt;/span&gt;&lt;span class="nd"&gt;@penguin&lt;/span&gt;&lt;span class="o"&gt;:~/&lt;/span&gt;&lt;span class="n"&gt;aprojects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;battlecode21&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;scaffold&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;wc&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="n"&gt;junk&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;txt&lt;/span&gt;
&lt;span class="mi"&gt;309508&lt;/span&gt; &lt;span class="n"&gt;junk&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;txt&lt;/span&gt;

&lt;span class="c1"&gt;// there are 310,000 lines in the output of doing a run&lt;/span&gt;
&lt;span class="c1"&gt;// it took about 30 or 60 seconds to run the game itself&lt;/span&gt;

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

&lt;/div&gt;



&lt;h1&gt;
  
  
  Modify the bot and make it your own
&lt;/h1&gt;

&lt;p&gt;Place each version of your robot in a new subfolder in the &lt;code&gt;src&lt;/code&gt; folder. Make sure every version has a &lt;code&gt;RobotPlayer.java&lt;/code&gt;    &lt;/p&gt;

&lt;h1&gt;
  
  
  RUNNING GAME FROM THE TERMINAL
&lt;/h1&gt;

&lt;p&gt;Open a terminal in the scaffold. Run the commands &lt;code&gt;./gradlew run -Pmaps=[map] -PteamA=[Team A] -PteamB=[Team B]&lt;/code&gt;  &lt;/p&gt;

&lt;h3&gt;
  
  
  gradle.properties file is what will be run
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// gradle.properties&lt;/span&gt;
&lt;span class="c1"&gt;// modify this file to change project properties&lt;/span&gt;
&lt;span class="n"&gt;teamA&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;examplefuncsplayer&lt;/span&gt;
&lt;span class="n"&gt;teamB&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;examplefuncsplayer&lt;/span&gt;
&lt;span class="n"&gt;maps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;maptestsmall&lt;/span&gt;
&lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;
&lt;span class="n"&gt;gpr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;battlecodedownloadpackage&lt;/span&gt;
&lt;span class="n"&gt;profilerEnabled&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  If you're experiencing memory problems with the client, please try:
&lt;/h1&gt;

&lt;p&gt;Client Tips  &lt;/p&gt;

&lt;p&gt;Making fewer logs and/or disabling log processsing in the client (toggled with "L").&lt;br&gt;
Making .bc21 files with the engine directly and uploading them to the client's match queue, rather than using the client's runner. With this method, you can just use the web version at 2021.battlecode.org/visualizer.html rather than the desktop application.  &lt;/p&gt;

&lt;h1&gt;
  
  
  Upload the bot to compete against others
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Upload Your Bot and Scrimmage
&lt;/h2&gt;

&lt;p&gt;Create a zip file containing only your robot code (only 1 package), and uploaded it to the submissions page.&lt;br&gt;&lt;br&gt;
Your bot will automatically be ran against other players to determine your ranking. You can also request scrimmages with other teams, and see the replays.  &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
