Crab Cove Carnival
Crab Cove Carnival is the second map that RASA Studios has created for the Minecraft Marketplace, as a part of Minecraft’s “Summer Celebration” event in 2021. The map allows players to explore a carnival on a secluded beach, play a number of minigames and earn tickets that can be exchanged for food, drinks, and prizes. Within the project, I worked on a number of elements:
- Minor Attractions
- The map consists of 4 headline games (Cliff Dive, Crab Grabbers, Plinko Platforms, and Whacky Pad) which were worked on by other members of the team, whilst I was tasked with implementing the 7 minor attractions. These included carnival classics, such as whack a mole and hook a duck, but also some different concepts such as balloon darts (pop all the balloons as fast as you can) and target shooting (using a bow and arrow, shoot the targets that are revealed).
- Open World Mechanics
- Building on my experience in Jungle Royale, I lead the charge on the open world mechanics for the map. This is somewhat of an umbrella term, covering any map features that aren't directly covered by the headline games or minor attractions. Notable functionality includes the music sequencing system and ambient sound system, the gift shop vendors (selling items such as fireworks with custom data, particle effects, and in-game collectable statues), and timed daily events.
- Miscellaneous Models/Animations
- I worked on a number of animations within the map (e.g. the mole's rising and falling animations, and the cannon's shooting animation), and also created the target model and its associated animations. I additionally worked a lot with the art team to link together textures, models and animations with entity definitions and behaviour definitions, allowing the art to be seen in game and have varying levels of interactivity, respectively.
- CI/CD Pipelines
- The project had a shorter timeline than other projects that RASA Studios has worked on before, and as such I felt it would be wise for us to improve our automated tooling. For the first time, the entire project was version controlled using Git and GitHub from the outset. This allowed us to make use of GitHub's "Actions" platform for continuous deployment, automatically deploying changes to the dedicated server hosting the in-progress map.
I also wrote some custom actions to automate some checks and processes, such as:
- An action that ensured that a version number would increment whenever changes were deployed to the server (which was important as clients would compare version numbers to determine whether to download any changes locally).
- An action that would check for syntax errors in a number of files, and fail if errors were found.
- An action that ensured that any entries defined in any language file were included in every language file. Most of the time there was only one file (for the en_US locale) but this was made more useful once there was also a file for the en_GB locale.
- An action that automatically packaged the resource pack (art assets), behaviour pack (functionality) and world data into a single downloadable file when a tag was pushed to the repository. The action also ensured that every language supported by the Minecraft client had a language file, and that any version numbers (e.g. in pack manifests and language files) matched that of the tag.
Many people contribute to the various parts of all RASA projects, and as always it has been wonderful to be able to collaborate with people with such a varied skill set on this project.