Skip to content
Popax21 edited this page Aug 29, 2022 · 3 revisions

Welcome to the Procedurline wiki! This place is intended as a documentation of the more abstract concepts utilized inside of the codebase. For concrete documentation regarding individual methods, see their XMLdoc.

What is Procedurline?

Procedurline is a procedural graphics / gameplay library for Celeste mods. This means that it e.g. allows an experienced modder to not have to create some of their simpler assets by hand, but instead dynamically generate or modify them at runtime. It also allows for modification of any already existing graphics, which can help with tackling the immense amount of graphics usually required to create them.

Conceptually, Procedurline's organized into three layers:

  • the low-level utility / processing layer: this contains basic core systems, like the texture system, or the data handling system. These are self contained, and don't do anything by themselves, and are intended to take care of fundamental tasks the higher levels could face.
  • the game-related layer: this contains the most useful and important parts, like the sprite and player systems. These hook into the game's graphics code to provide you with the ability to modify arbitrary graphics.
  • the content layer: this is the most high level layer. It contains the CustomXYZ content classes, which utilize the lower layers to create a more easy to use API for custom gameplay elements.

Who is Procedurline for?

Procedurline was designed with two target audiences in mind:

  • gameplay coders, wanting to create custom gameplay elements: the content classes are intended for them
  • skinmodders, wanting to reskin the game's graphics at run time: Procedurline has the ability to modify all graphics for this purpose

Keep in mind that you are free to utilize its systems for anything! They have all been designed to be as flexible and versatile as possible.

I want to see it in action!

For this purpose (and to serve as example code), Procedurline ships with a demo map you can access by using the console map load Procedurline/pl_demo_map (it does not appear in the map selector). It tries to show of all the functionality present, but is definitely not the limit of what it can do.

How do I get started?

To get started, you can try to look at either the demo code used to power the demo map, but because it is trying to show of a lot of different functionality, some parts of it are more complex than most basic use cases. There is also Styline, which is a complete skinmod utilizing Procedurline. One might also read the Wiki here (it goes into a lot more depth than needed most of the time though), and the entire code is well documented, including XMLdocs.