Add [chapter] to [campaign]-tag

Brainstorm ideas of possible additions to the game. Read this before posting!

Moderator: Forum Moderators

Forum rules
Before posting a new idea, you must read the following:
User avatar
Kwandulin
Art Contributor
Posts: 362
Joined: March 30th, 2014, 7:35 am
Location: Germany

Add [chapter] to [campaign]-tag

Post by Kwandulin »

Hello,

thinking about some of the ideas Celtic_Minstrel had regarding a possible [chapter]-tag for [campaign], I'd like to pick up that discussion again, as I think such a tag would be very useful for many UMC creators. So let us start from the very beginning.

What would a [chapter]-tag do?

The [chapter]-tag would be located inside [campaign] and it would then define a starting scenario. There can be multiple [chapter]-tags inside [campaign]. The defined starting scenario can be 1. a late scenario in the campaign, 2. a starting scenario of a (sequel/part I/ part II/ etc.) campaign, or 3. a single scenario that deepens the storyline (e.g. a prequel, or other important plots that get mentioned in the main campaign but don't have their own scenario). It groups campaigns/scenarios that belong to each other.


What keys would a [chapter]-tag need?
  • id=
  • name=
  • description=
  • icon=
  • first_scenario=
  • maybe its own define= , so that only the relevant parts of the ressources of the campaign-package are used
How would it interact with the [campaign]-tag?
The [campaign]-tag defines the ressources via define= that are shared across all chapters of a campaign-package (once again [chapter] might be misleading, because it might also mean its own campaign, so [subcampaign] might work better). The id=, name=, icon= keys of [campaign] would just keep on defining the relevant things of the campaign-package that is displayed in the original campaign list. If a [chapter] tag is used, the first_scenario= and description= -keys of [campaign] are ignored, instead, the description of the active [chapter] is shown.
If there is no [chapter]-tag, nothing changes.


Let us do an example

Code: Select all

[campaign]
	id=Oath_of_Allegiance_LIB
	name= _ "Oath of Allegiance"
	abbrev= _ "OA"
	define=CAMPAIGN_OATH_OF_ALLEGIANCE
	
	#used for the icon in the icon list
	icon=data/add-ons/Oath_of_Allegiance/images/icon.png
	
	#the image is the title image that is shown below the chapters
	image=data/add-ons/Oath_of_Allegiance/images/title.png~SCALE(400,360)

	[chapter]
		id=Reclaiming_the_Southwoods
		name=_ "Prequel: Reclaiming the Southwoods"
		description= _ "Accompany Nuvdael, an exiled elvish general and reclaim what rightfully belongs to you

" + _ "(Intermediate difficulty, 5 scenarios)"
		icon=icon1.png
		first_scenario=01_Exiled
	[/chapter]

	[chapter]
		id=Oath of Allegiance
		name=_ "Part I: Oath of Allegiance"
		description= _ "Accompany Ilriel, an elvish druid of the Southwoods of Wesnoth, and take part in an unforeseen and unintentional adventure that leads to lands far away.

" + _ "(Intermediate difficulty, 25 scenarios)"
		icon=icon2.png
		first_scenario=01_From_Afar
	[/chapter]

	[chapter]
		id=The Destruction
		name=_ "Part II: The Destruction"
		description= _ "Blah

" + _ "(Intermediate difficulty, 1 scenario)"
		icon=icon3.png
		first_scenario=01_The_Destruction
	[/chapter]

[/campaign]

#ressources that are used by all [chapters]
#ifdef CAMPAIGN_OATH_OF_ALLEGIANCE
	[binary_path]
		path=data/add-ons/Oath_of_Allegiance/
	[/binary_path]
	{~add-ons/Oath_of_Allegiance/macros}
	[+units]
		{~add-ons/Oath_of_Allegiance/units/}
	[/units]
	{~add-ons/Oath_of_Allegiance/scenarios}
	{~add-ons/Oath_of_Allegiance/terrain}
#endif

How would that look like?

I'd suggest something like this (click to enlarge):
chapter-mockup.png
Pros
  • visualize that certain campaigns belong to each other and play within their own 'micro-cosmos'
  • showcase that these campaigns use the same ressources
  • loosen the original campaign selection list that easily gets bloaten up by campaigns with several parts
  • can be used by 'mainline-scenario-packages' in case these become reality in the future
  • special usecase: allow to start a campaign from several points (I think LoW in multiplayer does something like that, doesn't it?)
Alternative
Other than that, there could also be a [campaign_group]-tag that would then group the relevant campaigns (equivalent to [editor_group]). So each campaign of a group can be downloaded from the add-ons servers individually and then gets grouped and displayed as above. Might be useful, if the campaigns do not share ressources.

There's at least a good handful of UMC-creators out there that could make use of such a feature. What's your opinion on that?
Last edited by Kwandulin on August 25th, 2016, 12:46 pm, edited 1 time in total.
User avatar
ForestDragon
Posts: 1769
Joined: March 6th, 2014, 1:32 pm
Location: Ukraine

Re: Add [chapter] to [campaign]-tag

Post by ForestDragon »

actually a great idea! since using multiple [campaign] tags can take up a bit too much space, i like the idea :D
My active add-ons: The Great Steppe Era,XP Bank,Alliances Mod,Pestilence,GSE+EoMa,Ogre Crusaders,Battle Royale,EoMaifier,Steppeifier,Hardcoreifier
My inactive add-ons (1.12): Tale of Alan, The Golden Age
Co-creator of Era of Magic
Tad_Carlucci
Inactive Developer
Posts: 503
Joined: April 24th, 2016, 4:18 pm

Re: Add [chapter] to [campaign]-tag

Post by Tad_Carlucci »

The [chapter] tag would promote larger campaigns. The problem with the current state of WML preprocessing and loading is it's all-or-nothing.

So, the [chapter] tag would need to operate as a [campaign] tag, and have it's own define= preprocessing symbol to prevent loading components other than those for the specific chapter.

In this way, the [campaign]define= allows only those components needed by more than one chapter, while a [chapter]define= allows only those components needed within that chapter.

In addition, it would make great sense to continue the define= modification to add the tag to [scenario] as well.
I forked real life and now I'm getting merge conflicts.
User avatar
doofus-01
Art Director
Posts: 4122
Joined: January 6th, 2008, 9:27 pm
Location: USA

Re: Add [chapter] to [campaign]-tag

Post by doofus-01 »

Aside from the GUI/sub-menu thing, I'm not seeing what this does that the current [campaign] tag can't already do, though maybe I am missing something. If it really doesn't add much, I'd be against it. define= modification for scenarios sounds like a good idea, though it may give more opportunity for trouble.

I suppose a "campaign_group" key could be useful for [campaign], so that grouped campaigns are kept together in the initial selection list in the event of a rank clash with another add-on (I haven't seen such a clash, but maybe I just don't have enough add-ons downloaded).
BfW 1.12 supported, but active development only for BfW 1.13/1.14: Bad Moon Rising | Trinity | Archaic Era |
| Abandoned: Tales of the Setting Sun
GitHub link for these projects
Tad_Carlucci
Inactive Developer
Posts: 503
Joined: April 24th, 2016, 4:18 pm

Re: Add [chapter] to [campaign]-tag

Post by Tad_Carlucci »

While I will admit, I've considered a [chapter] tag, and have notes on it, I consider it a very low-priority idea.

To my mind there are two issues which MUST be resolved before it could be implemented.

The first I mentioned above: memory. The BfW game engine is already using a lot, and seems to be leaking; and that's with the current mainline campaigns. The growth in size which [chapter] would promote might push things over the edge.

The second is a simple question of philosophy. In my experience, there are usually only three 'numbers' which matter to a systems design: zero, one and infinity. The current design offers zero levels of depth (stand-alone scenario) and one level of depth (campaigns as a series of scenario) so the question is should it offer infinite levels of depth (campaigns as a series of chapters and scenarios; where chapters are, themselves, a series of chapters and scenarios). Once added, conceptually, any limit to the nesting depth for [chapter] is arbitrary. The OP chose "one" but we can choose any number we wish. But, always remember, whatever arbitrary limit is chosen, a request will appear to increase it by one. Thus, the limit is effectively 'infinite' and the design should recognize it as such along with the need for an arbitrary (and, possibly, modifiable) limit.
I forked real life and now I'm getting merge conflicts.
User avatar
doofus-01
Art Director
Posts: 4122
Joined: January 6th, 2008, 9:27 pm
Location: USA

Re: Add [chapter] to [campaign]-tag

Post by doofus-01 »

Tad_Carlucci wrote:The growth in size which [chapter] would promote might push things over the edge.
If there were such an explosion in new content, that would be a good problem to have.
Tad_Carlucci wrote:Once added, conceptually, any limit to the nesting depth for [chapter] is arbitrary. The OP chose "one" but we can choose any number we wish. But, always remember, whatever arbitrary limit is chosen, a request will appear to increase it by one. Thus, the limit is effectively 'infinite' and the design should recognize it as such along with the need for an arbitrary (and, possibly, modifiable) limit.
Well, isn't [scenario] the limit? And why would someone want such nesting depth?
Do they have so many assets that each scenario is so heavy? That would, again, be a good problem to have.
Would someone think having more nesting depth gives them more "cred"? Such a person should be ignored.

I ask these questions, but even after more thought, I still don't see what this [chapter] feature would add.
BfW 1.12 supported, but active development only for BfW 1.13/1.14: Bad Moon Rising | Trinity | Archaic Era |
| Abandoned: Tales of the Setting Sun
GitHub link for these projects
User avatar
Kwandulin
Art Contributor
Posts: 362
Joined: March 30th, 2014, 7:35 am
Location: Germany

Re: Add [chapter] to [campaign]-tag

Post by Kwandulin »

It doesn't add something new in the sense of new functionality. Instead, it uses already existing functionality for a new visualization and display that certain campaigns are meant as part I /part II /part III / part XY. In general, it is not meant to group all campaigns of a campaign author. For example grouping the Secrets of the Ancients and the Founding of Borstep by beetlenaut wouldn't make too much sense.

Currently, some UMC-creators put "Part I"/"Part II"/"Part III / Part XY" into the name of the campaign parts to do this. LotI by Dugi does this, Grnk the Mighty by mattsc does this, the Underness Series by WhiteWolf does this via the campaign description (and thus - at the first sight - one is not able to see that these campaigns belong together) and there are certainly a few more out there. It seems like it was never intended to have campaigns with several parts. The intent of [chapter] is not to promote larger campaigns but to give already existing larger campaigns such as the mentioned ones a convenient way to display their parts. The current visualization of campaign parts as single campaigns imply that these are stand-alone campaigns, which they often aren't (either gameplay or story-wise). The suggested [chapter] would group those campaign parts and say loudly: "hey, these belong together and should be seen as a whole". It's just a convenience for the ordinary mortal user. And since BfW is hitting steam, stuff that is making life easier for the user is something that should be taken into account.

Also, think of "complementary scenarios". Imagine the Rise of Wesnoth where at the end of the first scenario King Eldaric is left behind to fight the orcs. Later the player gets notice that the King got killed. A complementary, stand-alone scenario could now to pick the last stand of Eldaric out as a central theme that can bring more depth to the campaign. Such a scenario wouldn't deserve its own campaign tag and icon in the campaign list due to its very limited size, instead, it would be grouped with the campaign via [chapter]. Note that my suggestion is aimed towards UMC, though.

A story-heavy scenario-package as mentioned in the first post would be the extreme of this case. Currently, there is no sane way to display those. With [chapter] there is. I don't see how a [sub_chapter]-tag would do anything that [chapter] doesn't already do.

The image in the first post is just a suggestion for how that could be visualized. There might be better ways to showcase this. There could also be a dropdown menu that lists the parts once the main icon is clicked.
Tad_Carlucci
Inactive Developer
Posts: 503
Joined: April 24th, 2016, 4:18 pm

Re: Add [chapter] to [campaign]-tag

Post by Tad_Carlucci »

doofus-01 wrote:
Tad_Carlucci wrote:The growth in size which [chapter] would promote might push things over the edge.
If there were such an explosion in new content, that would be a good problem to have.
No, it would not.

I doubt we'd like the reputation we'd get on Steam if we started putting out campaigns which, if you played them this way, worked; but if you played them that way, suddenly all you saw was a blank screen, maybe with a message at the bottom reading "Out of memory."

My point about 0 vs 1 vs infinite is, if you're going to change [campaign]->[scenario] to allow [campaign]->[chapter]->[scenario] it won't be long before someone asks for [campaign]->[volume]->[chapter]->[scenario] and soon after we'll see [campaign]->[edition]->[volume]->[chapter]->[scenario] then we'll want ...

As a design principle, it's either not allowed, allowed once, or allowed as much as you want.

As an implementation issue, of course, there must be some limit.

It's like your hard drive. You have one or you don't. If you have one it contains files. But it may, or may not, allow directories which, themselves, contain files. If it allows directories, then it allows sub-directories, which also contain files. In principle, there is no limit to how deeply nested you can have directories. But, in practice, most (if not all) systems limit it in some way (either by nesting level or by the total length of the name needed to uniquely locate a file). [Unless you're running old version of Linux, which went with our current 'limitation" style and gave you a bunch of junk on the screen, starting with "Kernel Panic" ...]

So we have files ([scenario]) and we have hard drives ([campaign]) and the question is should we allow directories ([chapter]) and, if so, what can we do to keep things running when someone wants to store his files in sub-directories, and what is a reasonable limit for all that.
Last edited by Tad_Carlucci on August 29th, 2016, 7:34 pm, edited 2 times in total.
I forked real life and now I'm getting merge conflicts.
User avatar
skeptical_troll
Posts: 498
Joined: August 31st, 2015, 11:06 pm

Re: Add [chapter] to [campaign]-tag

Post by skeptical_troll »

I think the main point of this idea is about the interface, rather than how content is organized in memory. It would make a lot of sense to me that campaigns which are part of the same saga could be selected the way Kwandulin proposed in his first post, although there are just few examples I can think of, at the moment.

I don't think this would encourage the proliferation of sagas (it would be nice though), because the main obstacle is certainly the shear amount of work needed to make them, not the lack of a suitable interface.

I also don't see the 'danger' of a recursive request for new subtags of [campaign] as 'volume' , 'edition' etc. as there is a natural limitation set by the selection-window size.

So I think this is a nice idea, although I have no clue of how much work is required to implement it. If it's easy to do, then why not?
Tad_Carlucci
Inactive Developer
Posts: 503
Joined: April 24th, 2016, 4:18 pm

Re: Add [chapter] to [campaign]-tag

Post by Tad_Carlucci »

The whole issue of size, and running out of memory, comes from the current implementation which says "load everything about everything when we start" and "but, if the campaign designer knew about it, the internals of the campaign only load when the player selects the campaign".

Adding [chapter], nested or not, allows a designer to organize things. That makes it easier to design a campaign. Which means larger campaigns.

But, unless a change is made, the ENTIRE, larger campaign is going to be loaded!

So, if we're going to make it easier to make larger campaigns, we should, at the same time, make it easier (if not mandatory) that the designer segregate their content so only those parts needed for the area the player is currently using are actually loaded.

This reduces both the system requirements (by reducing the amount of memory consumed) and the wait time the player sees (because we're not loading a bunch of stuff the player won't need).
I forked real life and now I'm getting merge conflicts.
Tad_Carlucci
Inactive Developer
Posts: 503
Joined: April 24th, 2016, 4:18 pm

Re: Add [chapter] to [campaign]-tag

Post by Tad_Carlucci »

Could this be done simply as an interface issue? Sure.

All I'm saying is that, having made that change, it won't be long before we see down-stream bad effects. Memory exhaustion is already an issue, so that's where I'd expect the first bad effect to appear.

So, if we're going to change the interface to make it easier on the player and designer, we had best start considering how to mitigate the down-stream problems.

That said, I have no problem with doing the interface, first, in the -dev master and then working on the bad results it will cause. In fact, I'd very much like to see it happen ...
I forked real life and now I'm getting merge conflicts.
User avatar
skeptical_troll
Posts: 498
Joined: August 31st, 2015, 11:06 pm

Re: Add [chapter] to [campaign]-tag

Post by skeptical_troll »

I see. From this perspective, it seems to me that it would make sense to keep the campaigns as separated but to give the possibility to group them in the menu selection. So rather an external [saga] tag then a nested [chapter] . Of course, I totally ignore how the interface works, so I don't know if a new tag is needed for this or it could be done in a simpler alternative way.
User avatar
doofus-01
Art Director
Posts: 4122
Joined: January 6th, 2008, 9:27 pm
Location: USA

Re: Add [chapter] to [campaign]-tag

Post by doofus-01 »

Tad_Carlucci wrote:No, it would not.

I doubt we'd like the reputation we'd get on Steam if we started putting out campaigns which, if you played them this way, worked; but if you played them that way, suddenly all you saw was a blank screen, maybe with a message at the bottom reading "Out of memory."
If we were in a situation where there were many campaigns with a lot of content, that would ruin reputations?
Tad_Carlucci wrote:The whole issue of size, and running out of memory, comes from the current implementation which says "load everything about everything when we start" and "but, if the campaign designer knew about it, the internals of the campaign only load when the player selects the campaign".

Adding [chapter], nested or not, allows a designer to organize things. That makes it easier to design a campaign. Which means larger campaigns.
This can already be done. Call "Part 2" a campaign or call it a chapter, who cares?
Tad_Carlucci wrote:Could this be done simply as an interface issue? Sure.
That's what his proposal is.
Kwandulin wrote:It doesn't add something new in the sense of new functionality. Instead, it uses already existing functionality for a new visualization and display that certain campaigns are meant as part I /part II /part III / part XY.
skeptical_troll wrote:I don't think this would encourage the proliferation of sagas (it would be nice though), because the main obstacle is certainly the shear amount of work needed to make them, not the lack of a suitable interface.
Yeah.

What Tad_Carlucci is worried about strikes me as really odd, at least as he's explaining it. If I wanted to put a macro-bloated, infinite-loop mess with a ton of filter-generated PNGs up on the add-on server, I wouldn't need "chapters" or a "saga" to do it. Maybe give an example of an existing add-on that demonstrates such a problem?
BfW 1.12 supported, but active development only for BfW 1.13/1.14: Bad Moon Rising | Trinity | Archaic Era |
| Abandoned: Tales of the Setting Sun
GitHub link for these projects
Tad_Carlucci
Inactive Developer
Posts: 503
Joined: April 24th, 2016, 4:18 pm

Re: Add [chapter] to [campaign]-tag

Post by Tad_Carlucci »

It's that as we make it easier to organize, we make it easier to grow larger. Keeping track of an 80-scenario campaign it hard. But if you can do it as a growing series of 8 10-scenario sequences it's much easier. As the game is currently designed, those 8 10-scenario sequences are 8 separate campaigns. That means when a player selects one, they're only loading 10 scenario. But think: it's a single campaign, with 8 chapters, each with 10 scenario and, unless something changes, that means loading all 80, all at once. So it's not "just an interface issue".

"Oh, I wish we had that problem!" might sell the idea now but, when you hit the problem and the engine is crashing, it's going to change to "Why didn't you see this coming?" and "When will you get it fixed?" And telling people to wait while a major subsystem is torn down, rebuilt, retested and all the existing content involved with the problem either corrected or removed, isn't going to sell well.

The issue is what we call "technical debt". Sure, putting the user interface changes into place is relatively easy. But if you're not looking at the down-stream effects of those changes, you're building "technical debt." The problem is, at some point, someone is going to have to pay that debt. Now, you can pay in a number of ways. For example, you might pay that debt by telling the players and creators "No, you can't do that"; or you might pay it by having the game build a reputation for being buggy and crashing; or you can spend some time now and think about how to pay that debt up-front, which is what I'm advocating. But pay it, you will.
I forked real life and now I'm getting merge conflicts.
User avatar
zookeeper
WML Wizard
Posts: 9742
Joined: September 11th, 2004, 10:40 pm
Location: Finland

Re: Add [chapter] to [campaign]-tag

Post by zookeeper »

For what little it's worth, I have no particular opinion either way. The main selling point for me would be to better facilitate the single scenario pack(s).

The concern of the feature causing authors to go berserk and make so much content that the game runs out of memory seems rather theoretical. The only scenario in which that seems like it could happen is if people start making "campaign packs" which mindlessly lump lots of other peoples' campaigns together (imagine a "Best Wesnoth campaigns!!!" pack that includes 10 of the biggest and flashiest ones). But is that really a concern at all? People could do that already, but don't, and if they did such an add-ons can always be taken down.
Post Reply