Space Swipe is a modern, Unity-based Match-3 puzzle game developed as an undergraduate graduation project for the Computer Engineering Department at Fatih Sultan Mehmet Vakıf University.
🎥 Gameplay Video:
Movie_001.mp4
🔊 Turn up the volume.
This project aims to offer players an immersive and strategic experience by adding innovative mechanics and modern software architecture approaches to the popular "Match-3" genre. The primary motivation behind the project is to put the theoretical knowledge acquired during undergraduate education into practice.
The foundations of this project were laid by following a tutorial series (Make a Match-Three Puzzle Game in Unity by Wilmer Lin on Udemy) to enhance my skills in game development. Comprehensive and original systems were built upon the basic structure provided by the course.
- Basic game board (grid) creation and piece placement logic.
- A fundamental algorithm for detecting classic vertical/horizontal 3-piece, T, L, and 5-piece matches using a swap mechanic.
- Basic obstacle logic.
- VFX explosion effects.
- Modern Architecture: The project features a ScriptableObject-based level management system and a performance-oriented object pooling pattern.
- Square Match: Implemented a 2x2 square matching mechanic.
- Special Pieces Logic Change: Special pieces were decoupled from the color-matching logic, making them activatable by swapping or clicking on them directly.
- Schrodinger's Box & Gold Mechanic: It is a special piece formed as a result of a square match. When it explodes, it clears the area in a “+” shape. Also, there is a 50% chance of earning one gold when it explodes. If combined with a special object, there is a 20% chance of earning one gold from the cleared tiles. If two Schrödinger Boxes combine, you will earn three gold with 100% certainty.
- Boosters: Four boosters have been added: clear a selected piece, clear a row, clear a column, and swap two selected pieces.
- Code Organization: Complex classes like
Boardhave been split into separate files based on their responsibilities usingpartial class, enhancing maintainability. - Original Content: All game assets, user interface elements, and level designs were created from scratch for this project, with the exception of the "Message Box" and sounds.
- Performance Optimization (Object Pooling): An object pooling system was implemented for frequently instantiated objects like GamePiece and Gold. This approach minimizes runtime memory allocations and reduces garbage collection spikes, ensuring a consistent and smooth gameplay experience even during particle-heavy visual effects on low-end devices.
Special game pieces are pieces that can be created by matching specific combinations of basic objects and have special effects. In the project, the special game pieces are:
- Row Bomb: Clears all pieces in its row when activated. Created by a 4-piece match on a column.
- Column Bomb: Clears all pieces in its Column when activated. Created by a 4-piece match on a row.
- Square Bomb: It clears all tiles in a 3x3 area centered on the tile it is on when activated. Created by a T or L match.
- Schrodinger's Box: When activated, it clears the area in a “+” shape. Additionally, when it explodes, there is a 50% chance of earning a gold coin. When combined with a special item, there is a 20% chance of earning a gold coin from the cleared tiles. If two Schrödinger Boxes combine, you will earn minimum three gold coins with a chance of 100%. Created by a square match.
This piece is named after the famous Schrödinger's cat paradox due to its probabilistic nature; there is a 50% chance of receiving a gold coin when it is cleared, representing a state of uncertainty until the moment of observation (explosion).
- UFO: When activated by swapping with a base piece, it clears all pieces on the board that have the same colour as the swapped piece. Created by a 5-piece match on a row or column.
- Row/Column Bomb + Row/Column Bomb: Clears all pieces in the row and column at the point where they intersect.
- Row/Column Bomb + Square Bomb: Clears all pieces in the three rows and three columns centered on the intersection tile.
- Square Bomb + Square Bomb: Clears a 7x7 area.
- Schrodinger's Box + Schrodinger's Box: Guarantees at least three gold coins (100% chance).
- Schrodinger's Box + Other Special Piece: Has a 20% chance to drop a gold coin from the cleared tiles.
- UFO + UFO: Clears the entire board.
- UFO + Any Other Special Piece: Transforms base pieces into that special piece and then activates them.
- Clear Selected Piece: Removes the selected piece.
- Clear Row: Clears the selected row.
- Clear Column: Clears the selected column.
- Swap/Teleport: Swaps the positions of two selected pieces.
- Ice: Cleared when a match is made on it.
- Thick (Dark) Ice: Cleared after two matches are made on it. It requires two matches to be completely removed.
- Rock: Cleared when a match is made on an adjacent tile. It requires two matches to be completely removed.
- Constellation: Cleared after three matches are made on adjacent tiles.
- Dynamic Goal System and HUD: Each level has its own unique objectives. The progress of these objectives, the remaining moves, and the collected gold amount are displayed in real time on the in-game top panel (HUD).
Designed a scalable level management system using ScriptableObjects to decouple level data from scene logic, enabling rapid iteration and design changes without recompiling code.
Steps to create a new level:
- In the Project window, right-click inside the
Assetsfolder. - Select Create → Match3 → LevelData.
- In the Inspector, set up the level configurations (board size, objectives, obstacles, goals, etc.).
- In the Hierarchy, locate
MainMenuUIand assign the new LevelData asset by dragging and dropping it into the "All Levels" array.
- Game Engine: Unity 6000.2.6f2
- Programming Language: C#
- Version Control: Plastic SCM
- UI & HUD: Figma
- Game Assets: ChatGPT & Layer AI
To get a local copy up and running, follow these simple steps.
Make sure you have the following software installed on your system:
- Git: To clone the repository.
- Unity Hub: To manage Unity Editor versions and projects.
- Unity Editor 6000.2.6f2: The project was developed using this specific version of Unity. Unity Hub can automatically download and install it for you.
-
Clone the repository to your local machine:
git clone [https://github.com/MetinKagit/SpaceSwipe.git](https://github.com/MetinKagit/SpaceSwipe.git)
-
Open Unity Hub and click on the "Open" button.
-
Select "Add project from disk" from the dropdown menu and navigate to the folder where you cloned the repository.
-
The project will now appear in your Unity Hub projects list. If you do not have Unity version
6000.2.6f2installed, Unity Hub will provide a prompt to install it. Proceed with the installation. -
Once the correct version is set, click on the project name to open it in the Unity Editor. This might take a few minutes the first time as Unity imports all the assets.
-
In the Unity Editor's
Projectwindow, navigate to theAssets/Scenes/folder and open theMainMenu.unityscene by double-clicking it. -
Press the Play button at the top-center of the Editor to run the game.
Important Note on Audio Files
The audio files used in the project are not included in this repository due to potential copyright ambiguity. These assets are part of the paid Udemy course mentioned in the project description. You will need to provide your own sound files to avoid potential errors and enable audio functionality.
- Project Owner: Metin Kağıt
- University: Fatih Sultan Mehmet Vakıf University
- Department: Computer Engineering
- Course: Undergraduate Graduation Project
- Advisor: Asst. Prof. Dr. Sultan ZEYBEK
- Date: May 2025
I would like to extend my sincerest thanks to my advisor, Asst. Prof. Dr. Sultan ZEYBEK, for her valuable guidance and support throughout the project.















