From January 2020 to July 2020, I worked as an environment artist for Clockwork Labs in San Francisco, California. I worked as the sole 3D artist on their mobile Unity game called Bitcraft. Since it was an extremely small team, I wore many hats; my job was to define the initial art direction of the game, create all manner of assets, optimize them for the mobile environment, and make a bunch of shaders and scripts along the way. I also interfaced with external art contractors to create early concept art.
To provide some background on the game, Bitcraft is a fantasy MMORPG set in a land called Hexia, with a map made up entirely of hexagonal tiles. Players explore the procedurally generated landscape, collecting resources and building their own custom towns. Players can also exchange in-game currency for political power, working their way up to sovereignty.
Below are some samples of my work for Bitcraft.
Modular Building System & Construction Shader
one of the first problems we had to face as a team was how we wanted to create buildings. Early on we decided that they should be modular, so players could create whatever shapes they wanted. Cosmetic features (windows, doors, signs, etc.) would eventually delineate who owned a building and what purpose it served.
Creating hexagonal modular buildings was no small feat! We eventually settled on the system below. I figured out that any combination of hexagonal "modules" could be constructed using only the three triangular shapes below:
We also needed a way to show the buildings were being constructed. I ended up creating a shader to represent it, which can be controlled with a script.
Meshes have "skeleton" texture maps that show the underlying structural beams, and an ID mask controls the order in which pieces (bricks, planks, etc) get added on top.
Fake Windows & Doors
Since the game involves players creating their own buildings, we needed a way to apply cosmetic features to the buildings. This raised an interesting technical challenge: how could I apply things like windows and doors to buildings after they've been created? I needed a solution that would keep everything separated and wouldn't modify the underlying building mesh.
I ended up making a system that "faked" mesh cavities by using Unity's render queue system. See below for an explanation:
First, a mesh with a custom shader is used to block out the space. Next, an inverted mesh with another depth shader is layered on top. Finally, all the extra details are added.
Vegetation Assets & Foliage Shader
I created a lowpoly bird model (~140 vertices) and a shader that animates the bird, which eliminates the need for a skeleton / animation system. This model can then be instanced using any VFX system to make a flock flying in the background.
Shelter & Campfire
As the game's first quest, users are prompted to build a shelter and campfire from resources they collect in the environment.
For the grass, we needed a versatile shader that could be adjusted to fit any of the biomes we'd create in the future. It also needed to be optimized so that it could be instanced throughout the scene and still run on a mobile platform.
I also created a shader for the ocean, which is a huge focal point of the game. Players travel between terrain islands in boats they can craft themselves.
Trading Post and Fabric Shader
As a player's second quest, they need to find a nearby trading post. These are ancient ruins built with arcane Hexian magic that have been repurposed to serve as a kind of regional bulletin board, where players can go to find or post quests.
Resource & Tool Models
The game map is littered with ores and minerals of varying scarcity, which players can collect to craft tools and structures. I made models for all the resources and tools in the game.