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 | * | Very Fast | |
Tool: Grid-Line Generator | * | Very Fast | |
Tool: Resource Editor | * | 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 | * | Fast | |
Character Editor | * | Long | |
Weapon Editor | ? | 0 | Long |
Stage Editor | * | 0 | Fast |
Sprite Editor | * | 0 | Long |
EXE Editor | * | 0 | LONG |
x | |||
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.