Releases: EasyRPG/liblcf
0.8.1 "Stun"
Full release notes
https://blog.easyrpg.org/2025/04/easyrpg-player-0-8-1-stun/
For Developers / Maintainers / Building
Always upgrade liblcf before upgrading the Player. Both need to be on the same version.
As a reminder: liblcf is our library for parsing RPG Maker files.
tl;dr for busy maintainers :)
- C++17 required
- autotools will be removed soon, migrate to CMake
- liblcf: CMake in-source builds are now prohibited
- liblcf: Vendored
inih
was removed (we still use some example code based on it) and requires now the system library - liblcf: Vendored
string-view-lite
removed and migrated to C++17std::string_view
. - liblcf: Support for iconv was removed, use ICU instead (ICU is the default since 7 years, nothing changes here)
- liblcf: Expat (XML) uses now the legacy EXPAT find package when the config file is missing.
Detailed
Building liblcf and Player now requires a C++17 compatible compiler. For liblcf this is actually enforced by a dependency: ICU (the Unicode library we use) requires C++17 as of version 75. (#2190, liblcf #458)
Building with autotools is deprecated and will be removed right after this release. The archaic m4 language used by autotools became more and more of a maintenance burden, and our autotools build system lacks many features compared to our CMake build system. If you are a package maintainer, please migrate to CMake.
The header string-view-lite
was removed and replaced with std::string_view
which is a new feature in C++17. (#3360, liblcf #495)
Messages from the liblcf library can now be redirected instead of just appearing on the terminal. This allows us to log parsing problems and skipped (unknown) chunks to our normal log file when running a game through EasyRPG Player. (liblcf #416)
Starting with Windows 10, Microsoft bundles the Unicode library ICU. We now support building liblcf against this system library. The disadvantage is that you need Windows 10, otherwise you will not be able to run applications that depend on it. We asked around in chat and decided to build a custom version of ICU anyway. This way you get support down to Windows 7. (liblcf #427)
New chunks have been added to support new EasyRPG and Maniac features:
- EasyRPG extension: For battler facing direction (liblcf #463)
- Maniac Patch: For separate Width/Height parameters when scaling pictures (liblcf #473)
- EasyRPG extension: To store state when an event command yields and is called again after (used by Wait for Single Movement on repeated calls, liblcf #478)
- Maniac Patch: For separate (X/Y) camera pan speeds (liblcf #482), for various message settings (not implemented yet), for new terms related to battles and for giving names to string variables (liblcf #499)
- The default trigger type for common events was changed to call (liblcf #484)
In addition to ICU, we supported iconv
. This code was unmaintained, and we decided to remove it. As a bonus you can now build liblcf without ICU, but then only Windows-1252 encoding is supported. (liblcf #465, #471)
The tool lcf2xml now uses the system encoding by default, and you can override it with --encoding
. (liblcf #468)
The vendored copy of inih
(a library for accessing INI files) was removed, and building now requires the system library. We still distribute parts of the C++ interface of this library, as we have modified it to suit our needs. (liblcf #479)
liblcf now builds with RTTI (runtime type information) disabled. This is used on our homebrew platforms to reduce library size. (liblcf #483)
One of the things liblcf is designed to do is read and write RPG Maker files in a bit-perfect way. This basically means that if you read a file with liblcf and don't make any changes, the output file should be exactly the same. Apart from files that have corruption issues, this was the case before version 0.8. However, in version 0.8, we accidentally broke this feature because we always wrote certain EasyRPG chunks in the files. These are now omitted by default, which restores the bit-perfect read/write behaviour. (liblcf #485)
The library inih
can be disabled to make building liblcf easier. However, when you do this EasyRPG Player will not compile. (liblcf #490)
On some sytems the libexpat package (used to parse XML files) does not provide a CMake config file. The config file generated by liblcf correctly handles now the case that a legacy find package is used by Expat. (liblcf #496)
0.8 "Paralyze"
Full release notes
See https://blog.easyrpg.org/2023/04/easyrpg-player-0-8-paralyze/
For Developers/Maintainers
Our version number is now without trailing zeros. Instead of 0.8.0 it is now 0.8. We will change this policy again later in 1.0 ;).
liblcf now generates a proper CMake config file. This has been difficult to get right on all platforms, if this fails for you please tell us.
CMake presets are now supported.
There are many warnings about anonymous structs generated when -pedantic
is used. We will resolve them in a later version.
0.7.0 "Sword"
Full release notes
See https://blog.easyrpg.org/2021/10/easyrpg-player-0-7-0-sword
For Developers/Maintainers
The entire liblcf repository was restructured and everything moved into namespaces. E.g. instead of Actor the class is now called lcf::rpg::Actor. This also improves the error reporting because you can see directly where the error occured from. (#342, #361)
The GNU compiler extensions are enabled now if supported. These are required by certain ports such as AmigaOS. (#366)
Building with gcc5 works again. (#374)
Expat 2.2.10 and newer are now supported by the CMake build system (#385)
The supported versions of CMake are now 3.10 and newer (#422)
Using liblcf from CMake does not require pkg-config anymore. (#431)
0.6.2
Codename "Pincer Attack"
0.6.1
0.6.0
Codename "Preemptive Attack"
0.5.4
- CMake building improvements
- Add RPG Maker 2003 1.1x map save count chunk
- Add actor/class equipment and battle test terrain chunks
- Add enum to string functionality for tags
- Fix 2000/2003 chunk writing differences
- Fix changed_battle_commands chunk name
- Fix reversed HP change map value <-> steps
- Fix battle commands type and initialization
- Fix save actor class ID initialization
- Fix actor default initial and final level writing
- Fix terrain grid defaults
- Fix and optimize flags
- Fix incorrect string handling in ini reader
- Fix generic int types not being int32_t types
- Fix memory leak on LMU loading failure
- Fix warnings when building with LCF_DEBUG_TRACE
- Support MorphOS, AmigaOS and gcc 4.8
0.5.3
- Recognize field for battle2 animations ('large')
- Use c++ file i/o
- Migrate generator to Jinja2 templates
- Fix database writing (avoid 'stream read error')
- Fix some compiler warnings
- Add RPG Maker 2003 1.12 SavePicture chunks
- Handle default values for flags in the generator
- Use the default value for message stretch when missing in the savegame
- Use doctest for unit tests
0.5.2
- Revert savegame corruption
- Make the parser more tolerant
- Detect too long compressed integers which result in integer overflows
- Initialise font_id
- Add 'appear_randomly' flag to Troops
0.5.1
- Terms: Change the order of {actor,enemy}_critical and {actor,enemy}_hp_absorbed
- Use proper internal encoding name for detected GB18030
- Change default value for animation_id of BattlerAnimationExtension
- Let callers control GenerateTimestamp
- Don't generate ID property for LMU Map field
- LDB EventCommands LcfWriter reencodes the string now before writing
- Fix an integer overflow in LcfReader::ReadString
Building
- Add C++ to time_stamp test
Misc
- Update Doxygen config, boost preprocessor config, inih
- Rename reader_options.h to lcf_options.h
- Update copyright headers (year, wording), cleanup .gitignore
- Markdownify READMEs and AUTHORS files