## Creep War

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

Moderators: Forum Moderators, Developers

piezocuttlefish
Posts: 10
Joined: April 1st, 2014, 4:42 am
Location: Los Angeles

### Re: Creep War

Thanks for the thoughtful feedback, mmmax! I can save you some breath next time by telling you I have a maths degree, so you can skip any long explanations of probability—I'll be able to figure that out from a summary. I'm also glad you like the starting position switch; I did it for the reason you say: to encourage a team to use both lanes rather than one.

I am definitely understanding what you're saying. I'd like to clarify one of the operating conditions that you may be missing, and I'd like to talk about your reasoning. I think there's an assumption you're making that isn't quite correct. I'm still considering the merits of your proposal, but I need more convincing. I'm also going to propose a wacky idea at the end, one that has the potential to provide all the benefits we both want.

I've changed Creep War in both 2 and 3 player version to be rotationally symmetric. If you take the board and rotate it 180° for 2 team or 120° for 3 team, you end up with the exact same board. I strongly want to maintain that symmetry. That is going to force my hand as far as starting arrangements go. For example, if West's positions are {a_bc}, then East's positions must be {cb_a}. That will save you from a bit of extra consideration about possible positions.

That, however, doesn't affect *when* each player in a mirrored pair goes. I like that you have the idea of clear pattern of the sides {n, n+4} being mirrored. I think, however, given that the board is rotationally symmetric, it does not work as well as what I've set up.
mmmax wrote:Since, west always gets to move its mirrored unit first it does have an advantage. The short answer to this is first strike,
I am absolutely certain that getting in the first shot is an advantage. However, going first does *not* equal getting in the first shot. We see this with the creeps: East's creeps go first. West's creeps get in the first shot. What determines who gets in the first shot is the size of the map and the movements of the pieces involved. Humans will be taking into account even more than that. It is much like chess: just because white moves first doesn't mean that he'll be taking the first piece.

It is my experience that the first player to get control of a lane seizes nis preferred territory in such a way to prevent opponents from doing the same. The early game is not at all about getting in the first shot, nor about heroes attacking heroes. It's more about who can stay on the field the longest and soak up the most creep attacks.

Let's talk about your specific example with the current layout. Given the position {a_bc} and {cb_a}, we have {1_36} and {27_5}. Let's examine the mirrored pair a=1,5. Player 1 goes first, is obliged to go north, and does so, getting his choice of terrain. Player 5 is obliged to go south now, but when he arrives, player 3 has already gone, and could have chosen to go south. If unit a benefits strongly from having choice of terrain (dwarf, for example, taking the mountain), West has the advantage now, because West's character gets the terrain, but East's character does not.

If we examine the same situation with the current setup, {1_36} and {75_2}, we see that player 2 will get to the south lane first, all by himself, just like player 1 did in the north. We can also see that players 6 and 7 are obliged to go the lanes that the opponent already controls—they're in parity. Moreover, for both pairs 1&2 and 6&7, both sides get to move before the creeps do, which ensures that each side gets a similar situation to deal with.

That's the good news. Pairs 3&5, however, pose an interesting problem because East's creeps split them up. That is not ideal, as player 3 may get some choice terrain that 5 can't get because, well, creeps are stupid. Here's a novel solution that maintains all the benefits I've cited while also satisfying your criterion of not having all of West's pairs move first.
Players: {1W,2E,3E,4W,5Wcreep,6Ecreep,7E,8W}
Positions: {1_48} {73_2}
Mirrored Pairs: 1=2, 3=4, 7=8

And now we have a whole nother ball game. This would yield a sizable change in gameplay, but I think that would have to happen to make sure the teams are balanced.

Wanna test this out with me sometime?

piezocuttlefish
Posts: 10
Joined: April 1st, 2014, 4:42 am
Location: Los Angeles

### Re: Creep War

Ravana wrote:1) That set_menu_item is just the way to let scenario know, so side 1, generally host, can choose at start if there is mirror. If you wish you can turn that menu off if era used is exactly your creep war era that has list you want for your way.
A set_menu option isn't a bad idea. I hadn't thought of it. Positives would be that it would work for any era. Negatives is that the host can't enforce it in Wesnoth v1.10. It could also severely imbalance the game: a player could choose random, and then when the game starts, he can take a look at his unit, decide it sucks, and mirror nis enemy. Since the whole point of mirroring is to ensure an even battle, this seems like a serious flaw.
Ravana wrote:2) Wesnoth already provides that for you, I even added a bunch of different randoms to ageless 4.11.
I do not know a way to choose a random unit from an era after the scenario starts. Ideas?

