ckhet: I have no idea what I’m doing

I found a game called ckhet, which is supposedly patterned after a boardgame called Khet, but I haven’t a clue how to make it work.

2015-03-29-6m47421-chket

I understand that the red line is a laser and the idea is to control its reflection by turning pieces, but I’ve never played the boardgame and this particular version is rather tight-lipped.

I can tell you that you’ll need to start ckhet once in a terminal as a “server,” and connect through another with ckhet localhost for a two-player game. For a single-player game against the AI, you need to give the “server” a robot as a flag; check the -h list for how to do that.

Once the game is running, there seem to be only two or three controls: space or Enter to select a piece, and the bracket keys to rotate it once left or right. What the goal is beyond that, or how to win the game … I’m not sure. No man page that I could find, and the best source of information was in the README or on the Wikipedia page for the boardgame. :(

It’s a good looking game and seems to have a strong idea of how to conduct itself, but for now, I’m just a little clueless on how to play the game at all.

pyro and pacman-for-python: Piggybacking python

I’m going to piggyback one program onto another today, because it doesn’t really have enough oomph to stand on its own. And in this case, the two titles have their core language in common. Here’s pyro, to start us off.

2015-03-28-6m47421-pyro

pyro’s home page says it hopes to be “the first major roguelike game” written entirely in python. Of course, that claim may go back to 2006, and I’m not sure if it made it in under the wire. Nowadays there are quite a few roguelikes that use python2.x and some at python3; I don’t know which ones would deserve the “major” appellation.

pyro does not strike me as particularly innovative in terms of roguelikes, and in some senses seems to be lacking a few important points. If the home page is correct and the game isn’t quite finished then I’m willing to forgive that.

Color use is good, but you must have a terminal of at least 80×25 (not x24) or you’ll get python errors. Character creation is very rudimentary, where selecting a class pins you to a race (or perhaps vice-versa), and classes seem tied to your choice of “god.” There is no chance to tweak ability scores or other statistics, even though the readme files suggest a lot of the game’s mechanics rely on those.

Occasionally there are incomplete screens or placeholders for certain features. pyro’s closing screens mention that there would be a save feature there, at some point. The command key rundown is visible with the question mark key, but there seem to be some points (most glaring is spellcasting) that are missing.

My biggest complaint would just be movement keys, which by default are number pad directions. That means laptop users like me are going to be fiddling with the Fn and NumLk keys a lot. No doubt an enterprising player-stroke-programmer could knuckle down and edit the source files to change those, but I’m not very enterprising, and besides, for what I’ve seen of pyro, it doesn’t really grab me.

Taken as a whole, pyro has the groundwork for a decent python roguelike all in place, and just needs to be updated and embellished. Like so many other programs I see though, it’s fast approaching that 10-year mark where the likelihood of getting that attention is very, very slim.

Now for the second title, as promised: pacman-for-python.

2015-03-28-6m47421-pacman-for-python-01

Eugene Antimirov’s Pac-Man derivative is simple and straightforward, and incorporates enough AI to make it a workable clone, even if it does miss big chunks of the original game.

Arrow keys move your atpersand around the screen and clearing the maze of dots (periods) ends the game with a congratulatory message. Touch a ghost and the game ends with a sad announcement.

No power pills though. No multiple lives either. No attract screen or welcome message. And aside from simple direction finding, the ghosts don’t patrol or circle. The maze is determined by the contents of map.dat, which you can edit as a plain text file. So if you want something with more symmetry, you can build it. Or just open the entire field to dots. :|

2015-03-28-6m47421-pacman-for-python

I noticed one other thing that pacman-for-python needs to overcome: There’s a blatant discrepancy between the speed of the ghosts and the speed of the player.

Probably just by virtue of mechanics, it’s possible to zip around the maze at a high speed because the key repeat and refresh rates are so much faster for the player than for the ghosts. Ghosts seem to move about once a second; by holding down a direction key your glyph can move three or four times as fast.

Which means even the best AI isn’t going to have much luck in catching you, since you’re five steps away before it gets the chance to make one move. It’s probably a point that can be resolved easily, with a small delay in the player’s movement code.

That’s all for now. I should tie up these games by the end of the month, and we can move back to boring old utilities and system monitors, file catalogs and music clients. Yawn. … :???:

z-day: A slightly different perspective on slaughtering zombies

I have a couple more roguelikes on my list, which will probably carry us right up to the end of the month. This is z-day, which I include mostly because it’s written in python, and because suggests a few changes to the tired old roguelike interface.

2015-03-24-6m47421-zday

By any yardstick, z-day is a bit primitive. It lacks a lot of the features you might expect — or want — from a roguelike, but I’m willing to overlook most of those because the home page hints that the game was never really finished. That’s fair.

Most of the reason to include it (aside from the copious amounts of color ;) ) is the inventory-only approach. Almost every key corresponds to some sort of item in your inventory, and pressing the appropriate key triggers its use.

