Creator Highlight Month 2022: Sacchan
Developer of SaccFlight for VRChat Aviation It's no secret that VRChat aviation is something we've covered here on Skyward Flight Media with great interest. In the mind of the flight simulation enthusiast, they might be imagining aircraft flying in VRChat as objects shaped like aircraft unnaturally levitating in the sky with the spiciest internet memes flying out the back. Our previous articles on the subject show that not to be the case at all. Virtual reality players will find themselves controlling aircraft by gripping the in game stick and throttle the same way they would in other VR flight simulator. Roaring dogfights, air-to-air refueling, aircraft carrier landings, working instruments, stall characteristics and more can be experienced across dozens of worlds. The evolution of flight physics, ever expanding flight experiences, and a firmly established international community continues to capture our attention. "How is this happening?" is the most frequently asked question by those from the outside looking in. Our next entry in Creator Highlight Month 2022 is with Sacchan, the developer of the SaccFlight system and free to download prefab. that has made this all possible. We discuss how it all started, achievements, hurdles crossed, and the state of VRC aviation today. It probably goes without saying that I’m a big fan of your work. Please introduce yourself. I'm Sacchan, my friends call me Sacc, I'm a gamer with something of a creative side, and VRChat has taken over my entire life for the last 4 years. Nearly 2 years ago I had the idea to make an airplane as an experiment, and now I find myself standing at the center of a worldwide community of creative aircraft enthusiasts. How and why did you get involved with VRChat? In early 2018 I saw it after it got famous because of the Uganda Knuckles meme, and I thought the anime characters looked cute so I tried it out. I never expected to play it for more than a day or two. When did you decide to shift from being a general user to begin world creation? Could you describe some of your pre-flight worlds? Almost straight away. I've always been a bit creative, so when I realized that making your own content was possible of course I wanted to learn. I started learning to make avatars only a day or two after installing the game, starting with MMD model conversions to learn Unity. I didn't have a VR headset when I started, but I quickly realized I really wanted one. A few days later, after I had bought a VR headset, I decided I wanted to make a world too. I wanted to make a very dark and atmospheric world, to relax in. My first world 'Stormy Cave' was relatively popular. It's a campfire in a cave at night with wind and rain sounds and 500m^2 of surrounding terrain to explore with flashlights, umbrellas, and torches. Over the course of about a year it evolved into a full blown puzzle map with sci-fi/demonic elements and a large underground cave system to explore. My other worlds are 'The Sacc Shack' which was me experimenting with modeling a house, I went a little bit crazy with the interactivity on items there. 'Orange Days' is a small island/beach hangout world with some weird architecture, and a lighthouse model that I have used in Test Pilots. Something many users that have seen your work wonder is, do you have any previous experience with game development? I've been into mapping since I was about 11 years old, starting with Unreal Tournament (the first one), around 20 years ago. Over the years I have experimented with mapping/modding UT99/2004/3, Quake3, Freespace and more, but never really releasing much. My friend and I were working on a game for a bit back in 2013~, with him as the programmer and me as the artist, but it never got close to being finished. All of those games are a bit old, and learning Unity through VRChat for me was a great experience because it brought me up to speed with a modern game engine, and gave me a creative outlet to improve my modeling skills. After only a few months I had modeled my first from scratch rigged humanoid character to use as an avatar, which I used to think would always be beyond me. What is the general process of making a world in VRC? How did the April 2020 Udon update change this process? To make a world for VRChat, you must install Unity, install the VRChat SDK package, place something to stand on, place a spawn point, click upload/test and you're done. To do anything complex prior to April 2020, (using SDK2) the only option you had was to use the VRC_Trigger script. It's a componant with options for trigger method, and a bunch of things to do when triggered. It does allow you to do a lot of things, but it's limited by it's nature. In April 2020, SDK3 was released, which allowed for node-based programming, and a VRC user created a compiler for Unity C# called UdonSharp that enabled users to write code directly for use in VRC worlds. Creating things for VRC is now very similar to creating things for Unity in general, with some limitations, many VRC-specific things you need to know, and the code runs around a thousands times slower. How did your idea for trying to bring a more accurate version of aviation to VRChat start? That idea never existed, I just wanted to learn how to use SDK3 when it was released, and I had been wanting to learn programming for a long time but had never managed to get into it. Initially I had no idea how to get started with SDK3. Luckily I had a programmer friend who helped me get everything set up, and kickstarted my efforts. So, since SDK3 allowed programming directly, I wanted to do something that was always very poorly done in SDK2, vehicles. The first thing I tried to make was a car, but I had no idea about the correct way to do it. With my first attempt at a car I couldn't even get the wheels to stay attached to the car without causing big problems with bouncing around a glitching out. Since the car was such a failure (I only tried for about 2 hours), I decided to try making a simple helicopter-like vehicle, as I could make something fly without attaching wheels to it. That was pretty easy to get working, and the people I showed it to liked it, but also wanted airplanes. I had some vague idea of what a dot product was, so I tried putting the result of dot(VehicleRigidbody.velocty, VehicleTransform.Down) into the relative up force with a configurable multiplier, which gave me a very basic lift force. It was fun, so I continued improving it, I also made a few variations on the simple vehicles I initially created and just played with them with my friends, and random people who joined the public instance. Since SDK3 was so new I figured I was probably one of the few people who had actually managed to create something with it, so I decided to release what I had made as a prefab. Anyone with any experience with unity would laugh at the first few releases, since I was very inexperienced with Unity code, but because it was out there and was representing me, I felt a strong need to improve it further. At some point during the first days, I created a script to allow players to fly around without a vehicle, just to get to the vehicles faster, which has now become an important feature that almost every flight world has enabled. After a while I started making friends with people who were into flight simulation games, and who had real jobs working with aircraft. They pushed me to improve things further and further, and I guess that's all that has been happening since, really. The summer of 2020 in particular was really fun, that was the time I was initially coding all of the functions for the function dials in the plane. Each day I would wake up, code a new feature for 6 hours or so, upload a test world, and all my friends would jump on to test it for the rest of the day. This period was when I added Afterburner, Bombs, AGMs, AAMs, Brake, Flight Limits, Display Smoke, Flares, Hook (carrier landings), Catapult (carrier takeoff), Fly Level (autopilot), Cruise (hold speed), Canopy Toggle, Fuel Consumption, and the HUD. Some of this was only possible because of the pandemic. One of my friends, Zweikaku, was laid off from his job as an aircraft mechanic when the pandemic started. He wouldn't have been playing VRC nearly so much if he was at his job and wouldn't have been able to advise me on how aircraft actually work. During this time is also when I taught one of my long time VRChat friends, 'Sagi-chan' how to use Blender, and he's been modeling planes ever since. Take a look at the 'SAK' aircraft in Test Pilots to see his handy work. It’s notable that while you were encouraged to further develop it to include more advanced features, you did not go as far as adding navigation systems, radars, instrument landing systems, etc. Why is that? I won't create anything for my prefab that I don't think will be interesting to me (as a coding exercise or gameplay). I'm only really interested in the flight/combat itself. The specifics of navigation, or targeting are boring to me unless they serve gameplay (which should be fast paced). All the games I enjoy the most are fast paced games that are the easy-to-learn hard-to-master types, like Quake, and Rocket League. I think flying a plane falls into that easy-to-learn, hard-to-master category even without any physics simplifications, but to get to flying, there are often hurdles to overcome that make it much harder to experience the joy of pure flight, such as managing the aircraft's systems. What I have created is something simple enough that someone who cares nothing about planes, but thinks it might be fun to fly, can learn in a few minutes and experience what it's like to fly with physics that are realistic enough that it doesn't dilute the experience too much. I think this is especially important for VR, because the experience is so much more rich being inside a cockpit in VR. Many people that have never cared for flight before have discovered a love for it thanks to my world, Test Pilots. It being a popular world is also greatly beneficial. Anyone who doesn't know how to fly can find help in the form of a conversation with any of the other players that are standing around in the spawn area. That being said, the purpose of the modularization of the 1.5 update was to allow addition of extension code to the prefab without changing the original code. If anyone using the prefab wishes to make more complex systems, I am willing to help and support them. On April 16th, 2020, the first aviation world, Test Pilots, entered community labs (a type of quality assurance phase). Since then this world has been at the forefront of all VRC aviation. How do you feel about Test Pilots after nearly two years of development? I think it's really good. I'm pretty satisfied with it. I'd like to continue adding more and more vehicles to it but the performance gets a bit too low with a lot of players already, so there probably aren't going to be too many large changes any more. The performance of the planes there is more on the Ace Combat side of things, and sometimes I think I'd like to make it more realistic, but as it's so established as it is, that'll have to be done in other worlds. I am always surprised by how communal the development process for VRC aviation is. There are developers and their friends always pinging each other to test things like new aircraft, flight characteristics, map changes, etc. Is the average flight world development process like that? I think it has to be communal at this point, centered around me, because I haven't written any tutorials on how to use it (other than my Instructions.txt, but most people can't read?), people who are experienced with Unity are able to use it without help, but many of the people who are interested in making plane worlds are a bit less experienced. There is also a Japanese community of friends who communicate amongst each other (occasionally asking me something if they get stuck), creating stuff. A few of them are very advanced. Do other world creators ever ask you for assistance with their works? People ask me quite often for help using my prefab to create a world, but if they have no prior experience with unity, I'm not going to teach them the whole thing. If they have made some progress and are just stuck with something, I'll help. It's quite rare that a world will be uploaded to VRChat using my prefab with a customized vehicle without my help, but when it does happen it's very cool to see. Community events like dogfight tournaments, airshows, and aircraft unveiling showcases have become very popular over time. What are your thoughts on these events? They're really, really fun, and it's amazing that such a thing is possible in a social game. The big tournaments are the main time when all of the communities come together. The unveiling of a new plane with the whole community present after the finals of a tournament is a really cool experience. Unfortunately the format of these events is going to have to change soon because they're getting too popular. The framerate in VRChat gets very low with 80 people in one instance and 80 people is the hard cap for number of players, so we're going to be moving to a setup with a hangout world containing a stream of the matches. VRChat is a quirky development platform, isn't it? What have been some of the greatest development hurdles that you have had to solve? Pressing a 'VRChat Button' is impossible in a very fast moving vehicle, which is why I created the function dial system, which ended up being a good thing in my opinion, because it's so fast and easy to use compared to moving your hands to each button. Buttons are possible to create for a fast moving vehicle, but require you to code your own version. One of the Japanese users of the prefab has done it. I may create my own version soon for the prefab. For the most part the hurdles that I have had to overcome have been due to my inexperience with Unity/programming in general, or not knowing how to get specific values out of VRChat componants. Luckily I have a few friends who know a good amount. I have also managed to become acquainted with some of the VRChat developers. There have been multiple times where a VRChat update has broken some aspect of my planes, and it has been somewhat stressful dealing with it, but it's usually not too difficult to fix stuff. If you had to make a top-five list of greatest features or fixes you've had to figure out, what would they be? 5. Creating a prefab that is customizable and simple enough that people have been able to create their own vehicles without any help from me. 4. The Air-to-air missiles (not too difficult, unless you need to sync them over network!) 3. The code modularization in version 1.5 (required such a huge code refactor) 2. The custom position sync. The default VRChat object synchronization is very delayed, making formation flight, and anything resembling a realistic dogfight impossible. 1. Such a easily customizable flight model which allows almost any kind of air vehicle (including VTOL, seaplanes, ground-effect vehicles, helicopters, hoverbikes) Could you describe the significant change that the addition of custom position sync brought? Before the custom position sync, which was added in my prefab's version 1.5, which came out about a year and 8 months after development started, the aircraft were using VRChat's inbuilt VRC_ObjectSync script to sync their positions, it's designed for small scale objects you can pick up, not vehicles, and it has no lag compensation. So if you try to use it for formation flight, it will look to you like you are flying next to someone, but they will see you more than a second behind where you think you are, making formation flying essentially impossible. So once the custom sync was in, formation flying became possible, and quickly became popular among the aviation groups. Dogfights also became much, much more interesting, as things like rolling scissors became possible. Previously you would see someone fly past you, and wonder if you were about to explode because they shot you a second ago. Additionally you can also see bullets flying towards your plane, which wouldn't happen before because the opponent would be shooting at the lagged version of you, behind you. Offering the Sacc Flight and Vehicles prefab as a free resource is generous. There are easily over 50 aviation worlds by creators from around the globe now. Did you ever think there would be so many worlds? My thought was, that I wanted to make VRChat more interesting, because in the days before the Udon update (The one that allowed coding in worlds), VRChat didn't really have a whole lot of things to do. I guess I've succeeded in that. Almost every day I can log in and visit an in-development aircraft world to see what's new, plus there are interesting tweets about the daily occurrences in the flight community. The Japanese community in particular has made a lot of interesting stuff, especially since the prefab's 1.5 modularization release, because it's been possible to non-destructively add functionality. They have a weekly Flight Academy which is listed on the Japanese event calendar in VRChat, where anyone can show up and be taught the basics of flying through a short sit-down classroom lesson, then straight into a vehicle with an instructor. Their world has a near true-to-life Control Tower with radios that is actually manned and used during events, their vehicles also have avionics that are slowly but surely increasing in functionality over time. There's another guy who's decent at modeling and often just creates a whole new plane in one day. While they may not be of the highest quality, it's very interesting to see what he comes up with. In the English speaking communities we have many vehicle-particular dogfight worlds, someone dedicated to making helicopters, someone dedicated to making GA aircraft, various role-play groups with worlds specifically for their needs, some vehicle modelers, and a few people doing more advanced stuff, like Project Fairy, a Yukikaze fan project. More recently there's also been a lot of interest in creating multi-crew vehicles, as version 1.5 of the prefab supports this functionality, more code needs to be written to create functionality beyond simple gunner seats though. What do you think are the biggest hurdles that new flight focused VRChat world creators need to overcome? If they're making their own custom aircraft, they need to learn what each of the variables in the main flight control script do, so that they can make it fly how they want. They also need to learn how to replace all the animations, to make everything on their aircraft move. The biggest challenge being creating a landing gear animation. In general though, if you're good with Unity you should be able to work things out. The hardest part is being good with Unity. While combat aircraft are the most frequently seen vehicles, is there a technical restriction that prevents use of more large aircraft like airliners? There are some large aircraft in VRChat, my world has the crazy modified B-52, the Japanese community has a 737 in which it's possible to sit in nearly every seat, that they use regularly in their events. One of my friends even made a Lockheed CL-1201, which we showed off at the VRChat community meetup event, and got 80 people sitting in it at once. I think the main reason there aren't more large aircraft though, is because my prefab package doesn't come with an example of one that can be easily copied and modified. Have there been any functions you wanted to add but were unable to get working? Any abandoned concepts? It's been tough, but I've managed to get almost everything I've wanted working in the end. Stuff like missiles, or custom position sync would have fallen into this category in the past. One of my friends has made a 'floating origin' system (that moves the world, instead of the plane), which enables much larger worlds to be made. If it could be improved to the point where it's bug-free it would be very interesting. One thing I'd love to be able to do is have pilotable aircraft carrier, that people can walk around on the deck of, and vehicles can take off and land on. I have made an attempt at it, but it's very difficult, maybe impossible to do well with the current version of VRChat. As you become more familiar with programming, have you considered developing your own game outside of VRChat someday? I've been considering it for a while, but it'd mean stopping making the VRChat stuff, and I don't want to stop while it's still growing so much. I can also re-use the code I write for VRChat, so I don't see it as a waste. I'm also not sure what kind of game I'd make, I think there's a gap in the market for a semi realistic competitive flight combat game, but I don't know if I can pull that off as my first game. With the two year anniversary of the release of Sacc Flight coming up, do you have any ideas about what the next big updates could be? I want to create a car/land vehicle prefab, as it's the last major vehicle type that I don't have, and if I do it well it could spawn it's own community with the car-people. Other possible future improvements could be things like: Weapons, fuel, etc. contributing to the weight of the vehicles. Aircraft falling out of the sky rather that just instantly exploding. Touchable buttons for the cockpit in VR. I have already created an air-refueling system that is not part of the prefab yet. Vehicle damage models. Your efforts seem to have made quite the impact. To the point that Test Pilots had a diorama and building-sized poster in the official VRC New Year’s Eve 2021 world. It was seen by tens of thousands of people. What are your thoughts on how far your efforts and the community it has spawned have come? It's weird, someone who was already good at programming could have probably created something like what I've made with a lot less effort, but they would probably also have just made what they wanted and moved on. I think it's largely because I was learning and struggling through the whole process, and writing code was novel to me that I was able to stick with it for so long, and build something so big. Thinking back, there are many features working now that I have thought to be impossible at some point. I even thought it was impossible to implement missiles early on. So many people have helped in small ways, and it's amazing what we've accomplished. Test Pilots has just passed 3 million visits, and has 150,000+ favorites. Most of these are from children who are playing VRChat in standalone mode on their Oculus Quest 2s they got for Christmas. So at the very least I've probably awakened a love of flight in a fairly large group from the next generation. About the Interviewer Aaron "Ribbon-Blue" Mendoza Co-founder of Skyward Flight Media. After founding Electrosphere.info, the first English Ace Combat database, he has been involved in creating flight game-related websites, communities, and events since 2005. He explores past and present flight games and simulators with his extensive collection of game consoles and computers. Read Staff Profile.