Balancing Game Mechanics

Balancing Game Mechanics

Two of the most influential components to decreasing LOE in balancing game mechanics is automating the most essential parts of testing those mechanics, and providing meaningful and easy to understand graphs. Some meaningful questions to better lay the foundation of balancing and creating these components:

  • What are the actual core stat(s) that identify survival? (Usually health)
  • What are the ancillary stat(s) that help facilitate the increase or decrease that core? (damage, strength, dexterity, etc.) I'm assuming all actors here are equal and we aren't comparing apples and oranges.
  • What are the supplemental stat(s) that may contribute to

Read More

When A* Mobile Pathing Fails

When A* Mobile Pathing Fails

Recently implementing a super easy JS library for A* pathfinding called easystar, I discovered an interesting issue: All the mobiles would collide in certain locations or "hotspots" on the maps.

There are two main reasons I can see for this:
1. The map itself is most easily traversed through certain spots.
2. The map is ONLY traversable from one side to another through certain locations.

What's likely exacerbating the issue is I'm allowing a mobile to pick a random spot on the map (apparently they know all things,) and then A* pathfind to that location (yep, they're super smart like

Read More

Angular was dead on arrival

Angular was dead on arrival

I'm commonly asked why more people don't choose "angular2" which in my head I correct to "angular". (we're on angular 3 alread.. no, 4,... no.) Quite simply, the answer is Typescript. Whether we like it or not the majority of javascript developers in our field are new or mediocre developers who don't have the time or cognitive ease to attempt to learn another language.

It was a huge mistake for the team to release the library with the small amount of constantly outdated documentation entirely in Typescript. Most stackoverflow searches for angular aren't even relevant or accurate given the constantly

Read More

Updating a SPA automatically without browser refresh

Updating a SPA automatically without browser refresh

I was asked a very interesting interview question today.

Lets assume you have a single page application running on n users computers as a dashboard and you updated the application, how does all of the clients receive and manage the updated assets without incurring a browser refresh.

The first problem to figure out is how do I know the application was updated?

  1. Polling the entry bundle asset
  2. Polling the Index.html and comparing hashes/versions
  3. Polling some custom tiny server text doc
  4. Dashboard websocket contains the version
  5. On acquisition of new data it contains version
  6. We don't update until a

Read More

Zsh Theme For Pragmata Pro

Zsh Theme For Pragmata Pro

#!/usr/bin/env zsh

local LAMBDA="%(?,%{$fg_bold[green]%}λ,%{$fg_bold[red]%}λ)"  
if [[ "$USER" == "root" ]]; then USERCOLOR="red"; else USERCOLOR="yellow"; fi

# Git sometimes goes into a detached head state. git_prompt_info doesn't
# return anything in this case. So wrap it in another function and check
# for an empty string.
function check_git_prompt_info() {  
  if git rev-parse --git-dir > /dev/null 2>&1; then
    if [[ -z $(git_prompt_info) ]]; then
      echo "%{$fg[blue]%}detached-head%{$reset_color%}) $(git_prompt_status)
%{$fg[yellow]%}→ "
    else
      echo "$(git_prompt_info) $(git_prompt_status)
%{$fg_bold[cyan]%}→ "
    fi
  else

Read More