Flick Flack at Cubed! 2024

Cubed! is an annual convention hosted on a Minecraft server, raising money for the charity SpecialEffect. Since 2020, we at RASA Studios have brought our show the Noxsquad Gameshow to the event’s schedule. For their 2024 event, we were asked if we would also be interested in bringing a minigame to the public Minecraft server that would be open for the main weekend and remain open for the next week, and after some discussions decided to do so with the minigame Flick Flack.
Flick Flack is a team-vs-team game taking place over a series of arenas. Each arena consists of a series of static platforms and colourful traps, which are activated by buttons placed in a row between the two teams. One team wins when all of the opposing players have fallen in to the water at the bottom of the arena.
We chose to bring this game as it is easy to understand what is happening as a spectator, its rules can be explained in a few short bullet points, and it was the final game of the previous year’s live episode of the Noxsquad Gameshow.
As the original Gameshow version of Flick Flack was designed and implemented by David, he took the lead in terms of design, whereas I took the lead in terms of development. Additionally, we collaborated with
Ben, Cubed!’s lead developer, who integrated our game with their server’s systems. The game was developed as a server plugin written in Kotlin (as opposed to the original version, which used Minecraft’s vanilla commands and functions).
Some of the parts of the project that I found the most interesting were:
- DSL for Arena Definitions
We created a small Domain Specific Language using a series of type-safe builders which allowed arena configurations (including button locations, traps, and static elements) to be defined in an easy to read/write manner without needing much experience with programming. The DSL meant that we were able to confidently create new arenas with fewer than 24 hours until the game would be playable by the public. - Translations
All text shown to players was defined in text files stored within the final jar, and we used a feature of the software running the Minecraft server, Paper, to send different text based on what language a player’s client told the server that they were using. As a predominantly English speaking team, we were only able to include language files for US and UK variants of English, though we were able to include, as an easter egg, a full translation to the language “Pirate Speak”. - Using Features Beyond Vanilla Minecraft
Since we implemented the game using a plugin rather than Minecraft commands and functions, we were able to take advantage of features that would not normally be available to us. For example, we were able to automatically release new arenas on the second and third days of the event using kotlinx-datetime. Additionally, we were able to include some jokes during the game’s countdown that used external data (such as the amount of time until the Gameshow was scheduled to take place that weekend, or the number of wins stored for each team within Cubed!’s database).
Throughout the week that the Cubed! server was open, some statistics were collected about each game. Some highlights of this data set are:
Total Games Played | 4,666 |
Unique Players | 901 |
Percentage of Players who Played ≥ 6 Games | ≈ 51% |
Most Games Played by One Player | 655 |
Most Players in One Game | 30 |
Duration of Longest Game | ≈ 3½ minutes |
This project, while a slight departure from RASA’s usual working environment, was an absolute joy to be a part of. I found it very fun to work with David,
Stuart, and
Grant to implement their ideas for unique traps and arenas. I also really enjoyed working with
Ben to see our game integrated with their systems, and learning about some of the details of how the Cubed! server works from a developer’s perspective.