ue4 content folder naming convention

I prefer a flat file structure. I have one level of folders, with each folder corresponding directly to the name of the asset type (Blueprints, StaticMeshes, Textures, etc) and that’s it. No sub-folders beyond that. I don’t bother thinking about how to organize and nest folders into hierarchies like Content/Environment/Buildings or Content/Player/Gun.

flatcontent

I also don’t prefix my assets with BP_ or SM_. If you change the Content Browser view option to list mode, you can clearly see Blueprint or Static Mesh written below the name. Instead, I have a clear name like PlayerHmd (head-mounted display). The blueprint is called PlayerHmd, the static mesh is called PlayerHmd, the material is called PlayerHmd. Although the PlayerHmd assets are distributed across different folders, finding all the PlayerHmd assets is simple using the Content Browser filter (or the super handy Ctrl+P for quick open).

content_search

A flat file structure works if you keep a consistent name across asset types and leverage the search/filter tools. It also avoids duplicate assets.

Why flat? I’ve seen as many as 4 people stand around for over an hour debating where assets should go in the hierarchy – it’s crazy. Eventually, they all come to a fragile consensus (from exhaustion talking about it). A week later someone commits assets that don’t conform to the hierarchy and the debate continues…

bash generate random words

Recently, I needed some random words for test data so I used bash to generate them:

#!/usr/local/bin/bash
# requires bash 4, see http://clubmate.fi/upgrade-to-bash-4-in-mac-os-x/

# load up the dictionary
mapfile dict < /usr/share/dict/words

# count lines in dicitonary
WC=$(cat -n /usr/share/dict/words | wc -l)

# default to 50 words unless user passes param
NUM_WORDS=50
if [ $# -eq 1 ]; then
if echo "$1" | grep -qE ^\-?[0-9]+$; then
NUM_WORDS="$1"
fi
fi

# create file for output
rm -f random_words.txt && touch random_words.txt

# pick random words
for i in `seq 1 $NUM_WORDS`; do
# generate a single number within WC range using jot
RAND_INDEX=$(jot -r 1 1 $WC)
echo ${dict[$RAND_INDEX]} >> random_words.txt
done

how to make a unicorn

Managment: We need a unicorn, how long will it take to make one?

Artist: I’ve never drawn a unicorn before, I…

Management: Nevermind that, I need a number. Give me a breakdown of how long it will take to draw each body part.

Artist: Uhh…okay. 2 days for the head, 1 day for the body, 0.25 days for each of the limbs, I guess.

Management: Okay! I have you scheduled to draw four limbs before end of day. Tomorrow you can draw the head and finish off the week attaching the body to both.

Later that week…

unicorn

Management: Shit, we forgot the tail. We should fix the alignment issues between the head and body but we’ve run out of time. Meh. Ship it.