Difference between revisions of "GRFv9"

From GRFSpecs
Jump to navigationJump to search
(Initial page)
 
m
Line 2: Line 2:
 
== Introduction ==
 
== Introduction ==
   
This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent evolution of GRF the specification.
+
This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent specification evolution.
   
 
This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.
 
This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.
Line 10: Line 10:
 
GRFv9 PRs (closed)
 
GRFv9 PRs (closed)
 
https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)
 
https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)
  +
  +
== Design Considerations ==
  +
  +
The current GRF specification has several areas which are not ideal and could be improved in a subsequent specification version.
  +
  +
This section should list current pain points and non-idea specification aspects, and where possible suggest improvements or general design principles for future additions.
  +
This section is non-exhaustive.
  +
  +
(The list below does not include those already addressed in https://github.com/OpenTTD/OpenTTD/pull/13309, see above).
  +
  +
=== Concurrent Action2 ID Limit ===
  +
  +
GRFs are currently limited to 256 simultaneous action2 IDs. This is a common pain point for NewGRF authors. NewGRF authors are encouraged to needlessly duplicate action2s (e.g. by use of templating mechanisms) to mitigate this, this results in larger GRF files which has a negative impact on content distribution and run-time performance.
  +
Moving to 16 bit Action2 IDs would remove this problem without imposing significant technical difficult.

Revision as of 20:42, 4 June 2025

Introduction

This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent specification evolution.

This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.

Existing Work

GRFv9 PRs (closed) https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)

Design Considerations

The current GRF specification has several areas which are not ideal and could be improved in a subsequent specification version.

This section should list current pain points and non-idea specification aspects, and where possible suggest improvements or general design principles for future additions. This section is non-exhaustive.

(The list below does not include those already addressed in https://github.com/OpenTTD/OpenTTD/pull/13309, see above).

Concurrent Action2 ID Limit

GRFs are currently limited to 256 simultaneous action2 IDs. This is a common pain point for NewGRF authors. NewGRF authors are encouraged to needlessly duplicate action2s (e.g. by use of templating mechanisms) to mitigate this, this results in larger GRF files which has a negative impact on content distribution and run-time performance. Moving to 16 bit Action2 IDs would remove this problem without imposing significant technical difficult.