"OpenGFX2" graphics base set for OpenTTD. It is drawn in a classic 8-bit pixel art style and trys to capture the feel of the original Transport Tycoon graphics by using similar colour schemes, building and object designs, etc. There are two variants:
OpenGFX2 Classic
: An original graphics-style base set, 8-bit at 1x zoom (64 px wide tiles).OpenGFX2 High Def
: An enhanced base set, using 32-bit images for smoother shading at 4x zoom (256 px wide tiles) for more detail when zooming in.
OpenGFX2 is a spiritual successor to OpenGFX. Think of it as "OpenGFX version 2", or maybe that should be "OpenGFX director's edition", "refactored OpenGFX", or perhaps "OpenGFX extra zoom" or "OpenGFX 32-bit". Or some combination of all of them. OpenGFX2 is derived from OpenGFX, but extensively redrawn or revised from my original 32-bit sources. Almost all sprites have been updated or revised. It features far better organisation of sprites, extensive use of automated composite sprite generation (using Python of dubious quality) and is drawn and coded with extra zoom levels and 32-bit in mind.
OpenGFX2 is a totally separate graphics set to zBase. zBase is my old and outdated attempt to kick-start a high definition base set using 3D graphics - I think OpenGFX2 is a better style and a better set overall.
OpenGFX2 Classic
is complete and ready to use. There might be bugs though, please post any you find on Github.
OpenGFX2 High Def
isn't complete, but can be used. The landscape (grass, water, trees) and infrastructure (road, rail, bridges) are mostly complete, but the vehicles and houses are generally not. Please post any bugs to Github, except for missing 4x zoom sprites - I know which are missing!
It is easiest to use the in-game content downloader (Check Online Content
in the OpenTTD main menu).
To install, search for OpenGFX2
, tick the checkbox next to "OpenGFX2 Classic" Base graphics, and hit Download
.
To set as the base graphics set, go to Game Options > (Graphics) > Base Graphics
from the OpenTTD main menu. Select OpenGFX2 Classic
, then close the Game Options
window.
Download a release from the prebuilt GRF releases and install using the instructions below.
These are early release previews not available in the in-game content downloader. This includes base set versions (the "High Def" 32-bit 4x zoom version) and NewGRFs not yet available through the in-game downloader.
Install the baseset by copying opengfx2_8.tar
and/or opengfx2_32ez.tar
into the baseset
directory for your OpenTTD installation.
Install the newgrfs by copying each .grf
file into the newgrf
directory for your OpenTTD installation.
To set as the base graphics set, go to Game Options>(Graphics)>Base Graphics
Set and select OpenGFX2 Classic
(8-bit 1x zoom version) or OpenGFX2 High Def
(32-bit 4x zoom version).
OpenGFX2 has graphical user preferences. These can be configured in Game Options>(Graphics)>Base graphics set>Set parameters
. These settings are local graphical changes only. You can freely change them and use them with any save-game, use any server, etc.
If you instead want for force a game or server to use OpenGFX2 graphics you can use the OpenGFX2 NewGRFs.
Prior to OpenTTD 14.0 (specifically nightlies prior to 30/10/2023 or before Github commit e81313e) OpenTTD did not have a way to configure base set parameters. The OpenGFX2 Settings
NewGRF provides a workaround: Go to NewGRF Settings
, find OpenGFX2 Settings
and add to Active NewGRF files
. Then, select OpenGFX2 Settings
in the Active NewGRF files list
and select Set parameters
then adjust the settings.
Install other NewGRFs as normal using NewGRF settings
.
These notes are for if you want to build OpenGFX2 from the source files. If you just want to download OpenGFX2 then you don't need to worry about these.
Requires git lfs
for large file handling. Once git lfs
is installed then clone using git
as normal.
Requires a system which can run bash
shell scripts, python3
with PIL
, blend-modes
, numpy
, skimage
, nmlc
, concurrent
, multiprocessing
, tqdm
. This has been developed using Windows Subsystem for Linux (WSL) and might have peculiarities (eg. incorrect file permissions) on a real Linux install.
Clone the repository, navigate to the repository root directory and run make_all.sh
. It will take a long time...
The built baseset will be in baseset/
, making different versions called opengfx2_<version>.tar
.
The built newgrf(s) will be in newgrf/
, making various .grf
files.
Image processing makes a bunch of intermediate files, particularly *_8bpp.png
and things in pygen
directories. Others are _bt32bpp.png
, _rm32bpp.png
. These files are assumed to be temporary intermediates, and any user-modified versions will be blindly overwritten. Make sure you look at .gitignore
see which files this applies to.
Files processed by python
and encoded by nml
are .png
files, but those may be derived from other sources. Raw sprites were variously drawn\generated in Paint.NET, Aseprite, Blender and more. Conversion from those raw sources to .png
files is not part of the build process - it must be done manually.
These notes are to help development. If you are just downloading or building OpenGFX2 then you don't need to worry about these.
Remember to bump the versions:
- Base set version in
baseset/baseset_generate_obg.py
- Base set version string in
baseset/lang/english.lng
- NewGRF versions in
newgrf/nml/<newgrf_name>/<newgrf_name>-header.pmnl
extra.grf
version inbaseset/nml/extra-header.pnml
extra.grf
/opengfx2_settings.grf
co-compatibility check inbaseset/nml/extra-header.pnml
For better or worse, base set currently uses fractional (0.1, 0.2, ...) versioning and NewGRFs use integer (1, 2, ...) versioning.