Danny Park, known to many as devpachi, is a solo game developer currently residing in McLean, VA. The developer is studying Computer Science at the University of Michigan and is developing Rōnin Trail, an upcoming open-world voxel game where you play as a wandering rōnin traveling across the Japanese countryside and searching for a purpose. With Rōnin Trail being devpachi’s first game, the developer required convenient software that would allow him to set up voxel graphics, and thus, Unreal Engine was chosen as the main driving force behind the upcoming adventure.
To learn more about the development process behind Rōnin Trail, we spoke with the developer about how Unreal Engine can be used to set up voxel graphics, what gameplay mechanics have already been set up, and how the upcoming title’s combat system was created.
How did you get started with Rōnin Trail?
At first, Rōnin Trail differed a lot from what it is now. I initially started out with the ambitious goal of making a massive open-world MMORPG as my first big game development project. When I was younger, I used to play a 2D MMO game called Realm of the Mad God a lot and I had a dream of making a 3D version of it with updated graphics. Obviously, I knew that I would need an entire game studio and probably millions in funding to make it possible, but it was good motivation to get started on a big project.
My focus on the game shifted when I saw voxel art of beautiful buildings and nature scenes while scrolling through Twitter. I especially liked the Japanese-themed works done by artists like Niklas Mäckle. I thought it would be cool to make interactable in-game voxel foliage and created my first scene with tall voxel grass.
As someone who enjoys nature, making realistic nature scenes in a game engine was extremely satisfying and soothing for me. When I combined it with a Depth of Field effect, it created a nice, cozy atmosphere I enjoyed walking my player character around in. From then on, I decided to make my game focus heavily on environmental art.
Image courtesy of Danny Park
Please tell us about the game’s story and how it evolved over time.
Rōnin Trail is a game about a samurai who’s lost his master and became a wandering rōnin with no purpose in life. He must take on odd jobs and bounties to make a living. The game takes place after a major war when a new Shogunate is established to unite the country. As the valley is still recovering from war, organized crime and bandits begin to take hold and terrorize the locals. Your goal as a player is to restore peace to the valley and find new meaning in your life.
Instead of having the main storyline that the player is forced to follow, I wanted Rōnin Trail's story to be a loose series of side quests. Basically, your objective is to keep traveling through the valley in search of new meaning, which could be honing your sword skills, helping villagers with their problems, or something as simple as catching new beetles for your bug collection. I thought it was a fitting plot structure since the main character is supposed to be a wanderer. I plan to add subtle bits of lore you can discover while exploring and talking to NPCs that might uncover some overarching plots or backstories.
I chose feudal Japan as the setting because I’ve always been interested in Samurai since I was a kid, through movies like Last Samurai and Kurosawa films, and shows like Samurai Champloo. Since my game started out as a series of environment art scenes, I felt like adding a lone samurai character with a straw hat to it would fit the aesthetic.
Image courtesy of Danny Park
How did you come up with this unique voxel art style?
Like most people, I think voxels and cubes are satisfying to look at. Making voxel models is also quick and easy in MagicaVoxel, as opposed to conventional modeling and texturing, which is why I chose to use it as the main art style. As a solo dev who doesn’t have much experience with 3D modeling, having a quick and easy way to create and texture models was essential if I wanted to get anything done.
Voxel models exported from MagicaVoxel aren't optimized for games though, so I had to import them into Blender and create low poly versions of them. I also made use of soft shading Normal Maps to create the “soft voxel” look you see on characters and plants in the game. This was a huge breakthrough for me since the “soft voxel” look took the sharp edge off of models and made the scenes look less busy. Most of the foliage and trees you see in the game are now based on that slight change in art style.
Image courtesy of Danny Park
Why and when did you choose Unreal Engine for your game?
When I started the project two years ago, I chose Unreal Engine because it was easy to learn and had the best lighting and graphics capabilities out of any other engine. Unreal Engine has all the tools needed to create stunning environments quickly, which was exactly what I needed for the environment art in my game.
The engine’s Editor provides tons of easy-to-use tools to optimize workflow and increase productivity, which is necessary to develop such a large project as a solo developer. I’m a programmer, but having the ability to also use visual coding with Unreal Engine’s Blueprints helped speed up development a lot.
Even though I'm responsible for a wide range of roles in the game’s development, from map designing to inventory system programming, I never really felt like something was out of reach for me with Unreal Engine. Everything is made to be optimized and accessible for developers, and with the massive amount of support and documentation for it, I feel like I can learn to do anything. It’s really freeing to use, and I love it.
Were there any gameplay mechanics you designed for the game?
Rōnin Trail is a game about wandering around and exploring new places, so traveling through the game’s world has to be interesting. To make exploration fun, I added survival mechanics like fishing, bug catching, cooking, and camp building as well as a variety of unique flora and fauna to populate the world. I used to play a lot of Animal Crossing and I always enjoyed the excitement I got when I saw a rare insect at the corner of my screen. It makes something as trivial as walking around interesting.
As a jobless rōnin, the player will have to find a way to earn money to pay for things like food, gate tolls, or boat trips. So I added plenty of quest-related mechanics, like the bounty system or random side quests. You'll find these quests by talking to people or finding job listings on billboards.
Image courtesy of Danny Park
Please tell us more about the game’s combat system.
I designed Rōnin Trail’s combat to be hardcore and realistic. You can kill enemies just as fast as they can kill you. I was never really a fan of arcade-style games where you keep hitting a massive health sponge and I didn’t think that fit the style of the game. I wanted fights to feel like real life, where the winner could be determined in seconds. I think always being a few hits away from death adds so much intensity and tension to fights.
I wanted to make combat feel as fluid and real as possible to not break away from the immersion. It took hundreds of iterations of animating and blending different parts together but I’m finally satisfied with how it feels now. As you swing your sword, you’re able to rotate and move freely to control the trajectory of your sword, so you can make tight controlled movements or sweeping attacks. You can also switch stances in between attacks to adapt to your situation or make cool-looking combos.
Usually, a samurai carries two swords, a long katana, and a shorter sword called wakizashi, so in Rōnin Trail, you’ll be able to switch between swords for different situations. The long katana is good for general use, but is long and could get hit on obstacles while swinging. The shorter sword is used for close-quarters combat or stealth.
To make combat as satisfying as possible, I made it so that hits interact with the enemies' physics so every hit has real weight behind it. There are also realistic blood effects that stain the environment and diffuse in water, as well as dismemberment which makes slicing enemies with your sword feel realistic and brutal.
Image courtesy of Danny Park
How do you approach the game’s world and its beautiful environments?
The game’s world took countless iterations to get right, and I am constantly working to improve it every day. My approach is to start with anything, even if it doesn't look good, and constantly switch things out with updated models. I probably spent a hundred hours on a single tree, testing different models of trees, changing the leaf texture, or swapping out the trunk mesh until it felt right. But if something finally works, you can apply it to the rest of the game, just like how I did the leaves and trunks for all the tree models.
There are a lot of different moods and atmospheres I wanted to convey in Rōnin Trail, such as the epic feeling of winning a duel in a dramatic wind-beaten grassland, or the tense and mysterious feeling of exploring deep in a misty forest. I create these moods by adjusting various lighting and Volumetric Fog settings in Unreal Engine, and modeling assets to fit the scene.
Sound design plays a major role in mood. For example, the calls of evening cicadas at sunset give off a nostalgic, bittersweet vibe, while the crunching of snow in a silent winter storm conveys a lonely and serene mood. Music also adds a lot to the atmosphere and I’m happy to have Zhao Shen collaborating with me on that.
The mood for each location isn’t set in stone though. The weather and time of day change from scorching midday sun to gloomy thunderstorms which can drastically alter the feeling of a location.
Image courtesy of Danny Park
What are the challenges of developing such a vast project as a solo developer?
Developing an open-world game as a solo developer is tough, and one of the most time-consuming parts of development is creating assets from scratch to fit the game’s unique art style. It's also challenging for me to add hundreds of stories and side quests into the game since I prefer to design gameplay and art, not stories and dialogue. I hope to have supporters of the game contribute ideas for quests and NPCs that will populate the open world.
Solo development is difficult but I enjoy it. I feel like there are some things to this project that are only possible with solo development, like the fluid combat system that works animations tightly with gameplay programming and balancing. I can make minor modifications to animations and instantly update the animation to test how it plays right away. Solo development also keeps things fun and interesting all the time. When I get burnt out on things like programming inventory systems, I can start working on attack animations or modeling buildings.
I tried Unreal Engine 5 beta when it was first released and I thought the Nanite and Lumen technologies were incredible! The voxel art I use, especially for buildings, is very high poly, so I was never able to use them directly in my game without optimizations. But with UE5, I could put thousands of voxel models in one scene with little effect on performance. If I had Nanite for Rōnin Trail, the development would be so much faster since I wouldn't have to worry about optimizing assets. I could just focus on creating beautiful art. I’m sure the lighting in Rōnin Trail would look even more realistic and lifelike with Lumen too.
What are your next steps? Where can people follow and support your projects?
My next steps are to finish running the Kickstarter campaign and continue working on new content in the open world. With funding, I hope to collaborate with voxel artists to design beautiful buildings and villages for the game! You can read more about the game's historical background and inspirations on the Kickstarter page.
To keep up with the latest updates on Rōnin Trial, follow my Twitter. Rōnin Trail will also be released on Steam, so please consider adding it to your wishlist!
Get Unreal Engine today!
Get the world’s most open and advanced creation tool.
With every feature and full source code access included, Unreal Engine comes fully loaded out of the box.