That’s the case with almost everything except ranged items, which will require you to use the “z” key to fire. Other than that, arrow keys will move you and “a” and “u” are dedicated to equipping or using.

So there don’t seem to be any provisions for character abilities or background, no proficiencies to master or improve.

z-day breaks down your physical state into two categories, wounds and stamina. Wounds, as you might imagine, reflect how much damage you’ve taken, but stamina suggests how much more you can take. You might suffer a blow from a zombie while your stamina is high and shrug it off, but the same impact while your stamina is low might kill you.

That too is a different approach to the classical 1978-bound “hit point” model, and therefore worth mention. z-day also is stretchable to almost any terminal size. And it has a few other nifty tricks, but nothing huge that you won’t overlook on your own, if you try it.

In the category of downsides, z-day has some mapping issues that cause the screen to map and remap as you get close to the edges, which can be irritating. And there’s the question of whether the “a” key is somehow dedicated to inventory, or if an item in the “a” slot will be activated when you press it. Same for a few other letters.

I’m also a little distressed that throwing away an item destroys it irrevocably, supposedly because it’s “lost” in the mess. I’ve seen this in big-name top-tier games too, and in this day and age it strikes me as a huge cop-out. Much smaller, much less resource-hungry games are capable of managing loose scattered items on a map, so I see that as a considerable disappointment.

Other than that z-day strikes me as functional, and possibly the beginnings of a decent game. I don’t see it in either Debian or AUR, but the source file ran fine for me with just python2 zday.py.

gnupong and yapong: One bad, one … better

I’m dreading talking about gnupong and yapong, mostly because I’m in that “weak sauce” area again.

Pong itself is no masterpiece of programming, and in this case we’re reaching so far back into game history that even the finest, freshest, most faithful rendition of the original game is going to be a bit … sparse.

These two are on my list though, so I feel obligated to include them. The first is gnupong, which has dates in its source files that reach back to 1998.

2015-03-22-6m47421-gnupong

If that looks pretty weak to you, it is. This is more a one-person variation on the original Pong than a clever imitation at the console. And given that it has an upright orientation over a horizontal one, it has more of a feel of Arkanoid than Pong proper.

No score display, until the game is over. No help on controls, until you read through the source files (hint: “a” and “l” for left and right). No help on speed controls or quitting the game, and when you miss a ball, it all comes crashing down.

I’m almost embarrassed to include it.

yapong, on the other hand, is a better attempt.

2015-03-22-6m47421-yapong

Here we have the original side-by-side arrangement, the vertical controls (up and down for the right player, “a” and “z” for the left) and proper rebounding action for the ball. Score is on-screen and visible, and the game doesn’t smash-to-black every time one side makes a mistake.

Space drops the ball and continues play after a point, with “q” as a dropout key. Check the help flags for difficulty and animation controls; in my case yapong -l 1 was a good shortcut for a playable game at 2.6Ghz.

No AI players though. And still no color, although I expect the argument could be made that the arcade version had no color either, so it’s an issue of fidelity.

Regardless, I will set these aside for now, as two titles that are done and done. One bad, but one better. :|

P.S.: yapong is in AUR only; gnupong will compile if you add using namespace std; after #include <iostream> in pong.cpp … according to my notes. ;)

cursedmate: Right ingredients, but not yet perfect

I’m not sure if I should call cursedmate a Snake game or a Dig-Dug clone.

2015-03-13-6m47421-cursedmate

After all, there seems to be an excavation theme at work here, and we’re collecting the pound symbols. But nothing ever collapses.

And we’re technically staking out a path, but it doesn’t seem to matter if you cross over it or not.

So it’s a middle ground of some sort, with the theme being a hacker evading fed(z). Pound symbols are zerodays (or maybe they’re xploitz, the game seems to use two different names) and red letter O’s are the bad guys.

Finish a level by collecting all the xploitz, whereupon you’ll get a rank or wisecrack for your progress, an then pass through a tunnel to a new board. Later boards have faster fed(z) that snatch the zerodays if they touch them, or are decorated in different patterns or colors.

cursedmate is python-driven, and isn’t a bad game on the whole. The animation and movement effects are smooth, and pop-up menus and displays don’t get in the way of the action.

One small irritant: The transition screen takes a few seconds to pass through, but doesn’t have a way to escape it once it begins. Not that it’s a big deal, but skipping through the animation to the next level would be nice.

Further, cursedmate is not terrifically difficult. I think I cleared the first 10 levels of the game the first time I played it, and without even thinking about the fed(z). AI movement is obviously random, which means you only need to worry if you’re within a cell or two of a fed(z), and even then the odds are they won’t randomly leap onto you.

And once or twice the game crashed without warning, mostly at a point where the level was almost finished. But I’m not sure if that’s something I did, or something that was happening in the background.

Oh, and in case it matters to you, there is some off-color language included here and there.

cursedmate feels like it’s one step away from a very good game, but needs a little more polishing before it reaches that top tier. It has all the right ingredients — color, animation, a goal and some worthy adversaries — but it seems to lack that special oomph that makes it more of a game and less of a programming experiment. :|

Frozen Depths: Clear, cold perfection

I promised I wouldn’t hold out too many roguelike games unless they could show off something unusual, either thematic or mechanic. The *angbands from a week ago were all viable games, but either didn’t bring anything new to the table, or just didn’t quite satisfy.

Frozen Depths is definitely one to take home to mother though.

2015-03-22-6m47421-frozen-depths-01 2015-03-22-6m47421-frozen-depths-02 2015-03-22-6m47421-frozen-depths-03

2015-03-22-6m47421-frozen-depths-04 2015-03-22-6m47421-frozen-depths-05 2015-03-22-6m47421-frozen-depths-06

Since I am the one making a big deal out of themes and mechanics, I’ll introduce it on those grounds.

This is a strictly surface-down fantasy game, with a simplified set of races and professions. Everything is cold-themed, which is great because it avoids the vampire-quokka odd couple I talked about the other day. I see no problems with mud monsters and frost crabs wandering into the same room to deal me a tag-team smackdown.

There’s no outside world to explore, no external quests to pursue, and the only goal (that I have found) is to explore the depths of the dungeon and find the source of the cold that threatens the surface world. Climb out of the dungeon and your life is forfeit as a coward, which means … a-hunting we will go. :\

Your own body warmth comes into play though too, with a need for warmer clothes as you go deeper and deeper, and warm food as a way of keeping yourself from freezing. Clothing (not armor) and temperature seem like rare additions in a roguelike game, so this twist piques my interest.

Frozen Depths picks up on some newer conventions in other games: There is a religion system which reminds me vaguely of Stone Soup, but seems more basic (which may actually be a blessing). There’s no magic in Frozen Depths, and the home page suggests it may be a deliberate omission for the sake of simplicity.

There is also a skill (and/or feat) system, which lets you customize your adventurer as he or she becomes more and more powerful. And the game keeps track of some important features that you’ve met on your downward journey, sort of like a journaling system.

From a mechanical standpoint, controls and keypresses are much like normal roguelikes, with the arrow keys controlling movement and melee, while a targeting system is controlled with the “f,” “t” and “s” keys. The question mark brings up an entire list, and the “u” key is dedicated to activating items in the environment (plundering corpses, for example).

Inventory is split from equipment, which means there’s a distinct screen for listing usable items, and a screen dedicated to what you’re wearing and wielding. This is a huge improvement over the traditional rogue-ish keys that dedicate one keypress to armor, another one to weapons, another one to rings, another one to cloaks, etc., etc., ad infinitum, ad naseum.

Dungeons seem to be limited to one screen of at least 80×25, with the lowest two lines as a character rundown (a full sheet is available with the “@” key). Two lines above that are status display and combat messages, and the remainder of the screen is your gameplay map. It does sometimes mean you have to page through narratives that are too long for the space they appear in, but in Frozen Depths I never felt like I had lost essential information to the display space.

Frozen Depths throws in a few added effects that I really like. There’s a three-page tutorial for newbies. Killing a monster splatters the walls with blood, and they appear red. Some passages are blocked by ice, and you’ll have to bash your way through them, which sometimes leaves little ice shards around. And Frozen Depths makes a distinction between what you can see and what you’ve seen, with bolded colors representing your field of view.

