Michael Eriksson's Blog

A Swede in Germany

Posts Tagged ‘Wesnoth

Follow-up: Revisiting verbosity based on Wesnoth

leave a comment »

A minor unfairness in my recent text on Wesnoth was the use of an outdated version (1.12), instead of the latest (1.14).

I have since installed and briefly tried 1.14 through use of Debian’s “backports”. My experiments were cut short by the fact that it was unplayable on my computer for performance reasons. Specifically, the game used up an entire processor core even when doing nothing* and was slow as molasses—click somewhere and the reaction took place ten seconds later…**

*Including when being on the start screen and when having all animations deactivated.

**Note that this is a different type of delay than discussed in the original text: There we had artificial delays deliberately introduced by misguided developers; here we have delays as a side-effect of a too resource-consuming application.

If (as it likely was*) this performance delay was caused by changes to Wesnoth it self, it demonstrates a disastrous attitude so common in today’s software—the assumption that any type of performance waste in order to gain minimal benefits is acceptable. Notably, nothing that this game does should cause such performance delays. That the display part can be handled much more efficiently is proved by older versions of the game, the amount of calculation needed during user interaction is negligible, and the observed delays were by no means restricted to the AI’s/computer’s play**. And, no, neither 1.14 nor the older versions use graphics of an impressive kind—strictly 2D, a mostly static map (especially with animations off), no fanciful textures, …***

*It is unlikely-but-conceivable that some version incompatibilities or other problems in/with/between the simultaneously backported libraries and/or the original setup led to problems that are not the fault of Wesnoth. (The backports are typically nowhere near as thoroughly tested and come with far less guarantees than the “regular” Debian packages.)

**If it had been, it might be explained by deep analysis, simulation, or whatnot preceding the AI’s decisions. However, considering how trivial and fast the AI had been in older incarnations, this would have been a surprising development.

***Which is good: There is no true benefit to be found from such features in a game of this type. Equally, chess is played just as well with a simple wooden board and wooden pieces as if diamonds and rubies were used—likely, better.

I did manage some minor comparisons with 1.12 before giving up, however, and must amend my original criticism slightly: The blend-in of text and movement-to-and-from-a-war-council in 1.12 were not as slow as I perceived them when writing the original text. (However, both are still entirely unnecessary delays. Also note that at least the latter is sped up by a factor of four in my settings, compared to the default.) Here we likely see an effect of different standards of comparison: During regular play, I am used to things happening very quickly; coming straight from experiences with 1.14, I saw the contrast to the truly slow.

(As for differences, they appeared to be mostly optical. However, I did not manage to do any non-trivial game play nor test some of the features at all or more than very superficially, and there might have been significant changes that I am not aware of.)

Excursion on performance:
It is true that processing power is quite abundant today, with even a low-end cell-phone comparing well to the first computers that I knew. However, it is still not a limitless resource; not all computers have top-end processors (graphics cards, whatnot), notably because even an outdated low-end notebook can handle almost any task with ease;* and there are still factors like environmental impact and battery life to consider when a heavy workload increases energy consumption. In some case, even heat might be a factor to consider—what if a game is not playable on a hot summers day?

*For instance, my current notebook has a quadcore processor topping out at 2 GHz and only “on-board” graphics—and that is more than enough to watch even HD movies, play older versions of Wesnoth, listen to music, browse the Web, etc. Indeed, the average load on my processor is often below 1 %…

It is also noteworthy that some of this computing is a complete waste, e.g. because (as with 1.14) there is no benefit to it. Often, it is based on faulty assumptions about what the user wants.* Often, it is a pseudo-optimization; sometimes, it is even contra-productive.** It is particularly infuriating when an idle application (as with 1.14 above) runs the processor up—by rights, it should have a negligible processor load. Even as a professional software developer, I have problems understanding how they manage the opposite: Is it amateurish “busy waiting”? Is it a polling multiple times per second for an event that takes place every few hours? Is it a hidden malware that tries to spy on me? Is it an equally hidden bitcoin-mining operation? …

*For instance, many applications leave background processes hanging around after they are (ostensibly) terminated. This is usually with the intent that the application should start faster the second, third, fourth, … time around—but what if this does not happen for several weeks or only after a re-boot? Worse, there are some applications (especially on Windows machines) that insist on starting such background processes before the first application start. What if the actual application is then never started?

