Jump to content


WFG Programming Team
  • Posts

  • Joined

  • Last visited

  • Days Won


Posts posted by Gallaecio

  1. In the 0 A.D. code there are some unit parameters that control the time that passes between two consecutive attacks of a unit.

    There is a technology that reduces this value by 20%. That means there is 20% less time between attacks, which means 25% higher attack speed (1/0.8=1.25).

    How should we cover this and similar scenarios in user-visible tooltips?

    • −20% attack repeat time
    • −20% attack time
    • −20% time between attacks
    • +25% attack speed
    • [something else]

    For background, see the change proposal that triggered this topic.

    CC: @elexis @Freagarach @Nescio @otero @Palaxin @fatherbushido @mimo @Itms

  2. I would like to run the current JavaScript automated tests, as a first step to write my own, however I do not think I am running them.

    The reason why I think I am not running them is because

    ./binaries/system/test --help-tests

    does not list UnitAI, which is the specific JavaScript test file I wanted to extend with new test cases.

    So, is the 


    command running the JavaScript automated tests as well? If so, how can I verify so? Otherwise, how can I run the JavaScript automated tests?

  3. 8 hours ago, causative said:

    "Maximum population limit" is too verbose.  "Maximum population" says the same thing in fewer words.  Also, "population limit" could be confused with the population cap.  Just "housing" is clearer.  My choice for all three would be:  population / housing / population cap.

    I believe "maximum" here can be read as "upper limit", so to me what is the same is "maximum population" (population upper limit) and "population limit", since in that context the direction of the limit is obvious. "Maximum population limit" is the upper limit of the limit, so I think @Nescio's proposal makes sense.

    That said, I am hoping for proposals that use much more different terminology, because although the difference between "maximum population limit" and "population limit" may seem obvious when both expessions are considered side by side, it may not be so when they are seen apart, where users may think that "maximum population limit" is just the same as "population limit".

  4. The Big Question

    A. How would you call the population limit of a specific player that can be extended during a game?

    B. How would you call the population limit of any player that cannot be extended during a game?


    • The answer for A and B must be different.
    • Feel free to provide multiple answers.
    • Generally, the fewer and shorter the words, the better.
    • Extra points if your choice for A cannot be misunderstood for B, your choice for B cannot misunderstood for A, and none of your choices can be misunderstood for a different concept (e.g. the sum of the A or B limits of all players during a game, or the maximum B limit of 0 A.D. itself).

    Explain! Explain!

    I’ve recently started working on an English Style Guide for 0 A.D. The goal is to provide developers with guidelines to follow when writting user-facing texts, so that game texts gain consistency providing a slightly better experience for players and a significantly better experience for translators. So I am reviewing translator reports about English strings, and trying to build the English Style Guide as I improve the affected English strings.

    I believe some of the core principles of English style guides for software are:

    • Use unambiguous words to refer to a concept.
    • Always the same words to refer to the same concept.
    • Never use the same words to refer to two different concepts.

    And there is one clear case where the current texts of 0 A.D. break all of these rules: the population limit. (Thanks to @GunChleoc for bringing it up on Transifex)

    See, 0 A.D. does not have a single population limit. We have two different population limits:

    A. The population limit of a specific player during a game, that can be extended by building houses, researching technologies, and so on.

    B. The population limit of any player during a specific game, the one that no player can surpass regardless of houses built, technologies researched, and so on.

    And the terminology that we use in 0 A.D. to refer to them is often ambiguous, with different words used in different parts of the game, and with the same words use to refer to both types of population limit in different parts of the game. Used words include: population limit, population cap, maximum population, maximum population limit.

    So I wish your feedback in finding the right terminology to handle these concepts in the game texts.

    I propose to keep this topic open until someone proposes a clear winner or, if there is no clear winner some time from now, to create a poll to choose one. I would rather not rush the choice, but I wish to have this settled by the time I finish dealing with the rest of the issues raised by translators on Transifex (in maybe a few months).


    • Be creative.
    • Check what other similar games use.
    • Have a thesaurus at hand.
    • Like 3
    • Thanks 1
  5. Input:

    cd build/workspacesunset CPPFLAGS # for le spidermonkey./update-workspaces.sh \  --disable-atlas \  --with-system-miniupnpc \  --with-system-nvtt \  --bindir=/usr/bin \  --libdir=/usr/lib/0ad \  --datadir=/usr/share/${pkgname}/data


    Updating bundled third-party dependencies...Building SpiderMonkey...SpiderMonkey build options: --enable-shared-js --enable-gcgenerational --disable-tests --without-intl-api      --host=x86_64-unknown-linux-gnu   --enable-shared-js --enable-gcgenerational --disable-tests --without-intl-api --host=x86_64-unknown-linux-gnupatching file js/src/jit/BaselineCompiler.cppHunk #1 succeeded at 338 (offset 1 line).patching file js/src/vm/TraceLogging.cpppatching file js/src/vm/TraceLogging.hpatching file js/src/jit/MCallOptimize.cppHunk #1 succeeded at 1734 (offset -55 lines).patching file js/src/builtin/TypedObject.cppHunk #6 succeeded at 2461 (offset 17 lines).patching file js/src/frontend/BytecodeCompiler.cpppatching file js/public/Utility.hHunk #1 succeeded at 89 (offset 6 lines).patching file js/src/jsgcinlines.hpatching file js/src/vm/Debugger.cppcreating cache ./config.cachechecking host system type... x86_64-unknown-linux-gnuchecking target system type... x86_64-unknown-linux-gnuchecking build system type... x86_64-unknown-linux-gnuchecking for gawk... gawkchecking for perl5... nochecking for perl... /usr/bin/perlchecking for gcc... gccchecking whether the C compiler (gcc -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -Wl,-O1,--sort-common,--as-needed,-z,relro) works... yeschecking whether the C compiler (gcc -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -Wl,-O1,--sort-common,--as-needed,-z,relro) is a cross-compiler... nochecking whether we are using GNU C... yeschecking whether gcc accepts -g... yeschecking for c++... c++checking whether the C++ compiler (c++ -DTRACE_LOG_DIR="\"/tmp/traces/\"" -Wl,-O1,--sort-common,--as-needed,-z,relro) works... yeschecking whether the C++ compiler (c++ -DTRACE_LOG_DIR="\"/tmp/traces/\"" -Wl,-O1,--sort-common,--as-needed,-z,relro) is a cross-compiler... nochecking whether we are using GNU C++... yeschecking whether c++ accepts -g... yeschecking for ranlib... ranlibchecking for as... /usr/bin/aschecking for ar... archecking for ld... ldchecking for strip... stripchecking for windres... nochecking how to run the C preprocessor... gcc -Echecking how to run the C++ preprocessor... c++ -Echecking for sb-conf... nochecking for ve... nochecking for a BSD compatible install... /usr/bin/install -cchecking whether ln -s works... yeschecking for tar archiver... checking for gnutar... nochecking for gtar... nochecking for tar... tartarchecking for minimum required perl version >= 5.006... 5.018000checking for full perl installation... yeschecking for python2.7... /usr/bin/python2.7Creating Python environmentNew python executable in /chakra/desktop/0ad/src/0ad-0.0.19-alpha/libraries/source/spidermonkey/mozjs31/js/src/build-debug/_virtualenv/bin/python2.7Also creating executable in /chakra/desktop/0ad/src/0ad-0.0.19-alpha/libraries/source/spidermonkey/mozjs31/js/src/build-debug/_virtualenv/bin/pythonInstalling setuptools, pip...done.running build_extcopying build/lib.linux-x86_64-2.7/_psutil_linux.so -> copying build/lib.linux-x86_64-2.7/_psutil_posix.so -> checking Python environment is Mozilla virtualenv... Traceback (most recent call last):  File "<string>", line 1, in <module>  File "/chakra/desktop/0ad/src/0ad-0.0.19-alpha/libraries/source/spidermonkey/mozjs31/python/mozbuild/mozbuild/base.py", line 17, in <module>    from mach.mixin.process import ProcessExecutionMixin  File "/chakra/desktop/0ad/src/0ad-0.0.19-alpha/libraries/source/spidermonkey/mozjs31/python/mach/mach/mixin/process.py", line 29, in <module>    raise Exception('Could not detect environment shell!')Exception: Could not detect environment shell!configure: error: Python environment does not appear to be sane.------ config.log ------configure:3164:1: warning: incompatible implicit declaration of built-in function 'exit'configure:3164:1: note: include '<stdlib.h>' or provide a declaration of 'exit'configure:3187: checking for ranlibconfigure:3219: checking for asconfigure:3273: checking for arconfigure:3308: checking for ldconfigure:3343: checking for stripconfigure:3378: checking for windresconfigure:3917: checking how to run the C preprocessorconfigure:3938: gcc -E  conftest.c >/dev/null 2>conftest.outconfigure:3997: checking how to run the C++ preprocessorconfigure:4015: c++ -E  conftest.C >/dev/null 2>conftest.outconfigure:4075: checking for sb-confconfigure:4075: checking for veconfigure:4137: checking for a BSD compatible installconfigure:4190: checking whether ln -s worksconfigure:4212: checking for tar archiverconfigure:4218: checking for gnutarconfigure:4218: checking for gtarconfigure:4218: checking for tarconfigure:4256: checking for minimum required perl version >= 5.006configure:4267: checking for full perl installationconfigure:4285: checking for python2.7configure:4395: checking Python environment is Mozilla virtualenvconfigure: error: Python environment does not appear to be sane.ERROR: SpiderMonkey build failed
  6. OK, these are the final numbers:

    [gallaecio@afonso i18n]$ python2 updateTemplates.py
    Generated “engine.pot” with 6 messages.
    Generated “public.civilizations.pot” with 534 messages.
    Generated “public.gui-ingame.pot” with 286 messages.
    Generated “public.gui-gamesetup.pot” with 300 messages.
    Generated “public.gui-lobby.pot” with 105 messages.
    Generated “public.gui-manual.pot” with 109 messages.
    Generated “public.gui-other.pot” with 393 messages.
    Generated “public.templates-units.pot” with 582 messages.
    Generated “public.templates-buildings.pot” with 336 messages.
    Generated “public.templates-other.pot” with 222 messages.
    Generated “public.simulation-technologies.pot” with 430 messages.
    Generated “public.simulation-other.pot” with 137 messages.
    Generated “public.maps.pot” with 382 messages.

    Using this messages.json file: http://paste.kde.org/pvxgefs5v

    Thumbs up?

  7. I’m going to start working on #2494 Split the POT file of the public mod in more manageable POTs. But before I start with this task, I would appreciate it if other translators could give me feedback about this split, in the form of suggestions on what you would want to have in a separate translation file.

    Currently we have two translation files, one for the engine (engine.pot) and one for the game data (public.pot). The latter contains 3,665 translatable strings, which I bet most of you consider way too many for a single file.

    So, what content of the game data translation file (public.pot) would you like to see in a separate translation file to make it easier to handle?

    For example, let me suggest splitting the translation file like this:

    • campaigns, campaign strings (simulation/templates/campaigns/).
    • civilizations, civilization strings (civs/).
    • gaia, for gaia strings (simulation/templates/template_gaia*, simulation/templates/gaia/).
    • gui, for GUI strings (globalscripts/, gui/, simulation/data/game_speeds.json, simulation/data/player_defaults.json, simulation/data/map_sizes.json, simulation/ai/, simulation/templates/formations/).
    • help, for help strings (gui/manual/intro.txt, gui/manual/userreport.txt).
    • logic, for strings related to the game logic (simulation/components).
    • maps, for map names, descriptions, etc. (maps/).
    • other, for strings that do not fir anywhere else (simulation/templates/other/)
    • quotes, for quotes (gui/text/quotes.txt).
    • structures, for structure strings (simulation/templates/template_structure*, simulation/templates/structures/, simulation/templates/skirmish/structures/).
    • technologies, for technology strings (simulation/data/technologies)
    • tips, for tips displayed in the loading screen (gui/text/tips/).
    • tos, for strings from the Terms of Service and the Terms of Use of the lobby (gui/lobby/Terms_of_Service.txt, gui/lobby/Terms_of_Use.txt).
    • tutorials, for tutorial strings (simulation/ai/tutorial-ai/).
    • units, for unit strings (simulation/templates/template_unit*, simulation/templates/units/).

    What would you change of that splitting? Split some module further? Merge some of these modules into a single module? Please, give your opinion!

  8. Still, Basque, proto-Basque, previous related languages that have been reconstructed somehow are closer (at least geographically) to Galicia and Portugal. It would be great to eventually have a Lusitanian civ, which would use the reconstructions that you are familiar with, but I dont think those Galician-Lusitanian language reconstructions are a better fit for the Iberian civilization than the ones we are already using.

    • Like 1
  • Create New...