Wednesday 21 December 2016

Why am I not that excited about Jupiter Hell

The roguelike community was recently all over about Jupiter Hell — a roguelike with modern 3D graphics, which has recently run a very successful crowdfounding campaign. I am quite sure Jupiter Hell will be a great game — after all, Darren Grey and Kornel Kisielewicz are both working on its gameplay, and both are well known to create fantastic roguelikes. This post is a response to a post by Darren Grey, who believes that Jupiter Hell is a gateway for our beloved genre to get its deserved mainstream acceptance.

I tend to play mostly indie games: roguelikes, roguelites, some other games too. Occassionally I do try big mainstream hits, but I am rarely satisfied with them. For example, Witcher II. I have been playing mostly for the story. Most of the game was fighting, exploring, and collecting items. Fights were irrelevant (lack of permadeath!) and boring, and were an obstacle in the story, rather than the fun part. The game would be better without them. And without walking around and collecting items. One could say that it was still better than games that I could not play at all, but this does not change the point: I feel that it would be better if all the game — all the boring 20 hours — were removed, thus leaving just a nice two hour long movie. Diablo II is mostly a real-time roguelike, but I have found no point to try it with permadeath, as I have found it much more boring than roguelikes. I have similar feelings with other RPGs. First person shooters are not interesting at all. I have a relatively good chance to like mainstream strategy games, but I am often annoyed by too much micromanagement, or by animations which I have to watch again and again — when working on the animations in NotEye (for ADOM), I have taken care to have them so that they don't slow a fast player down, and it is great that JH goes the same route with its adaptative animation system.

On the other hand, a big part of the roguelike culture is its wonderful community. Barriers between creators and players are lowered. Players are encouraged to report bugs, provide their own ideas, and even learn programming and create their own variants or games in events such as the 7DRL challenge. This leads lone passionate developers working in their spare time to create awesome games (ADOM, Dungeon Crawl, Spelunky, DRL). Often playable for free — the motivation for creating these games was the fun of creating great games, games they would like to play themselves, rather than financial gains. These games won't have good graphics or polish,but are much better than the mainstream in my experience. I find the roguelikedev communities much more appealing than the general gamedev ones, which IME tend to concentrate on graphics and monetization too much.

So I would like more people to see that games with low production value / free / created by lone developers can be much better than the current mainstream games. Why people don't see this?

Maybe gamers in general believe that a game without high production value, or a free game, cannot be good? By a game with high production value I mean one which has, or appears to have, lots of money poured into its creation: complex graphics, cutscenes, professional voice acting, general polish, trailers, and so on. Will Jupiter Hell be really able to compete with popular AAA games on these grounds? And if it will, I do not see how would such players join our creative community, or try the relatives of Jupiter Hell — all the other great roguelikes — which do not have this production value.

Or maybe the contrary is true: popularity is actually not about 3D graphics? Angry Birds do not have 3D graphics, indies and roguelites neither, and they are quite popular too nowadays — not sure how good measure of popularity this, but by the number of Steam reviews, FTL is roughly on the level of popular strategy and RPG games. Ragnarok and JauntTrooper: Mission Thunderbolt were both awesome roguelikes, and they appeared to have features to appeal the mainstream — quite good graphics for their time, mouse control, permadeath only as an option. Still, they have failed. On the other hand, the insane success of Minecraft, despite being started by a lone developer inspired by ADOM and NetHack, and not having high production value, is a huge surprise. What was the cause of this? Marketing? Simply luck (what becomes popular and what not, actually depends largely on random factors, and Notch seems to agree)? Whatever the problem is, will Jupiter Hell avoid it?

Maybe the roguelikes are not popular because is just hard to explain what they actually are? I think I have that problem with HyperRogue — its defining feature is that it takes part in the hyperbolic plane. Unless you are interested in mathematics, you won't know why would that be interesting — things like "a roguelike in the DOOM universe" or "a vampire roguelike" are easier to explain (assuming that you know what "roguelike" is), so people looking for new roguelikes would probably be more likely to try these. We call these games roguelikes precisely because they are so hard to explain — after all, other genres are named after their features, not after a notable game in that genre :) People are afraid of trying new things. I have updated the homepage of HyperRogue so that it explains the point of the game to new players, without scaring them off with difficult words such as "roguelike" or "hyperbolic geometry".

The Kickstarter page for Jupiter Hell explains that it is a "turn-based sci-fi roguelike/RPG". I think that categorizing roguelikes as a subgenre of RPG might contribute to the obscurity of roguelikes. The success of the Witcher series suggests that fans of RPGs do like games like this: nice story, gameplay not getting in the way. Maybe they do not get what they expect when trying roguelikes. Such people would be put off by permadeath, and the low focus on story typical to roguelikes. I have seen opinions that Diablo is not a RPG — and Diablo is quite similar to roguelikes, so I guess we would see such opinions on roguelikes too if they were more popular. On the other hand, a strategy fan would be much more likely to understand the point of procedural generation and permadeath (strategy games are often procedurally generated, and even if they don't usually feature permadeath, it is quite clear that this is the noble way to play). I am of a strong opinion that roguelikes are actually closer to strategy games than RPGs, they actually are turn-based tactics games. XCOM does have important RPG elements (story, character advancement, inventories) yet it is not seen as an RPG. Maybe we should rather market roguelikes as single-character turn-based tactical games, and emphasize the benefits of being single-character to players of XCOM and such (more action, more detailed characters, less micromanagement).

Or maybe we should try to find new players even further. Most people are not gamers, and I have a feeling that a popular opinion is that intelligent people do read books, or play games such as Chess, playing boardgames is cool, but playing computer games is a stupid thing to do. Such people would not care about graphics that much — everybody knows that a book is not to be judged by its cover, and Chess is the same game, whether you play it with beautiful pieces or not. Andrzej Sapkowski, the author of the series of books that the Witcher game is based on, said "I don't know many people who have played that game, because I tend to with intelligent people". I have watched Evelyn Lamb's talk Visualizing hyperbolic geometry. I think HyperRogue is a great tool for visualizing hyperbolic geometry, but it is only mentioned on the last slide (about minute 33): "I am too scared to do it, because I might like it, and then I won't ever do any work again". It appears that she had experiences with computer games similar to my experiences with Witcher, i.e., that they are a waste of time, and she was afraid that HyperRogue would be like this too. Whenever I see a game described as "addictive", I think it is not a good thing. Far too many games demand the player's time without giving anything in return. Skinner boxes, grinding, free games which allow you to use money to speed things up, unlocks which make the character stronger. Well designed roguelikes don't. In HyperRogue, even the Hyperstone Quest, which is considered very hard, can be done in just about two hours by a skilled player. Obviously getting that level of skill might take lots of time, but the game does not slow you down, only your own ability to learn new things. And learning is fun.

Maybe such non-gamers would be actually put off by the graphics of Jupiter Hell? I have read somewhere that all popular games fall in one of just three graphical styles. Jupiter Hell looks like a quite generic photorealistic violent game. Roguelikes are to a big extent a computer version of board games, and when watching the animations in the Jupiter Hell teasers, it has struck me that it does not look like a board game, thus confusing the potential players about the point of the game yet again. HyperRogue has recently received 3D graphics and adaptative animations too, but our design goals were different. Recently I have received a spam e-mail offering 3D models. I have looked at the (still 2D) screenshots of HyperRogue and decided that, even though the graphics in HyperRogue are nowhere as good as the art by M. C. Escher which inspired it, it is unique and thus looks much better than any generic 3D models. The new animations are consciously made to be not realistic — to emphasize that battles are to provide challenge for the player, as capturing the opponent's pieces in Chess, not meaningless violence for its own sake.

Obscurity of roguelikes is a big mystery for us roguelike fans, we could only guess the reasons. This post turned out very long, and yet it does not cover everything. Roguelikes have evolved in a completely different way than the mainstream games, and I think that we should be proud of that, instead of seeing it as an disadvantage. Please share your thoughts in the comments, or just play the most satisfying games in existence :)

Thursday 8 December 2016

Sources of HyperRogue: part IV

This is the fourth post in the series, about the lands from versions 8.x.

There is not much to say about Wild West. Revolvers, and hunting outlaws for bounties, are among the most common tropes in westerns. It does not really match the rest of the game, so it is available as the bonus land only.

Snowyowl0 had an idea on the HyperRogue forum about a land called "The Eternal Storm", which was a land with strong winds, and with Fulgurite as a treasure. I read what Fulgurite was — a mineraloid created when lightning hits sand, and also a nice reference to Fulgur14, one of the most prominent members of the HyperRogue community — and found it more appropriate for the land that I had rough idea for since some time, where you had to kill monsters by creating electric connections out of them. So that's how the Land of Storms was created. The monsters you created electric connections of had to be something metallic (so that it is a conductor), slow (so that you actually have time to create connections), and heavily armored (so that it cannot be destroyed in normal way). My first drawing of the Metal Beast created something like a Trilobite, and they remained like that. They were joined by Storm Trolls, since it was interesting to also have monsters creating conductible walls when they die.

