Nick Ladd told us about the nuances and challenges of VR game development, his recent foray into Unreal Engine 5 and Blueprinting, and the development process behind his character creator tool, Li'l Ladds.
In case you missed it
You may find these articles interesting
Introduction
My name is Nick Ladd. I'm a Canadian artist, and a 3D Illustrator, having studied both 3D animation and Illustration as a student at Dawson College in Montreal. I often work in the VR space and use a tool called Quill, which allows me to draw and paint strokes directly in 3D, which has become the backbone of many of my projects.
This background has made my work pretty versatile and I've taken on a lot of roles in short film/game development over the past 6 years. I've done everything from concept art to 3D generalist and animation work and even produced and directed several projects.
Some of these projects include the award-winning VR film Namoo, the trailblazing VR animated series Tales from Soda Island, an innovative sports project Arcadia.tv, a web-based virtual grad show for students, and most recently, a VR title for artists called Gesture VR which allows artists to practice figure drawing in virtual reality.
Almost all of these projects had me working closely with game developers, but until now, coding is something I either avoided or quickly bounced off from.
Nick's VR Projects
My most recent project is a life-drawing app called Gesture VR that allows artists to light and draw life-drawing models using various virtual tools. This project was made in Unity, where I worked on the visuals while two of my friends developed the gameplay and technical work.
Making VR games can be tricky for many reasons; one of the most common pitfalls is artistry. If you're coming from working on modern consoles or computers, the bar for visuals is high, and game engines can handle pretty much anything you throw at them. Unfortunately, this is not true for VR games, especially not mobile VR games. With lower triangle and texture limits, VR devs need more restraint and clever stylization to keep things from looking ugly.
My advice for somebody who wants to make a VR game is to avoid realism, work with an artist and develop a striking style. The hardware restraints for mobile VR put the visuals a couple of console generations back, so look at older games and figure out which ones stood the test of time style-wise, and try to employ some similar visual techniques in your game.
Game developers in VR also need to be much more cautious with how they move the player around; it can be easy to make somebody nauseous if you're not careful; there are a lot more rules to follow comfort-wise, but also a whole lot unexplored territory and exciting game ideas that people just haven't tried yet, so if you get into VR, remember to experiment, there's a good chance whatever you have in mind has never been done before!
Unreal Engine 5 and Its Blueprints Feature
I've used Unreal Engine 4 in the past, but I was making a film at the time, so I spent most of my time in the sequencer and never delved into Blueprinting.
I've wanted to learn to code because I have a lot of little game ideas that I would love to make real. As an artist who can already design, model, and animate, I feel as though coding is the one missing piece of the puzzle. I don't know if I would ever make it my main thing, but as an artist at the start of the pipeline, I've found that ideas can get lost in translation as they move between different people. Sometimes I want to do things myself, but my hands are always tied.
I tried to learn Unity last year, and although I made some progress, scripting felt too abstract for me, it was like doing math homework, and my brain quickly rejected it. Diving into Unreal, I was expecting the same thing, but I was surprised that the concepts made much more sense when presented visually through blueprinting. I watched some videos on Udemy that explained the basic core principles of what each node was used for, and from there, I was able to build a prototype with the help of some YouTube videos.
When I started learning Unreal, blueprints were a scary beast I wasn't ready to tackle. I still feel that way, but I'm starting to make more sense of them. Of course, I'm far from mastering them, but I feel confident enough now to seek help and understand the basics, which is enough as I learn through small projects.
Li'l Ladds
So, I searched the Unreal marketplace for "Character Creators" before I started and was a bit put off by the results. Everything in the marketplace was so glossy and realistic; I'm sure that's great for plenty of games, but where's the appeal? Where's the charm?
I did research into other character creators and was reminded of the joy I had as a kid using the Mii maker. So my creation tool was, unsurprisingly, based on that one. I've always been a fan of the flexibility and fun of that system and was surprised that nobody was making anything similar.
At this point, I had already watched a few tutorials and was on the lookout for a project. The project seemed relatively simple, and I was able to imagine how the principles I had learned might help me build this. I started without knowing everything with the assumption that I could probably fill in the blanks as I went along. As a 3D artist, I also had a slight edge knowing I could fill the app with plenty of nice customization options.
Development Process behind Li'l Ladds
I started small, not certain yet that I would be able to produce anything. On the first night, I managed to get a sphere to translate left and right by moving a slider back and forth. As small of a step as that was, it formed the basis of the entire project moving forward. Once I cracked that, everything started to quickly fall into place.
I added a head mesh, attached two eyes (basic spheres), and soon had them moving up and down. The logic was similar for scaling the eyes, so I tackled that next. I hit a small hurdle when it came to the horizontal adjustment and rotation; for those adjustments, I needed both eyes to move with one slider but in opposite directions/rotations. I asked a friend who told me to just multiply it by -1. Math, I would never have thought of that. It worked perfectly. Getting all of the other features in just involved a lot of repeating this process.
I ensured mesh switching was working before I implemented all the adjustments. After all, it was crucial for this sort of project that the user could swap eyes, noses, mouths, etc. So I fired up my modeling tool of choice – Quill – and spent a few minutes making a set of eyes, noses, and mouths. With the help of some handy YouTube tutorials, I learned that I could switch meshes by using an array variable and assigning each one a number. Then, by setting up my UI buttons to switch the numbers, I could effectively switch meshes! Easy!
By far, the trickiest thing I had to implement was the facial hair, and I knew it would be, so I left it for last. The problem with facial hair was the beards and head shapes. The app has many different head shapes, so modeling individual beards to go with individual heads would have been a lot of extra work and not very flexible.
I had used textures on the head meshes for things like wrinkles, freckles, and blush, and I thought I could do that again for the beards. No luck; I lost the ability to easily adjust the color. That's when I found my solution. I made a copy of the head mesh, moved it ever so slightly in front of the base head, and then simply used an opacity mask to reveal where the beard was. I could change the beard color to anything I wanted, and the mask would take care of the rest, no matter the head shape.
Main Challenges
The project took around a week from start to finish; I only worked on it after work and on weekends. I pulled a few late nights on it, I don't often drink energy drinks, but this was a special occasion. Overall I only hit a few snags besides the beard issue mentioned earlier and some minor issues that were mostly from holes in my knowledge.
I struggled with the design in a few places, the facial features change to blue on cursor-over to let you know that you can click and change them, but I didn't want the skin to turn blue, so I ended up turning on a point light behind the head to give a different indicator and that worked quite nicely!
Whenever I had a problem, I got help pretty quickly by sending messages to various discord servers or posting in the official unreal forums. But most of the time, I could find Youtube videos to clarify things. As the project went on, I found myself able to solve my problems more and more often.
Having a tangible goal for the project gave me good direction; that's something I recommend for anyone starting to learn blueprints or, well, anything really. Give yourself a simple project and then work towards it, tackling one thing at a time.
Nick's Future Plans for Li'l Ladds
There are a few things I'd like to do with Li’l Ladds. First I'd like to have somebody more experienced look over my code. Although the app works great, I can only imagine that there are better, more efficient ways to achieve what I did with fewer nodes. Then I'd like to tighten a few areas, add more customization options, make it possible to save/load, and then release it to the people via the Unreal marketplace.
I would love to see Li’l Ladds as an alternative to all the hyperrealism found in Unreal Engine. A Unity port isn't out of the question either, and I'm already chatting with a few people about it.
As for where to follow development? Well, if I make any updates, you can be sure to see them on my Twitter and maybe on my website. In the meantime, I hope you'll download the free app and make all sorts of characters!