Marbellous Game

text

Marbellous is a casual puzzle game where the player interacts with marbles on a restricted tile platform. The goal is to align similar colored marbles in minimum moves possible to attain a higher score.

Abstract:
Video games are essentially a set of rules governing a player's interaction with the system, attemptng to solve a puzzle, accomplish certain goals, achieve a high score or immerse in a story. Marbellous is a puzzle game designed as a windows application, which lets the players move marbles on a tile platform.

The system has three rules:
1. Move all marbles in the direction specified by the player.
2. Stop the marble on collision with a boundary.
3. On encounter with another marble,
    Stop the marble if they don't share the color.
    Remove both marbles from the platform, if they do.

The goal is to remove all the marbles from the platform to complete a level and the scoring mechanism dictates the minimum moves for each rating.
This is an early sketch I used, to demonstrate the game mechanics before commencing the development.

text


Programming
The game was programmed using C++ language. I used SFML (Simple and Fast Multimedia Library) for windows, to accept user inputs, render 2D graphics (textures, sprites and text) and integrate music.
Microsoft Visual Studio was the choice of IDE/code editor for the game development.
The program utilizes key concepts of Object Oriented Programming (OOPs) like inheritance, abstraction, and encapsulation. Entities called 'Class' wrap data and code into a cohesive unit. For example, the Marble Class has properties like Postition, marble-type, sprite(image)and direction.

Once all classes and functions (movement, collision check, score update, class field updates, etc) are defined, a looping script called the game loop is created that accepts user inpts and run through all the functions like moving marbles and checking collisions, till a stop condition is satisfied, like level completion or out of moves.

Collision Logic



Collision between marbles:
If(collision)
			{
				If(color_matches)
					Remove marbles from map.
		
				Else
					Set movement_speed = 0
		}
		


Loading Map: A 2D matrix of 1s and 0s is used for permeable and non-permeable tiles.

Loading Marbles: A text file with #marbles, moves count for each rating, and a 2D matrix with co-ordinates & marble-type for all marbles.



Prototype to Final build:
Once the key components and game mechanics started working, I made a few important additions and enhancements.
Adding the scoring mechanism.
Updating native renders to marble sprites.
Adding game menu, level selection and game saves.
Adding shadows to the tiles.

text text

Game code: You can check out the game code at this link, and the project details on my github profile .
Watch the game teaser below, or on .


Download the game from here

Contact Information