Ivy was one of the first monsters unique to HyperRogue, but now I have invented a potentially more interesting variant of it, growing much more quickly. I found the Mutant Ivy work well in two cases: in a forest (where you could chop down trees to reach the root), and in the open space, where it moved only on hexagons. I have restricted the movement of the Mutant Ivy to hexagons outside of the Overgrown Woods, so we have both cases in the same monster. You could cut trees to get access to the root, but it was also useful to be able to restrict the growth by placing barriers too — so the Mutant Ivy was joined by yet another Troll. Thus, the Trolls in the Living Fjord, Land of Storms, and Overgrown Woods (and to lesser extent Red Rock Valley) are all primarily intended not as something that can kill you, but something that helps you — as we say with Princess Tehora, "the trolls only want to help". The Orb of the Overgrown Woods is the Orb of Luck, which notably loses some charges when you kill an Albatross, as a reference to the superstition that killing albatrosses brings bad luck, as suggested by simon_clarkstone.

And the hex-restricted Mutant Ivy grew quite nicely in the open space, covering everything nearby — this was used in a Yendor challenge, but also a special land, the Clearing, was created for it. Fighting an infinite monster gives me a very epic mental image, especially when you notice that, when you move towards the root, you actually destroy trillions of Ivy leaves with a single strike (even though the game does not count that). Giant Fox was an appropriate monster here — as a omnivore it could both eat the mutant fruits and attack the player character, and there were already some canines (I like reusing families of monsters, like birds and Trolls). Orb of Freedom is a reference to the description of the Giant Fox, which is quite hard to see, since it is hard to actually meet a Giant Fox — even though it has no special properties, in combination with the giant Mutant Ivy I believe that it actually makes the land much harder, so you won't actually meet them unless going for high score.

Haunted Woods are based on an idea of wonderfullizardofoz. The general idea, shape, and location of the Haunted Woods are taken directly from this idea. No specific ideas about monsters, treasures and terrain features were given, so I have decided to make it Haunted Woods, a forest filled with Ghosts, inspired by a card in the Dominion deck-building game, which also gives a mental image of being lost in the woods, and the treasure name is inspired by the most expensive card in the famous collectible card game Magic: the Gathering. The Friendly Ghosts created by Orb of Undeath were initially greenish, but in 9.2 they were recolored on tehora's request to match the Playmobil toy (video).

As I have mentioned, Snowyowl0 had an idea about a land called "The Eternal Storm" — the Land of Storms took the name and treasure from this idea, but not really the general idea (land with strong winds), or the monsters (crows and air elementals). Windy Plains are based on these remaining ideas. I wanted a treasure which would be carried by the strong winds, and a feather was a natural candidate yet again (after the phoenix feather from the Land of Eternal Motion). White dove feather as a reference to the song by Bob Dylan, Blowing in the Wind. Tehora helped with the color scheme.

She has also helped a lot with the Rose Garden — here is her story: "There were multiple sources of idea of Rose Garden — probably the most personal land in the game. The earliest I recall was when Zeno made few buttons and fridge magnets with HyperRogue theme. I told him that HyperRogue lacked in a land that would have been incredibly light, pastel, sweet and pink. A bit disturbing and psychedelic. I do not remember who came first with the exact name of Rose Garden — probably me after Zeno told me about one of his favorite roguelike monsters — the nicely smelling rosebush from Alphaman. I got extremely excited with that idea, even more because I personally dislike roses, so they made perfect "monsters" for that land. And then I populated Rose Garden with False Princesses and Princes — a delicate reference to "The Little Prince" by Antoine de Saint-Exupéry and the related Polish song by Kasia Sobczyk. There has been already lost Princess/Prince, that was a real love of our Rogue, but... how to love only one person, when there are many other appealing? This loosely reflects my personal demon, too — to me every other girl would be a better match for Zeno. Digging further in the love-theme, we introduced the Rose Beauties and Handsome Gardeners who would be "too pretty to be killed" — I suggested them during a walk in the break during our friends' doctoral defenses. Actually, the suspenders of Handsome Gardeners were inspired by the outfit of one of our friends on that day. I liked Rose Beauties, because of association with my original understanding of The Sick Rose by William Blake. The very first time I heard this poem in Protagonist's song (thanks KosGD!) it triggered an image of an extremely beautiful but coldhearted evil lady, that nobody expects to be dangerous (of course, many years later I encountered so called "proper analysis" of this poem, but I reject it!). Gardeners tend to be "default lovers" in fairytales — e.g. we thought about Muzzy in Gondoland where the Princess ran away with a Gardener — a cartoon from our childhood. And the last fun fact — when I urged Zeno to create new appearance for Rose Beauties our first attempt ended up as the new look for Witches... And the tiling for that land was prepared to satisfy my moaning that Zeno made a great tiling for Galápagos, and Rose Garden had an inherited one. The initial orb's name suggested by Zeno was Orb of the Skunk and I strongly disliked it. We spend reasonably too much time discussing it, and eventually ended up with Orb of Beauty with the same effect, although motivated differently (gives you stunning appearance, not stink)."

In roguelikes such as Zaga-33 and Ending, the concept of "parity" is crucial — if you have four way movement on a chessboard, and skipping turns not allowed, it is predetermined whether you hit the monster first or it hits you, unless you find some way to disrupt the parity. IMHO games centered around parity get old quite quickly, but I have found it quite fun in Crypt of the Necrodancer — as you have to deal with parity only for a very small number of monsters here — so I have decided to do a bit similar in HyperRogue — have a single land based on parity. The usual HyperRogue tiling has no parity, but it could be recovered by forbidding movement between hexagons, or even better, using another tiling equivalent to such a rule. The intended solution to the problem of killing an incorrectly aligned monster has been influenced by the CotD solution. When showing an early draft to Fulgur14, with trees, lakes, and monsters temporarily named Sloths, he has noticed that the "warped tiling" actually had straight lines, and suggested that they could be used for shorelines — which was a very nice idea, so it turned into a Warped Coast. A new sailor creature was required (after Pirates and Vikings), and Ratlings (from ADOM) were chosen, because of the association of rats with ships and pirates. Their suspiciousness of enemies who do not move was a result of my e-mail discussion with Michael Brough, the author of Zaga-33, about the parity rule. In the first version, the land was solved far too easy by killing Ratlings on a sea boundary, so we have decided with tricosahedron that Ratling Avengers would be created when a player tries to abuse that strategy — and Fulgur14 and tehora wanted them to have capes, because Avengers always wear capes. Corals are a reference to the crochet coral reef project.

Also, the Crossroads IV were created, to reuse the straight line separating Warped Sea and Warped Coast in other situations. Wonderfullizardofoz had this idea too.

Fulgur14 had the idea of a gravity-based land with infinite trees. I think he has suggested apples as treasure, as a reference to the apple which, according to the legend, fell on Isaac Newton's head and thus influenced creation of the theory of gravity. But how to name yet another land of trees, after Jungle, Dry Forest, Overgrown Woods, and Haunted Woods? I remembered that Manic Miner, a classic platformer from 1983, had a level named Endorian Forest. The theme is a result of merging all three themes — Manic Miner's Endorian forest (EF for short), wizardry theme of Ivory Tower, and the theme of research. The land is named Yendorian Forest, as a reference to EF and the Wizard of Yendor in NetHack. EF had green (stable) and red (crumbling) branch platforms, and thus the Yendorian Forest has strong and weak branches. Sparrowhawk is simply a bird who likes to catch prey on trees; tehora did not like using the default bird shape for them, with their "shanks" sticking out, so she was forced to draw a new shape. It is not completely clear what the creatures in EF were supposed to be (probably EF is a reference to the Endorian Forest in Star Wars, and the creatures would be Ewoks, but still, they look different), and how they look from the above — tehora interpreted them as wearing hats similar to ones worn in ancient Aztec reliefs, so that's what we see in HyperRogue. Their bright saturated colors are also a reference to EF. Their name is a reference to Isaac Newton's gravity research, and "infinite trees" in their description are one of research subjects in theoretical computer science.

As mentioned in the first post in this series, originally I had a different idea for the main quest in HyperRogue — every place in the world had environmental/civilizational parameters (temperature, humidity, whatever) which slowly changed as you travelled, and you had to find the location with specific parameters, and probably come back. I did not have a precise idea about how to implement this, and I found that even simpler ideas are fun enough in the hyperbolic plane anyway. At that time, I had no good idea about how to develop this, but when I have mentioned this in that post, I thought that it would be fun to try this now, with all the new experience. I wanted slow creatures whose properties would adapt to the changing environment as you were travelling. This reminded me of Galápagos — tortoises in different islands have different properties to adapt to their environments, which was noticed by Charles Darwin during his Beagle trip, and contributed to the theory of evolution. The land could be called "Land of Tortoises", but Galápagos means "tortoises" in Spanish, so it is better. The text message you get when you find a Baby Tortoise ("Aww, poor Baby Tortoise.") is a reference to Penance, the roguelike webcomic.

