top of page

Week 3 - reverse engineering the scoutfly system

  • Foto van schrijver: Anouk Dutrée
    Anouk Dutrée
  • 18 jun 2021
  • 6 minuten om te lezen

Bijgewerkt op: 21 aug 2021

This week we were asked to pick an interesting creative artefact and reverse engineer it. I considered various options ranging from specific combat mechanics to simple mobile games like Fruit Ninja. Finally, I decided upon reverse engineering the scoutfly system from Monster Hunter World. I used to play Monster Hunter World quite a bit with my boyfriend and I remember thinking the scout fly system was such a genius way of providing guidance to a player. I had absolutely no clue how it was made though, so I figured it would be a cool thing to reverse engineer.

For anyone who is unfamiliar with the game, Monster Hunter World is an action RPG in which you (you guessed it) hunt monsters. It is a wonderful game with amazing graphics and very fun maps. The maps are filled with monsters, plants, and other interesting objects. As a hunter you have to follow tracks to find specific monsters. This can be quite tricky as there is so much to be explored in every map and it is easy to get lost. To make sure that this does not lead to frustration on the player's end, Capcom introduced the scout fly system. Your character carries around a small cage with so called scout flies. These flies resemble fire flies a bit and they guide the way to interesting artefacts. Whenever there is something interesting in your near vicinity, the scout flies will fly to it and point it out to you (see Figure 1). The flies also change colour based on certain events in the game. When you are safe, they are green, when they sense danger, they turn red and when they sense special monsters, they turn blue.



ree

Figure 1: Screenshot showing scout flies that are pointing the way. Image taken from Chandler (2020).


Some observations

Looking into the scout fly system a few things stand out to me:


- Colour changes provide visual aids to the player so that they do not miss important events.

- The scout flies primarily highlight interesting objects the player can interact with

- It is a core mechanic, present practically at all times except for when in combat or in a rest place.

- The scout flies can change both in speed and in number of particles emitted to react to specific circumstances.

- The light emission of the scout flies makes it standout amongst all the other objects in a map.

- The scout flies cannot wander too far away from the player

- The scout flies do not move unidirectional. Sometimes they scatter off in different groups. This gives them a certain realistic and organic feeling.


Reverse engineering the scout flies

For the reverse engineering part of this exercise, I chose to work in Unity as I wanted to brush up on my skills there. I used whiteboxing to quickly set up a dummy level and a main player. It was a while since I last used Unity so I must say it took me longer than expected to set it up.


Once I had my sandbox level set up it was time to set up an prototypical scout fly system. Since the actual scout fly system of Monster Hunter World is quite complex and far beyond what I can achieve in a day I decided to scope it down to a particle system that:


- Emits particles from the main player

- Is attracted to “interesting objects”

- Changes colour upon finding an interesting object


As an initial step I created a particle system that emits tiny green particles in the direction that the player is facing. The scout flies are rather slow at first and also quite tiny, so I gave the particle system a slow Start Speed and Start Size. I introduced some noise to simulate the seemingly random behaviour of the particles at rest.


Looking closely at the particles in figure 1, I noticed that the scout flies do not have uniform size and that they fade away slowly. To introduce this behaviour in the particle system I used the Size over Lifetime and Colour over Lifetime options with a downwards curve. I also set the Start Size to be random between to constants to introduce difference in size right upon creation. The resulting particle system can be seen in Figure 2.



ree

Figure 2: Initial scout fly particle system.


In the last figure the particle system is getting close to the monster hunter version, but I found it still missed some spice. After reviewing the monster hunter version again I saw that the particles also seem to be emitting light. To replicate it I went ahead and attached a light source to the particles so that they could emit light as well.


Now that the particle system resembled the scout flies visually, I needed to introduce some behaviour. I added a random cube to my dummy level and put it on a layer “Interesting Objects”. I wanted my particle system to be able to detect the cube and guide the player to it. It turned out to be quite difficult to do this in the way I envisioned. I tried to add a wind zone to the player and to the object so that once the player was in proximity of the cube the flies would be sucked in. I got this idea after watching a great tutorial by Mirza (2018). Unfortunately, it did not actually suck in the flies, rather, it repelled them. This had to do with the fact that Wind Zones in Unity apparently only blow outwards, as opposed to inwards. I do not understand how Mirza managed to get it right, I followed his tutorial to a T but it was no help.


Having tried using Wind Zones without any luck I turned to a particle system force field. I put a force field on the cube of interest and tweaked its attraction and gravity strength so that it would suck in the particles once they were close enough. This worked alright and was fairly easy to set up. The particles were getting completely sucked in though, so I added collision effects to the particles so they could bounce of the cube.


In the original scout fly system, the scout flies emit extra light and make the found object emit light as well. I did not really know where to start to replicate that behaviour, so instead I decided to make my particles change colour upon finding something of interest. To achieve this, I used the Colour by Speed functionality. Now once their speed increased above a certain threshold, they would turn red. The force field pulling the particles to the cube was enough to reach this speed. You can view the final result below.



Video: Screencapture showing the final particle system prototype simulating the scout flies.


Reflection

This was my very first time trying to reverse engineer anything and it was also my first time working with a particle system in Unity. It was a bit scary to get started but once I was in the flow I enjoyed it very much. I learned how to do new things in Unity throughout the process and I will surely call upon that knowledge in the future.


I found it quite tricky to find out how to make the particles behave exactly as I wanted. Ideally, I would have added a script to the particles so that I could better control how they reacted to other objects. Now I was very dependent on the force field and the resulting behaviour is not exactly what I wanted it to be. I would have preferred if they circled the object rather than blasting into it. Perhaps that is just because I find prototyping difficult, and I want to get the details right immediately as well. The force field was enough though to get a prototype up and running which I could play test.


I must say I enjoyed greyboxing the level with Probuilder. It was very handy to quickly set something up that was more than just a blank level, but that did not eat up too much time. I found it tricky to determine when to stop finicking with the level though. I decided to really just stick to the basics and I think that was the right call. I didn’t have much time after all, and reverse engineering the particle system was what was important, not the level design! In the end the greyboxing really helped and I will use it more often when I want to test game mechanics.



List of References

Beig, M., 2018. Unity VFX - Interactive Fireflies w/ Sound + Stinging (Particle System Tutorial). [online] Youtube.com. Available at: <https://www.youtube.com/watch?v=41hAlLk8AiQ> [Accessed 18 June 2021].


Chandler, S., 2020. Where to find the First Wyverian in Monster Hunter World. [online] Shacknews. Available at: <https://www.shacknews.com/article/106787/where-to-find-the-first-wyverian-in-monster-hunter-world> [Accessed 18 June 2021].

Opmerkingen


bottom of page