Go Back   Angband Forums > Angband > Vanilla

Thread Tools Display Modes
Old November 14, 2013, 15:41   #41
Join Date: Aug 2009
Posts: 670
LostTemplar is on a distinguished road
if the Borg can't routinely win V, there's something wrong
I like this too. It is tradition that winning an Angband is not an achivement, but fast winning is.
LostTemplar is offline   Reply With Quote
Old November 14, 2013, 16:11   #42
Nomad's Avatar
Join Date: Sep 2010
Location: England
Posts: 958
Nomad is on a distinguished road
Originally Posted by LostTemplar View Post
Maybe not so many new players theese days.

I have discovered Angband about 4 years ago, before that I mostly played Adom and Crawl, and won many (countless) times, and I never played either after the first time I played Angband. The main reason for this choice was freedom I have in Angband. More specifically the fact, that it is never too late to win. No matter what you do, if your character is alive you can still win with it (and it does not become harder to win, compared to a new character).

Second reason is that Adom in particular becomes super easy after a few wins, Andband does not, at least not so fast.
I'm not so new now (I came in around 3.1.2v2) but I came here after beating Nethack, for fairly similar reasons; not so much that it was easy to win repeatedly, but that it's dull to replay after the first win thanks to the fixed-layout special levels and predictable endgame kit. Angband has a lot of replayability due to A, randomized level layouts with no fixed branches to repeat and B, the large list of resistances/protections/immunities and the option to play with randarts, which mean many different possible equipment combinations instead of a fixed list of optimum gear.
Nomad is offline   Reply With Quote
Old November 14, 2013, 17:42   #43
Join Date: May 2012
Location: Adelaide, Australia
Posts: 2,602
wobbly will become famous soon enough
Originally Posted by Nick View Post
  1. Winning should be unusual.
  2. Winning should be guaranteed with ideal play.
I agree with others who have said this is a contradiction. I may be in a minority but I prefer the game to be challenging (most of the way through, not just overall) then to guarantee a win.

The trouble I find with guaranteeing a win is that it's very hard to do without guaranteed escape. Guaranteed escapes mean no feeling of danger or challenge if you play carefully.

I think if you ask an experienced player what their major cause of dying is, then the answer will be carelessness. Carelessness borne of a tedium of 99% of the time being completely safe, then quickly bashing buttons while not paying much attention. It's how I die. It's why I play the start of V over & over then quit halfway through because the current game has become boring.

Sorry if my post contains too much negativity but it is the major reason I rarely play V. I love so much about it. What frustrates me is challenge via tedium.

Edit: 2 examples of non-guaranteed escapes.

Sil: Few imperfect escapes (excange places, song of elbereth/lorien, sprinting etc.)
Tome 4: Escapes can be shut down (stuns, confusion etc.) but you can stack the deck with multiple escapes

Last edited by wobbly; November 14, 2013 at 17:54.
wobbly is offline   Reply With Quote
Old November 14, 2013, 18:18   #44
Join Date: Sep 2010
Location: Indianapolis IN, USA
Posts: 246
Starhawk is on a distinguished road
Chiming in... I agree with the poster above. I beat Angband three times and left it late last year, solely because of the tedium. With guaranteed escapes and endless stair-scumming, it's mostly an exercise in concentration. Every character can win, IF you are paying attention.

That said, there's nothing WRONG with that.

If you implement a timer of any sort, you're moving Angband to be a more direct competitor with other games like Sil (timer = mindepth), ADOM (timer = death by mutation), and Crawl (timer = only so many permalevels to grind).

Is that what you want? Can you be competitive with those games? i.e. if you make Angband like those other games, will Angband be interesting in comparison? What will differentiate it?
Starhawk is offline   Reply With Quote
Old November 14, 2013, 19:48   #45
Blue Baron
Join Date: Apr 2011
Posts: 103
Blue Baron is on a distinguished road
I don't know if this directly applies to the conversation, but a while back I wrote code to skip dungeon levels to help with testing.