A long time ago, Fulgur14 had a idea of a worm-like Dragon, who would be killed by damaging all its segments. I wanted to implement Dragon Chasms some time ago, but the idea for generating it (horocyclic chasms) turned out to be more appropriate for an archipelago, so Caribbean was created instead. Environmental parameters introduced for Galápagos had another application, of creating procedurally generated height maps — so I have decided to create Dragon Chasms with a new algorithm, where chasms were based on such a heightmap. It was quite lucky that Galápagos and Dragon Chasms were created together — I had no idea who would steal Baby Tortoises from their families, and how the Dragons could do anything evil despite being so slow — and making the Dragons steal Tortoises solved both problems! Fire Elementals were added as a simple monster to complement the Dragons — they were already in the Elemental Planes and they should appear somewhere else, and Dragon Chasms sounded appropriate. One bad thing about that is that all other Elementals are very strong in their lands (but weak in the Elemental Planes), and Fire Elemental is still rather weak in the Dragon Chasms — maybe something will be changed in the future. The Orb of Domination has its own story... when we have been showing HyperRogue to one of our friends a year ago, he went to the Desert, and he said "Wow, a Sandworm! Is it possible to ride it?!". It was high time to actually implement Sandworm riding.

This is all in HyperRogue 8.x. The next episode will be about HyperRogue 9.x, and it will take some time — it is still not known what will be there! :)

Thursday 1 December 2016

HyperRogue 9.2: 3D hyperbolic animations!

HyperRogue 9.2 is released on Steam and itch.io!


This is again a release with no new lands -- however, it includes several upgrades aimed at making HyperRogue look more like a modern game.
  • Three dimensional view. How would the world of HyperRogue look if viewed from above? You can witness this yourself now! See legs of monsters, when looking from an angle, sides of walls, and chasms. For hyperbolic geometry nerds: this view is roughly accurate if we assume that the surface is actually an equidistant, not a plane. ("Roughly" because formulas are not yet perfectly adjusted for stacking items (e.g. Dragon riding or climbing Red Rock), and sizes of objects are arbitrary.) The 3D view is the default setting now, if you have saved your configuration in an older version, you have to set the "wall display mode" and "monster display mode" to one of the 3D modes.
  • Movement animations. Monster movement is animated now. You can watch these dogs run! Also particle effects when things are destroyed.
  • Sound effects. When a dangerous enemy such as an Eagle comes, you can hear it now! There are also sound effects when you fight, colelct items, and in several other situations. Some sound effects are still to be recorded :)
As usual, the full changelog and further minor updates are reported on the Steam forum. Mobile versions will be updated later. Enough talking, let's play. Have fun!

Saturday 12 November 2016

Hydra Slayer 18.0

Hydra Slayer 18.0 is released on Steam and itch.io!

Hydra Slayer is a roguelike with a unique combat system, based on old matematical puzzles. The highlights of release 18.0 are the following:
  • A new player race, the Atlanteans. Most characters in Hydra Slayer would meet vulture hydras, who grow one head for every wound they deal to the player. The Atlanteans have been cursed by the gods, and this will happen for all hydras. Will you be able to turn your curse into an advantage? The curse significantly affects the equipment and strategies to use, especially in the first 12 levels. Thanks for Patashu and Nick for the idea!
  • Evolving hydras. They start to appear after level 25. Their resistance to the given weapon material is increased by one after each attack. These are inspired by a (slightly trollish) post by IchigoMait.
  • Previously, each level below Level 12 contained just one special hydra (not counting bloody or dragon variants of standard colors) -- since there are 9 types, some of them will appear just a few times. The new version changes this -- some levels will replace one of the standard ones with another special, and some will almost lack normal hydras and include most of the special types instead. Challenge levels now tend to have two special hydras per level too.
  • One new exotic weapon -- I will leave that for the players to find :)
  • New special graphics for scythes (Atlanteans start with a scythe), hecatoncheires and monkeys. Thanks to tehora for requesting these!
  • Removed some exploits. It is no longer possible to enhance the titanic club easily with the Reforging+Ambidexterity combo (thanks to vo3435 for abusing this). A tighter limit is placed on using time-daggers on mushrooms.
  • Some features have been added to help with "head draining" attacks (all hydras for Atlanteans, Vultures for all characters). When fighting head-draining hydras, the number of wounds caused by the hydra's next attack is given in the UI. For other hydras, when you select your shield, "+1" is displayed for the hydra whose damage is reduced by your shield. Also, you can now press 'w' in the hydra description, to view the amount of wounds the given hydra would deal for every size. Enchanted Mersenne Twister (when trying to roll a 'good' number of heads) will now take into account that extra heads could be drained.
  • In the cheat mode, shift+H can now also summon equipment.
  • Minor bugfixes: better display of the in-game achievement screen, capital letters accepted in the scores menu, better handling of the app going out of focus, the generation of Giants' weapons in challenge games, crash bug with Vulture + Ambidexterity + Knowledge/Growth, using Twister even though runes are active, inexact calculation of wounds in the PoK algorithm by head drainers, 'use count' for traps, dragons attacking in a wrong direction on non-orientable levels, number of stunned heads is no longer displayed in the PoK hint for large hydras (the algorithm does not care about them anyway), potion of knowledge correctly counting wounds for shadows, capital letters accepted in the scores menu
Have fun! Small updates will be posted on the Steam forum first.

Thursday 27 October 2016

HyperRogue 9.1

HyperRogue 9.1 is released on Steam and itch.io!

There are some gameplay fixes, and numerous user interface improvements. There is a new "land", but it is not a part of the normal game, but rather a separate Halloween mini-game, where you play on the surface of the jack-o'-lantern, and fight typical Halloween monsters, such as witches, undead, and demons. This is very different from the usual game of HyperRogue because you play on a sphere -- which is (in some sense) the opposite of hyperbolic plane! While HyperRogue is that everything is infinite, the sphere has severely limited space of just 32 cells. Collecting Treats will summon new monsters, and bring you magical Orb powers. You have to manage your limited resources to be successful here.

The Halloween mini-game can be activated from the main menu. In it, you can press 'o' to try the spherical variants of the usual lands of HyperRogue. You can also try elliptic geometry, which is obtained from the sphere by considering the antipodes to be the same point -- and there is no real difference between Mirror Images and Mimics in this geometry :) In general, HyperRogue now lets you compare the hyperbolic phenomenons to their spherical counterparts. After Halloween, the spherical/elliptic geometry and the Halloween mini-game will be available in the "Euclidean/elliptic mode" in the special modes menu.

Other changes include:
  • Major overhaul of the user interface. Most of this has been actually done in patch 9.0i. The new menus should look better, and adjust to the screen size better (especially mobile). The color dialog has been improved, and it is now used when you edit the colors of your character. Most numerical options are replaced with subdialogs when you can enter the numbers directly, or adjust them with arrows or sliders; and some help is provided for some of the less clear numbers. In 9.1, additionally pressing F5 or F10 while in good game won't stop immediately (ESC screen will be shown first).
  • Improvements to the Prince(ss) quest. Some bugs were fixed (jealousy did not work, monsters tended to just stay in place after hitting the Princess -- now they ignore her while she is stunned, and also the stun time is extended). If you have saved the Princess successfully, but she dies later, you can revive her with Orb of Love after you collect 20 $$$ more.
  • Orb power is now drained after the monsters move, not immediately after the movement (so Shielding at 1 charge will still defend you for the next turn, and Aether at 1 charge will let you move once more) -- this should be much more intuitive, especially with Orb of Time. Also fixed some bugs with Orb of Time (Thorns or Aether were considered to be used even though they were not). Also fixed Ghosts and Rock Snakes, who did not work correctly with Orb of the Shell/hardcore mode.
  • Knights of Camelot now quote Euclid, Lobachevsky, Gauss, and Escher.
  • As a reference to Deadly Rooms of Death, Goblins are now afraid of energy swords, and won't step on cells adjacent to them.
  • You can now change the projection quickly by pressing number keys. This is useful on the sphere, and also if you want to see the different models of hyperbolic plane quickly. 1 (orthographic or Gans model), 2, 3 (stereographic or Poincaré), 4 (gnomonic or Klein).
As usual, there will be probably patches -- changelogs are reported on the Steam forums first. Have fun!

Tuesday 25 October 2016

NotEye 8.4 + Hydra Slayer 17.1

Necklace of the Eye, the roguelike frontend and display library, and Hydra Slayer, a roguelike based on mathematical puzzles, have been updated!

This update brings the following:

Hydra Slayer update