Regarding the save game you posted, I had to get the version of Ageless on GitHub to test it out. I could not reproduce the bug—I set shuffle sides on and used the Dalemen Shifter. He dropped just fine. I had a suspicion there might be a conflict between the Shifter's side turn event and Creep War's side turn event that teleports the hero. However, without being able to duplicate the error . . . . Please let me know if you find a reliable way to duplicate that bug.

iceiceice
Developer
Posts: 1056
Joined: August 23rd, 2013, 2:10 am

### Re: Creep War

piezocuttlefish wrote: I do not know a way to choose a random unit from an era after the scenario starts. Ideas?
Actually I wrote a bunch of code in the engine to make this possible using lua... now let's see if I can remember how it works

Well anyways you could work entirely in lua if you like, but the example I wrote on the wiki is a lua sequence that you can cut and paste, and then work in WML after instead if you prefer that.

Code: Select all

``````-- Collect basic info about the current era:
local era = wesnoth.game_config.era
local helper = wesnoth.require("lua/helper.lua")
local count = 0
wesnoth.set_variable("era_name", era.name)
for multiplayer_side in helper.child_range(era, "multiplayer_side") do
count = count + 1
wesnoth.set_variable("faction" .. tostring(count) .. "_name", multiplayer_side.name)
wesnoth.set_variable("faction" .. tostring(count) .. "_recruit", multiplayer_side.recruit)
end
wesnoth.set_variable("num_factions", count)
``````
If you put that in a lua block, then afterwards you could choose a random faction, then a random entry from "factionx_recruit".

For randomness use either WML `rand=...`, or lua `wesnoth.synchronize_choice(math.random(...))`

Note: This is 1.11.x series only.

References:
LuaWML:Misc#wesnoth.game_config
LuaWML:Misc#wesnoth.get_era

piezocuttlefish
Posts: 10
Joined: April 1st, 2014, 4:42 am
Location: Los Angeles

### Re: Creep War

iceiceice wrote:Actually I wrote a bunch of code in the engine to make this possible using lua... now let's see if I can remember how it works

Well anyways you could work entirely in lua if you like, but the example I wrote on the wiki is a lua sequence that you can cut and paste, and then work in WML after instead if you prefer that.
That's so useful! I'll be sure to use this; this makes things a lot nicer. I'll be sure to include this in my code. Thanks, iceiceice!

Enchanteur
Posts: 72
Joined: September 28th, 2009, 11:05 am

### Re: Creep War

It don't work.
Missing argument in a function.
French Player. For now, I'm working on creation of abilitys and units with WML. My goal is to make an enhanced version of Elves, playable with standard campains. HERE : http://forums.wesnoth.org/viewtopic.php ... 58&start=0

Ravana
Moderator
Posts: 1927
Joined: January 29th, 2012, 12:49 am
Location: Estonia
Contact:

### Re: Creep War

Creep_WarB is mine so this is wrong topic.

mmmax
Posts: 8
Joined: December 23rd, 2013, 6:06 pm

### Re: Creep War

Creep War-Old map-Killing a guard

I like the idea of getting some kill points for killing a guard, but 10 points is way too much. Before just getting a 100g bonus for killing one guard was a lot, it often ends the game, but there was still often a small but reasonable chance of staying in the game, especially if things where close to even before the guard kill. But getting 10 kill points makes it way uneven. It is very difficult to come back from a 10 point down kill score, especially later in the game. 10 points is just way too much. I could understand getting 1 point, it is basically a big creep that doesnt move, or 2 points because it is a level 2 unit. Or possibly even 3 points, like a hero, but even then a guard is really not as big or as important as a hero and even 3 points maybe too much for a guard. But 10 points and 100g is way way too much, it really effectivly ends all games at that point and makes killing the team leader just a dragged out formality.

Please consider changing the amount of kill points for killing a guard on the old map. Thanks.

Cheers, mmmax

mmmax
Posts: 8
Joined: December 23rd, 2013, 6:06 pm

### Re: Creep War

Creep_War_Old_Turn_31-shopbug.gz
piezocuttlefish wrote:
Ravana wrote:Bug report: shopping became impossible after certain time, everything not too expensive was orange and everything too expensive was as usual. Including savegame.

Tried to find problem from code but you have successfully obfuscated it.
Ravana,

Thanks for submitting the saved game! I should be able to submit a correction for that bug tomorrow. It happens when you access the guard menu, your team has a dead guard, and there is a unit standing in the guard's place. You can never purchase an item again after that. It's a one-line fix.

The new shop is harder to understand, but super easy for adding items. I separated the data from the implementation to a significant degree, so you don't have to know how the shop works too much—you just make the items you want.

I'm excited about working on the Creep War interface with Ageless Era. I would really like to get the Mirror Enemy/Fog Clearer to work properly in Ageless, and that will require implementation of a couple macros. I'll get back to you with the interface needed for that to work properly. I think mmmax at the least will be very happy with that addition.
I got this bug again twice. Once yesterday, thought maybe i didnt have most recent version and downloaded CW addon yesterday. Got it again today. Yesterday's game even affected the team with 2 guards, as neither of us could buy. Here is my attempt at uploading saved game.