It is from March 2012, so the diff cannot be directly applied, but it was:
commit 4088eba4f6f2cb961c707c607bb73c679d05e41c
Date:   Tue Mar 13 12:14:26 2012 -0400

    First pass at skipping dungeon levels.

diff --git a/src/cmd2.c b/src/cmd2.c
index e9c75a8..9f60bf9 100644
--- a/src/cmd2.c
+++ b/src/cmd2.c
@@ -62,7 +62,7 @@ void do_cmd_go_up(cmd_code code, cmd_arg args[])
        p_ptr->create_down_stair = TRUE;
        /* Change level */
-       dungeon_change_level(p_ptr->depth - 1);
+       dungeon_change_level(p_ptr->depth - level_change_step);
@@ -89,7 +89,11 @@ void do_cmd_go_down(cmd_code code, cmd_arg args[])
        p_ptr->create_down_stair = FALSE;
        /* Change level */
-       dungeon_change_level(p_ptr->depth + 1);
+       if (p_ptr->depth == 0) {
+               dungeon_change_level(1);
+       } else {
+               dungeon_change_level(p_ptr->depth + level_change_step);
+       }
diff --git a/src/dungeon.c b/src/dungeon.c
index dcb9271..5ef5322 100644
--- a/src/dungeon.c
+++ b/src/dungeon.c
@@ -39,6 +39,26 @@
 void dungeon_change_level(int dlev)
+       int i;
+       /* check for special levels */
+       if (dlev > p_ptr->depth) {
+               for (i = p_ptr->depth; i < dlev; i++) {
+                       if (is_quest(i)) break;
+                       if (i >= MAXDEPTH - 1) break;
+               }
+       } else {
+               for (i = p_ptr->depth-1; i > dlev; i--) {
+                       if (is_quest(i)) break;
+                       if (i <= 0) break;
+               }
+       }
+       dlev = i;
+       /* make sure dlev is in the valid range */
+       if (dlev < 0) dlev = 0;
+       if (dlev > MAXDEPTH - 1) dlev = MAXDEPTH - 1;
        /* New depth */
        p_ptr->depth = dlev;
