Arena Portal


Although the central place for design discussion is ##crawl-dev on freenode, some may find it helpful to discuss requests and suggestions here first.

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Saturday, 19th March 2011, 02:23

Arena Portal

This idea is really in the early stage and isn't ready for the wiki, so I thought I'd ask for some feedback here.

Basically I'm thinking of a new portal, intended for the midgame (somewhere after Lair, before Zot - possibly accessed through the mid Vaults and later dungeon levels).

The concept would be a single arena to fight in (with the possibility of different maps of course). You enter through the archway at the start of a corridor. You then walk through the corridor, but just before you enter the larger arena space, you're given a prompt asking you if you're sure you want to enter the arena. If you do, as you go through a gate slams behind you and the corridor shuts. Monsters are summoned. The exits are all blocked.

I see two possibilities from here. There could be a lever / pressure plate that triggers the gates and allows you to leave. Or it could be tied to successfully killing or banishing the monsters. In any case all the loot drops are tied to successfully killing or banishing the monsters. It could go either like the DoomRL Hell's Arena where there are multiple levels (you are prompted after clearing the arena the first time if you wish to continue) or it could be a single clearing.

For flavour - randomized crowd cheers. Possibly gods cheering on, or just generic crowd cheering.

It would use primarily melee monsters rather than ranged or magic using, though some hybrids (monsters that buff themselves rather than cast offensive magic) would fit thematically. The monsters would be largely humanoid or natural, though I could also see an undead version or a chaotic version or whatever for some variety.

It would be more XP heavy than loot heavy, though it would come with a couple good items - either armour or weapons.

