Lightweight games from distro

Posts: 345
Joined: Mon Oct 01, 2012 14:59

Lightweight games from distro

by OldCoder » Wed Dec 06, 2017 12:56

I've been working on a Linux distro for over 20 years now. Not sure who will see it, but I need to finish it.

One feature is lightweight games. I like to think that I've got a pretty good collection.

I'd planned to devote part of an upcoming distro site to the games. But they're a better match for here.

This post provides a few screenshots, years old, of games from past editions of the distro. I think that I'll work up Debian-compatible instructions for building these things.

* Screenshot of the games folder as it looked circa 2010. It's larger now.


* Frozen Bubble. This game isn't rare, but it's become harder to build in recent years.


* BEWorld. This is my very own video game.

Mr. Business, who some of my current online associates have met, is the only person remaining from that period. I was experimenting with gamedev at the time and he was hoping to launch a gamedev startup.

To be clear, the startup wasn't going to be based on this toy. This game was simply something that I had fun with.

The game's primary claim to fame is that it might be the largest single-Tcl video game in existence. The code is about 100 pages of Tcl not counting embedded binary data or blank lines.

The goal is simply to make it through the Flames of Heaven, which, as everybody knows, burn hot.


* LinCity Next Generation. Yes, this game is two decades old and it's not really at the level of SimCity. But it's FOSS and shouldn't be allowed to die.


* Fydo's Pillows. The concept for this game is fun: stop a nuclear attack by using a catapult to land pillows under an incoming missile. But I'll need to do some work to get it to build with standard modern distros.


* Simutrans. Again, not really a competitor to SimCity, but it's fun.


* This is a small setup program that I wrote for Simutrans about 10 years ago. I've added launchers of this type to a few other programs, including regular applications as well as games; they simplify things quite a bit.


* I did a little of the keyboard code for Secret Maryo Chronicles. This is a sample level from the game.


* Snakebite is part of an amazing FOSS games system named Rocks 'n' Diamonds.

The game system can be used to create puzzle worlds of many different types. The flavor is 1980s or 1990s but this is FOSS that deserves recognition.


* Nearly 40 years ago, I used to play Rogue and, subsequently, Hack. Hack involved into Nethack and then there was SlashEm and a related GUI named NoeGNUd.

StarGnud is my version of NoeGNUd. StarGnud is more limited than NoeGNUd, in some respects; for example, it doesn't support SlashEm as a back-end and it has fewer tilesets.

However, my version includes a number of bug fixes and enhancements.


* Wizards and nuclear weapons. This is another StarGnud screenshot.

I thought that it would be interesting to have a dungeon-style game that included phasers and nuclear weapons. Now, thanks to FOSS, I've got one.


* This is Googelon, a character from Battalion, as he appears at Christmas. The game switches modes automatically during the Christmas season.


* I support a few DOS games such as Commander Keen. They run under Linux via DOSBox.


* I've got perhaps a dozen chess GUIs and/or engines. This is EBoard, one of the GUIs. I use XBoard as well.


* Do the new Star Trek movies and/or the TV series include Vulcan Chess?


* Mirror Magic is a precursor to Rocks 'n' Diamonds.


* Old West, like Snake Bite, is part of the Rocks 'n' Diamonds games framework.


* PRFreeBoom is my version of Doom, It combines PRBoom, FreeDoom, Slige, Slump, and a few other pieces.

Yes, Doom is a First Person Shooter, one that is dramatically over-exposed in the FOSS game world through all of its descendants.

But the original is lightweight. It was also a fun diversion in the mid-1990s.

Office LANs were still a new concept, at the time, in many small companies. But my firm had one and we fiddled with it so that we could explore a novel world.

On the weekend, of course. Our CEO was a no-nonsense type.



* Chromium B.S.U. is a relatively common but engrossing FOSS top-down scroller.


* I possess rudimentary arithmetic skills. So, I don't really need to learn 3 times 4. However, regardless, I play this math game once in a while.


* Bubbman 2 is a retro-1980s game. It's interesting mostly as a curiosity and a historical artifact. Should it be allowed to disappear because of that? Nope. I like to save useful things.


* SuperTux isn't rare at all, but here's the copy from my distro.


* Pingus is a lesser-known Linux game that's moderately interesting. This game is similar to an old DOS and MS-Windows game known as Lemmings. The screenshot is from my version of the game, which fixes a few bugs and adds a few levels that aren't in the standard version.



User avatar
Posts: 25
Joined: Thu Feb 18, 2016 13:45
GitHub: poikilos
In-game: Abiyahh

Re: Lightweight games from distro

