Show HN: Simple games ported to Scala 3 – Try them in the browser

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern API for authentication & user identity.
  • LearnThisRepo.com - Learn 300+ open source libraries for free using AI.
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • scala-js-games

    Simple games ported to Scala.js (Scala 3)

  • slinky

    Write Scala.js React apps just like you would in ES6

    For those interested in Scala.js I would recommend two UI frameworks:

    a) Slinky - https://slinky.dev

    b) Laminar - https://slinky.dev

  • WorkOS

    The modern API for authentication & user identity. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • Laminar

    Simple, expressive, and safe UI library for Scala.js (by raquo)

  • scala-js-games

    Some simple games ported to Scala-Js (by lihaoyi)

    Well, given that I haven't refactored the code to take full advantage of scala3, the changes are mostly on the build scripts, which is very nice because the old repo likely used scala 2.10 (or 2.11).

    The only required syntax change was related to https://docs.scala-lang.org/scala3/reference/dropped-feature... (2 minor occurrences).

    Original sources at https://github.com/lihaoyi/scala-js-games

  • scalajs-react

    Facebook's React on Scala.JS

    Or the OG React Scala.js library: https://github.com/japgolly/scalajs-react

  • lavamaze

    Lava Maze is a programmable game environment in Scala.js

    If you're not using macros, moving from Scala 2 to 3 is pretty easy.

    I have a bunch of 2d games I use in programmable learning environments. This is the commit that did a lot of the shifting from 3 to 3.0.0-RC1

    https://github.com/wbillingsley/lavamaze/commit/0d9aca52e8e8...

    A lot of it was just trivia like "it's required to put parentheses around lambda function parameters now", and "if the function is declared with an empty arg list () rather than no arg list, you have to call it with an empty arg list rather than no arg list".

    If I recall, there's a compiler plugin they put out that could automatically make many of those changes, but I found it took little enough time just to do them manually that investigating the plugin wasn't necessary.

    An example of one of the programmable games in action:

  • scala3-migrate

    A tool to help migrating from Scala 2 to Scala 3

    > If I recall, there's a compiler plugin they put out that could automatically make many of those changes

    Actually, there are compiler options to rewrite the sources to/from scala3, I have tried this in more complex projects and it worked nicely (see https://docs.scala-lang.org/scala3/guides/migration/tooling-...)

    This is the link to the plugin you mentioned which is supposed to avoid the manual syntax updates but I haven't had the need to try it, like you said, most of the times the changes are trivial enough (https://docs.scala-lang.org/scala3/guides/migration/scala3-m...).

    > An example of one of the programmable games in action

    This comes handy to me, looks cool! For one or another reason, I ended up in this page which seems to intend hosting the same app but it doesn't work, just wanted to let you know (https://www.wbillingsley.com/lavamaze)

    There is a similar nice project which I have been looking into (https://www.kogics.net/kojo).

  • LearnThisRepo.com

    Learn 300+ open source libraries for free using AI. LearnThisRepo lets you learn 300+ open source repos including Postgres, Langchain, VS Code, and more by chatting with them using AI!

  • sbt-ci-release

    sbt plugin to automate Sonatype releases from GitHub Actions

    > Veautiful - https://www.wbillingsley.com/veautiful/

    Thanks for sharing, first time I see this project mentioned.

    > Any day now, I'll get a chance to improve the documentation of the framework (and give it a proper release rather than using JitPack snapshots all the time).

    It is worth commenting about https://github.com/sbt/sbt-ci-release which makes it simple to auto-publish to maven central.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts