top of page

DJI Virtual Flight - A broad Introduction & dev reflection

Writer's picture: FU WEIFU WEI

Updated: Mar 13, 2023

Introduction


Genre: Simulation Game


Description:


DJI Virtual Flight is a game based on Unreal Engine 4 designed and published for FPV(First-person view) drone users to provide an interactive and entertaining environment to practice and learn FPV.


Functionalities:

  1. Seven broad and detailed interactive tutorial levels for new FPV users

  2. Free-fly mode to practice drone maneuvering techniques

  3. Time-trail mode to challenge and practice using FPV through an entertainment approach

  4. Unique entertainment mode to explore the playability of FPV drones

Supported platforms: PC, IOS, Andriod


Special Features:

  1. DJI Goggles & mobile device: DJI Virtual Flight introduces a novel approach of simulating the learning environment in which the mobile device itself as a console transfers graphics into DJI FPV Goggles.

  2. Unified control with DJI FPV Combo: DJI Virtual Flight also provides a suitable user mapping with DJI FPV Combo, which significantly induces the learning cost of users.

  3. Human-Machine Interaction: The DJI FPV controllers can smoothly and conveniently control Virtual Flight while users cannot use the touch screen while wearing Goggles.

  4. A novel approach to flatting the FPV learning curve: FPV is challenging to learn and it usually takes hundreds of hours of practice. DJI Virtual Flight mimics the actual application scenarios to help newbies practice FPV at the lowest cost possible.

Achievements:


DJI Virtual Flight reached the top 14 at the App Store in China for the first few weeks. Globally it helped and served over 916,000 players on the IOS platform alone. The estimated potential player of the product might reach 2 million if Android and PC versions are published. Statistically, it is the first FPV simulator on the market compared to DCL, DRL, Liftoff, Freerider, etc.






Within DJI, it helped the HR department with recruiting events. It also helped DJI at the 2020 Shanghai Automotive Exhibition with the interactive content the product provides, and it served CEOs from Mercedes-Benz, BMW, and Fords, etc.


For consumers, it provided the first look and try for DJI products for several major DJI flagship stores around China.


Reflections


Feature Reflection


1. the Human-Machine Interaction Design of DJI Virtual Flight


Role: UX Designer

I've Designed two parts of the Human-Machine Interaction feature in DJI Virtual FLight: Controlling UI using DJI FPV RC and DJI FPV Motion Controller.


Challenge:

1. Remote Controller HMI


The design of HMI between DJI RC and Mobile devices was relatively trivial; we've got the inspiration from gaming consoles such as PlayStation. However, using the same interaction is pretty challenging considering our resources and technical challenges that few developers could handle; we tried another approach. We decided to use a virtual mouse that the player could control through the DJI controller then press the target button to confirm.

The solution is pretty straightforward, but the accuracy remained questionable after testing; I came up with the solution that added a drag force onto the virtual mouse and centered it on the button, which perfectly solved the problem.

Another challenge was the mechanics for the drag force added on the button to decide when to move the cursor outside of a button. The solution was to detect players' controller information at runtime comparing the last frame; if the value is over a threshold, it will move. If the final position is still within the area of a button, it will automatically move to the center to avoid accidental erroneous operation.


Finished product:

2. Motion Controller HMI



MC(Motion Controller) HMI is relatively difficult to handle compared to RC. The biggest problem was that the mechanics were no longer inheritable from RC, which meant a completely novel and innovative solution. We got inspiration from how the VR controller interacts with the virtual world; it usually had a visible ray to detect if the interface collides with the ray then pass the commands to the object to produce interaction. However, our UI was entirely 2D with no depth. Thus, the solution was no longer feasible; we tried to mimic how VR handled it but failed.

Another big challenge was how to mimic the natural mapping of the player using the motion controller as they imagined. I came up with multiple solutions, including calculating different controller information with a factor, only using particular input, and many more.

After various testing and trying the product, the solution was along with the controller feature itself. It had a reset button to reset its position; thus, it could be used as an anchor to tell the starting point based on player position. We used to trigger as the confirm button, yaw, and pitch with a specific calculation that produced the expected outcome.


Finished product:


Reflection:
  1. Getting inspiration from a similar product will get me started on a relatively right path

  2. use the product from a perspective of a user more often will reveal the solution, gain insights towards design outcomes

  3. spectating myself and others while using the hardware not only helped me understand the product better, but also gained a lot inspiration from spectating

  4. mapping of the controllers needs to be considered much much more carefully, not only the habit of users should be respected but also the mental load of memorizing controls should be minimized.

  5. RC still had many bugs because the configuring was mandatory; it had attributes that must be correct to make it work. Thus the time spent on configuring and debugging was a lot. Maybe I should add a detect mechanics that there should be only one layer of UI all-time; thus, there was no need to configure manually.