diff --git a/src/effects.c b/src/effects.c
index 7a4d163..667e738 100644
--- a/src/effects.c
+++ b/src/effects.c
@@ -1930,7 +1930,7 @@ bool effect_do(effect_type effect, bool *ident, bool aware
                        wieldeds_notice_flag(p_ptr, OF_FEATHER);
-                       dungeon_change_level(p_ptr->depth + 1);
+                       dungeon_change_level(p_ptr->depth + level_change_step);
                        return TRUE;
diff --git a/src/externs.h b/src/externs.h
index 65229b0..963b99e 100644
--- a/src/externs.h
+++ b/src/externs.h
@@ -54,6 +54,7 @@ extern u32b seed_flavor;
 extern u32b seed_town;
 extern s16b num_repro;
 extern s32b turn;
+extern byte level_change_step;
 extern int use_graphics;
 extern bool use_graphics_nice;
 extern s16b signal_count;
@@ -194,7 +195,7 @@ extern int int_to_roman(int n, char *roman, size_t bufsize);
 extern void flush(void);
 extern void flush_fail(void);
 extern struct keypress inkey(void);
-extern ui_event inkey_m(void);
+extern ui_event inkey_m(void);
 extern ui_event inkey_ex(void);
 extern void anykey(void);
 extern void bell(const char *reason);
diff --git a/src/variable.c b/src/variable.c
index c7af4ac..795b0ca 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -66,7 +66,10 @@ u32b seed_town;                      /* Hack -- consistent to
 s16b num_repro;                        /* Current reproducer count */
-s32b turn;                             /* Current game turn */
+s32b turn;                     /* Current game turn */
+byte level_change_step = 3;    /* how many levels to skip when going up or down
+/* should be moved to player_other struct */
 int use_graphics;              /* The "graphics" mode is enabled */
 bool use_graphics_nice;                /* The 'nice' "graphics" mode is enabled
In 3.4.1 I was using something different, with more checks. The part of do_cmd_go_down() was:
  /* change level */
  if (p_ptr->depth == 0) {
  } else
  if (level_change_step > 1) {
    int i, target_depth = p_ptr->depth;

    /* Calculate target_depth */
    for (i = level_change_step; i > 0; i--) {
      if (target_depth >= MAX_DEPTH-1) break;
      if (is_quest(++target_depth)) break;
  } else {
    dungeon_change_level(p_ptr->depth + 1);
with similar sections to do_cmd_go_up, the deep_decent section, and the trap door section. (The above was typed in, not copy/pasted, so there may be typos.)

For anti-grinding, something I considered in the past, and that I still want to try, is to just cache the last 4 dungeon levels visited, for short term persistent levels.

Last edited by Blue Baron; November 14, 2013 at 19:50. Reason: removed email
Blue Baron is offline   Reply With Quote
Old November 14, 2013, 19:51   #46
Angband Devteam member
Join Date: May 2007
Location: London, UK
Posts: 5,060
Magnate is on a distinguished road
Send a message via MSN to Magnate Send a message via Yahoo to Magnate
Originally Posted by Antoine View Post
I suppose my view is that a slow grind should be the 'standard' way of playing V, and that forced diving should be an off-by-default option (or set of options). However, I think that relatively new players should be able to dive deep if they want to, and (with skill and luck) diving strategies should be rewarding.

I don't think this is very far from the status quo of V.

Some corollaries:
  • if the Borg can't routinely win V, there's something wrong
  • if players aren't posting spectacular speedruns, there's something wrong
  • it should be reasonably easy to find some way of descending - stairs, shafts or e.g. Deep Descent scrolls
  • the stealth minigame should be interesting

Who are you and what have you done with Antoine?

(I never agree with him, yet this is all gold.)
"3.4 is much better than 3.1, 3.2 or 3.3. It still is easier than 3.0.9, but it is more convenient to play without being ridiculously easy, so it is my new favorite of the versions." - Timo Pietila
Magnate is offline   Reply With Quote
Old November 14, 2013, 20:23   #47
Ironband/Quickband Maintainer
Join Date: Nov 2007
Posts: 1,009
Antoine is on a distinguished road
Dunno what you're on about Magnate, you normally agree with me, I could find any number of examples

Ironband -
Antoine is offline   Reply With Quote
Old November 14, 2013, 20:37   #48
debo's Avatar
Join Date: Oct 2011
Location: Toronto, Canada
Posts: 2,400
debo is on a distinguished road
Glaurung, Father of the Dragons says, 'You cannot avoid the ballyhack.'
debo is offline   Reply With Quote
Old November 14, 2013, 20:41   #49
Vanilla maintainer
Nick's Avatar
Join Date: Apr 2007
Location: Canberra, Australia
Age: 57
Posts: 9,464
Donated: $60
Nick will become famous soon enoughNick will become famous soon enough
Thanks everyone for the excellent posts in the last 12 hours. It's helping a lot.
One for the Dark Lord on his dark throne
In the Land of Mordor where the Shadows lie.
Nick is offline   Reply With Quote
Old November 15, 2013, 02:01   #50
Ironband/Quickband Maintainer
Join Date: Nov 2007
Posts: 1,009
Antoine is on a distinguished road
More thoughts on facilitating diving without preventing grinding... Reduce dungeon to 50 levels corresponding to existing 2, 4, 6... 100. When a character descends to a new maxdepth that exceeds their clvl, give them a random stat boost.

Also, adopt semi-connected stairs to prevent stairscumming.

Ironband -
Antoine is offline   Reply With Quote

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT +1. The time now is 03:50.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.