Lawrence Granroth

Environment Artist / UX Designer

Cart Crawlers

Game Development - Ongoing

 About the Project

Cart Crawlers is a rougelite twinstick shooter taking inspiration from Nuclear Throne programmed in the Godot game engine. The game features an endless rougelite mode with internet stored rankings, 100+ unique weapons, piles of sprites, music, and animations.

Cart Crawlers can be downloaded for Windows, Mac, and Linux from here https://aloe-vertex.itch.io/cartcrawlers (its free) While the game is available for download it is still under active development and in a beta state (currently version 0.9), you may run into some bugs or areas that have yet to receive a final touch of polish.

 Additional Details

CartCrawlers started as a gamejam project for the TF2Maps Winter 2017 72 Hour Jam. It has since seen on and off development with more than 12 released iterations supporting an active community on discord. The game in its current state is much more than what was originally released for the gamejam. In late 2021 I started work back up on this, redrew all the art with original characters in a fresh setting. In its current state its decent, but it still needs more work. Currently I'm exploring integrating branching paths and breakable walls into the game loop, as well as cleaning up some of the older game-jam code.


VR Software Development - Ongoing

 About the Project

VOXELDER is a VR voxel editor for creating voxel models in VR, or on a traditional desktop. Due to the complexities with working in VR, development on this has been on and off, however I am still working on it and its getting close to completion.
Internally this is based on Godot3.2.3, a modified version of Zylann's voxel library, and the openvr extension.
Notable Features:
- Supports VR and desktop editing
- Independent per-voxel 8-bit color
- Voxels can have custom normals for a smooth appearance.
- Supports multiple drawing layers that can be individually transformed
- Custom materials with roughness, metalness, emission, and refraction
- A Lathe mode

 Additional Details

The voxel module isn't really intended for what I'm doing with it, it needed to be extended to support the color and normal data, as well as rendering the smooth normals.
Most of the logic for brushes was also added as part of the voxel module's C++ code for performance reasons.
Godot provides ui as well as handling the materials and rendering. Because each voxel layer is a godot node internally its easy to arbitrarily transform them, or parent other objects to their instance.


Gameplay Experiments 2020-2021

 About the Project

Amberlest can only really be described as a chain of gameplay and godot engine experiments. Its a ship of theseus style iteration on cartcrawlers's codebase, originally focusing on the idea of switching between 2D and first person perspectives, it slowly evolved into a fully firstperson, wall running, rouglelite fps.

Development on this is currently paused while I focus on Cartcrawlers and Voxelder.

Early builds use vanilla Godot 3, Late builds use Godot 3 Mono with a minor modification to allow passing a custom delta to the move_and_slide() function

 Additional Details

Screenshots from left to right
1: Gameplay from the newest published build
2: A screenshot of the current unreleased version showing the godot3 volumetric lighting solution. (still needs polish)
3: Gameplay of a very early build when the perspective switching mechanic was still in. At this point the game is still 2D cartcrawlers physics internally, with a 3D camera and meshes mimicking the locations of their 2D counterparts.
4: A screenshot of the blend file for one of the basic enemies. The scripts are used to generate the texture in the middle to store the per-vertex animation data.


Game Development - 2020

 About the Project

Hivewinder is a 6DOF (6 Degrees of Freedom) FPS where you pilot a ship that can strafe on all 3 axis and rotate on all 3 axis simultaneously.

The bulk of its development happened over 4 months during the covid lockdown. I learned alot about Godot3's 3D capabilities, procedural materials, multiplayer networking, and 3D asset pipelines, but after in-office work picked up again I didn't have enough time to keep working on such a large scale project.

I still plan to revisit this and finish it at some point.

 Additional Details

This is also the project where I started modifying godot itself. Notably increasing the maximum per-object light limit in Godot 3.
relevant link
Screenshots from left to right
1: The spawn area in level 1. While not finalized this is close to the visual look I was going for. Textures are trim-sheet based for more efficient modeling.
2: The equip menu. The player ship design is visible here.
3: Recording of a multiplayer test. Multiplayer was a bit unpolished but it did work. The server was headless godot instance running on a Digital Ocean droplet.
4: One of the outdoor areas in level 1.

CTF Hyperline

TF2 Map 2017-2019

 About the Project

CTF Hyperline is a large capture the flag map designed for TF2's "mannpower" gamemode. The gamemode adds grapple hooks and excessive powerups to the mix of regular TF2 so map design must be expanded and adjusted for the increased speed and limitless vertical access the grapple hooks allow. 

