As part of a module in second year, I joined a small team of other Computer Science students to create a remake of the game Sokoban for Android phone users.

The project was to be developed in Java using Android Studio and would generate random puzzles that the user would need to solve faster than an AI solving the same level.

  • Our team had 6 members and we decided to split the work into different sections for ease of development.
  • Two would handle the UI and the various mandatory Android API integrations needed for the project.
  • Two would focus on developing an AI that could take any generated level and produce the list of movements required to solve it optimally.
  • One would handle the generation of random puzzles respecting a given difficulty.
  • Finally, I would implement the logic for the game, allowing for the movement of the characters and the interactions between boxes and such.

As the project progressed, several parts of the App were falling further and further behind schedule. Notably, no UI was implemented within the first half of development and the AI had issues finding the optimal path, often settling on invalid or sub-optimal paths. This caused large upsets in the timetable planned for the App and as such it was not as polished as I would have liked on final submission.

The final submission had all features complete but several restrictions applied in regard to the size of level that could be solved by the AI as it took too long to solve each level otherwise. As such, the larger levels could only be played solo. The UI was also very basic and no additional features were added to take advantage of Androids various APIs.

I learnt a lot from this project as I had only worked solo on my programs up to that point. A proper timetable with clear milestones needs to be created so problems can be highlighted as soon as possible, allowing for extra help, or time, to be given to those who need it.