MP Native [WB] Conquest Plus

正在查看此主题的用户

Harn

Sergeant Knight
Conquest Plus
(Insert beautiful graphic here.)​

Thank you! to everyone for giving their feedback so far. I try to be open minded & balance your opinions against my thoughts for the game mode and work it in to my plans. I wouldn't have done this if not for you.

Thanks as well to the ENL mod coders which I have integrated this mod into.

The initial forum post where I proposed the mod & received feedback can be found here: http://forums.taleworlds.com/index.php/topic,276721.0.html
Basic details about initial game mode rule set can be found there.

What is Conquest?

Conquest is a native, multiplayer Warband game mode where each team runs around trying to capture flags that are placed around the map. Each team starts with a set amount of points and loses points every time a player dies. There is also a scaling point loss depending on how many flags a team owns. The more flags you own, the faster the enemy loses team points.

This is a large scale modification to the Warband Conquest game type. It is a work in progress.
I am by no means a coding wizard, but progress is slowly but surely happening when I'm not busy.

I have added in goals for each team in the form of a trebuchet & catapult. Team 1 gets a trebuchet, team 2 gets a catapult. Each team can protect their own objective while destroying the enemy objective. Teams have multiple ways of handling these objectives. Sacrifice an objective for map control, dividing forces, etc. Provides multiple ways for a team to look at the game.

What will this mod accomplish?

I am attempting to make this game mode more in depth & introduce a more action packed experience than Battle mode which is the current competitive standard. Battle often suffers from long stalemates where each team waits until the Master of the Field activates and only then will teams engage each other in a fight to try to capture the MOTF.

Conquest game mode pretty much makes tie games impossible and the constant need to grab more real estate means there is never a point in the game where teams can sit back and avoid fighting each other.

This game mode, basically, should make for a more competitive game & one that's more interesting to watch. Also gives a lot more play time for people in pub games thanks to the respawn system. Good all around for the community.

Progress & Plans

Release date - pending on my creating maps for this. I would also like to finish implementing class flag cap speed penalties prior to first release.

I also need to port over to the new patch & reintegrate with the ENL mod.

Currently Finished
  • Added in a respawn limit. Players can have infinite respawns or be limited from 1 to 5 respawns.
  • Teams each spawn in one team spawn area. They are no longer randomly distributed across the map.
  • Players must dismount from horses in order to capture a flag.
  • Capturing a flag will allot 200 gold to each player on the capturing team that is near the flag at time of capture.
  • Added in a trebuchet for team 1 & a catapult for team 2.
  • Catapult's health increased to match trebuchet's health.
  • Destroying a team's trebuchet/catapult will award the whole team 500 gold.
  • Destroying a team's trebuchet/catapult will cause the owner of said object to lose half of their total initial points. Ex: Teams start with 300 points each. Destroying one will cause the team with ownership to lose 150 points.
    • This requires balance testing. The point amount might need to be lowered to 33% or 20%.

Still to be added

  • Flag capture penalties for certain classes. Ex: Infantry capture at default rate. Archers capture at a 30% penalty. Cavalry capture with a 60% penalty. Promotes more melee fights.
  • Further refinement of gold allocation for flag captures. Does flag capture gold need to be given to the entire team? In a competitive game everyone is working towards capturing the flags so they should all be rewarded imo. -Requires community testing.
  • Maps. I still need to whip up a couple maps for a close & open map style to give everyone an idea of the kind of game play I'm hoping to promote. I don't really care for the native maps being used for this game mode; they weren't made with conquest in mind.
  • Currently, players can leave & rejoin a server to reset their spawn limit. I want to take steps to prevent this with an idea as detailed below.

    Server receives amount of players per team:
    5

    Server now creates 10 slots, 5 per team:
    0  5
    1  6
    2  7
    3  8
    4  9

    Server checks and sees how many respawns per player are allowed and allocates that spawn amount to each team player slot.

    Server now checks each time a player joins a team and stores that player's unique id to a slot:
    0 - playerid: 015343

    Each additional player that connects and selects a team:
    For example, Players join team 2:
    5 - playerid: 3529525
    6 - playerid: 00532

    Each slot is now permanently assigned to that player id. Players cannot rejoin the server and reset their spawn amount.

    If a player joins a team that has an empty slot with a former owner, they will take that slot, and that slot loses 1 spawn due to the original player leaving, counting as a death.

    A second check might need to be taken where the server keeps a team-wide playerid log and only allows players to take their former slot back if they leave the game.

    Ex:
    player in slot 0 disconnects, new player takes his spot.
    Former slot 0 player is not allowed to come back and take over slot 3 spot, he must wait for his slot to open back up. This prevents teams from giving a spawn spot to a player after he uses up all of his own spawns.


Things that might be added
  • A reduced amount of arrows & bolts per quiver. Standard, free arrow & bolt quivers would have 18 shots. These are 60% of the original amounts. Optional quivers to pay money for could have increased capacities of 21 arrows/bolts. 70% of original amounts.
  • A purchasable shield for archers. Based off an idea by Marnid. This would likely be the basic round cavalry shield, able to absorb one couched lance or survive a short melee fight,  but still leaving an archer vulnerable to shots to the feet. Archers would not be able to pick up any other shield types if this is added in. All archer shield skills would likely be set to 0. Fielding this as a compromise idea.
  • A flag capture circuit. Ex: Teams must capture three flags in the middle before they can advance to capture the enemy home flag.
    • I really want to try this out but the logistics of adding it would require a lot of planning & work. I would probably need to create a new, separate flag class for the middle tier of flags in the series and then run a check to see if all flags of this type belong to one team. Waiting to see if needed.
  • A spawn portal system that would go hand in hand with the flag capture circuit. Ex: Capture the 3 flags in the middle and your team spawns at your home flag instead of the treb/cata.
  • A reduction in armor for the Swadian Charger & Sarranid War Horse. Reduce from 58 to 48. Can compensate for this with a slight increase in health points. Ties in with a proposal below for horse healing zones.