**A good potential example of contra-productive “optimization” is the “save_index” file of Wesnoth: Interacting with the saves is usually faster after deleting it… (I have not studied its exact purpose, but based on the name, it is likely intended to speed up said interaction. I note that I have never experienced any negative side-effects of the deletion.) And, no, this is not a unique example: I first deleted this file because I knew that emptying a cache (or a similar measure) often had led to a speed-up in other applications and thought that I should at least give it a try. Indeed, while caches can have major benefits in the right situation, they are often more a hindrance than a help. For instance, it only rarely makes sense for an application to add its own file caching on top of the file caching done by the operating system and other mechanisms. (And the introduction of SSDs have created many situations where the value of any file caching is strongly reduced compared to the past.)

Advertisement

Written by michaeleriksson

December 2, 2018 at 1:39 am

Revisiting verbosity based on Wesnoth

with one comment

Since writing a text dealing with verbosity (among other things), I have dabbled with Wesnoth*, which well illustrates the problems with undue verbosity, lack of tempo, and similar:

*See an excursion for some information and a few notes on terminology beneficial for the non-player’s understanding of this text.

  1. Most campaigns contain an undue amount of narration and dialogue*.

    *Which is fixed in advance. Only very rarely can the player influence the development of the dialogue, and then only within a small set of fix choices.

    Now, a good story can make a campaign more enjoyable*; however, the point of the game is to play the game—if I want to read an extensive story, I can just grab a book.

    *Especially, through adding aspects with no correspondence in the “pure” game, e.g. character background or a romantic sub-theme.

    Worse: Most of the resulting text is pointless. It adds no value to the story or the overall enjoyment; is repetitive; states what should be a given; or is otherwise a waste of time. (That the text is very often poor by criteria relating to prose, effectiveness, story-telling, …, does not help—but that is an unrelated topic.)

    For instance, very many scenarios start with multiple enemy leaders saying variations of “I will crush you, puny humans!” or “Victory shall be ours!”—which reminds me of German sports writers, who do not tire of headings like “X will den Sieg!” (“X wants to win!”). What had they expected that made that news-worthy?!?

    Another complete idiocy is “war council” scenarios where various characters make mostly pointless statements, sometimes leading up to half-a-dozen characters, one after the other, saying “Agreed!” (or something to that effect)—where a simple “(All agree.)” would have done just as well, with a fraction of the player’s time wasted. Usually, the entire council could have been compressed into just a few lines of dialogue or replaced by a simple narrative message.

    The bulk, however, is lost on unduly long narration, mostly amounting to filler.

    To boot, if a campaign is played more than once, the value of the (textual parts of the) story are diminished further (while the non-story parts remain similarly interesting to the first time). What might be acceptable the first time around, need not be so the second, third, or fourth time.

    Sometimes, it is so bad that I skip entire sequences of story (which is, fortunately, possible as a lesser evil)—but am then (a) left with no benefit at all from the story, (b) often lack context,* and (c) can miss various hints to optimal game play given in the text**.

    *E.g. in that I do not know why I suddenly have an ally or why I am suddenly trying to defeat a band of orcs, instead of those undead that had hitherto been the main enemy.

    **E.g. that a wooded area contains hidden enemies or that some aspect of the standard game-mechanisms has been temporarily altered.

    Most campaigns would be better by cutting the text in half; some would be better by cutting it to a tenth. (Note that I do not say that the story should be cut—only the text.) Generally, it is important to understand that different types of work require different types of writing—a game is not a novel, a play, or even a comic.

  2. The previous item is made the worse by limitations in the way that the game displays text: A longer piece of narration is displayed with no more than a few lines at a time (the next few lines following after user confirmation) and in an annoying manner, where each line is slowly blended in, one after the other. (Fortunately, this blend-in can be skipped by pressing the space key; however, this risks skipping too far, and a setting to skip the blend-in as a matter of course is not present.) Similarly, dialogue, even single words, is always displayed individually for each character speaking. Both imply that the user (even when wanting to read) has to hit the space key every few seconds; both have negative effects on strategies like getting a cup of coffee between scenarios to read the narration and dialogue at the beginning of the next scenario in a fully relaxed state.

    A particular annoyance with dialogue is that any utterance causes the view of the “board” to be focused on the speaking character, which leads to an additional delay and implies that the focus will usually end up at a different portion of the board than before the dialogue.*

    *Since the original focus is not restored. This is OK for pre-scenario dialogue, but problematic with in-game dialogue: Consider making a move to attack, having that attack interrupted by a triggered dialogue, and then having to scroll back to attempt the attack again… This leads to yet another unnecessary delay.

  3. The problems are not limited to text. For instance, some war-council scenarios contain sequences of half-a-dozen characters moving across the board, saying something, and then moving back across the board. These movements bring no value, appear to be unskippable, and take an excruciating* amount of time, during which the player can do nothing within the game. Still, some campaign makers have deliberately taken the effort to add these “value subtracted” moves…

    *I play with the animation speed increased by a factor of four (and have all unnecessary animations turned off). Even so, such sequences are horribly slow. With default settings, the best bet would be to grab a book until the movements are over—which really shows how redundant they are. (Another interface quirk is that the next faster setting is a factor of eight, which would be beneficial here, but might make other portions of the game move too fast.)

  4. A related scenario-error within regular game play is to involve too many units at the same time. For instance, there are a some battle scenarios (e.g. in “Legend of the Invincibles”) with more than a hundred AI-controlled units on the board at the same time (almost all of which are moved every single round)—and where it takes several rounds for the player and the AI-controlled enemy to even make contact.* The ensuing (mostly) unimportant movements, can go on for minutes… Even after contact is established, it takes quite a while before the majority of the units are actually involved in fighting—and that often occurs because sufficiently many of units have finally been killed off…

    *A better way to handle so large battles is to give the opponents less “starting gold” and more “income” or otherwise delay the “recruitment” (without reducing the total number of units eventually involved). A partial improvement is to reduce distances between opponents, but this could lead to a too fast defeat of some of the enemies or increase the influence of luck.

    In such cases, I have even made my own moves, done something completely different while waiting for the computer to make its moves, and then just checked whether the outcome was sufficiently satisfactory* when it was my turn again. Of course, this work-around is often foiled by some random dialogue in the middle of the battle, e.g. when an important enemy unit died. I then have to click through the dialogue, restart the battle, and go back to my “something completely different” for another few minutes…

    *With an eye on two things: Firstly, the loss of some specific units can lose the game outright. Secondly, if too large losses of other units occur, an eventual victory would by Pyrrhic. In both cases, it is time to start the scenario over with a better approach.

