Inspiration
We aimed to create a unique game unlike anything seen before. In our research, we came across the game "Baba Is You," where players can manipulate rules to change the game's logic. This inspired us to think beyond just changing player roles. We decided to make rules themselves flexible and modifiable. Additionally, we introduced a second player in a different universe in entanglement with the first player. Both player define the interactions of the other player.

What it does
Breaking Symmetry is an engaging grid-based strategy game set on two 12x12 grids, one blue and one red. Players navigate these grids, each featuring a blend of static and dynamic objects that influence gameplay.
Static Objects: These include PUSH, STOP, PASS, WIN, and DEFEAT tiles, which set the rules and constraints of the grid. Arrows in different directions guide movements or block paths.
Dynamic Objects: These vary between written and actual types. Written objects like W, S, A, and D correspond to actual objects with interactive capabilities, such as ROCK, FOOD, LASER, and TNT. Actual objects can move or act based on their levels: - Introductory levels: Each feature of the game is introduced in a series of 10 levels. - Advanced levels: Players have to use mind and advance solving techniques to make use of the altering of the rules.
Players must strategically use these objects to navigate the grid, avoid traps, and achieve objectives. For example, touching FOOD on a WIN tile results in a win, while encountering a LASER in its firing direction results in defeat. Players can also switch and control dynamic objects like ROCK and FOOD to gain advantages or modify the grid's layout.
Each level presents unique challenges, requiring players to adapt their strategies and outsmart their opponents to succeed.
How we built it
Breaking Symmetry was built using a combination of strategic game design and programming. Here’s a brief overview of how we developed it:
- Game Design: We designed two 12x12 grids with static and dynamic objects. Static objects define the game’s rules and constraints, while dynamic objects have varying behaviors. We created a set of predefined static objects like PUSH, STOP, and WIN, and dynamic objects such as ROCK and LASER with specific interaction mechanics:
- Levels: We assigned levels to each object in the gameplay, be it static as 0 or dynamic from 1 to 3.
- Priority: Since objects can overlap each other, so we assigned priority to each on of the on the display.

Programming: We implemented the game logic using a structured approach:
- Grid Creation: We used arrays to define the positions of static and dynamic objects on the grids.
- Object Interaction: We developed functions to handle the interactions between static and dynamic objects, including movement, pushing, and level changes. Some functions use recursion in the linked list to change the dynamic controls.
- Controls: For seamless and efficient controls we used function pointers (delegates).
- Interface: We used interface to update the rules for each object as they move on a control without explicitly calling those functions.
- Storage: Both grids of 12X12 matrices have a stack on each position to store the levels of the dynamic objects. All objects are connected to each other via a doubly linked list for fast addition and deletion, if no connected chain then the garbage collector system destroys it.
- Observer Pattern: Calling only the head object to change the rules like in the ROCK.
- Level Design: We designed levels by specifying object positions and properties. Levels were implemented using functions that set up static and dynamic objects according to predefined patterns.
Dynamic Object Handling: Each dynamic object was programmed with specific behaviors based on its level. For instance, objects at Level 1 can be moved above, at Level 2 they can be pushed, and at Level 3 they block movement. All dynamic objects have only one parent class with a set of predefined common properties.
Testing and Refinement: We tested each level to ensure balanced gameplay and refined the mechanics based on feedback and testing outcomes. By combining these elements, we created a challenging and engaging game that requires strategic thinking and adaptability.
Challenges we ran into
Creating a dynamic and engaging 2D puzzle game posed several challenges, and overcoming them required innovative solutions. Here are the primary challenges faced during the development of Breaking Symmetry:
Dynamic Object Storage:
- Challenge: Efficiently storing and managing dynamic objects with varying properties.
- Solution: Implemented classes and utilized a linked list structure to store objects of the same class. Enumerated dynamic object types within the class for streamlined management.
Rule Modification System:
- Challenge: Enabling dynamic rule changes for individual puzzle elements.
- Solution: Developed a flexible rule modification system by defining a set of dynamic rules as enums within the class. Implemented a function using a linked list to apply rule changes uniformly across all instances of the dynamic objects.
Code Optimization:
- Challenge: Ensuring code efficiency while handling dynamic puzzles, rules, and interactions.
- Solution: Leveraged 3D vectors for spatial representation, employed linked lists for dynamic object management, and implemented optimized algorithms to enhance overall code performance.
Class Interface Design:
- Challenge: Defining a cohesive interface for the parent class and its derived children to ensure a consistent structure.
- Solution: Implemented abstract classes with well-defined interfaces, allowing derived classes to inherit and implement specific functionalities. This approach streamlined the development process and rules updation and maintained a clear structure for future expansions.
The combination of class structures, linked lists, 3D vectors, and optimized algorithms proved instrumental in addressing these challenges and contributed to the successful development of Breaking Symmetry. Each solution was tailored to enhance gameplay dynamics while maintaining code efficiency and flexibility.
Accomplishments that we're proud of are:
- We used proper DSA techniques and algorithms to make the game efficient and faster.
- All the rules changing functions are being handled with the use of interfaces.
- We developed a game in which nothing was fixed.
What we learned
We implemented different methods and patterns and different concepts of DSA in the game programming to make it efficient and fast.
What's next for Breaking Symmetry
- Breaking symmetry has a potential to become a timed game which two people can play collectively at a time to solve a level.
- Multiplayer Features: We can think of integrating online multiplayer capabilities, allowing players to compete against friends and others around the world.
- Visual and Audio Upgrades: Expect improvements in graphics and sound effects to enhance the game's immersion and visual appeal.
- User Feedback Integration: We will incorporate player feedback to refine game mechanics, address bugs, and balance difficulty, ensuring a smoother experience.
- Expansion Packs: We’re developing themed expansion packs that will introduce new tiles, objects, and scenarios, offering ongoing content and variety.
Some Rules Introduction
- Customized control:

- Rock levels:

- Teleporting between universe:

Log in or sign up for Devpost to join the conversation.