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!


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.


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 :)