JSFiddle - React, Tailwind, and code Playground

HTML

<div id="container"></div>

CSS

#canvas_container {
    width: 640px;
    height: 1000px;
    border: 1px solid #aaa;
}

JavaScript

var paper = Raphael(50, 25, 1000, 640);
var enemy_array = [];

var updates_since_last_spawn = 25;
var ms_of_last_update = new Date().getTime();
var elapsed_time_since_update = new Date().getTime() - ms_of_last_update;
var GAME_TICK = 30;

var num_of_enemies_spawned = 0;
var enemy_height_and_width = 25;
var enemy_speed = 5;

var gb_perimeter = 7; //odd numbers greater than 5
var gb_x_pos_corners = []; //index is 0
var gb_y_pos_corners = []; //index is 0
var gb_enemies_per_stage = 0;
var gb_scale = enemy_height_and_width;
var gb_score = 0;

var gui_score = paper.text;
var hack_delay_spawn = 25;
var waypoints = [];

//core

function drawScore() {

}


function game() {

    elapsed_time_since_update = new Date().getTime() - ms_of_last_update;

    if (isItTimeToUpdate() === true) {
        spawnEnemy();
        moveEnemies();
    }

}

function drawGameOutline() {

    for (i = 1; i <= gb_x_pos_corners.length; i++) {
        paper.path("M" + gb_x_pos_corners[i - 1] + "," + gb_y_pos_corners[i - 1] + " L" + gb_x_pos_corners[i] + "," + gb_y_pos_corners[i]);
    }
}

function createGameboard() {
    var local_array = []; // determine number enemies before turn 
    // also used to find xypos of corners

    //example 11x11 board - 11 elements - [10,10,10,8,8,6,6,4,4,2,2]
    //                                    [ R, D, L,U,R,D,L,U,R,D,L]

    for (i = 0; i < gb_perimeter; i++) {
        if (i === 0 || i === 1 || i === 2) {
            local_array[i] = gb_perimeter - 1;
        } else {
            local_array[i] = local_array[i - 2] - 2;
        }
    }


    //Calculate total enemies per stage
    for (i = 0; i < local_array.length; i++) {
        gb_enemies_per_stage = gb_enemies_per_stage + local_array[i];
    }

    //Pattern Right Down Left Up Right Down Left Up
    //1-Right:(+x)	
    //2-Down:(+y)  
    //3-Left:(-x)  
    //4-Up:(-y)

    gb_x_pos_corners[0] = 0;
    gb_y_pos_corners[0] = 0;


    for (i = 1; i <= local_array.length; i++) {
        if (i % 4...