Skip to content

giancosta86/solvenius

Repository files navigation

Solvenius

Logic game in modern Elm

Game screen

Introduction

Twenty years ago, in 2001, I created the very first version of Solvenius: it was a simple videogame, written in Visual Basic 6, but it still contained most of the game dynamics - in particular, the user had to deduce sequences of digits, à la Mastermind.

About fifteen years later, I discovered Elm, a sublime functional programming language: after the initial challenges due to the new paradigm, I was definitely excited about the well-structured nature of the Elm architecture, so I wanted to try it on a project I knew very well - so, why not Solvenius?

Solvenius 3, which I published in January 2016, was an invaluable breakthrough - which even inspired later projects like EighthBridge; however:

  • it lacked proper build automation
  • it was based on the ancient, signal-based Elm architecture
  • its mobile usability, despite media queries, was limited - which is why I later created a Kotlin wrapper to publish the game to Google Play: but what about iPhone users and non-Android users in general?

Solvenius 4 addresses the above points:

  • package dependencies are ensured by Yarn and Elm, while the build process - from code to website - runs via Webpack and GitHub Actions

  • the code is written in modern, message-based Elm - after 5 years of courses and experience in the domain of functional/hybrid programming; part of the app is also in TypeScript - and the two languages are elegantly mixed by Webpack

  • in lieu of addressing specific stores, Solvenius is now a Progressive Web Application - that can be installed to a range of different devices!

Running the game

Solvenius is an HTML 5 game- so you can run it just by pointing your web browser to:

https://gianlucacosta.info/solvenius

Furthermore, your web browser might even suggest that you install Solvenius - making it feel like a native application! ^__^

Online help

The game is fairly straightforward - but you can find detailed instructions in the online help, accessible from the title screen.

Frequently asked questions

  • What's new in this major version?

    Solvenius 4 introduces the following technical enhancements:

    • Portable Web Application (PWA) - to make the game compatible with a wider range of devices, and to make it available even when the user is not connected to the Internet

    • Far more elegant codebase, rewritten in modern Elm

    • Enhanced user interface:

      • Multiple background music tracks
      • Sounds
      • Game pausing
      • Confirmation messages before exiting the game
      • Path-based page routing - which enables bookmarks to specific pages
    • Browser integration (e.g.: multimedia, local storage) via a thin layer of TypeScript code

    • Webpack to unify the two different languages into a single JavaScript bundle

    • Tests, to check the core parts of the game engine

    • Simple and elegant build process, supported by Yarn, Webpack and GitHub Actions

  • "Solvenius" - what does that mean?

    Solvenius is short for solving genius - focusing on the deductive nature of the game and the fact that everyone can master its mechanics by applying logic! ^__^

Audio credits

NOTE: the original audio files have been compressed when creating the game.

Special thanks (for Solvenius 4)

The author would like to thank:

  • Marco Mengoli and Elisa Bruzzi: for testing this new release on iPhone, as well as for providing hyper-valuable feedback

Special thanks (for the legacy version 3)

The author would like to thank - in order by surname:

  • Massimiliano Corsini: for his valuable testing of both the HTML 5 and the Android version

  • Alberto La Mantia: for suggesting that game clues on sequence attempts should employ not only colors but also other visual elements

  • Kevin MacLeod (incompetech.com): for the excellent soundtrack

  • Salvatore Munaò: for his valuable testing of both the HTML 5 and the Android version

  • Ivano Pagano: for suggesting keyboard input support

  • Carmen Squillaci: for her valuable testing and suggestions on the Android version

  • Paolo Tagliapietra: for his suggestions and infrastructural support for an older major version (Solvenius 2)

Further references