Pyrochemik
Posts: 5
Joined: August 26th, 2014, 3:30 pm

### Re: Creep War -berserk, rage

Hello, could you please remove berserk and rage abilities in these maps? I think it makes everybody with them too strong - and killing guard equals to reaching it.

Then i would like to ask about purchaseable weapon - bow. Is it neccesary to be marksman? Orc archer doesnt have this ability, which makes for example woose with bow stronger then archer with bow.

Guard attacking - it is known fact, that coming to the guard, right in the midle of 3 hexes, will advantage you greatly, because all minions in base will block the exits. then it is impossible to reach the attacker, which is often fatal. Maybe making the entrance bigger could solve this problem, or purchaseable teleport from shop to outside?

Last thing - poison. Too damn strong, i think guards should receive regeneration, or something to compensate the poison, having to spend gold every time one gryph with knives reaches one of your guard is devastating.

Ravana
Moderator
Posts: 1927
Joined: January 29th, 2012, 12:49 am
Location: Estonia
Contact:

### Re: Creep War

I think berserks(rage is also berserk) values should be much lower, but still above 1. (would need to recursively check stored units attacks weapon specials for this)

About blocking ai - my suggestion was refused, I understood that current situation is intended.

Could add buyable cure(ability_unpoison), then just need to spend turn next to guard.

Pyrochemik
Posts: 5
Joined: August 26th, 2014, 3:30 pm

### Re: Creep War

Making bersekers weaker at the begining will not remove the basic problem - instantly killing the guard when they reach it anytime after 15 rounds. Even really loosing team might win if they make berseker reach the guard.
Not to mention how bersekers destroy any mage or ranged unit, taking no damage back if they can reach them. Berseker ability was developed for this purpose, yes, but for regular units only, killing player with no effort makes them unbalanced. If ulfseker kills white mage, nobody bats an eye, because next turn he will be killed by any other unit. But that will not happen here - only champions might fight other champions, creeps will not focus berseker with 120hp.

Posts: 1
Joined: October 27th, 2013, 2:28 am

### Re: Creep War

Hi everyone,

I ran into an issue using Windows 8.1 and wesnoth version 1.12.0 and creep war version 0.3.3. My game was saved and reloaded, but after the reload, the game stop producing creeps. I was the host and my opponent reloaded the game at turn 29. See game file attached.

Thanks!
Attachments
Creep_War-Auto-Save43.gz

Ilrandar
Posts: 13
Joined: February 23rd, 2015, 1:50 pm
Location: France

### Re: Creep War

Hi,

I love your game, and I play it a lot with my brother. I prefer the new version, where killing a guard is winning.
I use only Era of Magic RPG to play your game, and it's a lot of fun.

I would like to translate your game into french, so if you could upload the .po file, that would be just perfect !

Thanks for all your work !
Ready to translate any add-on to french. Just ask and I'll tell you if I've got time. ^^

Ilrandar
Posts: 13
Joined: February 23rd, 2015, 1:50 pm
Location: France

### Re: Creep War

I think that the best, for berserker units, would be to decrease the number of attacks. I mean, the berserk skill make them fight to death or to a max amount of 40 fights (not very clear, read the description of the capacity). If instead of 40, you put something like 5 or 10, it may change the balance, and reaching a guard with a berserk unit would not mean winning.

Another thing, it's pretty borring of being stuck behind his creeps when an ennemi is fighting the guard, so I think it would be good if we could buy some kind of teleport potion, which leads us to the mushrooms in front of our camp (for example). If you buy it 20, it could prevent the lost of a turn because of the creeps.

I'm ready to test it with you if you're interested in adding this.
Ready to translate any add-on to french. Just ask and I'll tell you if I've got time. ^^

Ilrandar
Posts: 13
Joined: February 23rd, 2015, 1:50 pm
Location: France

### Re: Creep War

I changed a little your map. The border is made of... emptiness I guess, so flying units can't leave the map.
I mean that ugly dark thing...
Preview21.png (102.67 KiB) Viewed 2997 times
Now, with 1.12, it is possible to make what you want and add a impassable overlayer on it, so units can't go there.
Si I did it, replacing your emptiness and deep water with ethereal abyss (but you can put whatever you want).
Better, don't you think ?
Preview22.png (92.81 KiB) Viewed 2997 times
I think (but it's purely personal) that your maps look much better that way, so I'd like it to be integrated in the next updates. ^^
I give you the maps I modified (I only changed the water and the void, so it shouldn't change the gameplay in anyway), to save you five minuts (the time it took me to make the modifications ^^).

Hope you prefer it that way too.