The entry portal would be fairly unique. I considered treasure trove / zig style, but I think this is more interesting. The entries are all small buildings / fortresses with a small number of thematic monsters. (Individual portal entries are tied directly to individual maps, so that for example the Orc arena would be entered via an orc portal entry vault. I'm not sure if that's possible, if not it's not that big a deal.) There is an empty stone archway with a description that's basically "this arch appears functional, but there seems to be a nearby power preventing it from providing access". That nearby power would be a randomly named unique (not a true unique, just a larger, more well equipped monster). To access the arch you would need to kill the monster. Banishing would result in no change to the arch, only the monster's death. There would be a timer on killing the monster, just as there is with the other portals. If you wait to long to kill the monster, nothing happens, the portal doesn't create.

...

Anyway, more ideas are welcome. Including negative ones of course. I'm pretty sure I have enough understanding of the code and the lua to do this myself (or rather, enough ability to muddle my way through it without truly understanding it :)), so I'm gonna start working on it either way at some point, but comments and suggestions are appreciated - and once there are enough I'll move it over to the wiki.
User avatar

Snake Sneak

Posts: 120

Joined: Monday, 21st February 2011, 02:43

Location: Tennessee

Post Saturday, 19th March 2011, 07:56

Re: Arena Portal

7hm wrote:It would use primarily melee monsters rather than ranged or magic using, though some hybrids (monsters that buff themselves rather than cast offensive magic) would fit thematically. The monsters would be largely humanoid or natural, though I could also see an undead version or a chaotic version or whatever for some variety.


Ooh yeah. Might be nifty to do god-themed arenas as well. Kiku what with all the dead stuff, Trog could throw BiAs at you, Makh demons, etc.

7hm wrote:It could go either like the DoomRL Hell's Arena where there are multiple levels or


Personally, and feel free to completely ignore this, since it'd probably sunder what balance the arenas might have, but hacking your way through a few waves of enemies, then getting to engage the arena's 'champion' in solo combat is a titillating prospect, and might allow for some interesting new uniques.

7hm wrote:For flavour - randomized crowd cheers. Possibly gods cheering on, or just generic crowd cheering.

Heck yes. Who needs armor when you've got moral support from Trog's booming voice? RIP AND TEAR! WAAAAAAAUGH!!!
The green ugly thing basks in the mutagenic energy from your post and changes!

Blades Runner

Posts: 555

Joined: Tuesday, 4th January 2011, 13:38

Post Sunday, 20th March 2011, 18:29

Re: Arena Portal

The OP is quite a lot reminding me of the Arena in ADOM. There, it is implemented in a following way:

You talk to the arena master, to teleport into the arena and fighting an almost random monster. After winning the fight, you teleport out and receive some gold. The monsters killed may leave loot behind, but to collect it, you have to teleport into the arena again (or go for another fight). The difficulty of the opponents increases with each fight.

After 19 wins, you get to fight a named arena champion. If you win this fight, you get quite a nifty artifact.

Even afterwards, you can still enter the arena fore more fights for more gold.

Oh, and by the way, if you teleport out of the arena before killing your opponent, the arena master won't be happy and he'll show it in a rather LOL manner the next time he talks to you (he's not hostile though).

I know this post is off-topic - it may just be that I'd like to see an Arena concept in Crawl and don't have any particular helpful ideas. The Arena of ADOM may provide some inspiration, though.

A more precise, and quite spoilery, information about the ADOM Arena can be found here.
... and forgive us our YASDs,
As we forgive our developers,
And lead us not into the Abyss,
But deliver us from Sigmund,
For Thine is the Roguelike,
the Orb and the Victory,
now and forever.
User avatar

Vestibule Violator

Posts: 1459

Joined: Sunday, 19th December 2010, 05:45

Location: New England

Post Sunday, 20th March 2011, 18:44

Re: Arena Portal

The thing I always disliked in arenas in most rpgs is the conflict was uninteresting. Either the opponent is weak, and you kill it, or it's stronger than you, so you lose. Free xp or game over. Nothing you can do about it- the only strategy is to be spoiled or abuse saves to not get killed when the arena ramps up too much.

In general, crawl does a very good job at keeping OOD monsters interesting. Something you can't kill doesn't equal death- it equals an interesting tactical situation where the goal is to survive, get away, or disable. But if you're suddenly locked in a room, where you have to fight to the death, you revert to the boring rpg it's stronger so die mechanic.

I suppose being able to tele out helps, but then it's just a no brainier choice to kill everything the arena puts in front of you until you have to bail with tele and end the free xp train.

Example: Cerebov is exciting and interesting because he's almost surely more powerful than you, but you still need to get around him, get to his rune, and get out alive. Getting locked in a room with him? Instant death, not interesting.

I'm probably being overly negative, though. How does ADOM some the problem of getting locked in a room with a stronger opponent?

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Sunday, 20th March 2011, 19:01

Re: Arena Portal

I think a lot of roguelikes have a similar concept.

The closest thing in Crawl would be a zig, I guess.

Certainly the ability to grind in the arena would be contrary to Crawl's design intentions, and portal vaults are really more one-offs. Waves of enemies could make sense though.

re: magekyun

Perhaps having an exit stair in the arena would make sense then. It gives you the option to bail if the situation is over your head (the original corridor would still lock off though, so that you don't have a chokepoint / place to hide).

In terms of eliminating the no brainer choice... Maybe altering the arena so that the monsters don't provide as much XP as normal (I'm not sure how to do this, but I'm sure it can be done). So the question you need to ask yourself is - can I kill ALL of these monsters, and thus get the treasure, or should I just cut my losses and run. Because killing some of them wouldn't really be worth the resource expenditure / chance of death.

It would make it a more interesting choice at least.

Crypt Cleanser

Posts: 726

Joined: Friday, 11th February 2011, 18:46

Post Monday, 21st March 2011, 01:23

Re: Arena Portal

Kind of a different idea, but I like Triangle Wizard's arena level. Enemies are divided into teams, each hostile to the other. You are an interloper. Enemies give no exp, but you are gifted items for killing certain amounts of them. After most are killed, harder waves spawn in. You can leave at any time though, provided you've found the stairs.

Ziggurat Zagger

Posts: 3037

Joined: Sunday, 2nd January 2011, 02:06

Post Monday, 21st March 2011, 01:50

Re: Arena Portal

How about an objective other than killing? On each side of the room, there are some turrets (oklob plants, dangerous statues, etc.) that are immobile but have significant firepower. The player starts on one end of the arena with some friendly turrets, and the enemy forces start on the other with some hostile (to the player) turrets. Well inside the turrets' kill zones are a goal, possibly a destructible unit or possibly just the reward loot, and the player needs to get at the enemy's goal before any of them can breach the allied turrets.

There are multiple possible strategies in this case. The player can meet the enemy in the open and deal with them in open combat. Or the player can hide back within the friendly turrets' kill zones and fight the enemy with that advantage, but risk one of the enemy sneaking past and capping the player's goal. Or the player can rush past the enemy forces and ninja the enemy goal before they can even react properly.

I imagine it would play out something like a mini-version of Zot Defense, with a stronger player character and weaker towers. AI that sends the enemy monsters towards a goal already exists, so it probably wouldn't be too hard to adapt if such a mini-game is desired.

Blades Runner

Posts: 554

Joined: Tuesday, 25th January 2011, 14:24

Post Monday, 21st March 2011, 14:44

Re: Arena Portal

In ADOM, there is a "civilized" level there to host the Arena. Crawl doesn't currently have any "civilized" levels (except, perhaps, the Ecumenical Temple, but there are no NPCs there.)

If it's a random portal, you need to explain, even if only in a hand-wavy way:

* Who's sponsoring it? (perhaps Okawaru?)
* Why aren't the spectators (if there are any) trying to kill you? (everything else in the game does)
* Why can't you "break out" of the arena and kill the spectators? (remember, not a "civilized" area)

RE: KL's Zot-defense mini-game above - because the mechanics are different, it would many special case checks just like Zot Defense does, but without the boundary of the entire game being either "Zot Defense" or "Normal". If you were going to put all that together, I would think you'd want to use it in more than one place. IMHO.

Ziggurat Zagger

Posts: 3037

Joined: Sunday, 2nd January 2011, 02:06

Post Monday, 21st March 2011, 15:08

Re: Arena Portal

JeffQyzt wrote:In ADOM, there is a "civilized" level there to host the Arena. Crawl doesn't currently have any "civilized" levels (except, perhaps, the Ecumenical Temple, but there are no NPCs there.)

If it's a random portal, you need to explain, even if only in a hand-wavy way:

* Who's sponsoring it? (perhaps Okawaru?)
* Why aren't the spectators (if there are any) trying to kill you? (everything else in the game does)
* Why can't you "break out" of the arena and kill the spectators? (remember, not a "civilized" area)


Obviously it's linked to the same reasons you can't just kill the shopkeeper and loot all the stuff from the shop for free. To the best of my recollection, this has never been a problem for shops.

JeffQyzt wrote:RE: KL's Zot-defense mini-game above - because the mechanics are different, it would many special case checks just like Zot Defense does, but without the boundary of the entire game being either "Zot Defense" or "Normal". If you were going to put all that together, I would think you'd want to use it in more than one place. IMHO.


One of the chief advantages of the portal mechanism, as per the page devoted to portals on the development wiki, is the ability to fundamentally change some part of the game without infecting the rest of the game as a whole. I mentioned Zot Defense because that particular side game shows that a good chunk of functionality has already been written, which means less work for the programmers.

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Monday, 21st March 2011, 17:18

Re: Arena Portal

KoboldLord wrote:How about an objective other than killing? On each side of the room, there are some turrets (oklob plants, dangerous statues, etc.) that are immobile but have significant firepower. The player starts on one end of the arena with some friendly turrets, and the enemy forces start on the other with some hostile (to the player) turrets. Well inside the turrets' kill zones are a goal, possibly a destructible unit or possibly just the reward loot, and the player needs to get at the enemy's goal before any of them can breach the allied turrets.

There are multiple possible strategies in this case. The player can meet the enemy in the open and deal with them in open combat. Or the player can hide back within the friendly turrets' kill zones and fight the enemy with that advantage, but risk one of the enemy sneaking past and capping the player's goal. Or the player can rush past the enemy forces and ninja the enemy goal before they can even react properly.

I imagine it would play out something like a mini-version of Zot Defense, with a stronger player character and weaker towers. AI that sends the enemy monsters towards a goal already exists, so it probably wouldn't be too hard to adapt if such a mini-game is desired.


I think this is an interesting concept, I don't think it's what I'll be working on.

I do think this needs more flavour. Right now I'm really just screwing around to make sure that the ideas I'm coming up with are actually implementable (by me, I'm sure most things are implementable if the skill level is high enough, but I'm still figuring a lot of this out). I'll post the general concept on the wiki shortly, but I was thinking that this may make sense expanding on the gods as spectators that I indicated in the first post. Called the Testing Ground, it's takes you to an arena that is tailored to an individual god. Only some would participate of course - gods like Jiyva, Fedhas, Lugano, Beogh (because of his isolation from the temple gods) would not have vaults tailored to them, nor would they speak / cheer / comment.

(I am blatantly lifting the following concept from DoomRL, although the monsters, the difficulty, the loot and the arena itself will be significantly more randomized than in Hell's Arena.)

I think that using waves of enemies is fairly interesting. You get the XP for killing the monsters, but you only get a loot reward when all of the monsters (all waves, not a single wave) are dead. This should actually provide for some choice. You initially have the choice to participate or not. You then have an additional choice at the end of each wave if you want to continue. You always have the choice to leave the arena (if you find the stairs, which should be fairly easy). You don't know how many enemy waves you will see, or if the difficulty will escalate between waves (no guarantee one way or another - the monsters chosen are thematic but random), so the decision to continue will have to be weighed against the available resources, and against the potential for difficulty spikes - as a "boss" wave would be a possibility.

(Using the gods adds some flavour - though weak - and indicates why you can't interact with the spectators, or break out of the self-contained arena. Spectators as gods / minor deities / perhaps demons? are not there, they are watching from some magical way in a similar way as how they interact with you anywhere else in the dungeon.)

Edit: if anyone has a general idea of what the total XP from an entire arena should be, please speak up. Given that this is a mid-level portal, I'm thinking somewhere in the 10-30k range (not including entry portals, which are taking up space from the general dungeon from other vaults, but which should be no more than 2-3k max), but I'm not sure if that's too high or too low - it would be on the high end if a unique was spawned as a result of the portal or there were multiple waves (average should be three or so, with 2-6 possible). Average xp would be closer to 15k. Power spiral is obviously a concern, given this is essentially free (well, there's a cost) xp and loot.

Another possibility would be removing the ability to heal over time in the arena to add an additional choice - though because of the nature of the portal that wouldn't really be a possibility - as soon as the last monster dies, you get the next wave. You'll have to either be significantly more powerful than the monster (in which case the xp and loot isn't that important) or you'll have to burn resources to succeed.

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Monday, 21st March 2011, 17:52

Re: Arena Portal

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Monday, 21st March 2011, 19:19

Re: Arena Portal

I just keep adding to this myself, but oh well. :)

I've worked out some of the basics of what I want to do. Right now the portal is spawned when you kill a randomly named unique (just a goblin or kobold atm). You get the prompt on whether or not you want to fight in the testing ground. You only have one wave of monsters, which pulls from a limited selection of monsters (based on what the guardian was) and there's no loot at the end, though you do get a message saying how many monsters you killed.

The code is:
  Code:
###################################################################
#
# Testing Ground Portal
# Created by 7hm.

# Flavour: God challenge arena.  Defeat successive waves of monsters
# to collect your reward.
#
#
# PLAN:
#
# Create monsters waves
# Create better randomized monster lists
# Create a random weapon generator
# Create a better random name generator
# Create "boss wave" monster wave
# Randomize # of monster waves
# Randomize # of monsters within waves
# Create more entry portals
# Create more destination portals
# Remove the v_mon_die_call hack if possible
# Create more flavour
# Create crowd noises effect - with possible god intervention effects?
# Create a rdm_god function to randomize the god selection
# Remove v_guard as the defining variable and replace it with v_god
# Add error checking where applicable
# Create a template for addition of new vaults (both entry and destination)
# Create a loot table (with adjustment for # of waves, difficulty of waves
# .. god selection and depth found)
# Reward player with loot when all the monsters are defeated
# Add special casing (that works, unlike what I have now) for abyss
# .. and other special effects
# Create a random "status" effect generator so that monsters may be spawned
# .. berserking or otherwise, depending on what the situation allows
#
#

{{
-------------------------------------------------------------------
-- Variables
-- : set up the global variables that are used by the various functions
-------------------------------------------------------------------
-- current wave #
v_wave_num = 0
-- number of monsters in the current wave
v_wave_qty = 0
-- how many times callback.dest_mons_die has been called (for that hack I
-- note in the function itself
v_mon_die_call = 0
-- the guardian type (which is used to select monster lists)
-- REMOVE THIS AND REPLACE IT WITH v_god
v_guard = nil
-- the destination - will pick easy / hard maps etc
v_dest = nil
-- the god choice - random with some weighting situationally
v_god = nil

-------------------------------------------------------------------
-- Random Generator Functions
-- : functions that are called to return randomized information
-------------------------------------------------------------------

-- random name generator (I know this could be done better, but
-- for now its fine) it returns a random name (25 possible combos)
function rdm_guard_name()
  local a , b
  -- first part of the name
  if crawl.one_chance_in(5) then
    a = "Joh"
  elseif crawl.one_chance_in(4) then
    a = "Din"
  elseif crawl.one_chance_in(3) then
    a = "Lai"
  elseif crawl.one_chance_in(2) then
    a = "Arn"
  else
    a = "Toms"
  end
  -- second part of the name
  if crawl.one_chance_in(5) then
    b = "tu"
  elseif crawl.one_chance_in(4) then
    b = "parn"
  elseif crawl.one_chance_in(3) then
    b = "ghie"
  elseif crawl.one_chance_in(2) then
    b = "yul"
  else
    b = "rins"
  end
  -- return the name
  return a .. b
end

-- EVENTUALLY REMOVE THIS, REPLACE WITH THE GOD AS THE RANDOM SELECTOR
-- This picks the guardian monster --- at the moment it's just random, but
-- it should be based on depth etc on top of randomization
function rdm_guardian()
  -- v_guard is used to create both the monster_list
  -- and tie the destination portal into the guardian monster for flavour
  if crawl.one_chance_in(2) then
     v_guard = "goblin"
     return "goblin name:" .. rdm_guard_name() .." name_replace"
  else
     v_guard = "kobold"
     return "kobold name:" .. rdm_guard_name() .." name_replace"
  end
end

-- NOT ACTUALLY DOING ANYTHING RIGHT NOW
-- This picks the destination portal, based on the guardian from
-- create_guardian(); at the moment it just returns the default arena
function rdm_destination(a)
     return "arena_portal_default"
end

-- This function uses v_guard to create a monster list
-- that is tied into the guardian monster (for flavour).  It returns
-- a single monster selection.
function rdm_monster_list(a)
  if a == "goblin" then
     return "goblin / orc / hobgoblin"
  elseif a == "kobold" then
     return "kobold / big kobold"
  else
     error("failure to create monster list")
     return "rat"
  end
end


-------------------------------------------------------------------
-- Portal Entry Functions
-- : used for entry vaults
-------------------------------------------------------------------

-- This sets up the portal entry that will be triggered when the guardian
-- is killed
function setup_arena_portal(e)
 local guardian = rdm_guardian()
 local destination = rdm_destination(v_guard) 
  local desc_long = "empty for now, please fill me"
  e.lua_marker('O',
     one_way_stair {
        desc = "pulsating archway",
   desc_long = desc_long,
        entity = 'arena entry',
        dst = destination,
        floor = "stone_arch" })
  e.kfeat("O = stone_arch")
  e.kmons("M = " .. guardian)
end



-- This function is called when the guardian is killed; it pushes flavour text and
-- calls create_arena.portal.
function callback.entry_mons_die(monster, killer_type, killer_index, silent, wizard)
    if killer_type == "reset" then
      crawl.mpr("You feel as though a passage to another world has been closed.")
    else
      crawl.mpr("As you kill the guardian, you sense a passage opening to another world.")
      create_arena_portal(_G)
    end
end

-- This function is called by callback.entry_mons_die, and turns the empty
-- arch into an actual portal.
function create_arena_portal(e)
  local c = dgn.find_marker_positions_by_prop("portal", 1) [1]
  local des_name = "arena_portal"
  local to_feat = "enter_portal_vault"
  dgn.terrain_changed(c.x , c.y , to_feat ,  false, false, false)
  crawl.mpr("vguard is: " .. v_guard .. ".")
end

-------------------------------------------------------------------
-- Portal Destination Functions
-- : used for destination vaults
-------------------------------------------------------------------

-- This function sets up the destination portal tiles, features, etc.
-- You should use symbols from here when designing destination portal vaults.
-- If there is an intersting addition, you can also add to this function
-- so that future vaults may use it.
function arena_setup(e)
  e.kfeat("< = exit_portal_vault")
end

-- THIS NEEDS WORK
-- This function is called when you enter through the portal into the destination vault.
-- It asks you whether or not you want to participate in the arena.  If you do, it sets up
-- the arena.  If you pick no, you end up with an empty vault.
function callback.arena_choice()
  v_god = "Okawaru"
  crawl.god_speaks(v_god,"Welcome, mortal, to the Arena.")
  crawl.god_speaks(v_god,"You have here a choice.  You may choose to battle many foes " ..
         "and reap the rewards that are due to a champion.")
  crawl.god_speaks(v_god,"Or you may choose to flee, as a coward, and forfeit a champion's rewards.")
  if crawl.yesno("Will you accept this challenge and fight for your life in THE ARENA?") == true then
    callback.place_monsters()
  end
end

-- THIS NEEDS WORK: It should be passable multiple times rather than a single time.
-- This function actually creates the monsters based on a list of positions (from
-- rdm_monster_list
function callback.place_monsters()
  v_wave_qty = 0
  for slave in iter.slave_iterator("monster", 1) do
     local monster = rdm_monster_list(v_guard)
     dgn.create_monster(slave.x, slave.y, monster)
     v_wave_qty = v_wave_qty + 1
  end
  -- this is just for error checking, should be removed for actual use
  crawl.mpr("The number of monsters is: " .. v_wave_qty)
end

-- This function is called when the monsters die.  It needs some work and I need
-- to ensure that the hack I used isn't achievable in some other way.
function callback.dest_mons_die(monster, killer_type, killer_index, silent, wizard)
  v_mon_die_call = v_mon_die_call + 1
  if killer_type == "reset" then
    crawl.mpr("something wrong")
  else
   -- So... this is a hack because I can't figure out how to get the function to
   -- only call once when a monster is killed, but still call for every monster.
   -- Basically this divides the number of times the function is called into the number
   -- of monsters and actually completes when all the monsters are killed.  It first
   -- error checks to ensure theres no division by zero (though that shouldn't be
   -- possible).
--   crawl.mpr(killer_type)
   if v_wave_qty == 0 then
      error("division by zero in callback.main_mons_die")
      return
   end
   local fake_num = v_mon_die_call / v_wave_qty
   if fake_num == v_wave_qty then
     crawl.mpr("You have killed all " .. v_wave_qty .. " monsters.")
   else
     return
   end
  end
end

-- This function is called by destination vaults and signals that the portal
-- has been completed.
function arena_milestone(e)
  crawl.mark_milestone("br.enter", "entered an Arena.", true)
end
}}

#####################
# Entry portals
#####################
# Bare-bones portal vault entry

NAME:     stuff_that
TAGS:     allow_dup no_monster_gen
ORIENT:  float
PLACE:    D:1
KFEAT:    O = stone_arch
: setup_arena_portal(_G)
{{
lua_marker('O', props_marker { portal = 1 })
}}
MARKER: M = lua: MonPropsMarker:new {monster_dies_lua_key = callback.entry_mons_die}
MAP
.....
.....
..O..
..M..
.....
ENDMAP

####################
# Destination portals
####################

NAME:     arena_generic_default
TAGS:     arena_portal_default allow_dup
ORIENT:  encompass
: arena_setup(_G)
{{
  local choice_prompt = TriggerableFunction:new{func="callback.arena_choice"}
  kill_mons = TriggerableFunction:new{func="callback.dest_mons_die" ,
                repeated = true }
  choice_prompt:add_triggerer(DgnTriggerer:new {type="entered_level"})
  kill_mons:add_triggerer(DgnTriggerer:new {type="monster_dies" , target = "any"})
  lua_marker("<", choice_prompt)
  lua_marker("g", props_marker{ monster = 1 })
  lua_marker("g", kill_mons)
}}
SUBST:    g : .
NSUBST:    e = 2:< / *:.
epilogue{{
arena_milestone(_G)
}}
MAP
ccccccccccccccccccccccccccccccccccccccccccc
c...............................g.........c
c...e......g..........................e...c
c.........................................c
c....................g........cc..........c
c.......g......................cc..g......c
c....cc.........................cc........c
c..cccccc.......g..........g.....cc.......c
c....cc...........................ccc.....c
c..................................ccc....c
c..............cccccc.....................c
c...........g..cccccc.......g.............c
c...g..........cccccc............c........c
c..............cccccc...........cc........c
c..............cccccc...........cc...g....c
c.....cc........................cc........c
c....cccc.......................c.........c
c....cccc.......................c.........c
c.....cc.........<..A...........c.........c
c..............................cc.........c
c...........c...........c......cc.........c
c...........c..........ccc.....cc.........c
c.......ccccccccc.....ccccc....c..........c
c...........c..........ccc................c
c...g...ccccccccc.......c...........g.....c
c...........c.............................c
c...........c.............................c
c.........................................c
c.........g...............g.......g.......c
c.....ccc....ccc..........................c
c......ccc..ccc...........................c
c........cccc..........................g..c
c.........cc..g.......ccccccc.............c
c...................ccccccc.......g.......c
c.....g...........ccc.....................c
c...............cccccccc...g..............c
c.................ccc.....................c
c...................ccccccc...............c
c...e.......g.........ccccccc.........e...c
c.........................................c
ccccccccccccccccccccccccccccccccccccccccccc
ENDMAP


I have a bit at the top that sort of lays out my goals from here, with functionality that I think the portal will need. It will also need tiles for the entry, which I just thought of.

# PLAN:
#
# Create monsters waves
# Create better randomized monster lists
# Create a random weapon generator
# Create a better random name generator
# Create "boss wave" monster wave
# Randomize # of monster waves
# Randomize # of monsters within waves
# Create more entry portals
# Create more destination portals
# Remove the v_mon_die_call hack if possible
# Create more flavour
# Create crowd noises effect - with possible god intervention effects?
# Create a rdm_god function to randomize the god selection
# Remove v_guard as the defining variable and replace it with v_god
# Add error checking where applicable
# Create a template for addition of new vaults (both entry and destination)
# Create a loot table (with adjustment for # of waves, difficulty of waves
# .. god selection and depth found)
# Reward player with loot when all the monsters are defeated
# Add special casing (that works, unlike what I have now) for abyss
# .. and other special effects
# Create a random "status" effect generator so that monsters may be spawned
# .. berserking or otherwise, depending on what the situation allows


...

The code itself is meh... I'm good at working my way through stuff, but I don't have much experience with programming (outside of hacking together websites and some occasional scripting like this for games). My general strategy is to steal from elsewhere, to stick to what I know works even if its not an optimal solution, and to just slam away at it until it works. So I know there are improvements that could be made in that sense. Suggestions towards that effect are appreciated. (particularly that hack using v_mon_die_call where a monster dying triggers the function more often than I'd like)

If anyone is interested in helping me out with vaults or further design / functionality, that'd also be appreciated. (at this point, whether or not any of this gets used is kind of irrelevant to me, I've had more fun doing this than playing the HaBe of Chei that I have sitting on CDO waiting for me :))
User avatar

Dungeon Master

Posts: 4031

Joined: Thursday, 16th December 2010, 20:37

Location: France

Post Monday, 21st March 2011, 20:16

Re: Arena Portal

Well, thanks, looks like this is shaping up. I was sceptical at first, but you seems to be commited to the idea, and since you're implementing it...
You have to be careful to distinguish your arena portal vault from Ziggurats, since they are already quite close to the arena concept. But your design seems different enough.
If you want to discuss coding and implementation, I suggest you open another thread in the coding forum. We can keep discussing the design and balance of the portal vault here.

7hm wrote:(at this point, whether or not any of this gets used is kind of irrelevant to me, I've had more fun doing this than playing the HaBe of Chei that I have sitting on CDO waiting for me :))

I know the feeling :)
<+Grunt> You dereference an invalid pointer! Ouch! That really hurt! The game dies...

Dungeon Master

Posts: 3618

Joined: Thursday, 23rd December 2010, 12:43

Post Monday, 21st March 2011, 20:27

Re: Arena Portal

One of the ideas for new Demigods (https://crawl.develz.org/wiki/doku.php?id=dcss:brainstorm:species:demigod#abstract_worshippers) is that can be challenged by uniques of (standard) gods who are jealous of the DG's success. What you code here could help there.
Last edited by galehar on Tuesday, 22nd March 2011, 08:17, edited 1 time in total.
Reason: fix link
User avatar

Ziggurat Zagger

Posts: 5832

Joined: Thursday, 10th February 2011, 18:30

Post Monday, 21st March 2011, 21:12

Re: Arena Portal

To me, my limited experiences with a Ziggurat is pretty much an arena where you have to fight your way to the exit to either leave or continue onward to harder battles.

I don't see how this is too much different in concept and might be better served with development of more unique ziggurat levels.
"Be aware that a lot of people on this forum, such as mageykun and XuaXua, have a habit of making things up." - minmay a.k.a. duvessa
Did I make a lame complaint? Check for Bingo!
Totally gracious CSDC Season 2 Division 4 Champeen!

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Monday, 21st March 2011, 21:17

Re: Arena Portal

galehar wrote:Well, thanks, looks like this is shaping up. I was sceptical at first, but you seems to be commited to the idea, and since you're implementing it...
You have to be careful to distinguish your arena portal vault from Ziggurats, since they are already quite close to the arena concept. But your design seems different enough.
If you want to discuss coding and implementation, I suggest you open another thread in the coding forum. We can keep discussing the design and balance of the portal vault here.


Well, no point suggesting an idea for something that's completely doable and then waiting for someone else to do it - that's the point of open source, right. :)

Yeah, the closeness between this and ziggurats had occurred to me. I think there are a couple of things that help to differentiate between them though. Being one level vs the multi-level ziggurats is of course an obvious one, though the fact there will be monster waves makes that a smaller difference than at first glance. A second difference is the power level needed (midgame vs endgame) - that's fairly obvious. A third ( would consider major) difference is that you can leave the ziggurat after having received some of the benefit but without pushing too far. You get loot for even a single level, where with this portal the loot depends on you going all-in. The intent is that to complete this you will need to burn resources, which makes it a more interesting decision of whether or not to go for it. Power level is very important to this, as your resources when going into a zig are in a different world compared to midgame. When you go into the zig, if you don't have many resources you know that there are few places to get more resources (pan and the abyss, I guess, though that can be mindnumbingly boring), and if you have lots there is typically not much more that you actually need to do in the game, so you might as well burn them. When you're in the midgame though, you don't know if he potions you have are going to be common or rare through the next 15-20 dungeon levels, so you have to take a risk in using them up. Midgame to me is the more interesting time.

One of the ideas for new Demigods (https://crawl.develz.org/wiki/doku.php?id=dcss:brainstorm:species:demigod#abstract_worshippers) is that can be challenged by uniques of (standard) gods who are jealous of the DG's success. What you code here could help there.


Yeah I think there are ways this could work into that (or vise versa).

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Monday, 21st March 2011, 21:46

Re: Arena Portal

The timed edit is ridiculously annoying. Seriously, get rid of it, what purpose does it serve.

Anyway - the original reason I wanted to post in the thread wasn't to respond to galehar / dpeg but to post some general monster list / god ideas.

The gods that I think work best as being arena "overseers" for lack of a better word are: Makhleb, Yred, TSO, Trog, Xom, Oka, Chei, Beogh

As I mentioned in the first post, I think the monsters should be limited to mostly melee, so monsters that are traditionally ranged will be either not used or have adjusted weaponry (means possible inclusion of centaurs / yaktaurs for Oka theme, stone giants spawn with no large stones - as a trog boss monster, etc).

This is because the maps will be largely open, with limited (but some) barriers to ranged weaponry and no chokepoints. Getting surrounded on all sides at the edge of LOS with ranged weaponry or spellcasters would be needlessly aggravating.

For the themes, I'm thinking:

TSO - the type of monsters spawned depend on the player's alignment. If you're evil, you fight good /neutral monsters, if you're good you fight evil monsters (Makhleb (demon) and Yred's (undead) lists are used in those cases) and have some heavenly friendly monsters helping you out.

Chei - rather than use slow monsters, which would be kind of pointless in this setup, chei slows you down and sends normal speed monsters against you (Oka and Trog's lists, maybe TSO's if you're evil).

Trog - big humanoid monsters (ogre + in size); Oka - humanoid melee monsters with magical buff spells (elves, centaurs, deep dwarves?, humans?); Makhleb - demons (I actually think makhleb is kind of weak flavourwise for this, might need some work here); Beogh is orcs, natch ... Beogh should only spawn from within Orc, and probably only orc:4. There are a lot of orcs in the dungeon as it is. (but it also doesn't make sense to ignore them completely); Xom would be ugly things, shapeshifters and perhaps slime creatures. Xom is also a bit weak flavourfully, maybe he would provide you with some "fun" as though you were one of his own worshippers if you got his arena.

Yred would be undead monsters, with a possible wave of Trog / Oka / Beogh monsters that is raised back to life in the following wave.

The general theme is that the god is testing to see if you're really the chosen one. So Chei slows you down because he believes slow is better. Trog and Oka pit you against their own monsters because the strong should win out. TSO is either trying to test you (if you're good) or kill you (if you're evil). Yred and Makhleb just like death. Xom just likes chaos. etc

In terms of this, I'm just throwing stuff at the wall to see what sticks.

Dungeon Master

Posts: 3618

Joined: Thursday, 23rd December 2010, 12:43

Post Monday, 21st March 2011, 23:54

Re: Arena Portal

Interesting stuff. First off: the vault should be timed, I think. We don't want players to wait until it's trivial. The timer can be very forgiving.
Next, since you're so focused on gods (this is new -- I've not seen it in any other Arena-style suggestion), what about renaming those things to "temple of [foo]"? The idea would be that these gods are about battle, blood or killing, and this is where they're most revered. I think this would increase the flavour.
The monster sets look good for a start.
Loot needs thought.

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Tuesday, 22nd March 2011, 00:05

Re: Arena Portal

dpeg wrote:Interesting stuff. First off: the vault should be timed, I think. We don't want players to wait until it's trivial. The timer can be very forgiving.

Yes, the way it would work is that the guardian would have a timer attached to him. When the timer expires the portal will no longer be created by the guardian's death.

Next, since you're so focused on gods (this is new -- I've not seen it in any other Arena-style suggestion), what about renaming those things to "temple of [foo]"? The idea would be that these gods are about battle, blood or killing, and this is where they're most revered. I think this would increase the flavour.

That makes sense.

The monster sets look good for a start.
Loot needs thought.


Yes I think loot could be a challenge. It needs to be rewarding, ideally would be (very) loosely thematic, but can't be overpowering. I think one-two high quality items would make more sense in this instance than a large amount of random acquirements.

Also the weapons that the monsters spawn with. If we allow random weapon selection you end up with a ton of weapons, including glowing etc. Probably too much. So that will also need to be looked at.

edit: also I started a separate thread for the code stuff here: https://crawl.develz.org/tavern/viewtopic.php?f=19&t=1062

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Tuesday, 22nd March 2011, 21:28

Re: Arena Portal

More stuff coming along.

The arena will have a "difficulty" level that is randomized, but also based on absdepth and some other factors.

You'll have a minimum number of waves (2) and a maximum number of waves (6) but beyond that the total difficulty level will be a factor - this will prevent a player from getting completely screwed by the RNG with lots of really tough monsters (it'll also prevent too much xp being handed out).

This will also allow different vault styles that depend on larger arenas / larger waves or smaller arenas / smaller waves or whatever. And allow the loot to be tailored (again, with randomization of course) to difficulty level.

I'm setting up the multiple waves now, and then its a matter of setting up the monster lists and loot tables (and then the fun god specific stuff).
User avatar

Dungeon Master

Posts: 4031

Joined: Thursday, 16th December 2010, 20:37

Location: France

Post Tuesday, 22nd March 2011, 21:46

Re: Arena Portal

7hm wrote:More stuff coming along.

The arena will have a "difficulty" level that is randomized, but also based on absdepth and some other factors.

What factors? More specifically, please don't use XL or any player based factor.
<+Grunt> You dereference an invalid pointer! Ouch! That really hurt! The game dies...

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Tuesday, 22nd March 2011, 21:53

Re: Arena Portal

galehar wrote:
7hm wrote:More stuff coming along.

The arena will have a "difficulty" level that is randomized, but also based on absdepth and some other factors.

What factors? More specifically, please don't use XL or any player based factor.


Depth of dungeon, not level scaling.

e: and i reread my comment, and I have no idea what factor I was thinking of. Probably branch of origin.

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Wednesday, 23rd March 2011, 16:19

Re: Arena Portal

Progress report

COMPLETED:
#
# ## random name generator - pulls from two tables, so high degree of
# .. randomization / perhaps add a possible third small table (c)
# ## create monster list - the monster list is a table in the format
# .. [godname] [mob type] = "monster list"; very easy to add new gods
# .. or new mob types this way
# ## create monster properties structure - monster properties are pulled
# .. from a property listing using a string generation function and
# .. include instructions to ensure easy editing and readability
# ## random god selection - creates a table with god names and creates
# .. options for gods to be pulled based on a variety of arguments
# .. passed to the function; the function can be used for crowd cheers,
# .. god effects, and arena choice (potentially more as well)
# .. *** ARENA GOD SELECTION SHOULD ADJUSTED BASED ON DUNGEON FACTORS
# ## setup arena portal - this creates the arena and makes sure that the portal
# .. will exist once the guardian dies *** NOT 100% - flavour etc is needed
# ## arena setup -- the arena is created when you enter the level, and before it
# .. even loads you're given the choice to participate or not. if you don't,
# .. you'll be in an empty arena, otherwise this function actually calls the
# .. initial monster placement etc
# .. *** NEEDS MORE RANDOMIZATION / FLAVOUR or perhaps exporting choice strings
# .. to a new function
# ## monster placement -- the initial monster placement generates the first wave
# .. of monsters, uses random wave size, and sets up the inital wave tracking
# ## monster death calls -- when a monster dies, this tracks # of kills
# .. *** THIS NEEDS TO CREATE REWARDS, CREATE NEW WAVES

Definitely need / open to suggestions for monster theming for different gods.

I'll post updated code in the code thread as well.

Also was thinking about what I may have been thinking of at the time of writing this comment Galehar:
What factors? More specifically, please don't use XL or any player based factor.

God (the portal "patron" god rather than your god) would be a factor, as would vault selection. Some vaults would be designed to be harder than others just as a matter of randomization. Likewise, the god that is chosen could impact the difficulty in some manner (though I'm not sure how exactly right now).

Blades Runner

Posts: 554

Joined: Tuesday, 25th January 2011, 14:24

Post Wednesday, 23rd March 2011, 16:35

Re: Arena Portal

RE: random name generator - doesn't the game already have one or more random name generators? (used for e.g. Pan lords, Orcish companions, artefacts, etc.) I haven't looked at your code, so if you're already re-using that, then please ignore.

Also - would all of the deities actually sponsor these arenas? Elyvilon and Ashenzari in particular seem ill-suited sponsors. Zin would only approve if the opponents were 'impure".

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Wednesday, 23rd March 2011, 17:01

Re: Arena Portal

JeffQyzt wrote:RE: random name generator - doesn't the game already have one or more random name generators? (used for e.g. Pan lords, Orcish companions, artefacts, etc.) I haven't looked at your code, so if you're already re-using that, then please ignore.

Also - would all of the deities actually sponsor these arenas? Elyvilon and Ashenzari in particular seem ill-suited sponsors. Zin would only approve if the opponents were 'impure".


As far as I'm aware, you can't call the random name generators from lua.

If that changes I would use the crawl name generator obviously (I think greensnark said something about working towards making more callable from lua... when I'm done with this I'll set up an FR for all the stuff I think could / should be made lua accessible).

No, not all of the deities will sponsor the arenas. Right now I have TSO, Makhleb, Trog, Oka (oka is the obvious one), Chei (if I can set it so that Chei impacts player movement speed to make him flavourful and give him a point), Yred, Xom and Beogh (though Beogh will only be used if the portal is spawned in Orc or from a Beogh altar vault).

Most, but not all, of the gods will cheer / impact the arena in other ways, though what that means is still really unclear right now.

As dpeg mentioned earlier, this could potentially make sense being tied into the demigod redo in some way, so I'm just adding all the gods because it's really not much effort to set it that way now.

edit: Anyone know what arena.des is used for / by?

Vestibule Violator

Posts: 1567

Joined: Friday, 21st January 2011, 22:56

Post Wednesday, 23rd March 2011, 17:51

Re: Arena Portal

Some suggestions for the different gods:
In a Xom arena things could just be more random than usual, with monsters being drawn randomly from all arena moblists. So while in a Beogh arena you might get something like three orc knights, in a Xom arena you could get an Orc, an ynoxinul and two yaks. I don't really like ugly things and slime creatures for Xom, those are not chaotic in any way.

Monster lists for Trog and Oka could overlap, but their rage vs skill theme has to be considered of course. This could mean Oka tending towards fairly uniform groups of trained fighters (often a whole wave of the same monster with maybe a different leader, a bit like an army), and Trog generating diverse, often berserked, groups of weaker monsters.

Oka could use mostly humanoids, like orcs, elves, dwarves, vault guards and sometimes random pseudounique wave leaders (skilled fighters basically). Ogres are too unskilled for Oka in my opinion, they fit Trog better. Oka's troops could be supported by magic, but all monsters would still me mainly fighters (so no priests or wizards, but deep elf knights are fine). The leaders could have some Oka powers, or Haste could even be randomly added to the spell list of any of the Oka monsters (if that is possible in Crawl). If you feel like adding god effects to the arena sometimes hasting random monsters would be very fitting for an Oka arena and could provide some interesting tactical choices (Do you switch from your half health target to a newly hasted full health one? Also depending on arena size this might screw up kiting plans for spellcasters).

Trog could use most skilled fighters too, but of course nothing with magic. Also any BiAs are fine, possibly some other ferocious beasts (a large pack of rabid aka berserked wolves for example), and Moths of Wrath could also be interesting. I don't think Trog should use pseudouniques. While berserkers would be fitting I think gods with a summon power should have arena monsters thematically close to their summons.

At the high end of the power spectrum giants would fit both gods. Frost + fire giant might be a good Oka boss wave, while Trog could pit you against a single permaberserked stone giant or Ettin (probably quite a challenge around Vault, especially if you were fighting other stuff before).

I don't think Makhleb is weak thematically as an arena master, he enjoys all killing, including killing of demons. Also while there are lots of strong demons in extended there normally aren't any strong demons in the midgame, just fodder from summoners with the rare hellion in between. So pitting non-endgame player against the armies of hell might be interesting. I see Makhleb as one of the most evil and devious gods, so maybe he could use some mean strategies. He could send waves meant to wear down your resources and mana first (5 ynoxinuls for example, or maybe some rotting devils), and after that send waves meant to kill you quickly (a reaper squad, an executioner or two, or maybe a balrug). Just like Trog I don't think Makhleb should use pseudouniques.

Yred can just use any of his gift summons, and your "living wave that gets resurrected" idea sounds awesome. A nice god effect could be Haunt.

TSO can use all the new holy monsters, with maybe some paladins added in.


Another thing to consider is the size of the arena. If it's very small ranged chars are at a huge disadvantage, if it's very large they are at a huge advantage against the melee monsters.

Dungeon Master

Posts: 3618

Joined: Thursday, 23rd December 2010, 12:43

Post Wednesday, 23rd March 2011, 18:00

Re: Arena Portal

Good stuff!

Jordan: do you allow characters to flee from the arena while in battle? I think you should, otherwise you will cause a lot of agonising over "should I enter this?" and players will overprepare or just abstain. Much better to let them go, with a barrage of insults thrown at them and [god] seeing the superiority of [god]'s followers clearly proven.
If you like it, there could be an investment by the player which they get back when leaving victorious... could be money, half their inventory, one skill or whatever. This way bailing out has a cost.

arena.des is a nifty addition by Matthew (zelgadis) which let's you pit two monsters (or even factions) against each other. Has a million of options. You can try it from the menu when starting a new game. Give it a go, it might be inspiring!

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Wednesday, 23rd March 2011, 19:50

Re: Arena Portal

Galefury wrote:Some suggestions for the different gods:
In a Xom arena things could just be more random than usual, with monsters being drawn randomly from all arena moblists. So while in a Beogh arena you might get something like three orc knights, in a Xom arena you could get an Orc, an ynoxinul and two yaks. I don't really like ugly things and slime creatures for Xom, those are not chaotic in any way.


I think that's a good idea. Makes more sense than what I was going to go with, which was strictly chaotic monsters (of which there aren't many pure melee).

Monster lists for Trog and Oka could overlap, but their rage vs skill theme has to be considered of course. This could mean Oka tending towards fairly uniform groups of trained fighters (often a whole wave of the same monster with maybe a different leader, a bit like an army), and Trog generating diverse, often berserked, groups of weaker monsters.

Oka could use mostly humanoids, like orcs, elves, dwarves, vault guards and sometimes random pseudounique wave leaders (skilled fighters basically). Ogres are too unskilled for Oka in my opinion, they fit Trog better. Oka's troops could be supported by magic, but all monsters would still me mainly fighters (so no priests or wizards, but deep elf knights are fine). The leaders could have some Oka powers, or Haste could even be randomly added to the spell list of any of the Oka monsters (if that is possible in Crawl). If you feel like adding god effects to the arena sometimes hasting random monsters would be very fitting for an Oka arena and could provide some interesting tactical choices (Do you switch from your half health target to a newly hasted full health one? Also depending on arena size this might screw up kiting plans for spellcasters).

Trog could use most skilled fighters too, but of course nothing with magic. Also any BiAs are fine, possibly some other ferocious beasts (a large pack of rabid aka berserked wolves for example), and Moths of Wrath could also be interesting. I don't think Trog should use pseudouniques. While berserkers would be fitting I think gods with a summon power should have arena monsters thematically close to their summons.

At the high end of the power spectrum giants would fit both gods. Frost + fire giant might be a good Oka boss wave, while Trog could pit you against a single permaberserked stone giant or Ettin (probably quite a challenge around Vault, especially if you were fighting other stuff before).


This is very much along my lines of thinking. Oka's monsters will be primarily "intelligent" monsters with access to buff spells like haste (definitely possible, already implemented in fact). Elves, spriggans, dwarves, etc. Perhaps some unique monsters (lions would be the obvious one... a themed wave of gladiators and lions).

Trog will use the "stupider" large humanoids. Often berserk. As well as bears, perhaps wolves. Often berserk.

The uniques I want as possibilities are fairly limited, but Snorg would be an obvious for Trog. Snorg + a pack of berserking trolls would make a terrifying wave (for some builds at least). If a boss wave is going to be built around one higher power monster, I think it makes sense for them to be a semi-unique, though that is obviously up for debate.

I don't think Makhleb is weak thematically as an arena master, he enjoys all killing, including killing of demons. Also while there are lots of strong demons in extended there normally aren't any strong demons in the midgame, just fodder from summoners with the rare hellion in between. So pitting non-endgame player against the armies of hell might be interesting. I see Makhleb as one of the most evil and devious gods, so maybe he could use some mean strategies. He could send waves meant to wear down your resources and mana first (5 ynoxinuls for example, or maybe some rotting devils), and after that send waves meant to kill you quickly (a reaper squad, an executioner or two, or maybe a balrug). Just like Trog I don't think Makhleb should use pseudouniques.


The thing with this is I really want to limit non-melee attacks. Even centaurs / yaktaurs would spawn without their ranged weaponry. That limits the demons quite a bit. Perhaps the whole concept of primarily melee needs refinement, and as I expand / contract the scope that should definitely happen. I do like the idea of a wave that is designed to wear you down.

Yred can just use any of his gift summons, and your "living wave that gets resurrected" idea sounds awesome. A nice god effect could be Haunt.

I'm not overly familiar with Haunt, will need to look into that. And yeah, I think using his gift summons makes a lot of sense. Actually with Yred, I can also have him pull from other monster lists and create undead versions of those monsters. Yred should have a lot of flavour.
TSO can use all the new holy monsters, with maybe some paladins added in.


Yeah I really like the idea of holy monsters to fight if your evil, evil monsters to fight if you're good.

Another thing to consider is the size of the arena. If it's very small ranged chars are at a huge disadvantage, if it's very large they are at a huge advantage against the melee monsters.

Absolutely. There will be varying sizes, and presumably the size will affect the # of monsters in a wave, etc. That will depend on the vault designer of course, but it means some character builds will do better of some maps, worse on others. [/quote]

dpeg wrote:Jordan: do you allow characters to flee from the arena while in battle? I think you should, otherwise you will cause a lot of agonising over "should I enter this?" and players will overprepare or just abstain. Much better to let them go, with a barrage of insults thrown at them and [god] seeing the superiority of [god]'s followers clearly proven.
If you like it, there could be an investment by the player which they get back when leaving victorious... could be money, half their inventory, one skill or whatever. This way bailing out has a cost.

Absolutely. Right now players can choose to just not accept the challenge, can immediately leave (as they would have the option of doing in every other portal vault), can leave during the wave (multiple exits, though random locations), and can also choose not to have a second or other subsequent wave start (the god asks if you want to continue... though not implemented yet, as I haven't done waves yet).

arena.des is a nifty addition by Matthew (zelgadis) which let's you pit two monsters (or even factions) against each other. Has a million of options. You can try it from the menu when starting a new game. Give it a go, it might be inspiring!


Ah. I knew about the arena mode thing, just didn't tie this back to it. Cool. Some of the arena vault designs seem pretty good, I'll definitely be using them as inspiration.

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Saturday, 9th April 2011, 01:59

Re: Arena Portal

bump to this.

I've been working on this again.

Right now I have the general functionality completed. The guardian is spawned near the empty entry portal. You kill him and the portal opens. When you enter the portal you have the choice to compete or not. If you choose to compete you have to face a number of waves of monsters. A crowd cheers when you get a kill (sometimes) or randomly. Everytime the crowd cheers the monsters swarm on you, alerted to your position. If you kill the entire wave you have a choice to face another wave. If you say yes, repeat process. The difficulty of the portal determines the number of monsters you face and the number of waves you face.

Still need to fill the monster tables with values, create loot tables, and work out some of the more interesting effects (like raising dead waves and adding harder boss waves and such).

Snake Sneak

Posts: 92

Joined: Friday, 17th December 2010, 21:31

Post Saturday, 9th April 2011, 07:25

Re: Arena Portal

This sounds cool.

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Wednesday, 13th April 2011, 21:34

Re: Arena Portal

Bump some more.

Boss waves work. Item properties are now being generated.

I did come up with one issue - if you quit and come back in I'm pretty sure the lua stuff is going to fail. Don't think there's a workaround for that short of coding some variables in C and having them saved. atm I'm just going to make it so that you can't quit and restart. Sucks but I don't see another solution.

Still looking for any ideas / suggestions. I'll probably have the portal ready for testing in a month or so.

Dungeon Master

Posts: 3618

Joined: Thursday, 23rd December 2010, 12:43

Post Wednesday, 13th April 2011, 21:36

Re: Arena Portal

Jordan: Not sure anyone can be of help right now. So just many thanks!

Dungeon Master

Posts: 3618

Joined: Thursday, 23rd December 2010, 12:43

Post Wednesday, 13th April 2011, 21:37

Re: Arena Portal

Reminder to self: We should make sure that the different waves are diverse, so as to pose challenges (of different types) to spellcasters, too.

7hm

Snake Sneak

Posts: 109

Joined: Wednesday, 2nd February 2011, 03:20

Post Wednesday, 13th April 2011, 22:07

Re: Arena Portal

depg: yeah I know. I'll deal with the C stuff when I get to that.

In terms of the varying waves... agreed though I'm not sure what that will look like. I would say this is a lot more dangerous for spellcasters than melee characters though. The monsters come at you very fast and are constantly being reminded of your position (every time the crowd cheers it creates a lot of noise centered on you). The levels might have to be cTele- though, otherwise characters with controlled blinking would have a huge advantage.

Return to Game Design Discussion

Who is online

Users browsing this forum: No registered users and 61 guests

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.