Skip to content

Repository files navigation

Donate Latest Release Build Status License: GPL v3

SokoGrump

SokoGrump is a cross-platform Sokoban-style puzzle game built with C#, .NET 10, and MonoGame DesktopGL. It reworks the classic BoxWorld formula into a compact crate-pushing puzzle game starring Grumpy Cat.

The game includes 100 hand-authored levels with progressively harder layouts. Your objective is to push every crate onto a target tile without cornering yourself or blocking the board.

Preview screenshot

Features

  • 100 included puzzle levels
  • Keyboard-driven gameplay with mouse support for menus
  • Undo last move support
  • Elapsed time, move counter, and level display during play
  • Bilingual interface (English and Romanian)
  • Continue Game support through saved progress
  • Fullscreen toggle in the settings menu
  • Cross-platform DesktopGL build

Gameplay

Each level is played on a fixed grid. The player can move freely, but crates can only be pushed, never pulled. A level is complete when every target tile is occupied by a crate.

Controls

  • W, A, S, D or arrow keys: move
  • R: restart the current level
  • U: undo last move
  • Mouse: navigate menus and use the on-screen retry and undo buttons

Installation

Flatpak

Get it from FlatHub

Prebuilt releases

Download the latest packaged build from the GitHub releases page.

Development

Requirements

  • .NET 10 SDK
  • MonoGame content build tools (dotnet-mgcb) - required to rebuild game assets
  • TrueType core fonts - required for font rendering on Linux (fonts-freefont-ttf or equivalent)

All NuGet dependencies (MonoGame, NuciXNA) are restored automatically by dotnet restore.

Build

dotnet build SokoGrump

Run

dotnet run --project SokoGrump

The game stores settings and saved progress in the local application data directory under SokoGrump.

Test

dotnet test SokoGrump.slnx

Release

The repository includes release.sh, which delegates to the upstream deployment script used by the project maintainer.

bash ./release.sh 1.0.0

This script downloads and executes an external release helper from https://raw.githubusercontent.com/hmlendea/deployment-scripts/master/release/dotnet/10.0.sh.

Note: Piping into bash is an intensely controversial topic. Please review any external scripts before running them in your environment!

Project Structure

The solution contains two projects:

  • SokoGrump: The game itself
  • SokoGrump.UnitTests: Unit tests covering game managers, board/tile mapping, and core models

Key directories inside SokoGrump/:

Directory Purpose
Content/ Game assets: sprites, tiles, cursors, fonts, audio, and MonoGame content builder files
Data/ Localisation resource files
DataAccess/ Data persistence layer - repositories and data objects for boards and settings
GameLogic/ Core puzzle logic - game manager, board mapping, move and undo handling
Gui/ All UI - screens (title, gameplay, victory, game-finished, splash), controls, and sprite effects
Levels/ 100 hand-authored puzzle levels (0.lvl to 99.lvl)
Localisation/ Localisation manager for multi-language text
Models/ Core entity models: Board, Player, Tile, TileType, TileId, MovementDirection, DirectionDelta
Settings/ Application-wide configuration: paths, graphics, audio, game defines, and user data

Dependencies

Package Purpose
MonoGame.Framework.DesktopGL Cross-platform game framework
MonoGame.Content.Builder.Task Compiles game assets at build time
NuciXNA.DataAccess Content loading and data access utilities
NuciXNA.Graphics Graphics manager and sprite drawing helpers
NuciXNA.Gui GUI controls, screen manager, and cursor
NuciXNA.Input Keyboard and mouse input manager
NuciXNA.Primitives Reusable value types: Point2D, Size2D, Scale2D, Colour
NuciDAL Generic data-access-layer base classes

Contributing

Contributions are welcome. Please:

  • Keep changes cross-platform
  • Keep pull requests focused and consistent with the existing code style
  • Update documentation when behaviour changes
  • Add or update tests for new behaviour

Support

If you find this project useful, consider funding it or giving a ⭐️ on GitHub!

Links

License

Licensed under the GNU General Public License v3.0 or later. See LICENSE for details.

About

Sokoban-like logic game featuring the Grumpy Cat

Topics

Resources

Stars

Watchers

Forks

Releases

Sponsor this project

Used by

Contributors

Languages