For this map I brought in a few elements of TF2 that I have yet to see in other mannpower maps, notably large slanted surfaces the player can slide on (dubbed surfing by the community). This is a movement technique present in most source engine based games and I found that the grapple hooks worked really well with it, allowing the player to maintain their altitude as they cast out a new hook. You can find a download for the map at the TF2maps.net thread here

 Additional Details

This map has had 2 phases of development, back in 2017 was the original conception and first versions, then I moved on to other things for about a year and revisited it to finsih the layout and detail the map in late 2018. I made some custom props for the map for situations where I couldn't find anything in TF2's prop library that fit my needs. From left to right:
1: A small blimp complete with animations.
2: Showing off the material settings applied to my blimp prop.
3: A hill with some pine trees, used several times in the skybox.
4: The same hill but with the trees hidden. I used blender's texture painting to add the brush texture.
5: The large radio dish that sits above the map, cut into 4 quarters due to source engine's prop limitations.
6: The windowed area of an air-traffic control tower. Not complex, but the shape is hard to do without making it a prop.


Ui Design / Web Development - Late 2018

 About the Project

MYRVP is a website for managing call lists and keeping tabs on volunteers in campaign activities. I was contracted through Robert Half to improve the interface of their already functioning website. The group at MYRVP wanted their site updated to have a more modern appearance and to improve the navigation and compatibility on small screens and mobile devices. The contract went from Late August to early October and the project was completed successfully. 

 Additional Details

The project entailed designing a new look for the existing pages, editing their HTML, and CSS files to achieve the pitched look, debugging various cross browser issues that came forth in development, and sending the completed files back to the client so their core website team can hook the pages up with the rest of their site's scripting. I also did some minor Javascript to get the drawers working.

The end result was a cleaner modern looking site that looks as advertised in all modern browsers (and looks close enough in internet explorer) and scales gracefully to smaller window sizes and mobile devices.


TF2 Map 2018-2019

 About the Project

Featuring many spinning fans cp_mist is a jungle themed 5cp map designed for competitive play. Explore the hidden facility's lush undergrowth, balance on its many platforms and overhangs, and sneak around through its devious flanks.

I released the map back in March with critical acclaim. It held the top listing spot in the steam workshop for a while and has since been picked up by a couple competitive events. Time will tell whether or not it will remain popular though.

You can find a download for the map at the TF2maps.net thread here
Or on the steam workshop here

 Additional Details

I made some custom props for the map for situations where I couldn't find anything in TF2's prop library that fit my needs. From left to right:
1: A dome for 2nd point (shown in the 2nd screenshot), the glass is handled separately with brushes.
2: A simple metal barrier (shown in the 1st screenshot).
3: A rusty silo (shown in the 3rd screenshot).
4-5-6: parts of the intake fan showed in the first screenshot. The fan blades have an animation baked into the model. I'll need to update the tube model to have interior faces, one of many things on my list of todos for this map.

Various Filament Work

UX and VFX work 2017-2018

 About the Work

For a little over six months I worked on an unreleased project at Filament Games, an educational game development studio in downtown Madison. Work on this project was odd, I was brought on very early on when the engine development was ongoing, the game was little more than a hello world demo, and the project as a whole had not yet been fully wireframed. Because of this the variety of work I did on this was vast, from gamedesign, to creating wireframes, UI/UX design, scene setup, animation, particle effect creation, and some asset creation. An important thing to know about this project is while most of the work is done within the Unity3D editor software, the results get exported out to filament's own browser based engine.

About the above media (left to right)
1: This gif was the first polished part of the game. I was involved with a couple aspects of this. The game hud artwork I 3D modeled, rendered, and then painted over. I did all of the particle effects in this scene (the ship rockets,phaser rays, asteroid explosions, gem sparkles, and the rainbows), with the bare-bones particle system that was available to me. Additionally I did the animations (asteroid and gem spinning, the ship bobbing, the flickering "antonym light" and the floating gem in a bubble) and scene setup required to get all of this working in-engine. Most of the other art assets (ship, background, etc.) were done by other team-members.

 Continued . . .

2: This was a set of animated concepts I made for making sliding blocks around on a grid more engaging. Me and the other team-members came up with the concepts and then passed the ones we liked to the artists. Then I took the sprites the artists made and animated them in Photoshop. Although we only ended up implementing the top left design into the project.

3: Concept art for a scoring system for the game. I animated this in an empty unity scene.

4: Roboarm animations and vfx. I handled the animations and particle effects of the robot arm sequence (including the smoke). It is intended to mask a puzzle transition, although its timed incorrectly in this recording because it is from an early build of the game.

