Necromanteion [0.7.1]

Discussion of all aspects of multiplayer development: unit balancing, map development, server development, and so forth.

Moderators: Forum Moderators, Developers

User avatar
Thanatos
Posts: 408
Joined: January 17th, 2006, 9:00 pm
Location: The End.
Contact:

Necromanteion [0.7.1]

Post by Thanatos » December 29th, 2008, 1:07 pm

"At the final stage of the great war, the two sides were struggling for all support they could get. Finally, there was only one place left to go. So both armies moved to the nameless temple at the mountains of Death, about which the old legends tell us, that it is a place of Dark Magic, connected with the realms of the dead. In their desperation, both armies try to use the unholy power of this place to finally defeat their enemy and win the war. It's live or die. And living by the dead."

Necromanteion is a competitive 2P MP scenario, for Wesnoth 1.5.7 or newer.
Competitive means, that the players are fighting against each other and are not collaborating like in most other MP scenarios (as Orocia or SurvivalXtreme for example). The "engine" of the scenario can be modified easily to fit for games with 2-8 human players on custom maps, see documentation for more details.

In Necromanteion the players are struggling for the control of a temple, which is their last hope to win an eternal war. But the temple area is a very dangerous place: There are random undead unit spawns roaming around and whoever dwells in the temple will get drained by the magic of this portal to the realms of the dead.

Features:
  • Two different playmodes: Default and Custom.
  • In Custom mode, all major game variables concerning the difficulty of the scenario can be freely set by player one.
  • The scenario makes use of the Era "Default (No Undead)", which is shipped with the scenario files.
  • Map Size: 39x27 (The map is still unfinished. Please feel free to comment/improve.)
Known issues:
  • none atm
Plans:
  • none so far.
This post will be updated, if a new version is released.
Necromanteion is available exclusively in the ThanatoNoth bundle.



-----------------------------------------------
Original first post:

After more or less exactly three years of getting something from Wesnoth, I finally thought about giving something back. As to keep my first try manageable, I just want to create one multiplayer map, called Necromanteion (for an explanation of this term, see the Wikipedia article. Germans can also use my personal glossary.) I liked the idea of a place like that a lot and am thinking about some way to include it into a map for quiet a while.

The story:

"At the final stage of the great war, the two sides were struggling for all support they could get. Finally, there was only one place left to go. So both armies moved to the nameless temple at the mountains of Death, about which the old legends tell us, that it is a place of Dark Magic, connected with the realms of the dead. In their desperation, both armies try to use the unholy power of this place to finally defeat their enemy and win the war. It's live or die. And living by the dead."

The Idea:

My thoughts are circling around a two player multiplayer map, where the two parties (respectively their home bases) are located at opposed pikes of a more or less symmetric map in shape of a hex or a diamond. The very center of the map will be the temple itself. Not easy to access. The flanks of the map will however be ideal battleground for all factions - all but one: The players will not be able to recruit undead on this map, for reasons just read on.

While the goal is to defeat your opponent, the temple becomes the major weapon on the map. Whoever is in possesion of the map (that is: when a leader is occuping the temple hex) gets the possibility to recruit not only his own factions units, but also Undead ones. The undead recruits will be limited to those units which actually carry the "undead"-trait (so no DA-recruits, for example). There will be only 2 recruit hexes adjacent to the temple hex, and the recruits will cost their normal amount of gold to the budget of the recruiting player.

However, occuping the temple hex has his bad sides too: For every round, the leader will hold the temple, he will suffer a loss of 10 HP (this number is debateable), allowing the leader to die there, if he will not move away in time. Therefore he will have to leave the temple and the other side will get a chance to occupy it.

If no player occupies the hex, there will be one or two undead units spawn (randomly) every turn to haunt the area (being in fact a third party on the map).

The Questions:

- Was something like this map done before? I don't wanna double already existing maps. As far as I checked, there wasn't something like this by now. But I could miss something.

- Is the idea itself workable, or are there strings I do not see - especially to the intended gameplay?

- I think, the major problem would be to actually make the players use the temple. I could imagine them ignoring the temple and the few spawns from it, to actually fight against each other in just another kind of enviroment. So, how to make it a bonus - but not a too good one for balancing reasons - to actually use the temple?

I would appreciate any C&C. :D


The Disclaimer:

No, I am not asking for anyone to make this map, I will try to do it myself, including the needed WML. I will have to learn and to ask for some details maybe, but I consider this as my initiation into the ranks of Wesnoth contributors, so I really want to see how far I can get by doing the work myself. :)
Last edited by Thanatos on April 30th, 2009, 6:28 pm, edited 9 times in total.
ThanatoNoth | Necromanteion | Undead Rights Protection Society
"The gods can demand nothing of me. Even gods answer to me, eventually. [...] I cannot be bidden, I cannot be forced. I will do only that which I know to be right." (Death in Pratchett's "Mort")

User avatar
A Guy
Posts: 790
Joined: May 24th, 2008, 1:55 am

Re: Necromanteion

Post by A Guy » December 30th, 2008, 1:38 pm

I was planning to do something along the lines of a temple and recruiting undead, but you can go for it.
I'm just... a guy...
I'm back for now, I might get started on some work again.

User avatar
Thanatos
Posts: 408
Joined: January 17th, 2006, 9:00 pm
Location: The End.
Contact:

Re: Necromanteion

Post by Thanatos » December 30th, 2008, 2:04 pm

Thanks, we will still have to see how far I will get. WML is still giving me some troubles. The major nut to crack is making the player able to recruit undead when occupying the temple hex with his leader. As far as I can see, there is no easy trigger that I can use for that. :hmm:

I have also just started to create the map. Somehow my Wesnoth editor isn't working as it should. I think I will have to recompile and reinstall the game, which will take at least till next year due to some other things I have to do today and tomorrow.

However, I am not in any rush. So I plan to do it step by step. :D

Next steps:
1) basic map creation
2) theoretical outline of all needed events
ThanatoNoth | Necromanteion | Undead Rights Protection Society
"The gods can demand nothing of me. Even gods answer to me, eventually. [...] I cannot be bidden, I cannot be forced. I will do only that which I know to be right." (Death in Pratchett's "Mort")

User avatar
A Guy
Posts: 790
Joined: May 24th, 2008, 1:55 am

Re: Necromanteion

Post by A Guy » December 30th, 2008, 2:44 pm

Let me help you out. This should do it.

Code: Select all

[event]
    name=moveto
    first_time_only=no
    [filter]
        canrecruit=yes
    [/filter]
    [if]
        [variable]
            name=unit.x
            equals=<insert x-coord here>
        [/variable]
        [variable]
            name=unit.y
            equals=<insert y-coord here>
        [/variable]
        [then]
             [allow_recruit]
                 side=$unit.side
                 type=<insert undead recruits here>
             [/allow_recruit]
        [/then]
        [else]
            [disallow_recruit]
                side=$unit.side
                type=<insert undead recruits here>
            [/disallow_recruit]
        [/else]
    [/if]
[/event]
I'm just... a guy...
I'm back for now, I might get started on some work again.

User avatar
Thanatos
Posts: 408
Joined: January 17th, 2006, 9:00 pm
Location: The End.
Contact:

Re: Necromanteion

Post by Thanatos » December 30th, 2008, 2:58 pm

Thanks a lot.
You will be credited. :D
ThanatoNoth | Necromanteion | Undead Rights Protection Society
"The gods can demand nothing of me. Even gods answer to me, eventually. [...] I cannot be bidden, I cannot be forced. I will do only that which I know to be right." (Death in Pratchett's "Mort")

User avatar
A Guy
Posts: 790
Joined: May 24th, 2008, 1:55 am

Re: Necromanteion

Post by A Guy » December 30th, 2008, 3:06 pm

No problem ;) Always love helping out a fellow Wesnothian.
I'm just... a guy...
I'm back for now, I might get started on some work again.

User avatar
TL
Posts: 511
Joined: March 3rd, 2007, 3:02 am

Re: Necromanteion

Post by TL » December 31st, 2008, 2:45 am

Balance may be problematic with default era. The undead faction would be practically unplayable for starters; even if you didn't strip them of most of their recruits, the fact that their enemies have a substantial advantage to gain (undead recruits) and they don't puts them at a serious disadvantage. Undead recruits give disproportionate advantages to certain factions, as well, making a hugely effective complement to say drakes or loyalists while providing a bit more of the same for other factions.

User avatar
Thanatos
Posts: 408
Joined: January 17th, 2006, 9:00 pm
Location: The End.
Contact:

Re: Necromanteion

Post by Thanatos » December 31st, 2008, 12:46 pm

Hmm, I see. :hmm:

1) As I stated above, no player should be allowed to play Undead on this map (if this is possible via WML. I don't know if I want to push this if I would have to create a fork of the default era only for that.)

2) Still, you are right of course, even if Undead themselves are not playable on the map. Drakes vs. Northerners for example would become a very messy matchup, allowing the Drakes to get good recruits for surviving the nights, while the Northerners gain nothing for the day.