Hydra Slayer has been updated to version 17.1. This means that features which were previously available only in the paid version on Steam are now free. These features include: random challenges, traps, a new type of equipment (orbs), animations of flying heads, music, and lots of bugfixes and interface improvements. See here for details about version 17.0, and for the further updates. Of course, you still need the Steam version for typical Steam features such as online achievements, leaderboards and trading cards, and new features planned for the future will get in the paid version first!

LuaJIT

NotEye now uses LuaJIT instead of the standard Lua. This greatly improves the performance.

Better support for Unicode

NotEye is now better at handling Unicode, that is, characters outside of the standard ASCII. Thus, when using a font containing all Unicode characters, for example, Hydra Slayer can now display the appropriate symbol √ for Eradicator, and Brogue can use the Aries symbol ♈ to display grass (previously this was possible only with fonts supplied with Brogue). Probably there are still some cases where this does not work as well as it could -- see NotEye's GitHub repository for further developments.

Better support for Linux terminals

One of strengths of NotEye (compared to Libtcod) was always that a NotEye game could work in a system terminal -- this makes it easier to communicate with software such as ssh for remote playing or screenreaders for blind people, and is the preferred way of playing text roguelikes for some people. NotEye 8.4 improves this somewhat. Modern Linux terminals do support 256 color palettes, or even TrueColor -- the newest version of NotEye can use this, thus, if you are playing Brogue on such a modern terminal, it should look just like the graphical version, with Unicode symbols and truecolor lighting. Secondly, using this feature was somewhat complex -- in version 8.4 it is sufficient to set the environmental variable NOTEYEEXTRACONFIG to consoleout_curses() (for the traditional Curses output), consoleout_16(), consoleout_256(), or consoleout_truecolor() (these three options work only in Linux for now). Previously ADOM and Hydra Slayer had special scripts on Windows for enabling the console output -- using an environmental variable makes these scripts simpler.

Downloads

Download NotEye+Hydra Slayer, or NotEye+Brogue. Have fun!

Saturday 3 September 2016

Hyperbolic geometry in HyperRogue: an update

The post Hyperbolic geometry in Hyperbolic Rogue was extremely outdated -- it explained only the hyperbolic properties in HyperRogue 2.0, and commented about the Euclidean mode, but there were tons of new hyperbolic features added to the game since then. I have updated this post with new findings. Enjoy!

Wednesday 3 August 2016

HyperRogue 9.0: swords, trolls, and krakens

HyperRogue 9.0 is released on Steam and itch.io!

And, since this is a major version, HyperRogue 8.3j can now be downloaded freely from the website! In comparison with the last free version (7.4), HyperRogue 8.3 includes new special modes (heptagonal mode and Chaos mode), some new ways of presenting the hyperbolic world of HyperRogue, and more than 10 new lands based on various themes, unique mechanics, and properties of hyperbolic plane.

Android and iOS versions of HyperRogue 9.0 should be available soon -- and with some new features too (shmup mode, leaderboards and achievements via Google Games in the iOS version, local scores in the Android version). Stay tuned!

And now, the new features of HyperRogue 9.0...

A long time ago, the Kraken Depths were a trade route. But then, Krakens have risen out of the depths. Many trading ships sank here, together with the treasure their carried. Legend says that you can uncover the secret of a magical weapon spell somewhere in the depths... Kraken Depths are remotely based on the idea of phenomist in the ideas thread.

Completing the Kraken Depths yields Orb of the Sword -- which creates a magical energy sword on a cell adjacent to you. This energy sword moves with you, but you cannot rotate it -- it simply remains at the same angle, slashing all the monsters it passes through. In the Burial Grounds, mastering Orb of the Sword is crucial for excavating the treasures and defeating monsters there. Although the strangeness of angles is probably the most well known property of the world of HyperRogue -- for example, the sum of angles of a triangle is less than 180 degrees -- the Burial Grounds are probably the first Land where understanding this well is important.

Trollheim is unlocked by killing a member of each of 6 subspecies of Troll available in the game. In this kingdom of Trolls, you fight large groups of them, and then find your way back to their treasure caches -- bodies of slain Trolls will be helpful, but you can easily get confused!

HyperRogue 9.0 also introduces turn-based multiplayer. Players take their turns simultaneously -- first all players make their choices (by using separate sets of configurable keys), then the move is performed unless it leads to death of any of characters. Sooner or later, probably a bad situation will happen -- one of the character would die no matter what they do, the characters separate and are unable to rejoin, or one of the players simply wants to leave for some time. In this case, a character can leave the game world, until one of the suitable Orbs is used to restore them. This plays slower than the normal single-player turn-based HyperRogue, and for this reason we think that the shoot'em up mode works better in multiplayer -- but turn-based multiplayer is still fun :) Additionally, the game now supports up to 7 players (not sure whether it is still fun, but why not support this?), and specific stats (kills/treasure/deaths) are counted for each player.

There were also many improvements to the user interface -- many of these were inspired by Alan Malloy's videos:
  • In previous versions, keyboard movement was somewhat risky -- sometimes it was hard to tell which key moves where. As shown on the screenshot above, HyperRogue can now display arrows -- these correspond to movement keys.
  • Cleaning the kill list: first monsters, then parts, then friends. As for monster parts, the number of Dragon/Kraken parts destroyed is now counted, and Mutant Ivy kill count now counts only ones killed directly (for consistency with normal Ivies -- the counts were not right in the Clearing anyway, where the actual counts would reach billions easily)
  • some mechanics were not appropriately explained in their descriptions: auto-triggering Orbs (Flash/Lightning), targettable Orbs (it was not made clear that they cannot be targetted at too close or too far ranges), auto-explore radius for the Minefield
  • More information about lands. For land with unlock requirements, the progress of unlocking is shown. Also it is clear which lands are not available in special modes, and which quests are optional for Hyperstone Quest.
  • The option to show heptagons did not work in some lands, and was confusing in some other lands -- now, it marks heptagons with dots (as it previously worked in the Red Rock Valley)
  • version number now always shown in the bottom left corner (useful when you watch recordings of HyperRogue)
  • A slight change to the Minefield: you can now mark mines by hovering over a cell and pressing 'm'. This also happens automatically if you know all mines adjacent to some cell. Marking mines prevents your allies from going there, and gives you a warning when you try to step on a marked cell. Cells where a monster moved, or cells with items, are marked safe (and mines set on items explode immediately now, so you can always be sure that cells with items are safe).
  • Warnings. The checkmate rule works well to protect you from most stupid mistakes, but there are some mistakes where it does not help because the actual death would happen on the next turn -- like stepping on a known mine, or moving under attack of a Kraken, in a boat (this does not kill you immediately, it just destroys your boat). Such moves could be fatal or not, and it is hard to check what is the case -- for example, if you step on a mine while escaping from an adjacent Water Elemental, the Water Elemental will catch up and extinguish the fires immediately -- so only a very basic check is made, and you can ignore the warning by repeating the action.
Fixed bugs in gameplay:
  • Crystal Sages, Dragons, and Fire Cultists can attack all targets now (not only the player)
  • fish could not go through sunken items
  • fixed the bug with Orb of the Fish not letting one to stay in place in Cocytus
  • Orb of Time did not work with Orbs of Aether and Thorns
  • Shadows now actually attack (previously they only affected the checkmate rule)
  • no more burning/sinking/falling messages for the Shadow
  • The log file now mentions if the game was played in pure hardcore mode
  • mouse can now step on mines (without triggering them)
  • the Orb of Lightning did not reflect off walls correctly
  • improved pathfinding for monsters -- it seems they no longer act strangely in tight corridors
  • Crossroads IV no longer appear in incomplete Rlyeh
  • allies were not killed by Rosebushes
  • Bomberbirds did not explode when killed by Rosebushes
  • in the Shmup mode, monsters are now less likely to get stuck
  • Ghosts no longer fall off cliffs and die
  • Yendorian trees are now burned by lightning (also Orb of Storms is now marked as dangerous there)
  • Rich Metal Beasts killed by Orb of Storms now also produces Fulgurite in shmup
  • movement to Orb of the Shell is now possible even if under attack
  • some monsters with non-standard movement abilities moved unpredictably (i.e., based on the internal representation) -- now they move randomly
  • fixed a bug with Ocean generation in the pure heptagonal mode
  • Water Elementals now destroy manned boats in the shmup mode
  • Sharks (except Demon Sharks) now suffocate when stranded on land
  • monsters at unstable locations in the Ivory Tower can now falling into dangerous terrain, or into other monsters attacking them
  • adjusted temperature and livecave value of some monsters
  • Friendly Ghosts no longer ride boats; they are generated from Dragon and Pikeman kills
