Coming from Assassin’s Creed IV: Black Flag (AC4), I was assigned to join the team creating Assassin’s Creed Rogue (ACRogue). The ACRogue team is a very small team compared to its predecessor. This project is done in collaboration with Ubisoft Sofia as the lead studio.
In this project, I was assigned to handle the Boarding System from AC4 and keep it intact. This feature was originally from Montreal and is basically a huge high-level system leveraging on a web of existing gameplay sub-systems. Aside from keeping the old boarding system intact, a new game feature called Reverse Boarding needs to be implemented. This feature is the reverse scenario of the traditional boarding, wherein your ship is incapacitated and being boarded by the enemy. This will need you to protect your ship and crew from the boarding enemies. To win, you must survive the boarding and achieve some of the objectives shown on screen. You will be rewarded similarly to what the traditional boarding offers. If you lose, you die and restart from the last checkpoint.
The initial challenge of having this new feature is to find the way to implement this feature without drastic changes to the existing system. The initial system has full of simplified assumptions set on traditional boarding, and the AI’s context in performing their duties are fixated in performing the traditional boarding rules. I was able to solve this challenge preparing more pointers and references and setting them upon activation of the boarding system. These pointers are organized and assigned to considering the more accurate contexts of “player or enemy”, and “attacker or defender”. This small change had enabled me to prove to everyone that the existing system will work without making big changes to all subsystems. The new references and pointers act as contextual aliases in code to make it more sensible and switchable for traditional and reverse boarding. Of course, some small exceptions of abnormality existed after this change but it is all very specific to certain subsystems. These abnormalities then turned to our next challenge to making the reverse boarding system happen.
As mentioned, some minor abnormalities happen after the references are switched. Most of these abnormalities are caused by the code’s direct-link to the player and enemy and treating them as attacker and defender consecutively. As you may now have realized, this is not the scenario for reverse boarding. These hard-coded references should adopt the new references I’ve introduced so a re-write of some small parts of the subsystems are essential to make this adjustment. It might sound simple to do but actually, it required a great deal of analysis and some trial and error on some game scenarios to achieve satisfactory state.
The last challenge was the most difficult. The “realism” of the reverse boarding feature is not satisfactory. The issues of realism were primarily how to convince the player that he is going to be reverse-boarded and how to initiate it, and we need to prevent the player from waiting too long to wait for all the reverse-boarding sequence to happen. This challenge required multiple disciplines and involved our game designers, animators, and FX artist. Contrary to the word “realism”, we actually tricked the system to skip some of the boring and slow sequences, modified physics, entity teleportation, and some other “magic” to keep the pace of the game enjoyable for the player.
As you see, we added special conditions on the activation of reverse-boarding from a specific ship’s ram, which introduced a stagger animation for the Shay and the player camera. Some FX-based ship smokes were added and invisible explosive and smoke grenades for the crew. Finally, some AI are strategically teleported to keep the player busy for the slower boarding of the AI.
I am happy to see this game feature was well-received by the players. This was a fairly-challenging task for me and gave me a good sense of worthy, new and refreshing contribution to this big game franchise. Unfortunately, this will be my last contribution in Ubisoft. I have to give big credit to my fellow team-mates especially the rank-and-file ones, because we know how much you worked for the game and the sacrifices you have to make.
Working for a big production house such as Ubisoft and working on AAA project is definitely an eye-opener for me. It is definitely an experience worth having personally. Next time, I already know what to expect on big, medium, or small-scale development teams and projects.