Welcome to the Item Rumble Mod where you can collect items on the notes you sing, each with unique effects like speeding up, slowing down, adding points, deducting points, muting audio, and hiding lyrics and notes. This mode will add a fun and competitive element to MelodyMania, making it more enjoyable for players who want a more dynamic experience.
In this mod, we've introduced dynamic item spawning based on your score distance from the leader. It's designed to ensure a fun experience for everyone, especially less experienced singers. Enjoy a game that adapts to your performance, making it engaging for all players.
ModifierSettings.mp4
Gameplay.mp4
Contributions are welcome, especially for animations, as I am not proficient in that area.
The items could be similar to those in the popular game Mario Kart:
- Rocket (Bullet Bill): Automatically hits all notes for a short period of time.
- Golden Mushroom: Grants a points multiplier for a short period of time.
- Blooper: Covers the screen with ink, making it difficult to see the lyrics and notes. This benefits players who know the song by heart.
This mode will add a fun and competitive element to MelodyMania, making it more enjoyable for players who want a more dynamic experience.
- Download the latest release
ItemRumbleMelodyManiaMod.zip (zip)
of the Skip Seconds Melody Mania Mod mod from the Releases page. - Extract the downloaded ZIP file to a location of your choice.
- Mod folders are searched in a specific folder called the mods root folder.
- The mods root folder can be found by executing the command
mod.path
in the game's console (open viaF7
). - To install a mod folder, copy it to the mods root folder
- An app restart may be required afterwards.
- Activate the Mod in the Game settings
- Launch Melody Mania.
- Activate Mod
- Activate Modifier Item Rumble in Modifier Settings (Top Right in Song Select Scene)
- Start a song in the singing scene.
- Collect Items by hiting the center of the note
The ItemActions
class is responsible for handling the actions related to game items. It is injected with various dependencies such as GameObject
, PlayerControl
, and VisualElement
for the player's score label.
-
AddScore(int points)
: This method is used to add points to the player's score. If the points are negative and the absolute value is greater than the player's total score, the method will return without making any changes. Otherwise, it adds the points to the player's total score and updates the UI. -
BouncePlayerScoreLabel(float scale)
: This method is used to create a bounce animation on the player's score label. The scale parameter determines the size of the bounce. -
AnimateItemCollection(ItemControl itemControl)
: This method is used to animate the collection of an item. It removes the item from the hierarchy and logs the name of the GameObject and the item. -
More Actions and Animations can be implemented here
The Items.cs
class is responsible for defining the items that can be collected in the game. Each item is an instance of the Item
class, which has properties for the item's name, image path, visual element name, and a custom action that is executed when the item is collected.
To add a new item to the game, follow these steps:
- Define a new
Item
instance in theItems.cs
class. TheItem
constructor takes four parameters:name
: A string that defines the name of the item.imagePath
: A string that defines the path to the image that represents the item.visualElementName
: A string that defines the name of the visual element associated with the item.customAction
: An action that is executed when the item is collected. This action takes two parameters: anitemActionsObject
and anitemControlObject
. These should be cast to theItemActions
andItemControl
types, respectively, and used to define the behavior of the item when it is collected.
public static readonly Item NewItem = new Item("NewItem", "images/items/newItem/newItem.png", "itemCollectorItem", (object itemActionsObject, object itemControlObject) =>
{
// Cast the object to the correct type.
var itemActions = (ItemActions)itemActionsObject;
var itemControl = (ItemControl)itemControlObject;
// Add Actions here.
itemActions.AddScore(100);
itemActions.BouncePlayerScoreLabel();
itemActions.AnimateItemCollection(itemControl);
});
- Add the new item to the AllItems list:
public static readonly List<Item> AllItems = new List<Item>()
{
Coin,
Banana,
NewItem
};
-
Ensure that the image for the new item is placed in the specified imagePath and that the visualElementName corresponds to a valid visual element in the game.
-
Implement the desired behavior for the item in the customAction delegate. This could involve adding or subtracting from the player's score, triggering animations, or any other game effects.
-
If
itemActions
does not have the desired Effect implement it inItemActions.cs
-
Generate spawn Probabilities using the Excel sheet. (Scroll down to see generated C# Code)
In this mod for Melody Mania, I've introduced an innovative feature known as "rubberbanding" to enhance the gameplay experience, particularly for players of different skill levels.
Rubberbanding is a dynamic game mechanic that adjusts the difficulty based on the player's performance. It aims to level the playing field and ensure everyone can enjoy the game, whether you're a seasoned singer or a beginner.
The spawn chance of items in Melody Mania depends on your current score distance to the player in the first place.
To change balancing, edit the Excel file and copy the Generated Code to Items.cs
This project is based on the Coin Collect mod by Andreas Achimmihca.