5: This was concept art for version 2 of what was shown in the first image. The first iteration looked nice but the engine performance on ios was not great and it needed to be scaled back so it could run well in a playtest (too much overdraw). Later on the engine was updated so the old design would work without issue, but by then the project's art style had shifted away from that design and we thought of a more space efficient button layout. The character, ship, background, and speech button were assets done by other team-members, I did everything else here, as well as laying it out.

Rocket Theater

Game Development 2017

 About the Project

Rocket Theater is a 2D explosive based stunt game that is currently under active development. I'm working on this game as the primary artist and ux designer with Ian Feldschneider who is the programmer. The game is being built using the Unity Engine, most of the art assets are created using blender.

We plan to get a playable demo out within the next few weeks.
For more information about this project, check out our development blog https://forums.tigsource.com/index.php?topic=60280.msg1322893#msg1322893

Ian's Page http://www.ianfeldschneider.com/

 Additional Details

About the above media (left to right)

1. A quick recording of the game running from within Unity. The game is still in an alpha state, so many things are currently unpolished and unfinished.

2. The source file for art assets of one of the playable characters (Chronophobiac) being displayed within blender. Modeling and animating characters has been a tricky process so far, i'm fairly pleased with how this one turned out. Although there is still room for improvement.

3. The source file for another one of the playable characters (Bill), this file considerably older than Chronophobiac's.

4. The source file for one of the maps (Skycast Mines). For the environment design, i'm taking a rather unique approach. I made a series of procedural textures (see the network of nodes) and apply them to the surfaces within the map. These do things like brighten edges automatically, change tint/hue based on elevation (see the rocks), as well as applying complex non-repeating textures to the surfaces. When the moddeling is done, I UVmap the surfaces and bake the lighting information along with the procedural textures into the same image file. This results in high quality lighting and very sharp textures across large surfaces, without the need for painstakingly aligning the texture for each face.


Game Development 2015-2016

 About the Project

Arctica is a solo independent game project I worked on for a few months before pausing development when I got involved in Rocket Theater. The game is a 2D rougelite platformer developed using a custom c++/SFML based engine. I don't have much gameplay to show for it yet seeing as the bulk of the development time spent so far has been based around building engine featrues rather than building a game. More details about the development and current status of the project can be found at the dev-log.

Link to the dev-log:

 Additional Details

About the above media (left to right)

1. This is me showing off the engine's scripting and sprite-sheet animation capabilities. (the penguin ai) The entity system can currently handle more than 10,000 scripted penguins before there is any noticeable slowdown.

2. This shows some of the engine's development tool's user interfaces. (a tile-map/prefab editor, a map-overview/generator, and a file manager). The engine runs at a very low native resolution, so the dev tools need to be as small as possible in order to fit on the screen comfortable.

3. While developing the state system for the player's movement, I needed a good way of portraying the complex network of states. After trying a couple different pieces of flowchart software, I eventually just ended up doing it in blender. Connecting spheres in 3D creates way less of a unintelligible mess than circles on a 2d plane.


App Design/Development Spring 2016

About the Project

Trinary is a group word game for mobile devices. (things like charades). I did the visual design and art assets for this app during my internship at Mobile Mesh Games.  LINK 

When I was assigned to the project its programming was essentially done and the team already had settled on using cards to present the words. So I was tasked with making something that looked professional but still matched their current design.

Trinary is a finished game, you can find it at links below.
Google Play Store:  LINK                 Apple App Store:  LINK 

Additional Details: About the characters

While developing the design for Trinary I noticed that the game was feeling a little lifeless and generic. So I made these simple animated geometric critters in an effort to make things more interesting.

I made the characters by first drawing up a static design in Inkscape, and then animating their features using Blender.

CTF Urban Brook

Level/Environment Design (TF2) Fall 2015

 About the Project

Urban Brook, is a mid size capture the flag map I created for the game Team Fortress 2. I originally made it for "The 2015 72hr Winter Special!" contest that was hosted by TF2Maps.net LINK

Following the contest I completely overhauled the map, both layout wise, and visually. I released it on November 1st 2015 and it received generally positive reviews from the public.

Further information can be found on my steam workshop page, located here. LINK

 Additional Details

While most of the assets used within Urban Brook come from stock TF2, I did make some of my own to help some of the key areas feel unique.

I also put together a small panorama of the center area of the map. You can use your mouse to take a look around. LINK


Game Development 2014-2016

 About the Project

