Mobile Golf Game


Role Description

I was hired as an environment artist here to start the process of launching Toptracer’s launch of creating their scanned 3D environments that could run on their mobile apps and devices on their ranges. We were a pretty new team, so since we were lacking some direction I also took it upon myself to create some concepts in order for us to have some kind of general art direction to move towards. It was also useful for our upper management who hadn’t been involved in game production prior to this to get an idea of what we were planning in terms of visual development. As time progressed, I got more into the role of art direction, while also creating 3D assets and my specialization was vegetation so I was spending a lot of time getting to know and understand SpeedTree. I worked closely with artists, programmers and upper management in order to create a product we collectively could work towards.

Scanned data, mobile, art direction, vegetation, SpeedTree

Vegetation Specialization

I had never worked with SpeedTree outside the very rudimentary SpeedTree add-on that Unity used to have, so it was a daunting but exciting task to get into the field of a new program. It wasn’t just about hunting the tri-count, but for optimization it also meant asking how much alpha was bleeding through in the cut-outs, how much information could you pack in one branch cluster before mip-mapping would ruin the tree in-engine, how normal direction could impact the tree, and much more. I learned so much in this process, and my incredibly talented team also did tons of optimizations as well in terms of injecting vertex coloring into our shader to shave off the need for AO textures which in the end I was very happy about. It was a fun process of artist and programmer combo where I would perhaps sketch or paint, or make my own mock-up of a shader myself in Shader Graph, and the programmers could then take it from there. I also learned about the sheer power of SpeedTree, and even though it was an uphill battle, in the end I was able to create the very specific trees that are deemed very important to get right on golf-courses because they’re seen as iconic. So it was a fun job of getting a tree that both adhered to the proper silhouette, while also keeping a reasonable tri-count afloat, and also getting the right look of it.

Optimization, tri-count, alpha, mip-mapping, shader, silhouette

Mobile Optimization

One thing we had an early hurdle of was that a lot of tree we were trying to use were just way too non-performant for us. Even by today’s standard, we found that SpeedTree’s default tricount for their lowest purchasable trees was at about 15-20k tris. In addition to this, they also utilized several maps ranging from transcluceny to normal maps that we as artists were informed would not be able to use. We settled to go for trees from 6-8k tris, and solely use one Albedo map.  This meant we needed to work a lot smarter than we had previously done, for example to not lose too much information from SpeedTree, I’d create a material in Substance Designer where we could easily swap out the textures we got from SpeedTree to bake down as much information as possible down into our Albedo.

In order to save in on not having trees having baked lighting, we intitially used a lightmap for each tree-type, but then eventually going for vertex baking. After long experimentations with lighting, I eventually found methods of achieving some quite smooth tree lighting, while also doing some small cluster break-ups. I found otherwise that the completely spherical normal of trees that is usually otherwise used to be quite odd and flat, but complete individual normal direction to be chaotic, so I wanted to find something that worked in-between these.  

Normals, stylization, baking

Modular Houses

We also ran into being in a situation where we were creating this kilometer-long courses with tons of houses, but not nearly enough time to be able to model them one by one. Eventually we sat down and started creating both style categories, such as mediterranean houses or old English houses, but I also tried to push for modular buildings where we could just create a modular set in whatever modeling program we’d prefer, and then assemble these houses within the engine. It made for both faster results, but also more flexibility within the engine to be able to create environments to our desiring.

Experimental Weeks

One of the most fun things to do at Toptracer was always the experimental weeks. We had just done a previous experimental week where we had just lost track of our art direction and everything, so I wanted to see how far we could get in a week if I managed scope and project manage a little better, so I took a day to prepare some concepts and an idea of a pinball game that would use our golf mechanics to shoot the ball out. I got a team of an amazing artist/developer and a programmer and the three of us just had our stand-ups every day and continually encouraged each other to meet our goals. I’ll be honest, at the beginning of the project I think I was expecting us to maybe meet 70% of the goals I had set up, but at the end of the week we had a fully functional demo and were even able to get into what I had put in as “bonus territory”, such as some cute bird animations and bonus tower system. From this project I think I really learned the power of a clear vision, and having a team where the energy just continuously bounces off each other. I think it’s also important to not confuse clear vision with constricting each participant’s creativity: you set up a clear goal, but you need to leave space for every person to be able to solve this in whatever way fits them.

Art Direction, project management, experimental