Ichiban Sokoban is a sokoban game that I developed in Unity. Use the robot to push the crates into the goal areas. Try to finish the levels in the lowest possible number of moves. If you get stuck, you can reset the level and try again.
I developed Ichiban Sokoban for the Mini LD #67, which had the Classic Mashmix theme. One of the suggested games to remix was Sokoban. I had developed a sokoban game years ago in Java for a college course.
I started developing the game by creating a simple Board class in C#, which basically just held the textual representation of the game (I changed the chars to ints for simplicity). When the player presses an arrow key, it updates the Board, not the game world.
I created another class that actually handles instantiating all of the object in the game world. When the Board object is updated, all of the GameObjects in the scene update their positions according to the board. None of the GameObjects in the world have colliders.
The game can parse levels in the standard sokoban text format. I’m hoping to write a file importer so that players can load their own levels.
I’ve been developing Ichiban Sokoban on the nights and weekends for about two weeks now. I’m really happy with what I have developed. The game seems to be received well on GameJolt, as it has quite a few downloads for a desktop game and some positive votes.
I got the file importer working, which reads out of the default application directory using the Application.dataPath variable, with “/maps” appended. I had to write some extra code to verify the the file extension ends in “.txt”, otherwise it will try to read the “.meta” files that Unity adds by default.
For a Windows build, the “maps” folder must be placed in the IchibanSokoban_Data folder. For a Mac build, the “maps” folder must be placed in the “IchibanSokoban.app/Contents” folder. On MacOS, you have to right click the folder and select to show contents. Otherwise, double clicking the IchibanSokoban.app folder will start the game. It is a hassle since on both platforms, the “maps” folder must be copied every time the package is built, since it deletes any folders that already exist there. I should create a script that automatically copies the maps files after a build.
I am also in the process of adding a timer and best move and score values.