The game boasts of 35 levels, although I didn’t have time to see more than the first three or four. What’s at the bottom of the dungeon? I don’t know. You’ll have to explore and find out.

Storywise I could ask for a little more from Frozen Depths, but there’s enough here to justify it as a game; it’s at least as structurally sound as angband, even if it doesn’t pull in an entire mythical world, like adom. And considering that triple-A titles like Dragon Age carve away huge chunks of conventional fantasy genres and are still magnificent role playing games, I’m comfortable with the lack of a magic-based profession. I’d like to see it happen, but I’m not complaining either.

One last note before I hand out the gold star you know is coming: Frozen Depths is a free game, but it’s not open source. More’s the pity, but if you need to know licensing requirements or the reason for a closed-room approach, you can read the home page or take it up with the author. Either way, Frozen Depths is in AUR, but not Debian; the download is a precompiled executable with support files.

It’s easy to see a great text-based game, and even easier to tell when one deserves a special honor. Here’s the best I’ve got: :star: Enjoy! ;)

dominoes and more: A pocket games collection

When I was a kid, I was forced at interval to endure the common ritual of The Family Vacation, which usually involved traveling long distances in the back of a car across flat landscape with very little to do, other than annoy a sibling.

Children suffering the same torture today have all manner of things to occupy them, not the least of which being smartphones, netbooks or other electronic gizmos. In my day, we had to make do with cards, pocket-sized games, travel versions of boardgames, or pen-and-paper puzzles. You do remember what a pen and paper are, right? :???:

I’m sort of pleased to see that some of those rudimentary distractions have made the leap to digital text-based game format, so I’ll lump some of them together today as mini-games or exceptionally lightweight versions. What I have here is certainly nothing spectacular, but I do sometimes get messages saying a program was helpful in unexpected ways.

chess.pl

2015-03-22-6m47421-chess.pl

By the author of okiworld, this is a very straightforward and simple text-based chess game that manages to outdo obtuse behemoths like gnuchess or crafty in terms of usability. It’s not a particularly good chess client, so if you’re ranked globally, you’ll probably wipe the floor with it in a few minutes. But for those of us who lack your godlike skills and demeanor, it’s a better option than either of the heavyweights. File size: 22K, plus the perl infrastructure.

dominoes

2015-03-22-6m47421-dominoes

Also by the author of okiworld, a rudimentary attempt at a dominoes partner, again as a perl script. This is the only text-based dominoes client I’ve seen in two years of scraping the text-only crud off the bottom of the Internet, and sadly, it’s not very impressive to me. Commands are a little awkward, the board is hard to read and for what I can tell, it doesn’t really follow the rules of dominoes that I learned. It works, but just doesn’t grab me. File size: 6.3K, plus the need for perl again.

mastermind-nc

2015-03-22-6m47421-mastermind-nc

A very primitive and not very visual rendition of the Mastermind game, but with ncurses support, color and mostly arrow key controls. Up and down arrows push you through the available colors, and enter submits your guess for comparison. The upside of this is its four-corner approach to the display, which means it should (emphasis on “should”) run in the most unforgiving of terminal dimensions. The make command will dump this into a dedicated folder in your $HOME directory. Executable size: 22K.

othello

2015-03-22-6m47421-othello

Reaching back again into archive.org for this one, a simple coordinate-based Reversi game with good manners and an easy learning curve. Having said that, there’s only one difficulty level: something on par with Musashi’s Deadly Brain. While it’s perfectly believable that someone with a little more skill and a lot more patience might beat this thing, suffice to say I lack those qualities. Has onboard help and a polite demeanor. I like polite programs. Executable size: 23K.

slider

2015-03-22-6m47421-slider

A one-shot, no-frills 15 puzzle written in C. It is terrifically small and works like a charm, but is a bit unintuitive, has no real interface and needs a lot more attention than it has gotten so far. A tip or two: Arrow keys move the gap, not the numbers, and so you’ll spend a lot of time thinking backwards as you play this. Pressing “q” will exit cleanly; compilation command is in the comments of the source file. Executable size: 6.3K.


If you think this game parade is running short, you’re sadly mistaken. I managed to hack through a dozen or so by lumping them together into bulk posts, but I still have about a dozen more on The List. Before we go back to boring old network monitors and the text editor du jour. Aren’t games more fun? Don’t answer that. … :\