0.4 release blog post (#1444)

Blog post highlighting cool features in the newest release.

Also fix the version number in the .cabal file from 0.4 to 0.4.0.0. It's too late for the release (it always reports there is a new version available since 0.4.0.0 does not match 0.4) but oh well.
This commit is contained in:
Brent Yorgey 2023-08-22 12:35:05 -05:00 committed by GitHub
parent 6345de17d1
commit fb7d2eaeb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 203 additions and 1 deletions

View File

@ -0,0 +1,202 @@
---
title: "Swarm 0.4 release"
---
[BLOpts]
profile = wp
tags = Swarm, game, robot, programming, resource
categories = Haskell, projects
The [Swarm](https://github.com/swarm-game/swarm/) development team is
very proud to announce the latest release of the game. This should
still be considered a development/preview release---you still can't
[save your games](https://github.com/swarm-game/swarm/issues/50)---but
it's made some remarkable progress and there are lots of fun things to
try.
What is it?
-----------
As a reminder, Swarm is a 2D, open-world programming and resource
gathering game with a strongly-typed, functional programming language
and a unique upgrade system. Unlocking language features is tied to
collecting resources, making it an interesting challenge to bootstrap
your way into the use of the full language. It has also become a
flexible and powerful platform for constructing programming challenges.
A few of the most significant new features are highlighted below; for
full details, see the [release
notes](https://github.com/swarm-game/swarm/releases/tag/0.4.0.0). If
you just want to try it out, see the [installation
instructions][install].
Expanded design possibilities
-----------------------------
The default play mode is the open-world, resource-gathering
scenario---but Swarm also supports "challenge scenarios", where you
have to complete one or more specific objectives with given resources
on a custom map. There are currently 58 scenarios and counting---some
are silly proofs of concept, but many are quite fun and challenging!
I especially recommend checking out the `Ranching` and `Sokoban`
scenarios, as well as `A Frivolous Excursion` (pictured below). And
creating new scenarios is a great way you can contribute to Swarm even
if you don't know Haskell, or aren't comfortable hacking on the
codebase.
![](../../images/excursion.png)
Recently, a large amount of work has gone into expanding the
possibilities for scenario design:
- [Structure templates](https://github.com/swarm-game/swarm/pull/1332)
allow you to design map tiles and then reuse them multiple times
within a scenario.
- [Waypoints and
portals](https://github.com/swarm-game/swarm/pull/1356) provide a
mechanism for automatically navigating and teleporting around the
world.
- Scenarios can have multiple
[subworlds](https://github.com/swarm-game/swarm/pull/1353) besides
the main "overworld", connected by portals. For example you could
go "into a building" and have a separate map for the building
interior.
- There are a slew of new robot commands, many to do with different sensing
modalities: `stride`, `detect`, `sniff`, `chirp,` `resonate`,
`watch`, `surveil`, `scout`, `instant`, `push`, `density`, `use`,
`halt`, and `backup`.
- A [new domain-specific
language](https://github.com/swarm-game/swarm/pull/1376) for
describing procedurally generated worlds. The default procedurally
generated world used to be hardcoded, but now it is described
externally via the new DSL, and you can design your own procedurally
generated worlds without editing the Swarm source code.
- The [key input
handler](https://github.com/swarm-game/swarm/pull/1214) feature
allows you to program robots to respond to keyboard input, so you
can *e.g.* drive them around manually, or interactively trigger more
complex behaviors. This makes it possible to design "arcade-style"
challenges, where the player needs to guide a robot and react to
obstacles in real time---but they get to program the robot to respond
to their commands first!
- A new prototype [integrated world
editor](https://github.com/swarm-game/swarm/pull/873) lets you
design worlds interactively.
UI improvements
---------------
In the past, entity and goal descriptions were simply plain text;
recently, we switched to actually parsing Markdown. Partly, this is
just to make things look nice, since we can highlight code snippets,
entity names, etc.:
![](../../images/crafting.png)
But it also means that we can now validate all code examples and
entity names, and even test that the tutorial is pedagogically sound:
any command used in a tutorial solution must be mentioned in a previous
tutorial, or else our CI fails!
There are also a number of other small UI enhancements, such as
improved type error messages, inventory search, and a collapsible REPL
panel, among others.
Scoring metrics
---------------
We now keep track of a number of metrics related to challenge scenario
solutions, such as total time, total game ticks, and code size. These
metrics are tracked and saved across runs, so you can compete with
yourself, and with others. For now, see these wiki pages:
* [Swarm speedrunning](https://github.com/swarm-game/swarm/wiki/Speedrunning)
* [Swarm code golf](https://github.com/swarm-game/swarm/wiki/Code-golf)
In the future, perhaps there will eventually be some kind of [social
website](https://github.com/swarm-game/swarm/issues/1259) with
leaderboards and user-uploaded scenarios.
Debugging
---------
Last but not least, we now have an [integrated single-stepping and
debugging mode](https://github.com/swarm-game/swarm/pull/1081)
(enabled by the `tweezers` device).
![](../../images/debugger.png)
Give it a try!
--------------
To install, check out the [installation instructions][install]: you
can download a [binary release][release] (for now, Linux only, but
MacOS binaries should be on the horizon), or [install from
Hackage][hackage]. Give it a try and send us your feedback, either
[via a github issue][issue] or [IRC][irc]!
[install]: https://github.com/swarm-game/swarm#installing
[release]: https://github.com/swarm-game/swarm/releases
[hackage]: https://hackage.haskell.org/package/swarm
[issue]: https://github.com/swarm-game/swarm/issues/new/choose
Future plans & getting involved
-------------------------------
We're still hard at work on the game. Fun upcoming things include:
- [Saving and loading games][saving]
- New world features like aliens and [cities][cities]
- New language features like [recursive types][rectypes],
[arrays][arrays], [inter-robot communication][robot-comm], and [a
proper `import` construct][import]
[cities]: https://github.com/swarm-game/swarm/issues/112
[saving]: https://github.com/swarm-game/swarm/issues/50
[rectypes]: https://github.com/swarm-game/swarm/issues/154
[arrays]: https://github.com/swarm-game/swarm/issues/98
[robot-comm]: https://github.com/swarm-game/swarm/issues/94
[import]: https://github.com/swarm-game/swarm/issues/495
Of course, there are also [tons of small things that need fixing and
polishing][low-hanging] too! If you're interested in getting
involved, check out our [contribution guide][contrib], come [join us
on IRC][irc] (`#swarm` on Libera.Chat), or take a look at the list of
[issues marked "low-hanging fruit"][low-hanging].
[contrib]: https://github.com/swarm-game/swarm/blob/main/CONTRIBUTING.md
[low-hanging]: https://github.com/swarm-game/swarm/issues?q=is%3Aissue+is%3Aopen+label%3A%22C-Low+Hanging+Fruit%22
[irc]: https://web.libera.chat/?channels=#swarm
Brought to you by the Swarm development team:
- Brent Yorgey
- Karl Ostmo
- Ondřej Šebek
With contributions from:
- Alexander Block
- Brian Wignall
- Chris Casinghino
- Daniel Díaz Carrete
- Huw Campbell
- Ishan Bhanuka
- Jacob
- Jens Petersen
- José Rafael Vieira
- Joshua Price
- lsmor
- Noah Yorgey
- Norbert Dzikowski
- Paul Brauner
- Ryan Yates
- Sam Tay
- Steven Garcia
- Tamas Zsar
- Tristan de Cacqueray
- Valentin Golev
...not to mention many others who gave valuable suggestions and
feedback. Want to see your name listed here in the next release?
[See how you can contribute!][contrib]

BIN
images/crafting.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
images/debugger.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
images/excursion.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
images/scenario-launch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -1,6 +1,6 @@
cabal-version: 2.4
name: swarm
version: 0.4
version: 0.4.0.0
synopsis: 2D resource gathering game with programmable robots
description: Swarm is a 2D programming and resource gathering