Other fixes and minor features:
  • a new icon!
  • added a leaderboard for the heptagonal mode
  • replaced Servant (from the Ivory Tower) with Familiar, and added Familiar as the seventh choice for the player character (no gameplay changes), also changed the music in the Ivory Tower
  • new graphics for Eggs, sadly they are not triangular anymore
  • pressing Shift now cycles in the reverse direction in more contexts (shift+N to reduce the number of players, shift+M to go back in conformal models)
  • display colors in char config; also the movement star color can be configured now
  • bugcounts and minecounts are no longer displayed when you are in a menu
  • the menu for selecting the score to display works better now: some Orbs which were there are removed; pressing keys no longer does weird things, but rather allows you to search for a specific entry (just like in the Map Editor)
  • two new models added to the conformal menu (the models are not conformal, but they fit there)
  • translation fixes: conformal models' names, Dragon description, Polish translation
  • not crash on very long pathnames
  • improved wall display in Hive/Dragon
  • draw multiple Flash effects
  • quit from menu sends achievements
  • graphical effect for the Orb of Beauty
  • Unlocking rules were not shown for Crossroads II
  • 'chop down' used for trees
As usual, there will be probably patches -- changelogs are first reported on the Steam forums. Have fun!

Wednesday 22 June 2016

HyperRogue is now available in iOS App Store!

HyperRogue for iOS is released on the AppStore!



HyperRogue for iOS contains all the lands from HyperRogue 8.3, and most of the features. The features not included are ones which require complex interface to use (map/graphics editor, Hypersian Rug mode...), shoot'em up mode (single player shmup mode is planned for the next release), and online achievements and leaderboards (also planned for the next release).

Also, to make the differences between various platforms, and between free and paid versions, clear, I have created a table of differences on HyperRogue's downloads page.

Get it here, and have fun!

Friday 20 May 2016

HyperRogue 8.3

HyperRogue 8.3 is released on Steam and itch.io!

The Yendorian Forest is another platformer level, where you can climb giant trees. This land unlocks by collecting 10 Ivory Figurines. The unlocking rule for the Ivory Tower has been changed -- 30$$$ including 10 Elixirs of Life is required, and the Alchemist Lab is a basic land now.

Dragons are powerful monsters. They are slow, but evil, and love to pick on creatures who are even slower than them. They must be stopped! The Dragon can make many different moves, and you have to attack all segments to defeat it. The Dragon Chasms unlock when you kill monsters of at least 20 different types, and include Fire Elementals, which are now necessary for unlocking the Elemental Planes.

Galápagos is the land of Tortoises. They are very slow, which allows the Dragons to pick on them by stealing and eating their young. Bring the Baby Tortoises back, but, there is a catch: the Tortoises come in many varieties, depending on the part of Galápagos they live in -- there are 21 binary environmental factors, and thus 2097152 varieties. You'll have to find a Tortoise which matches the baby exactly! The more factors agree in the given location of Galápagos, the brighter it is shown on your screen.

The historal/conformal mode is for hyperbolic geometry nerds. It allows to present the world of HyperRogue in some new graphical ways. It has quite a lot of options -- see the description here.

More changes:
  • Killing Rock Snakes in the Whirlpool no longer creates terrain
  • Fixed Servants in the shmup mode; also Lightning and Flash should now auto-activate
  • It is now allowed to enable cheat mode in PTM (but only if no treasures yet)
  • A command line option to automatically turn cheat on
  • A new floor pattern for the Rose Garden
  • Extra texts for the Knights of Camelot
  • Minor improvements in the Vector Graphics Editor: vertices of the current layer are now marked, Shift+L to go back to the previous layer, '+' to increase the number of rotational symmetry, it is now possible to set rotations and symmetries before pressing 'n'
  • Since Sandworms and (non-withdrawing) Tentacles attack by moving into the target's location and eating them, they won't be able to do this if they cannot move there. Rock Snakes and withdrawing Tentacles attack all adjacent cells, without movement -- Tentacles did not work correctly in the hardcore mode, this is fixed.
  • Princess Challenge now unlocks immediately when it should (not after restarting)
As usual, changelogs for patches are first reported on the Steam forums.

Friday 6 May 2016

Brogue 1.7.4, ported to NotEye


This is a new port of Brogue to NotEye. It includes tiles by Oryx and audio by LazyCat. Also thanks to Lanhash for asking me to finally do this, and for testing!

This is much better than the old port from 2012. Now, Brogue communicates with NotEye directly, without using Libtcod. This approach is much more convenient (no longer two windows) and much more robust (NotEye can get information about the placement of windows directly -- previously it could not, which caused some glitches).

Get it here, and have fun playing!

PS: I would love to also create a NotEye port of DCSS, using the DCSS tiles. Currently my preferred way of playing DCSS is to play the ASCII version of DCSS via NotEye. But somehow I found it hard to understand how tiles are drawn in DCSS -- if you have any ideas about how this could be done, please contact me :)

Sunday 17 April 2016

Sources of HyperRogue: part III

This is the third post in the series, about the lands from versions 7.x.

I think it was Fulgur14 who wanted a beach with many horocycling seas. I have implemented this, but it turned out to be more convincing as a sea with horocyclic islands, so I have decided that this will be a pirate-themed land, with pirate treasures to be found in the islands. I have named this land the Caribbean, since that's where the Pirates usually roam, and I had no other ideas for another name of a pirate-themed land. (I didn't like the famous Disney film series that much, but I like the Secret of Monkey Island, which is based on the same thing.) One of the treasures in Colossal Cave Adventure is simply called the Pirate treasure, and I am referring to this in HyperRogue's Caribbean somewhat :) The theme has Parrots and treasures, I wanted to have treasure maps too, but as the description says, maps are useless in the hyperbolic plane. So there are compasses. The first time I encountered a compass which points to some specific goal (not just North) was the Secret of Monkey Island, but this also appears in Spelunky and the Disney movie. The Orb was supposed to be described "affect all Orbs which do not affect anything", to keep with the self-referential theme of Escher (see the Eternal Golden Braid), but finally I had to write a more precise description.

The Red Rock Valley started with the snake. I wanted a monster who could walk only on hexagons, and since this provided another way to have a slow monster (but still faster than one moving once per two turns), a snake variant was interesting. I have tried this, and managed to kill the hex snake with its own tail -- but just before killing it, I noticed that the snake has created a very nice structure, which could be used for something. Meanwhile in the forums, tricosahedron had a idea of a land where cells had several elevations, and I have combined the two -- creating steps and structures out of the dead enemies became the theme of the land. The theme, and the Valley part of the name, is based on the Monument Valley, but I preferred a more generic name -- although there is actually the Red Rock Canyon in Nevada, and I have been there.

While the Caribbean was already implemented, but not yet released, wonderfullizardofoz contacted me, and told me about his ideas of the Ocean, with beaches ravaged with tides, whirlpools, and pirates who could use boats. Interestingly, his idea for Pirates and Boats were just like what I have already implemented for Caribbean :) Anyway, Ocean and Whirlpool were great ideas too, so I have implemented them. The treasure of the Ocean is named Amber, because that's what you can find on the beaches in the Baltic region. And Pearl is a typical sea treasure, so it was used for the Whirlpool.

In 2012 I have been discussing hyperbolic geometry in HyperRogue with Piotr Migdał. I did not know Piotr in person then, although we did have some common friends -- for some time, I wanted to meet him and own up to talking to him anonymously, and this eventually happened, with the help of tehora. It turned out that Piotr did not know about how HyperRogue had grown in the meantime. After learning the news, Piotr has sent me some ideas for new lands, including one which I found very interesting: one based on the popular Minesweeper game. A Minesweeper game without any enemies would be quite bland though -- and the best enemies would be ones that could ignore mines, but interact with them somehow, and that's how the Bomberbirds were born (or hatched). And what could the Bomberbirds protect? Obviously, the Bomberbird eggs! Additionally, this has solved a potential problem with this land -- one could go back to the old part of the map, which was generated when the player did not yet collect many treasures and thus contained not too many mines -- and since the treasure was Eggs, they would hatch if you tried to do this. The Angry Birds were probably a slight inspiration too, with eggs as a treasure, and bomb birds -- although not a very strong one, since the Angry Birds have no wings, and they look different in general.

One time, we were discussing with tehora where we will meet. Both of us insisted on their own suggestions of the meeting place and none of us wanted to change their mind. Some time later, tehora said said that she did not like my suggestion, but she felt that she would likely change her opinion in a hour. Knowing that she liked Prince of Persia (the original from 1989), I have said something about conjuring a hourglass, and explained her that, contrary to the propaganda spread by the evil rebel, the Grand Vizier Jaffar in Prince of Persia was actually a good guy, and the hourglass was just a tool to help the Princess decide to marry the man she loved in reasonable time. Then, she said that she wanted a golden palace... Not a real golden palace, but a land in HyperRogue based on Prince of Persia, and this was a great idea, since Prince of Persia had so many features which could work greatly in the HyperRogue world: gates and pressure plates, and guards which could be killed with your sword or pushed into the collapsing floors. The unique enemies of Prince of Persia -- Skeleton, Fat Guard, and Vizier -- also could be turned into interesting enemies. The pattern is based on a pattern made out of circles of radius 3, invented by Fulgur14. The treasure is the Hypersian rug, which is a pun based of Persian rug (I have again used Colossal Cave Adventure as a source of ideas for names of treasures... and there were golden eggs there too, by the way). Since jumping is also a big part of Prince of Persia, Orb of the Frog has been added.