In the defense of these campaigns, they are contributed by various users and, therefore, rarely written by professionals. Then again, the more “professional” a campaign appears in other regards, the more text there tends to be (both in general and with regard to “pointless” text).

Excursion on Wesnoth, background information, and terminology:
The games is officially called “Battle of Wesnoth”. It is a turn-based strategy game, mostly played against an AI, which I played very often some years back—before frustration with too great an influence of luck, a poor user interface, and many idiocies in campaigns eventually drove me away. (The issues discussed here relate to literal or metaphorical verbosity—the overall list would be much longer.)

A “campaign” is a series of linked scenarios, roughly equivalent to the overall adventure or war. A “scenario”, in turn, is roughly a sub-adventure or a single battle. A “unit” corresponds to a piece in chess. I have otherwised tried to be low on “technical terms”, in favor of what those unexperienced with computer games and/or Wesnoth might find understandable.

Note that some descriptions above have been simplified compared to actual play. (For instance, even the large battles scenarios discussed above will typically start with only a handful of units, and see armies rapidly expand through “recruitment”.)

Those interested can download it for free from the official Wesnoth website, which also provides more detailed knowledge than given here.

Disclaimer: I played using the latest version available in the standard Debian repositories (1.12), which is not the latest version released. However, this should only affect general game-features, not individual campaigns. Further, the user interface has never improved* much in the past, leaving me pessimistic concerning later versions.

*Add more unnecessary or even annoying animations—yes. Tweak the looks of various units—yes. Improve actual usability—no.

Excursion on reading speed:
I suspect that some of the above is worse for those who read or process information faster, e.g. in that the “coffee strategy” will work better for a slower reader, who will hit the space key less frequently and have more time to relax during an individual portion of text. (On the other hand, a slower reader will, obviously, need longer to reach game play, and might grow more frustrated with the length of the delay.)

Excursion on “The Elements of Style”:
“Omit needless words” is likely the most famous claim in that book. Examples like Wesnoth and Der Untergang des Abendlandes really drive home the point. Notably, the main problem with both is the sheer quantity of needless words (and needless movements, etc.). The latter also shines a different light on this recommendation, in as far as “The Elements of Style” was written in a different era, when texts like Spengler’s were far more common than today, and the advice correspondingly more beneficial: Looking at typical writing back then, it was likely the single most important advice to give; today, it is “merely” good advice. For instance, my recent criticism of Stephen King’s novels (as too thick for their own good) is not rooted in individual formulations being unduly long*, but in problems on a higher level, e.g. individual scenes that could be cut out or shortened without loss.

*His sentences are reasonably compact—certainly, more so than my own…

Written by michaeleriksson

November 18, 2018 at 11:43 pm