LF2 Modding Environment

LF2 Modding Environment is an environment for editing the game Little Fighter 2. It is the official successor of the Little Easier LF Editor from 2015. This is a blog about the development of LF2 Modding Environment. Most of the blogs are published on the LF-Empire Discord server in #wip (search for "weeg" ;) ). You can read the progress of the modding environment, my problems, my learning progress and discarded ideas.

Remarks

Please keep in mind that some old statements may no longer be up-to-date.

The blog entries have two numbers. The first number is the "I work on this project since XYZ weeks" and the second number is "The development is alive since XYZ weeks". That means: I don't work each week on the project (because real life...).

Overview

Feature Release Version Progress (%) Time Assessment
Tool: Mirror Generator * 100 0 Very Fast
Tool: Grid-Line Generator * 100 0 Very Fast
Tool: Resource Editor * 100 0 Very Fast
Tool: Transparency Maker * 0 Fast
Tool: Body Generator * 0 Fast
Tool: Weapon Generator * 0 Fast
Tool: B-Sprite Generator * 0 Fast
Tool: Command Generator * 0 Fast
Tool: Memory Viewer * 93 Middle
Background Editor * 95 0 Fast
Character Editor * 60 0 Long
Weapon Editor ? 0 Long
Stage Editor * 0 Fast
Sprite Editor * 0 Long
EXE Editor * 0 LONG
OpenGL or Vulkan x 0 Middle
File Watcher (Reformatting) * 0 Fast
Translation Support * 0 Fast
Text Editor * 0 Fast
Real Time DC Editor * 0 Fast
Plugin Support * or x 0 Middle


Sprite-Editor

Planning To Version Progress (%) Time Assessment
Dyer * 0 LONG
Generator: Frozen Sprites * 0 Fast
Generator: ******* ******* * 0 Middle


Legend

* x Very Fast Fast Middle Long LONG
First version Perhaps never (drop) Exists already (in VB.NET version) Just few days Perhaps one month 1-5 months x months



Basic Terms

The blog tries to explain things as user-friendly as possible. However, from time to time terms from the development occur, which the "normal" user does not know. For this reason, the typical terms that may occur are explained here.

Git

Git is a version management tool. It creates "commits" during development, which represent a small state during development. This allows viewing and jumping back to any change in the source code at any time.

GitLab

Git is a pure command line interface tool. For sharing the source code (for example, to access the project from any device), a private Git server is used. This Git server is a GitLab.

Commit(s)

The so-called commits are an essential part of the work process when Git is used as version control. A commit represents a state in the development history of the software during the development process, but this state does not necessarily have to be error-free ("stable") (depending on the branch).

Branch(s)

During the development there are different states of the whole software. If the state is in a stable state that can also be published, then this state is on an extra "branch". All functions that still need to be developed or tested hard again are on another branch. This has the advantage that a stable version is available at any time.


Weeg 31 (original counter: 136) (25/08/2021)

Still working on the memory editor, still getting ideas...

Once again done many smaller things, like showing the colors as the background color of the cell. Or displaying the address, as well as the size of the object below the table. Or also displaying the type if it is a pointer.

The user can now also hide individual rows from the table or change the color of the text of individual rows (like CE). And the user can set the display of the addresses from now on relative or absolute.

The biggest thing this week for the user is probably that the user can now edit data. The functionality had been there for a few weeks, but the user interface had not yet been created.


A list of features I still want to implement are:

Other than that, I spent a few more days using a new documentation tool because I wasn't particularly happy with the old one. The new one also allows me to create my own pages, so I can describe how to use the MemoryEditor class, for example.


Weeg 30 (original counter: 135) (18/08/2021)

After a period of listlessness, I'm slowly getting back on track.

First of all, I finished a few tasks that I had been putting off. These were display things for the own written "ListView". For example, only the first column could be fixed without any problems. Furthermore, the grid line was drawn over the fixed column, from the next column. This could also be seen in the gif of "Weeg 28" ;) In addition, the content of a cell or the header is now truncated/shortened if it is too long. I also noticed that the values of a pointer are wrong.

Most notable is that I finally did the expanding of lists and structures. This now works especially recursively. Which took longer than it should have, but listlessness... Furthermore, it is possible to follow pointers, which can also be useful from time to time.

Follow pointer:

Recursive updating:


I actually spent the rest of the day refreshing the "Color Dialog". I actually wanted to add a few small things to the editor to increase usability. However, one of the things needed a color dialog, and the Windows dialog is terrible. I had already written a color dialog a few years ago but the code turned out to be very bad. For this reason, I pursued this task because it has to be done one way or another. During the development I noticed that objects are not released correctly or too many are created (not really a memory leak but something like that). I fixed this bug when I rewrote it ^^. Overall, however, the color dialog is very very similar from the outside.

Old:

New:

Also very funny, interesting and disappointing at the same time: In the old version there was only one class for EVERYTHING. Now everything is structured a little more clearly.


Weeg 29 (original counter: 132) (28/07/2021)

A little bit busy until next week with exams, but I added reading backgrounds, stages and data files to the Memory Editor. Furthermore I started to add folding and unfolding of arrays (lists) to the Memory Editor, but this is still in development.
I am wondering a bit how to display the names. A data file has a type, an ID, a name and an index. The index is not so important here, but is extremely important for other objects, such as characters. For this reason and so that is consistent, it should be displayed with. However, these are four values that must be displayed legibly. As it is currently, I am not really satisfied, because the tab name is then also so eternally long.

Oh and because of mfc and a small tool from zort I got an idea for a small fine tool (maybe someone noticed on the list): Tool: Transparency Maker. (In any case, the name is not final yet). I'm not going to reveal exactly what it does yet, because I'm only focusing on the Memory Editor at the moment. After the Memory Editor is finished, I will make sure that the some tools are available again. This makes the stats in the table a bit prettier again :D
To do this, I just need to translate my old code from VB.NET to C# and make some adjustments. So this should only take a few days. However, I think the Memory Editor will take at least another two weeks due to my time limitations.