Skip to content

Releases: EasyRPG/liblcf

0.8.1 "Stun"

07 Apr 09:04
92c4450
Compare
Choose a tag to compare

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++17 std::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"

29 Apr 20:42
9c09529
Compare
Choose a tag to compare

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"

29 Oct 19:17
01b73de
Compare
Choose a tag to compare

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

27 Apr 16:58
bb9f9e2
Compare
Choose a tag to compare
Codename "Pincer Attack"

0.6.1

23 Jul 22:36
36fccee
Compare
Choose a tag to compare
Codename "Surprise Attack"

0.6.0

03 Mar 19:49
0865082
Compare
Choose a tag to compare
Codename "Preemptive Attack"

0.5.4

26 Oct 19:02
3ea0483
Compare
Choose a tag to compare
  • 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

22 Oct 18:53
Compare
Choose a tag to compare
  • 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

27 Jun 23:02
Compare
Choose a tag to compare
  • 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

09 Apr 19:34
Compare
Choose a tag to compare
  • 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