2. Gap challenge


Role: Game Designer

I've designed the whole game mode inspired by the fun of FPV drones' primary practice that every FPV drone player should do - pass through obstacle gaps.

Aesthetic goals: 1. sensation 2. challenges 3. submission (based on MDA paper) / 1. Easy Fun 2. Hard Fun


Challenge:
  1. Gameplay:

The biggest challenge was the gameplay of this mode and how to fulfill the aesthetic goals. The inspiration came from The Crew 2's way to collide with the objects to gain points. I manually flew our factory map to decide which gap should be included then added them to a collection based on their difficulties.

The gaps on the map are static and highly rely on how objects are placed on the level; producing dynamic gameplay is a massive challenge for me. I must admit that I'm still wondering how to crack it perfectly until this day. I solved it by introducing randomness that gave players a challenging task from various tasks. The possible and more attractive solution might be introducing random interactive elements such as a target that players had to chase to claim prizes or hidden tracks that players could trigger under some condition.


Another approach might be introducing special moves into the mode. After watching many videos about how to train FPV as a beginner, there were some moves and tricks/stunts you have to learn to become a decent FPV player. Some of those moves were implemented to create more variation to the gameplay to ensure the experience wasn't flattened out.


The gameplay included generic mechanics such as combo to ensure consistent feedback and reward to reinforce the anticipated behavior.


2. optimization


There were 200+ operational gaps that players could interact with; thus, optimizing it for mobile devices was a huge challenge. Limited GPU and CPU performance compared to PC greatly affected the artistic design of the gaps. As a designer, I had to balance functionality and creative expression while considering technological constraints. After sketching, discussion, implementation, and testing with multiple repetitions of the procedure, the result turned out to be so much more minimalistic than I expected.


Another challenge was filtering out not-so-interesting gaps due to limited GPU drawcalls. It needed plenty of playtesting and evaluation from multiple aspects. Several sessions of interviews and questionnaires around the topic helped me make more objective decisions. The final result gained 8/10 for playtesting, which exceeded my expectation.


Technical approaches such as integrating actors into instances and using opaque materials helped significantly.

Finished product:


Reflection:
  1. If a game is based on hardware to perform, the designer should test and use it very often to dig the possibility of producing fun using the product features.

  2. Learn the product from start and from multiple sources to see if there's anything that can be gamified to produce an original experience for new hardware.

3. Level Designs







What I learned from the project


1. define gist ASAP

The initial gist of the game was unclear. Thus, so many elements felt conflicted instead of forming a sense of entirety. When developing a game, the gist should be defined as soon as possible; thus, all elements will evolve around it and produce a unified and consistent experience.


2. user needs analysis should be regarded as more important

When designing a product, refining the target user's needs is significantly crucial. It helps frame what problems designers face and reveals the right direction of putting inspiration and resources into the product. Our product hypothesized user map and storyboard for the IOS platform and FPV only, which led to massive criticism around not publishing the Android version and insufficient support for other DJI controllers.


3. define product more openly, don't restrict ideas

DJI Virtual Flight could be more than supporting the DJI FPV series only. It could have stretched the nearly saturated global drone market scale into a new potential level if it supported more DJI controllers and more platforms. But the strategic leaders limited the scale to support DJI FPV only on IOS, which did not think throughout for more audiences was a massive shame for the product.


4. iteration is very costly, think ideas more carefully and thoroughly

Often, a hypothesized "simple" iteration such as changing the UI layout costs more resources than expected. From a junior designer's point of view, it was only some drag and drop configuration. Still, UI designers needed to redesign the elements, but artists might need to adjust camera position or even rendering attributes, not even mention the bugs produced after changing a simple button. In conclusion, it appears more sustainable for both developers and users while constructing UI systems in an easily extendable approach.


5. objective limitations are real

One objective limitation that the project faced the most was the human resource limitation. As a designer, I have to make decisions carefully to minimize the waste of resources and maximize development efficiency. There were tons of fun ideas I should add to the project, but I had to pick the most important and feasible ones considering priority and potential costs.


6. be humble and listen to everyone on the team

There were so many talents around me. They taught me so many things. It could be impossible if I behaved as vain and arrogant. I also learned and believed the most important message as a game designer: listen to everyone in the team. They always provide the most precious information needed from a professional perspective. It is never anyone's product. What turned out is always everyone's hard work and dedication.



27 views0 comments

Recent Posts

See All

Comments


bottom of page