I also wanted a land based on the Living Caves algorithm, but with water instead of caves, so you could also take a boat and go through water. The result looked more convincing as a Fjord than the Emerald Mines, so I have called it the Living Fjord, and created Vikings as enemies who could use boats -- a better match for the Fjord than the Pirates -- also a new species of Troll who could be used to create bridges (since Trolls come from the Norse mythology and are related to bridges, they were quite a good match), and Water Elementals who could connect bodies of water. The treasure has been chosen to be Garnet, as apparently that's what the Vikings prized.

Initially, the Princess was simply mentioned in the description of Palace as another reference to Prince of Persia, but in 7.3 I have decided to add a quest to actually save the Princess. I like how, when attempting to get to the Key in Hell, lakes of sulphur can be large, but they can be circumvented with probability 1 -- but, since this was not actually the easiest way to solve the Yendor Quest, I wanted another quest which exhibited this even better. Testing revealed that I had to make the quest part of the Palace a bit easier with respect to gates (it was still solvable with normal distribution, but just too hard -- so I made this a separate Princess Challenge), and that a Mouse which could open or close plates would be too annoying -- a bit against the original Prince of Persia, where stepping on a pressure plate to open a gate was the only thing that the mouse did. To avoid the (quite sick) "damsel in distress" trope, the Princess/Prince has been made quite a powerful ally. The description of the Orb of Love comes from sayings about love: one is "love heals all wounds", and another is "love transcends time and space", which is inspired by the movie Interstellar.

As already mentioned above, there were some discussions on the Steam forums about how the third dimension could work in the hyperbolic world; in particular, while three levels of rock in the Red Rock Valley is still quite fine, higher altitudes should have hyperbolic effects of its own, since vertical lines supposedly should also diverge. I have decided to explore this further -- with a platformer-style level, with gravity. The first time I have seen a platformer level in a normally top-down game was Legend of Zelda: Link's Awakening; there were also several small platformer 7DRLs (like Earl Spork by Eden Howard, Fuel by Ido Yehieli, and Bump! by Aaron Steed). I have initially called this land the Edge (like, the world ends, but gravity pulls you back), but I was not convinced -- I have shown the draft to Fulgur14, and he suggested the Tower and the Gravity Well, which I also liked, but I felt that Gravity Well was too abstract, and Tower does not explain why does it stand in place. Finally, I have called it Ivory Tower -- a traditional place where scientists (and wizards, in fantasy settings) perform their experiments disconnected from the world, and I felt that the description explains the changed gravity quite well. Gargoyle is a flying fantasy creature, which is made of stone and likes high buildings (based on the architectural element of the same name), so they were a natural idea for the monster there.

The trapdoors in the Palace made me really want to create a land similar to the Land of Eternal Motion, but with only 50% floors unstable. Initially, floors were supposed to be random, but then zelda0x181e posted a very nice pattern in the "Suggestions for the new lands" thread, and I have decided to use that instead. I have decided the monsters to be just the basic type, to refer to the Land of Eternal Motion once more -- and I think the land obtained is very nice, as you have to really use the land to your advantage to success there. Unfortunately, I had no good idea for the theme, and finally I have decided for the "Zebra" theme, with everything in black and white stripes (amusingly, "Zebra" was close to "Zelda", which was the inital name of the land, based on the nick of the designer of the pattern). Onyx is a mineral with a similar structure. I still had no idea for the Orb -- I have added Orb of Discord first (which was initially implemented for the Living Fjord before deciding that Orb of the Fish will be a better match, but was still unused), but then decided that Orb of the Frog was a better match for the land where jumping is very useful, and the Orb of Discord is great for the Palace too, so I have switched the native orbs of Palace and Zebra -- still keeping lots of Orbs of the Frog in the Palace.

After having two Elementals in the game -- the Earth Elemental from the Dead Caves, and the Water Elemental from the Living Fjord -- I thought that there should be some relation between them, like they should fight each other, or appear in the common land based on the classical four elements. When I first saw Fulgur14's fifty cell pattern painted with four colors, I thought that it would be good for such a land -- but I was still unconvinced, as Earth and Water elementals make more sense in infinite areas. Then Fulgur14 told me about his idea of using crossing Great Walls as a way to separate the four elements, and I found this very interesting, so I used this. I have been testing the crossing Great Walls in the Crossroads, and I liked the effect too, and that's how Crossroads III were created. The four Elements are not symmetrical -- I think it is more interesting that way.

And that's all in Versions 7.x! The next part will describe the lands and features from versions 8.x. Since this major version is not yet complete, it will be probably some time before part IV is posted :)

Tuesday 29 March 2016

Sources of HyperRogue: part II

This is the second post in the series, about the lands from versions 5.x-6.x.

While HyperRogue was not yet on Steam, Maciej Chojecki has sent me a bunch of ideas for new lands. One of the ideas was about a forest -- with forest ghosts which can walk on trees, and "timbermans" who can destroy trees and drop "axe orbs" on death, which could allow you to destroy trees too. I liked the idea of a maze of trees, but I was somewhat afraid of static mazes then (you could just run into a dead end and slay any followers easily), so I thought that there should be some anti-camping mechanism -- and what anti-camping mechanism fits the theme of a maze of trees? Bushfires sounded great, especially if you could cut the trees to make the fire spread slower! I have tried several approaches, but finally it worked as I wanted (two types of trees were required so that escaping from the fire, and stopping it by removing trees, was balanced well). Also, in the meantime I have played Hoplite, which is another small tactical roguelike. I loved some of the great ideas here, such as the stabbing mechanics -- possibly HyperRogue would develop in a different way if I had played Hoplite before... In Hoplite your character has a choice of learning one of possible skills, allowing the player to develop their character in many different ways. I miss this in HyperRogue somewhat, but on the other hand, I find the extremely simple rules of HyperRogue nice too -- and new lands would be harder to balance if multiple builds were possible. Hoplite is newer than the early versions of HyperRogue, so maybe it took some inspiration? I don't know. :) Anyway, I have copied the stabbing mechanics, and created HyperRogue's Hedgehog Warriors. In the Slavic mythology, ferns blossomed only on the summer solstice, and the Fern Flowers brought wealth to whoever found them. Seemed like a great treasure for the forest land. Interestingly, after finishing the Dry Forest, I read Maciej Chojecki's e-mail again and found out that he had the same idea for the name of the treasure.

Cocytus, the hellish version of the Icy Lands where heat creates immovable terrain instead of destroying it, was partially created before LoEM. The idea for the mechanics is somewhat inspired by Stanisław Lem's Three Electroknights, a short story where a knight steals the precious gems from an extremely cold planet, until his heat melts the ground below him. The problem with heat-based lands is that it is somewhat hard to plan your next moves here, as it is hard to tell whether a cell will melt in the given turn or not. Thus, I have decided to make it an unfinished land, only accessible to cheaters (or by getting 2000 $$$ -- which was actually possible in some versions, by using exploits). As for the name, Cocytus was one of the four rivers in Hades in the Greek mythology, a frozen lake in the ninth circle of Hell in Dante's Divine Commedy, and the ice-themed part of Hell in Dungeon Crawl -- I guess Dante is the closest to HyperRogue here. After adding the Dry Forest, I have decided to finish Cocytus too -- I have added the missing graphics, and also added the Crystal Sages. I wonder how people interpret their weird gestures? I think nobody has commented about that. Anyway, read Three Electroknights for an explanation -- the gestures come from there.

Thus, 5.x included two new lands. Version 6.0 started with five new lands...

I have already mentioned the forest idea by Maciej Chojecki. While I did not want a static maze because I was afraid of camping, his ideas actually solved the problem -- the "timbermans", and also somewhat the monsters moving through walls only, would prevent you from just waiting in a dead end. Thus I have decided to create a new land based on the mechanics, just changed the theme to a cave -- and thus the Dead Cave was created, reusing Seeps for the Forest Ghosts, and with Earth Elementals instead of timbermans, still dropping orbs providing means to go through the walls. HyperRogue already contained Orbs of Digging, which worked only in the Living Cave -- I have made them work in both lands and also in some other lands, and renamed them to Orbs of Earth. Also renamed Orb of Lightning to Orb of Storms. (Speaking of orbs, the name Orb of the Flash from the Icy Lands is based on a spell from Diablo.)