I will think about this a bit. But it's likely that I still will try to realize this map just for the sake of learning. And I am somehow a friend of the idea that the players should be aware of which setting they play and which risks may appear. Maybe a readme-file would be a good idea.
ThanatoNoth | Necromanteion | Undead Rights Protection Society
"The gods can demand nothing of me. Even gods answer to me, eventually. [...] I cannot be bidden, I cannot be forced. I will do only that which I know to be right." (Death in Pratchett's "Mort")

User avatar
Thanatos
Posts: 408
Joined: January 17th, 2006, 9:00 pm
Location: The End.
Contact:

Re: Necromanteion

Post by Thanatos » December 31st, 2008, 2:53 pm

Sorry for doubleposting, but: I have finished an early alpha to test the WML so far.
The map is fixed at a size of 39x27. At the moment it contains grassland mainly, for playtesting the WML.

@A Guy:
The WML snippet you contributed works nicely and exactly as I planned. Thanks again.

I really suffered in trying to accomplish making the game find the files - even though I read the wiki and also searched the forums. I finally managed by copy and pasting some structure from Dov's MP Mappack. I really don't know why it works this way and not the way it was described in the wiki, but as I found in other threads: It works, so I won't bother. ;)

Btw, I think the folder structure in the userdata folder is quiet not intuitive. Due to all descriptions, Necromanteion will become a MP scenario, but it isn't found if placed in the so called folder /userdata/data/scenarios/multiplayer, but HAS to be settled in /userdata/data/campaigns. This is kindof annoying.
ThanatoNoth | Necromanteion | Undead Rights Protection Society
"The gods can demand nothing of me. Even gods answer to me, eventually. [...] I cannot be bidden, I cannot be forced. I will do only that which I know to be right." (Death in Pratchett's "Mort")

sayers
Posts: 8
Joined: November 5th, 2008, 7:49 pm

Re: Necromanteion

Post by sayers » December 31st, 2008, 6:40 pm

I really like the idea; would it be possible to make the recruitable units neutral for the sake of balance? You could explain it by saying the daylight does not bother them in their homes.

User avatar
Thanatos
Posts: 408
Joined: January 17th, 2006, 9:00 pm
Location: The End.
Contact:

Re: Necromanteion

Post by Thanatos » January 2nd, 2009, 7:55 pm

Hmm, I don't want to mess around too much with the factions.
So, I most probably will not make them all being neutral.
ThanatoNoth | Necromanteion | Undead Rights Protection Society
"The gods can demand nothing of me. Even gods answer to me, eventually. [...] I cannot be bidden, I cannot be forced. I will do only that which I know to be right." (Death in Pratchett's "Mort")

User avatar
Thanatos
Posts: 408
Joined: January 17th, 2006, 9:00 pm
Location: The End.
Contact:

Re: Necromanteion

Post by Thanatos » January 2nd, 2009, 10:32 pm

So, well, another little step done.
After outlining all needed events, I started at the beginning.
The first event ingame to happen is the discovery of the temple, and with it the explanation how the temple will work.

What I have done so far:

Code: Select all

   [event]
      name=moveto
      first_time_only=yes
      [filter]
         x,y= 20,14
      [/filter]
      [message]
         duration=30
         speaker=unit
         message= _ "This has to be the temple we searched for. There's something written here... It's from the old legend:" 
      [/message]
      [message]
         duration=30
         caption= _"The Legend"
         image="portraits/Kitty/undead-lich.png"
         message= _ "As long as a true commander will search shelter in the temple, he shall be able to recruit those who are already dead to aid him. But alas, beware! Everyone who will search shelter in these walls will slowly suffer. The temple will ask for a part of his life in return for its help."
      [/message]
      [message]
         duration=30
         speaker=unit
         message= _ "It sounds dangerous, but I think, we will have no choice..."
      [/message]
   [/event]
My issues with the code:

In playtest, the message will show up for both players as soon as the first player will discover the temple. This shouldn't be that way. In fact, the message should show only to the player actually discovering the temple. The easiest way to solve the problem - as I could tell so far - would be to double the code and include the "side_for" variable into the message tags. But is there no easier way? I searched a bit through multiplayer scenarios, but I didn't find one example for the behaviour I want. In all other MP scenarios it seems okay to show a message simultaneously to all players in the game at the same time. :hmm:
ThanatoNoth | Necromanteion | Undead Rights Protection Society
"The gods can demand nothing of me. Even gods answer to me, eventually. [...] I cannot be bidden, I cannot be forced. I will do only that which I know to be right." (Death in Pratchett's "Mort")

User avatar
zookeeper
WML Wizard
Posts: 9694
Joined: September 11th, 2004, 10:40 pm
Location: Finland

Re: Necromanteion

Post by zookeeper » January 2nd, 2009, 10:51 pm

Just use for_side=$side_number ?

User avatar
Thanatos
Posts: 408
Joined: January 17th, 2006, 9:00 pm
Location: The End.
Contact:

Re: Necromanteion

Post by Thanatos » January 2nd, 2009, 11:04 pm

Should that be a key for [event] or [message]? Couldn't find it in the WML reference for both. For [message] there is the already mentioned "side_for", but the description doesn't read anything like what I would need at all.
ThanatoNoth | Necromanteion | Undead Rights Protection Society
"The gods can demand nothing of me. Even gods answer to me, eventually. [...] I cannot be bidden, I cannot be forced. I will do only that which I know to be right." (Death in Pratchett's "Mort")

User avatar
zookeeper
WML Wizard
Posts: 9694
Joined: September 11th, 2004, 10:40 pm
Location: Finland

Re: Necromanteion

Post by zookeeper » January 2nd, 2009, 11:07 pm

Thanatos wrote:Should that be a key for [event] or [message]? Couldn't find it in the WML reference for both. For [message] there is the already mentioned "side_for",
Err, yeah side_for= is what I meant.
Thanatos wrote:but the description doesn't read anything like what I would need at all.
I don't get why you say that right after yourself suggesting using it. It makes the message show up only to the given side, which seemed to be exactly what you want. side_for=$side_number makes it show up to the currently active side, that is whoever happens to be making the move.

Post Reply