NewGRF Meta Language: NML 0.4.0 released

Added by planetmaker 9 days ago

This version brings some major changes compared to the 0.3.x versions:

  • Conversion to python3. The minimum required python version now is python 3.2.
  • Rigerous caching of real sprites. This improves encoding speed a lot on subsequent runs, especially for NewGRFs with many real sprites, more so for 32bpp
  • Statistics on the NewGRF on used IDs for vehicles, houses, etc as well as available switches, parameters etc
  • Feature: [NewGRF] create_effect and effect_spawn_model
  • Feature: [NewGRF] EFFECT_SPRITE_NONE constant for create_effect callback
  • Feature: [NewGRF] support for OTTD_RECOLOUR action5 sprite(s)
  • Feature: [NewGRF] Support for Latin
  • Feature: [NewGRF] Variable to test for enabled wagon speed limits. (issue #6474)
  • Feature: [NewGRF] Warn about usage of animation and semi-transparent colours, and add spriteset flags to enable/disable the checks. (issue #1085)
  • Fix: [NewGRF] Number of vehicles in var 41 is one-based, only var 40 is zero-based.
  • Fix: [NewGRF] Patch flags can only be accessed via action 7/9. (issue #6996)
  • Fix: [NewGRF] Action7/9 bit tests must use varsize 1.

There's numerous other fixes, changes and additions. For a full changelog, see
Get the latest release version from the bundles server:

Note to package maintainers:

  • Dependency change: python 3.2+
  • Dependency change: preferably use pillow for python3 as imaging library instead of PIL.
  • Build requirement change (optional): c compiler needed to build the optional cython module for grf encoding (nml/_lz77.c). It's an optional speed improvement over the python-only implementation.

DevZone Help Center: Build retention policy

Added by planetmaker about 1 month ago

In recent months the retention policy for builds created by the DevZone's compile farm was rather liberal and all build for every push were kept. However, with the increasing size of NewGRFs (we needed to upgrade the allocated space for builds several times already) we need to go back to the original retention policy:

  • The three most recent builds on push will be kept available
  • Up to 20 nightly builds will be kept
  • All releases (tagged builds) will be kept

Nightlies are not built specifically anymore. But once a day, the build from the most recent push will be promoted to a nightly build.

See also our wiki page at UsingTheCF which documents the data retention policy. If you need one of the old nightly builds or push-builds, then please grab it now. The new build management script will be switched on in the coming days.

DevZone Help Center: DevZone: Location of build results

Added by planetmaker 3 months ago

Due to the increasing size of some projects we changed some settings in the compile farm itself, in Jenkins so that build results will not be kept any longer on that build server. As previously all build results will always be published to our file server at The results of the latest build can always be found at (where PROJECTNAME is the name as it appears here on the DevZone, which is also part of the repository URLs)

NewGRF Meta Language: NML now using python 3.2+

Added by planetmaker 9 months ago

Today Alberth and myself changed the required python version of NML nightly versions and a future NML 0.4.0 to python 3.2 or newer as python2 is slowly phasing out, and also the imaging module is better supported with python3. For some time there will continue be updates to the 0.3 branch as well with an occasional maintenance release, though.

If you're on windows, this is of little consequence to you, we continue to provide an exe file which can be used out-of-box, now based on python 3.3.

If you're on OSX or linux and use nmlc from a repository checkout, you'll want to use the package manager of choice and install python3 and python3-ply and python3-pillow (or called python3-imaging or similar).

If you encounter any problems, please let us know :)

Also package maintainers may consider to already look into updating their dependency lists accordingly

Alberth & planetmaker

NewGRF Meta Language: NML 0.3.1 released

Added by planetmaker 10 months ago

This is a maintenance release for the 0.3 branch of NML.

It brings a few user-visible changes by introducing new variables:
vehicle variable vehicle_is_unloading and object variable nearby_tile_object_view, introduces new string commands CARGO_LONG, CARGO_SHORT and CARGO_TINY and the house callback result CB_RESULT_HOUSE_NO_MORE_PRODUCTION.

Notably for packagers or users of old(er) systems: NML requires python 2.6 or 2.7 henceforth, the support for python 2.5 is dropped. This version also fixes a problem with the reported version in the source tar ball as found in the previous release. Additionally a python-2.7 egg can be downloaded from the bundle site.

Happy NewGRF-ing

OpenGFX: OpenGFX 0.5.1

Added by planetmaker 10 months ago

Compared to OpenGFX 0.5.0 it fixes a number of issues with packaging.

The source is available as xz-compressed tar archive. You can (again) opt to not install license.txt, readme.txt and changelog.txt via the variables DO_NOT_INSTALL_LICENSE, DO_NOT_INSTALL_README and DO_NOT_INSTALL_CHANGELOG.
Additionally the borked check for the build from tar archives with the checksums (by grfid -m) of the grf files was fixed again.

It's recommended to use NML 0.3.1 in order to build OpenGFX 0.5.1 or the md5sum of the grf files might differ.

DevZone Help Center: Access to repositories

Added by planetmaker over 1 year ago

The http interface to the repositories is performing currently very badly and either is very slow or not available at all. In order to push to or pull from the repositories currently an ssh access is required. Please see on how to obtain a pair of keys. Provide us (either by opening an issue here in the Help Centre, via message at, e-mail or on IRC) with the public key of yours and change your path in your project's .hg/hgrc to ssh:// Contact us if you have any questions or issues. See also and replace step5 by giving the public key of yours to us. Never share the private key with anyone!

We are working on setting up a new http interface and access which should perform much better than the current one.

Sorry for the inconvenience. But I'm confident that the changes we're going to make will be profitable

AI-Lib List: Release V.3

Added by fanioz over 1 year ago

to Get all Item as Array -> ItemsToArray
to Get all values as Array -> ValuesToArray
to get the pair of [item, value] as array -> toarray
to set the list from array of [item, value] -> AddFromArray

OpenGFX: OpenGFX 0.4.6

Added by planetmaker about 2 years ago

The Christmas release brings you one visible change which will make it easy for trunk users and those of the future OpenTTD 1.3.0-beta1 to get rid of the "missing sprites" warning:


- Feature: GUI sprites for delete buttons introduced in OpenTTD r24749

Note to package maintainers: as this sprite is only used in trunk (and in OpenTTD 1.3.0-beta1 and later), there is no need to update your package, if you ship OpenTTD 1.2 or earlier. You want this, if you want to ship OpenTTD 1.3.0-beta1.

NOTE: You'll also need NML 0.2.5.r2050:7c249349d2a9. As of writing no binary-compatible stable NML release exists for that. I hope we can supply that within the next days.

Edit by Ammler: Distros and other self builder can use OpenGFX with NML 0.2.4 .

NewGRF Meta Language: NML 0.2.4 released

Added by yexo over 2 years ago

Mostly a bug-fix release for the 0.2 branch, but it also adds some minor features mostly in the form of previously unsupported variables/callbacks. The decision to add those features was made because the 0.3 branch which is currently work-in-progress does not and will not support OpenTTD 1.1 and older. Since there are still people wanting to make their NewGRFs available for people with older OpenTTD versions they can keep using the 0.2 branch.

Full changelog for this release:
- Feature: Report NML line information as well as pixel position for pure white pixels. Also, report number of pixels in the sprite, instead of the whole image. (issue #4029)
- Feature: 'signals' callback for railtypes.
- Feature: Allow the 'nfo' unit to be used with non-constant values. (issue #3828)
- Feature: 'build_prod_change' callback for industries to set industry production level on construction.
- Feature: Vehicle misc_flag VEHTYPE_FLAG_NO_BREAKDOWN_SMOKE.
- Feature: 'current_max_speed' variable for vehicles. (issue #3979)
- Feature: 'vehicle_is_in_depot' variable for aircraft.
- Feature: 'range' property and callback for aircraft.
- Feature: 'production_rate_1/2' variables for industries.
- Feature: 'town_zone' variable for railtypes.
- Feature: 'other_veh_(curv_info|is_hidden|x_offset|y_offset|z_offset)' variables for vehicles.
- Fix: Provide a proper error message when running out of action2 IDs
- Fix: A '{' at the end of a string could cause a crash
- Fix: Backslash-escapes in strings weren't properly validated. Also remove useless \n escape. (issue #3636)
- Fix: Provide a proper error message if a substring is missing, instead of an assertion error. (issue #3932)
- Fix: 'refit_cost' callback may also be called from the purchase menu.
- Fix: Allow using constants > 255 as variable parameter. (issue #4086)
- Fix: Sprite layout register code contained an unsorted iteration over dictionary keys, resulting in possible regression failures.

1 2 3 ... 7 (1-10/70)

Also available in: Atom