Some players on Steam wondered how a war game would work in the hyperbolic plane, and that's how the Hive was born -- and they wanted ants, so the Hyperbugs who fight there are ant-like creatures. Royal Jelly is the food of baby bee queens, and it appears as a quite valuable item in many roguelikes (ADOM, NetHack, older versions of DCSS, Spelunky HD). Again, I have tried several attempts -- in some of them Hyperbugs were invincible, in some you only received Royal Jelly by killing the Hyperbug queens, and in some there were actually three sublands, for the different Hyperbug races -- before finally settling for circles of radius 9. Note that this was before horocycles were added to the game, and even circles of radius 9 were somewhat a challenge for me at the moment... they were (and they still are) generated completely when they were created -- I think that the reason for the sparsity of Hive is that I did not want walking through Hive to use too much memory (even though it probably actually uses more memory as it is, since you have to walk longer before finding a nest).

I don't remember how I got an idea of a more complicated repeating pattern... possibly it came from a discussion with Fulgur14. I think I wanted a dense regular pattern of ultraparalell lines, to make a better use of the hyperbolic geometry. I have called it the Vineyard, since that's what dense paralell lines remind me of. (Also see some regular graveyards from the real life.) Vine Beasts appear in some addons for Battle for Wesnoth.

Satisfied with the Hedgehog Warriors, I have created some more monsters requiring special means of killing -- ones which were killed when you approached them (again a bit like in Hoplite), and ones which were killed when you moved away from them (somewhat inspired by the game Ultima, which is a chess-like game where pieces differ mostly by the way they attack, rather than their movement capabilities -- I have never actually played it, but I find the idea interesting). Also, it turned out that I could create several interesting repetitive patterns by changing the vineyard one a bit. I wanted a sea land for a long time, so I wanted to combine all these ideas into one -- a "fjord" with a regular pattern and filled with Hedgehog Warriors, Pikemen, and Flail Guards. However, this turned out extremely unconvincing, so I have dropped the fjord theme, and it became the Emerald Mines instead -- a maze of small twisty passages, all alike. (By the way, that quote about small twisty passages is from the classic adventure game, Colossal Cave Adventure -- not used in HyperRogue, but Hydra Slayer quotes another line from CCA.)

I was somewhat unhappy with the relatively low usefulness of the early Orbs, so I have created the Land of Power, where the Orbs were essential. Initially it was supposed to have fires arranged in a way similar to the ice walls in the Icy Lands, but finally, I have decided to use another rearrangement of the Vineyard pattern. The enemies were called Witches so that we have more female enemies, to complement the choice of playing a female character, which was also introduced somewhere around that time. By the way, a bit of history about this choice: players have been asking to translate HyperRogue to their languages. At first, I did not want to add translations to HyperRogue -- I did not believe in translations too much, since programs are usually translated very badly to Polish, where nouns can be in several cases based on their role in their sentence, and verbs and adjectives change depending on the genus of the noun. Most translation engines cannot handle that -- instead, they cheat by using forms which are always correct, but very ugly and unnatural. But then, I thought, let's show them how to create a beautiful Polish translation -- so I have created an engine which created nice Polish sentences, and even cared about the gender of the player character correctly.

That was HyperRogue 6.0. Then, tricosahedron has asked on the Steam forums about large and infinite circles -- he believed that the placement of Great Walls in the HyperRogue world was static, and thus there would be fixed large circles made of a specific land, and wanted to know how to find a center of such a circle. Actually, great walls are placed randomly (not based on any circles), so this question does not make much sense -- but still, his question seemed to be an interesting challenge, and that's how Camelot was born in HyperRogue 6.2. Camelot, the Knights of the Round Table, and the Holy Grail obviously come from the English legends.

Camelot required HyperRogue to be able to create made of billions of cells, which could not fit in the computer's memory. Changing these routines to also enable infinite structures -- that is, horocycles -- was relatively easy. It was Fulgur14 who wanted horocycles to appear in the game -- and the first land featuring them was the Temple of Cthulhu, greatly improving the previously quite boring R'Lyeh. I wanted the player to have to go deeply into the infinite sequence of horocycles to obtain a big amount treasures. There are many famous fictional books of magic in the Cthulhu mythos, such as the Necronomicon -- to force the player to go deep into the horocycle, I have decided that these books would be the treasure, with more valuable ones deeper in the temple, but no point to collect two copies of the same Grimoire. With the ultraparalell lines of the Vineyard, medium circles of the Hive, large circles of Camelot, and infinitely nested horocycles of Cthulhu, the hyperbolic theme of HyperRogue became much stronger -- thanks to Fulgur14 for discussing the hyperbolic geometry :)

To be continued, with the lands from versions 7.x...

Thursday 24 March 2016

Hydra Slayer released on Steam!

Hydra Slayer has been just released on Steam!

If you don't know what Hydra Slayer is: is a roguelike with a unique combat system based on the properties of numbers (inspired by some old mathematical puzzles). At first this is simple addition and subtraction, but then divisibility and more complicated properties of numbers come into play. As a general design rule, it is rarely clear which weapon is better: the more potential the weapon has, the harder it is to use (for example, a blade that can cut 12 heads at once is useless against hydras which have less than 12 heads). You will need to combine your weapons into sets which can kill hydras as effectively as possible: hydra attacks cost you health, and it does not regenerate. You can play it as a short 12-level coffebreak roguelike, or continue to the full game, filled with many different special types of multi-headed beings, lots of special artifact weapons, levels with strange topologies, and so on. Hydra Slayer's system is very clear (no more wondering whether +3 Evasion or +1 Dexterity is better, because you don't know the formulae used by the game), but hard to master. Many of the items in Hydra Slayer are also unique -- they would not make sense outside of this combat system, like the Powder of Growth, which makes a hydra grow extra heads -- which is very useful, since a hydra with less heads is not necessarily easier to kill. See the detailed list of features.

The new version (17.0 -- of course, 16.3 is still available for free) has the following features:

  • Typical Steam features, such as online achievements and leaderboards, Steam trading cards, cloud-based saves, automatic updates, and community.
  • Updated interface. Some new animations (watch those heads fly!) and graphics.
  • Slightly updated performance.
  • A random challenge, which is 10 levels long, and much more random than a usual run of Hydra Slayer. Also, a daily challenge, where everyone plays the same random challenge, and can compare their scores.
  • New music, by Brett Cornwall (work in progress).
  • Some minor new gameplay features: traps to lead hydras on, Orbs which provide a powder/potion effect many times at the cost of a weapon slot, and new map generators.
  • Source code (except the Steam features) is included.


You can buy Hydra Slayer on Steam or itch.io. Have fun playing!

Saturday 19 March 2016

Sources of HyperRogue: part I

This is the first post in the series which attempts to list all the cultural references and sources of ideas in HyperRogue. I always want to read such things, so I write one myself too :) (especially for historical fiction, which I often find somewhat annoying because I don't know what is history and what is fiction)

Starting from the basics: HyperRogue is a roguelike set in a hyperbolic world. I wanted to create a hyperbolic game since I have learned about it, like 20 years ago. First it was supposed to be some kind of a shooter, then I got involved with roguelikes, but I was unable to find a grid which could work well (each grid works only with one specific size of tiles, and all of them appeared too large for a roguelike). Then, I have found the "hyperbolic football" pattern, and that just was what I needed!

HyperRogue started as a weird mathematical experiment, I have implemented the hyperbolic grid, some wall/treasure/monster generation, and the simplest combat system. I had some rough ideas for a quest (coming to think of it, maybe a good idea for a new land...), but this simple thing already turned out to be surprisingly good when moved to hyperbolic geometry! But one thing I did not like about the combat system: the player could just camp in a place with just one passable adjacent cell, and destroy all the enemies easily. So, inspired by the theme of Frozen Depths somewhat, I have introduced the heat mechanics, and yet another enemy which tracked its prey by heat. That was the first version of Hyperbolic Rogue, and also that's why the game always starts in the Icy Lands.

For the 7DRL challenge (version 2.0), I have decided to extend the game, and create more lands...

A desert with huge worms is referred to in JRR Tolkien's Hobbit, but Thumpers, Spice and Sandworms are a reference to Frank Herbert's Dune. Mechanically, Sandworms come from the popular "snake" games (most famous one is the Nokia, but the concept is older), and more directly, from DROD. Also, they work as an anti-camping mechanism -- every land attempts to have one. In the earlier versions, sandworms were not allowed to leave the Desert.

I also wanted some cavernous region, and I got the idea that a cellular automaton might generate nice caves. Trolls and Goblins are typical fantasy monsters living in the caves, and Seeps come from DROD again. Translators always seem to ask what a Seep is...

The roguelike Ragnarok (aka Valhalla) has a monster called the ivy creeper. All other monsters in Ragnarok took just one cell, but the ivy creeper could grow. Sadly, it was extremely rare, and thus not very prominent. Shame for such an interesting idea -- but the Jungle in HyperRogue brings Ivies back their deserved glory. In the early versions, Ivies were rarer (you would usually see just one), and thus it did not look much like a Jungle. This was changed in the later versions (4.x?), also making the Jungle the hardest early land -- although some of the hardness was apparently caused by creating Eagles more frequently than intended due to a bug on MS Windows. Later (8.x?), this was somewhat toned down again, by not generating double Ivies (two adjacent roots -- much harder than the normal ones) if the player has not yet collected many Rubies.

Ragnarok also had a level called the Crossroads, which allowed travelling between the different places quickly. Hyperbolic geometry makes this work better :)