Ideas needing feedback & Ideas I'm not ready to work on yet
These are mechanics that are mod specific, they might be necessary to accommodate the nature of limited respawns.
  • A global announcement for when a treb/cata is being attacked. Implementation of this depends on my laziness.
  • A zone at each team's treb/cata (aka main base) to slowly heal horses. A horse could recover 1-2% health per second while standing in this zone. Horses will be a rarer, more valuable, commodity in this game mode and will need to be cared for. With limited respawns, this makes managing them a little easier.
    • How this balances out: if a team damages a horse enough, then that rider is taken out of action while he goes & heals it. The healing should be slow enough so that the enemy can bring pressure to force the rider to return to the fight before it is fully healed.
  • No plans for healing of players.
  • A zone to restock arrows/bolts. This could be placed near the second most advanced flag location. Standing in this zone will restock 1 arrow every ~5 seconds. These zones should offer no cover to dissuade an archer from standing there & shooting nonstop. With limited respawns enabled, something like this becomes necessary so that archers aren't forced to suicide themselves in order to get more arrows to shoot with. How this balances out: Archers must retreat from the front line in order to rearm.

:!: :arrow:Help Wanted
  • I need a way to assign names to flags. For example, a flag is placed next to a tower on the map. I would like to know if it's possible to create a way for a mapper to go inside the map's file and name that flag "the tower flag" so when the flag is being captured it will announce "The Kingdom of Blah is pulling the tower flag!" instead of "The Kingdom of Blah is pulling flag2!"
  • I haven't been able to find code that lets me assign difficulty to shields. Is this hard coded? Looked around a bit in module, header & process_items.py but nothing really stood out to me in an obvious way for pairing shield skill to the difficulty modifier.

Known Bugs & Problems
  • I still need to finish how the spawn locations work. Players currently spawn inside each other instead of spreading out from the spot as they do in battle. Not game breaking, but ugly.
  • Need to confirm I didn't mess up how gold is distributed when a treb/cata is destroyed. AKA both teams receiving the gold. Should be fine.
 
Harn 说:
I need a way to assign names to flags. For example, a flag is placed next to a tower on the map. I would like to know if it's possible to create a way for a mapper to go inside the map's file and name that flag "the tower flag" so when the flag is being captured it will announce "The Kingdom of Blah is pulling the tower flag!" instead of "The Kingdom of Blah is pulling flag2!"
It is possible to assign two small numbers (from 0 to 127) to each scene prop placed, using the "Value" and "Value 2" fields in the editor window: these numbers can then be accessed from the module scripts using prop_instance_get_variation_id and prop_instance_get_variation_id_2. So, you could make an ordered list of flag names in module_strings, then scene makers could assign the flag pole scene prop value 1 or 2 to the desired string's number; for example:
插入代码块:
  ("flag_names_begin", "none"),
  ("flag_name_1", "the tower flag"),
  ("flag_name_2", "the hill flag"),
  ("flag_name_3", "the main base flag"),
  ("flag_name_4", "a flag in a field"),
  ("flag_name_5", "a white rabbit out of a hat"),
  ("flag_names_end", "none"),
  ("flag_message_format", "The {s10} is pulling {s11}!"),
插入代码块:
  (prop_instance_get_variation_id, ":flag_name_string_id", ":flag_pole_instance_id"),
  (val_add, ":flag_name_string_id", "str_flag_names_begin"),
  (try_begin),
    (is_between, ":flag_name_string_id",  "str_flag_name_1", "str_flag_names_end"), # this will prevent flag pole props with value 1 = 0 from displaying anything: you could start the range at str_flag_names_begin and give that a generic name if wanted
    (agent_get_team, ":team_pulling_flag", ":agent_id_pulling_flag"),
    (team_get_faction, ":faction_id", ":team_pulling_flag"),
    (str_store_faction_name, s10, ":faction_id"),
    (str_store_string, s11, ":flag_name_string_id"),
    (display_message, "str_flag_message_format"), # or use with a multiplayer_message presentation, or whatever
  (try_end),
Te code should be run on the player clients if they download a separate module to play (to send tiny integer messages to players rather than long strings), but if you intend this to be a server side mod for Native clients, you would have to compose the string on the server and send it to players using multiplayer_send_string_to_player.
 
Thanks for the support Chewy & Mad.

Thanks for the help Vornne, This made my day; I appreciate you taking the time to write that up. I do intend to make this server side only.

'multiplayer_send_string_to_player' will probably help out with another problem I was running into with the respawn announcements which were client only, so thanks again for that. I was hoping that there was something like this lying around but I was just happy to have it working client-side & moved on. Too many things to learn. :razz:

I'll probably start messing around with the naming system once I finish getting the class flag capture speeds sorted out. It's a little detail, but having names for objectives means a lot for competitors & spectators to be better aware of what's happening around the map.
 
Harn 说:
'multiplayer_send_string_to_player' will probably help out with another problem I was running into with the respawn announcements which were client only, so thanks again for that. I was hoping that there was something like this lying around but I was just happy to have it working client-side & moved on. Too many things to learn. :razz:
Feel free to ask for deeper explanations or suggestions for when trying to implement that code fully, if you are having problems or don't know where to look for something.
 
I'll try not to abuse your offer, but I'll keep it in mind if things aren't working out. Thanks again.
 
后退
顶部 底部