This post describes the work I have completed in the past two weeks as pod lead for the VFX Pod for WolverineSoft Studio for the Pre-Alpha II sprint. This sprint has technically been extended for another week to accommodate Spring Break but I am making my blog post now to stay on the biweekly schedule.
At the start of this sprint Project Blue still did not have enough work completed by the Enemies and Bosses Pods to give work for those respective areas, so as the leader for the VFX Pod I focused work on effects for the player since the player’s design was more complete (and essential for the game).
This sprint started with a Saturday sprint meeting where I spoke with the other project leads to discuss new goals and ways to improve for the next sprint. All of the tasks I assigned for this sprint were either continuations of tasks from the last sprint, or new ones I had received during that sprint time. I didn’t necessarily get new tasks during this meeting, which was mostly due to the fact that the Enemy and Bosses Pod leads weren’t far enough in their designs and work yet to think about effects that they wanted.
During the Sunday weekly studio meeting I met with my three pod members to assign each of them their tasks for the new sprint. These were:
David: Complete dust particle effects for landing, wall sliding, and jumping, as well as finish the running effect from the last sprint. This was a ramp up from the last sprint that was just the running effect foundation.
Zena: Create a new effect for the player’s weapon materializing and dematerializing. This would function as a sort of fancy dissolve shader with added particles. Zena was the only member to have an entirely new task this sprint, since her task last sprint was more self-contained and she finished it completely.
Eli: Extend the player dissipate effect created during the last sprint for the full suite of effects for player teleportation, including an energy sphere as they use the ability. This work was mostly an extension of the work Eli did last sprint, which was not fully completed and put into Unity.
Me: This sprint there was enough work that I could work on my own task. I worked on creating a basic impact particle VFX that could be used for enemy projectiles, directional attacks, etc.
Additionally, as lead my main goal for this sprint was to be more proactive about reaching out to my pod members to make sure that I didn’t block them and they got help when needed.
As each pod member started on their tasks, I also tried to go in and wrap up the Jira tasks from the last sprint that hadn’t all been set to “Done”. David got his done, and I spent a bit of time helping Zena so her pull request could be approved as well. Eli’s work and Jira task was rolled over into his one for this sprint.
While I periodically checked in with each pod member, this week I spent several hours on my own task of making the generic impact VFX. This involved a bit of time for setup as I added the VFX Graph package to the Unity project for the first time and re-familiarized myself with the VFX graph interface. I also had to play around with the LWRP renderer settings in order to finally get the particles to render.
I am pleased with the effect I was able to achieve in the end, which consists of three different graph contexts that are all triggered concurrently by one event, which can be called from any C# script. My inspiration for the look was the effect of the grappling hook hitting objects in the Switch remake of The Legend of Zelda: Link’s Awakening.
To test the effect, I utilized a pre-existing scene someone made to test an enemy that shoots projectiles. I modified this test enemy’s script slightly so that the projectiles would send the required event to start the VFX in
Total time breakdown for Week 1:
- 2.5 hrs at sprint meeting
- 2 hrs at studio meeting
- 0.5 hrs on pull request for Zena’s glint Shader
- 4.5 hrs on impact VFX setup and getting it to work
The second week of the sprint started with another sprint meeting, though there were not many developments and topics discussed this week that immediately affected my pod. I did get a few longer-term ideas for effects from the Enemies pod lead, but he said these would not be needed until mid/late March.
Unfortunately, I had family commitments and could not attend the Sunday studio meeting this week. I got the pod members to write down standups on Confluence though, and added updates on my own work up to that point.
Later that night I worked with Zena to unblock her on some issues she was having with getting an outline shader to work in Shader Graph. The main issue was with the fact that the Shader Graph master nodes that work with the Unity 2D lighting system did not have an AlphaClipThreshold property. This meant that Zena couldn’t essentially add anything to “paint” an outline outside the original sprite shape of the object. The solution I found was to modify the graph so that the outline would appear inside enough the edge of the sprite instead of all on the outside. This made the outline visible even with the master node limitation.
Each step of the way I tried to work actively with Zena so that I was helping and assisting to teach her instead of just doing all the work myself. Later in the week she demonstrated a prototype of the particle part of her dematerialize effect that looked really cool!
David meanwhile didn’t need much help this week and finished his main task. He created a pull request that I have since approved and merged in. Eli on the other hand encountered a roadblock as discussions with other leads revealed that his approach of modeling dissolve particles for the player teleporting in Blender wouldn’t work for an animated sprite when the shape of the could constantly change. Thus this week he took to adapting his work into Shader Graph in Unity where he could achieve this effect.
Finally, towards the end of the week before Spring Break I made a few tweaks and then created a pull request for my impact VFX. As of the time of writing no one has reviewed it yet, so I need to go out and remind the other leads who are assigned to do so.
Looking back, this week I didn’t end up getting quite as much as I should have since I still didn’t have completed resources and designs from other pods to start new tasks. In the future I need to be more on the ball about this so I don’t end up stuck without tasks to do again.
Total time breakdown for Week 2:
- 2.5 hrs at sprint meeting
- 2 hrs on getting Zena’s outline shader to work.
- 1 hr on checking David’s pull request and Eli’s work
- 2 hrs on impact VFX pull request creation
Just like how last sprint I resolved to be more proactive within my pod, this next sprint I am resolving to be more proactive in communicating with other pods. This way I can have a better list of tasks ready for myself and other to work on so we aren’t just idling when we don’t have something to do. It would also let me be better informed in general of what other teams are working on in the studio.
Along with this, though everyone in the pod seemed like they were working hard this sprint, I can’t help but feel as if I gave them too much time for their tasks. David in particular seemed to finish his tasks early, though he did find enough work experimenting with normal maps on his own that he was still occupied. I think I need to speak with our producer and others to get their opinion on whether I should be driving my pod members harder to complete more tasks sooner, or if things are going at a reasonable pace. This would give me more peace of mind about whether or not I could be helping the pod do better.