by poikilos » Thu Feb 28, 2019 00:58

A lightweight game that is rather painful to compile is called RainCat (I had trouble getting Haskell up and running and compiling Raincat in Manjaro, but other distros may not have as much trouble). The binaries are rather old, and are only included in certain distros (Ubuntu's universe repository has it).

I have a list you might find helpful called "Native Linux Games That Go Beyond Casual Gaming" that is very specific and includes games that have deep gameplay and in my opinion are more replayable than ones not on the list. Some commercial games are included, but only native Linux games are included.

Posts: 345
Joined: Mon Oct 01, 2012 14:59

Re: Lightweight games from distro

by OldCoder » Thu Feb 28, 2019 09:47

poikilos wrote:A lightweight game that is rather painful to compile is called RainCat (I had trouble getting Haskell up and running and compiling Raincat in Manjaro, but other distros may not have as much trouble).

Raincat is a puzzle game, written in Haskell, developed by Carnegie Mellon students in 2008. It's vaguely reminiscent of Lemmings, though there are elements of other games. The home page is:

Raincat is written in Haskell. But I'd added Haskell to my Linux distro last year (2018), so that part was out of the way.

Haskell is one of the languages that's written in itself. So, to add it to a distro, you need to find bootstrap binaries that will run on the distro. Then you need to get the bootstrap binaries to build the language sources.

If you're developing your own Linux distro, this part is tricky because nobody is building binaries that target your distro. You need to use kludges so that foreign binaries will work.

The bootstrap process is also complicated for some languages, including Haskell, by the fact that the bootstrap and source release numbers need to be a close match.

I think that I used Debian Haskell binaries for the bootstrap compiler. The sources that I used came from:

Raincat needs Cabal, Haskell's package system, as well. This meant that a build might or might not work.

Cabal is an online library ecosystem. This is a framework which discourages offline builds.

As a distro creator and maintainer, I'm not a fan of builds that rely on these things.

Ecosystems of this type make things easier in some respects. But the increasing reliance on them, and the resulting increase in problems such as conflicts between dependencies, mean that you're never sure if a program is, or isn't, going to build.

It's as simple as that. Builds need to be reproducible and reliable and they should work offline.

There should no reliance on sources that aren't in a distro maintainer's possession. Or how is he or she supposed to deliver the exact sources that were used to build to people who use the distro?

Regrettably, most languages have developed online library ecosystems, though some take it farther than others.

* Perl has CPAN, but it's not really required. Additionally, you can mirror all of CPAN offline without too much trouble.

* Python has "pip", a package manager, and "pypi", a repository.

I don't like "pypi" because it doesn't seem to provide fixed URLs for tarballs. But you can mirror parts of the repository offline, though not as easily as with Perl.

* Java is a solid language, better for some purposes than it's given credit for, but the "build" ecosystem for some components is pure mysticism.

There often isn't even a way to build some components. You need to incorporate source-less JAR files, the equivalent of binary blobs, in your projects. Better still, JAR files that are supposed to be FOSS sometimes rely on non-FOSS JAR files, which torpedoes the FOSS license.

If you mix FOSS and non-FOSS, the resulting color isn't in-between. It's non-FOSS.

* With Ruby Gems, you frequently end up with conflicts that are difficult to resolve.

* Rust is a bust. Cargo, its online package system, is complicated, buggy, and actively hostile to offline builds.

* Then there's Haskell and Cabal. Cabal reminds me of Cargo, but it's not as bad.

As it turned out, to build and run Raincat, just two simple steps were required:

1) Delete my old Cabal directory tree:

rm -fr $HOME/.cabal

This gave me a clean starting point for the experiment.

2) Tell Cabal to build the program:

cabal install Raincat

Cabal downloaded and compiled a few dozen dependencies and then Raincat itself. It took a while, but everything worked. When the compiles were done, Cabal started the program automatically.

One negative was that, when I tried repeating the "cabal install" command, it built all of the dependencies again. I'm not sure why. But when I repeated the command a 2nd time, it didn't build the dependencies a 3rd time.

It helped that my Linux distro already had most major libraries installed along with the associated header files and "pkg-config" files.

Other developers might need to install, for example, development kits for the "sdl2" core and some of the "sdl2" core extensions such as "sdl-mixer".

A Raincat screenshot is shown below.

The game started with the cat sitting to the left of the rain. It didn't want to go through the rain until I gave it the umbrella. Then it was pleased to proceed.

Controls are simple. Sound worked out of the box. I'd add this Haskell game to my Linux distro if there was a simple way to package it.


Return to Lightweight Linux games

Who is online

Users browsing this forum: No registered users and 0 guests