Generantis is an independent game I was working on with Ian Feldschneider. Ian started the project around some time in 2013/2014 and later brought me on as an artist to make things look respectable in time for the University of Wisconsin Whitewater MADG Expo 2014.

Since then I have been contacted periodically to keep the art assets looking fresh, until recently (mid may 2016) where I got code access and started heavy development on the project with him. Development later ended in late July 2016 after Ian decided to drop the project.

More information about Genernatis may be found at the official sites (links below). Although we have yet to do a major marketing push, so the information is a little out of date.

Ian's Page http://www.ianfeldschneider.com/
The official page (maintained by Ian with lots of outdated screenshots) http://generantis.weebly.com/

 Additional Details

About the screenshots, the first two are from the 2014 art pass I did. The third and fourth screenshots are what the game looks like today. It looks a little funky at the moment due to being half way through transferring the artwork from 16x16 pixel art, to a higher resolution.

Below are some concepts for the intended future are direction.

Other Projects

These are things I worked on that are not refined, new, or complete enough to be in my main portfolio, however, they are still worth mentioning.


3D Modeling / Level Design - 2016

 About the Project

Ego is a doom style shooter made using the Unity Engine. It was as 5 person group project I was involved in while at the University.

I was the artist of the group and was tasked with creating the art assets for the player's weapons, as well as pickups and enemies. We really wanted to capture the style of early 90s first person shooters, so instead of using 3D models in game, everything is drawn as 2D billboard sprites.

 Additional Details

To make the assets, I used Blender to model and rig the objects, then I rendered their animations out to individual frames, and stitched them together into a Unity compatible spritesheet. After that I scaled it all down to pixelize the results.


App/Ux Design Spring 2016

 About the Project

Hackernet, like trinary above, was one of projects I was involved in while part of Mobile Mesh. I had complete control over the visual design and the user interface design for this project, however, the university semester ended (and thus, so did my internship), so I was never able to see the project to completion.

Above are some of the completed designs. Rendered from Inkscape, they were partially implemented in Unity engine by the time I left Mobile Mesh.


Game/Engine Development C++ Ongoing

 About the Project

Ambüre is an independent game I was working on using C++ with the SFML graphics library. While it started as a top down 2D action adventure game, once I realized I could make an in-engine sprite editor (that updates edited sprites real time) the design focus changed to seeing how far I could go with the game engine.

The game behind this project is indefinitely shelved, I instead took the code base and used it to build Arctica instead because it had a more realistic scope for a solo project.


3D Modeling / Game Development (Unity Engine) Fall 2015

 About the Project

Caliber is a 2D vertical-scrolling shooter I made using the Unity Engine. It is a little basic, as I was still learning the ropes at the time I made it, but I am rather fond of how some of the art assets turned out.


Game Development (Processing/Gamejam) 2014

 About the Project

Tracked is a simple 2D platformer I put together for one of the game jams at the University of Wisconsin Whitewater's GameD club.

Assorted Minor Projects

Below are smaller projects I worked on, while they aren't as impressive as my other portfolio entries, I think they do a good job at showing my experience in other areas.

Generantis Character Animator

Tools and System Development (Processing) Summer 2013

 About the Project

This was an experimental side tool I made while doing early explorations of Generantis' artstyle. The first video (above) shows the most developed state the project reached, before I realized that it was not going to be flexible enough for general purpose use.

The second video shows what the project was like right before I dropped it (for various reasons).

If I were to rekindle the project, which might happen due to me being heavily involved in Generantis' development right now, it would be in the form of an in-engine dev tool for Generantis, rather than an isolated side program.

Rantis Script

Programming (Processing) Fall 2013

 About the Project

This was my attempt to make a custom scripting system for Generantis. It was being designed to run very quickly, and to avoid crashing as often as possible (preferring to overflow its own contained memory instead).

Ultimately this project was dropped in favor of of using Lua scripts.

"Shader" Effects

Processing 2014-2015

 About the Project

Shaders are almost essential for modern game projects to appear modern and professional. Above are 2 shaders I was working on for Ambure.

My current pipeline for making shaders, is to first program the effect by modifying pixels directly in a processing app. And then when I get the effect I want, I find a way to port it to GLSL code. The first shader is a per-pixel directional lighting shader. Compatible with normalmaps exported from Blender. I did get a fully working version in GLSL.

The second shader takes pixel art, and dynamically applies right triangles to make diagonal connections. Unfortunately, it never made it out of the processing stage, mainly because I put off work on Ambure for other things.

 Copyright © 2016 Lawrence Granroth