Difference between revisions of "Neohack"

From RogueBasin
Jump to navigation Jump to search
m
m
Line 1: Line 1:
{{game-alpha| name = Neohack
{{game-alpha| name = Neohack
|developer = Ray Dillinger
|developer = Ray Dillinger
|influences = [[NetHack]], [[Crawl]],[[Moria]]
|influences = [[NetHack]], [[Unnethack], [[SLASH'EM]], [[Crawl]], [[Moria]]
|theme = fantasy
|theme = fantasy
|released = alpha in Jan 2012
|released = alpha in Jan 2012
Line 21: Line 21:
elsewhere.
elsewhere.


Neohack is my contribution to the "next generation" of roguelike
Neohack has what some will see as a distinctly "retro" style.
games, and has what some will see as a distinctly "retro" ethos.
Because I wanted to make a game that makes network play easy
It runs in a shell session using characters for graphics, for
to offer, its primary interface is a shell window. A tile
example. It will be unapologetically hard, and it will support
interface should be fairly easy to add because I've kept the
a large number of flexible keystroke commands that allow your  
UI separated from the rest of the game, but it won't be in
character to use things in many different ways and modify them  
the first version.
in at least a few different ways.  It is designed to appeal to  
 
people who think nethack has gotten too tame, predictable, and  
It is unapologetically hard, and it supports a large number of  
simple.
keystroke commands that allow your character to use things in  
many different ways and modify them in at least a few different  
ways, because I am deliberately invoking emergent complexity.
 
Despite deliberately invoking emergent complexity, I seek to
limit the advantages of reading spoiler files.  It is designed  
to appeal to people who think other roguelikes have gotten too  
tame, predictable, and simple.




Line 41: Line 48:
==Features==
==Features==


===UI===
The Neohack UI, as has already been mentioned, is distinctly retro
in that it's an ncurses shell interface.  That said, I want it to
be the game that's hard, not the interface.  I'm trying to build
the best console interface that I can, and I guess it's up to the
players to tell me whether it works. 


That said, I want it to be the game that's hard, not the interface.
I'm trying to build the best console interface that I can, and I
guess it's up to the players to tell me whether it works. 


One new feature is a scrolling help line that goes like a ticker  
====Discoverability====
across the bottom of the console window.  If you're ever stuck you  
One problem with interfaces that use a large number of keystroke
can just watch the scroll line until the command you need comes into  
commands is that the user has to somehow learn and remember them.
view.  
I'm trying to make discoverability easy by adding a help line.
The help line moves slowly, like a ticker across the bottom of  
the console window, whenever the game is waiting for input.  If  
you're ever stuck you can just watch the scroll line until the  
command you need comes into view - or hurry it along by using the
spacebar.  


Another is that the game works at any console window size above a
====Resizing====
certain minimum, and handles changes in console window size  
Shell games used to be limited to a particular size (usually 80x25
gracefully.
or something like that).  But modern UNIX shells can be run at any  
size within the boundaries of your display.  I figured there was
no good reason not to take advantage of that, so if you resize the
shell window, Neohack will resize its interface elements to take
advantage of the new size.


A third new feature is that since consoles handle Unicode characters
====Unicode====
now, I've decided I don't need to limit myself to ASCII.  
Modern UNIX shells handle Unicode characters now. So I've decided  
It's time for roguelike games to make the transition.  Accordingly,
Neohack uses Unicode characters in its interface, rather than making
assumptions about what code page people have loaded.  


A fourth new feature is that since modern monitors and shells allow  
====Double Cell Tiles====
huge console windows, I've decided to use two character cells to  
Since modern monitors and shells allow huge shell windows, and most
represent one map square.  This allows you to see one character for  
console fonts are just about twice as high as they are wide, I've  
the monster and a different character for its main wielded weapon,  
decided to use two character cells to represent one map tile.   
so you could have a reasonable chance to notice when a gnome is  
This allows you to see one character for the monster and a different  
carrying a wand of death instead of the usual shortsword.  
character for its main wielded weapon, so you could have a reasonable  
chance to notice when a gnome is carrying a wand of death instead of  
the usual shortsword.  


I'm planning to provide Autoexplore and similar game-automation  
====Interface Automation====
features to make the medium-large levels manageable, as well as  
I'm providing Autoexplore and other game-automation features to  
Autotarget, Autofire, and Autocast features to reduce most ranged  
make the medium-large levels manageable, as well as Autotarget,  
attacks to a single keystroke.
Autofire, and Autocast features to reduce most ranged attacks
to a single keystroke.


Items and item types can be named; individual items can be inscribed.   
====Naming====
Eventually Inscriptions should work with command macros, but that  
Items and item types can be named, as in Nethack; individual items  
won't happen until version 2.  
can be inscribed with messages.  Eventually Inscriptions should  
work with command macros as in Angband, but that won't happen until  
version 2.  


Persistent Levels.  Once a level is generated, when you come back to
Persistent Levels.  Once a level is generated, when you come back to

Revision as of 17:05, 27 September 2011

{{game-alpha| name = Neohack |developer = Ray Dillinger |influences = NetHack, [[Unnethack], SLASH'EM, Crawl, Moria |theme = fantasy |released = alpha in Jan 2012 |updated = 27 Sep 2011 |language = C |platforms = Linux |licensing = freeware |features = Persistent levels, Resizable, Scrolling Helpline ... |interface = ncurses, Unicode, Keyboard |length = 12-30 hours |site = http://dillingers.com/neohack/ }}

Overview

Neohack is implemented in C using a Linux development platform, because I like the old-fashioned hardcore-ness of C. I'm trying to keep the code portable enough that it will compile easily elsewhere.

Neohack has what some will see as a distinctly "retro" style. Because I wanted to make a game that makes network play easy to offer, its primary interface is a shell window. A tile interface should be fairly easy to add because I've kept the UI separated from the rest of the game, but it won't be in the first version.

It is unapologetically hard, and it supports a large number of keystroke commands that allow your character to use things in many different ways and modify them in at least a few different ways, because I am deliberately invoking emergent complexity.

Despite deliberately invoking emergent complexity, I seek to limit the advantages of reading spoiler files. It is designed to appeal to people who think other roguelikes have gotten too tame, predictable, and simple.


Status

Neohack is not in Alpha yet; The current version as of this writing (in September 2011) is not a full playable game. But I'm now aiming toward something complete and playable (On the scale of the original Hack) by the end of 2011.

Features

UI

The Neohack UI, as has already been mentioned, is distinctly retro in that it's an ncurses shell interface. That said, I want it to be the game that's hard, not the interface. I'm trying to build the best console interface that I can, and I guess it's up to the players to tell me whether it works.


Discoverability

One problem with interfaces that use a large number of keystroke commands is that the user has to somehow learn and remember them. I'm trying to make discoverability easy by adding a help line. The help line moves slowly, like a ticker across the bottom of the console window, whenever the game is waiting for input. If you're ever stuck you can just watch the scroll line until the command you need comes into view - or hurry it along by using the spacebar.

Resizing

Shell games used to be limited to a particular size (usually 80x25 or something like that). But modern UNIX shells can be run at any size within the boundaries of your display. I figured there was no good reason not to take advantage of that, so if you resize the shell window, Neohack will resize its interface elements to take advantage of the new size.

Unicode

Modern UNIX shells handle Unicode characters now. So I've decided It's time for roguelike games to make the transition. Accordingly, Neohack uses Unicode characters in its interface, rather than making assumptions about what code page people have loaded.

Double Cell Tiles

Since modern monitors and shells allow huge shell windows, and most console fonts are just about twice as high as they are wide, I've decided to use two character cells to represent one map tile. This allows you to see one character for the monster and a different character for its main wielded weapon, so you could have a reasonable chance to notice when a gnome is carrying a wand of death instead of the usual shortsword.

Interface Automation

I'm providing Autoexplore and other game-automation features to make the medium-large levels manageable, as well as Autotarget, Autofire, and Autocast features to reduce most ranged attacks to a single keystroke.

Naming

Items and item types can be named, as in Nethack; individual items can be inscribed with messages. Eventually Inscriptions should work with command macros as in Angband, but that won't happen until version 2.

Persistent Levels. Once a level is generated, when you come back to it it will always be the same. This means you can make "stashes" where you store equipment, etc, that you're not using. Of course that also means intelligent monsters will sometimes loot your stashes, so keep that in mind when you're making them.

Inventory size is limited by weight and volume, not by number of different item types.

Dungeon time in Neohack is continuous, not discrete. Moving diagonally for example takes a bit longer than moving orthogonally. Individual actions can have the amount of time they take modified by items like speed boots (which make walking faster but not attacking) or a swift sword (which makes attacking faster but not walking). There are few if any integer ratios of movement that you can count.

Rarities. Certain items and monster types in Neohack are designated as Rarities, with very small chances per game of appearing. That means that even when you've won, or played a hundred games and know perfectly everything you've ever encountered, you'll still occasionally encounter new things you haven't seen before.

In many roguelike games, there are "artifacts" - items of such great power that the game limits their appearance to preserve game balance. Rarities is a related idea, but not the same idea. Rarities may appear at any point in the game, and may or may not be particularly powerful. The appearance of rarities is limited to add flavor and uniqueness to each game, not to limit the potential of ultra-powerful items to break game balance.