Slimes are typical RPG monsters, and the elixir of life is the typical objective of alchemy. So, nothing really special about the Alchemist Lab, but note that HyperRogue was still an ASCII only game at that point (there were only graphical effects for Orbs, and Sandworm/Ivy segments were connected with lines). If I recall correctly, the reason why we have a rule that cells containing Elixirs of Life (or other items) are considered to belong to both colors is because it was impossible to show the color of slime beneath the item in the typical roguelike ASCII display. HyperRogue still has an ASCII option, but I no longer care much about tailoring the rules so that the ASCII display is 100% playable.

DROD also has Mimics, which try to repeat your moves, leading to quite interesting puzzles. I wanted to see how this mechanics works in the hyperbolic grid, and that's how the Mirror Land was born.

This was the last land in the 7DRL version of HyperRogue. Later came Version 3.0, which introduced graphics, and some new lands. The graphics are inspired by M.C. Escher, most notably the Circle Limit series, which are based on hyperbolic geometry.

Graveyard was the first land with a regular pattern, and Ghosts move through walls, as everyone knows. Zombies come from the Haitian folklore, and are everywhere in the fantasy works nowadays. It always felt strange for me in e.g. ADOM that a necromancer can turn a dead body either into a ghost or a zombie -- shouldn't creating a ghost require just the soul, leaving the soulless body to create a zombie? So, in HyperRogue, Necromancers are able to create both a ghost and a zombie from a single grave. Graveyard also features an invincible Shadow who follows you everywhere, somewhat inspired by Darren Grey's 2DRL, Run from the Shadow. However, the Shadow turned out to be not very interesting, just creepy. Some time later (around 5.0), Ghosts have started to appear whenever the player stopped exploring the world -- this was originally intended as a way to force the game to actually end when the player is stuck in the Living Cave, but it also brings some new interesting tactical insights of its own.

People playing the early versions of HyperRogue said that the non-Euclidean geometry reminds them of works of H. P. Lovecraft. I have not yet actually read anything by Lovecraft at that time (other than playing a RPG session in the Call of Cthulhu system long ago, which somehow turned into a math joke and had nothing to do with the actual Cthulhu mythos...), so I have read the Call of Cthulhu: swallowed up by an angle of masonry which shouldn’t have been there; an angle which was acute, but behaved as if it were obtuse. (Well, in HyperRogue and hyperbolic geometry in general, an acute angle is always acute, no matter how you look at it.... I guess Lovecraft's geometry was even stranger, or maybe he did not know how hyperbolic geometry works). Anyway, I have added R'Lyeh, with Cultists, tentacles and statues, typical things from the Cthulhu mythos (I am not an expert in these mythos --- the Call of Cthulhu remains the only book by Lovecraft I have read --- but it is hard to not know about the tentacles and cultists of Cthulhu, or the Necronomicon). IMHO R'Lyeh was the most boring land for a long time, but this changed when the Temples of Cthulhu were introduced.

Many RPGs use a rather weird system: on one hand, getting experience or powerful items makes you stronger, but on the other hand, it also brings stronger enemies. In the end, getting stronger does not actually make you more able to fight the enemies you meet, and in some cases, it is actually much better to avoid getting powerful (for example, in IVAN items which increase your hitpoints are believed to be actually counterproductive, since they attract powerful enemies, and the rest of your equipment is not sufficient for handling them). Hell's demon fighting mechanics parody that. Orb of Yendor obviously comes from the Amulet of Yendor, which is what you have to collect in many roguelikes (such as Rogue itself, NetHack, and Brogue). And the Demon Daisy was a nasty herb in ADOM, I liked the name, so it became the treasure in Hell. The pavement in Hell is somewhat inspired with M. C. Escher's Circle Limit IV (although, according to the Polish proverb, the Hell is paved with good intentions).

Disappearing floors appear in many games, DROD is again the most direct reference here. The Land of Eternal Motion was the last land added to pre-Steam HyperRogue. Feathers were chosen for the treasure, since something which would not disrupt the land was required. Phoenix feather is a powerful material in IVAN, possibly the best thing to have your legs made of.

Versions 4.x did not introduce any new lands, but they introduced music by Shawn Parrotte (4.0) and an improved graphics engine (4.2 -- it turned out that OpenGL works with the Minkowski hyperboloid model very well). There were two cases when I have asked Shawn for a somewhat specific type of music -- since Escher's art is an inspiration for the graphics in HyperRogue, I wanted music based on similar ideas of paradox and repetition, inspired by Douglas Hofstadter's Gödel, Escher, Bach: the Eternal Golden Braid somewhat. One of them was a variant of the crab canon for the Mirror Land -- a canon that is the same forward and backward, very appropriate for this place. The other one was a variant of the Shepard tone, used for R'Lyeh -- a tone which seems to get lower and lower infinitely (very appropriate for the Temple of Cthulhu which came later). Both crab canons and Shepard tones can be understood as musical counterparts of Escher's art.

That's all the lands and important features that were there before HyperRogue got accepted for Steam. To be continued!

Tuesday 8 March 2016

HyperRogue 8.2

After a quite long wait, a new version of HyperRogue is ready! Compared to HyperRogue 8.1, 8.2 introduces two new lands with treasures, a new variant of Crossroads, and two new modes.

The Warped Coast is a new coastal land, based on a different grid, composed out of heptagons and triangles. The enemies here, the Ratlings, only move when you move. These two rules work together quite well, making this land quite different. The Warped Coast unlocks at 30 $$$.

The Rose Garden is full of dangerous beauty. The rosebushes have deadly thorns and irresistible scent, which is so beautiful that it forces most creatures to move towards them. On the other hand, the Rose Beauties are so beautiful that you cannot force yourself to attack them. There are ways to kill them, though... The Rose Garden unlocks at 60 $$$.

The Crossroads IV is a new layout of Crossroads, which has no walls. It unlocks at 200 $$$.

Version 8.2 also introduces the heptagonal mode, where the whole game is played on a grid made of heptagons only. As we already know from the Euclidean mode, if we replace the heptagons with hexagons, we get a flat Euclidean world -- but if we go the other way, and replace the hexagons with heptagons, we get an even more curved hyperbolic world, where less steps are required to witness the effects of hyperbolic geometry. All the lands work in this mode with only minor modifications -- for the lands based on hexagon/heptagons distinction, such as the Red Rock Valley, Clearing, or Graveyard, a pattern of "pseudoheptagons" is used, which works similar to heptagons in the normal HyperRogue grid.

In the chaos mode, lands change very often, and there are no walls between them. Some lands are incompatible with this -- this includes all the Crossroads variants (since they become quite redundant), and all lands based on large shapes, such as equidistants, large circles and horocycles (except Temple of Cthulhu and Ocean beach, which have their chaotic variants with a part of their features). Chaos mode is unlocked by reaching Crossroads IV, and there is an achievement for getting 300 $$$ there.

The Hypersian rug mode allows you to play HyperRogue on a 3D surface. This is an isometric embedding: equal distances in HyperRogue's world are represented by equal distances on the surface. To fit all the visible part of HyperRogue's world in such a way, the surface must be very twisted...

The Hypersian rug surface is similar to the one which is obtained from HyperRogue's paper model creator, or by hyperbolic crocheting. To me, it also strongly resembles lettuce... The photo also includes a sandworm, and some HyperRogue T-shirts. Thanks to tehora for the sandworm, crocheting, and ideas for the Rose Garden!

Have fun!

Note: to make the new features of 8.2 (triheptagonal grid and rose scent) work, there have been big architectural changes in movement and attacking. Everything seems to work correctly, but there might be some special cases -- if something could move or attack somewhere but it no longer can, it is possibly a bug. Please report here!

More small changes in 8.2:

  • new floor graphics for Euclidean/heptagonal mode
  • pure heptagonal mode fixes/balances: compass earlier, weakened closing plates, balanced the Princess Quest, sealands should no longer be generated on beaches
  • activating the Palace Quest in the Overview while cheating teleports you to Princess (instead of an empty land)
  • fixed the mirrors in shmup mode: shards taken outside of mirror land no longer count, knives breaking mirrors/mirages are mirrored now, mirrors/mirages created by mirrors worked incorrectly
  • birds now can fly over the Red Rock Valley
  • friendly creatures are now better at stabbing
  • in the map editor, hotkeys were replaced by searching for a given word
  • you can no longer push thumper on a boat
  • Hypersian Rug mode: Home/End keys
  • Crossroads in PTM didn't mirrors
  • slight color changes, to help the colorblind people
Changelogs for patches are first reported on the Steam forums.