Tools icon indicating copy to clipboard operation
Tools copied to clipboard

Tool suggestions

Open Ghabry opened this issue 10 years ago • 13 comments

Used to track ideas for tools:

LCFUsage
  • Generates a report where a specific Switch/Variable/CommonEvent/... is used. Useful for tracking down bugs.
LMTCrush

An alternative to using "encryption"

  • "Corrupts" lmt files in such a way, that the tree becomes unusable in the editor.
  • Names are removed
  • Maps with Escape/Save/Teleport set to "Inherit from parent" are calculated to a fixed value.
  • Tree is flattened and shuffled
  • Exception are Areas, needs investigation under what conditions they are still usable ;)

Ghabry avatar Sep 15 '15 21:09 Ghabry

Dependency scanner

  • Checks filename dependencies not found in project asset folders.
  • Copies from RTP paths matching files.
  • Warns about missing filenames and unneeded or duplicated.

fdelapena avatar Sep 15 '15 21:09 fdelapena

Set starting party position

  • A simple way to set an alternate map and coordinates to start the game via command line, for debugging purposes when launching RPG_RT from other OSes, or a fast way to switch / revert positions or when running some tests case batch in RPG_RT and Player.

Title thumbnailer

  • A tool to generate game title collection lists by detecting title picture used from database in a game paths recursively.

Improved LMU2PNG

  • Export picture just by passing the map filename or ID, get assigned terrain and assigned terrain chipset, allowing wildcards for mass export.
  • Replace SDL/SDL_image with pixman/libpng.

LcfMapTree printer

  • Print LCFMapTree structure and stats in some nice ASCII tree with the corresponding map/area ID with name.
  • Print some stats about map ID holes (non-sequential filenames) or missing lmu or orphaned lmu files not referenced in lmt.

LcfDatabase/LcfMapUnit optimizer

  • "Defragments" database/variable entries and reduces the maximum amount of register entries when unused.

fdelapena avatar Sep 16 '15 23:09 fdelapena

BattleTest setup

  • Command line tool to modify LcfDataBase BattleTest parameters for testing without needing original RPG Maker editor.
  • Allow to display existing parameters for each game by reading data from the LcfDataBase and check for valid arguments.

fdelapena avatar Dec 25 '15 16:12 fdelapena

rpgrt-tool

  • Extract Logo1-3, ExFont & Icons
  • Extract CODE and DATA
  • Detect Engine version (2k/2k3) and guess Version. (needs some fingerprint). For exact matches SHA1-Hash check possible.
  • Analysing for common patches
  • Detecting of UPX & Molebox

Ghabry avatar May 24 '17 17:05 Ghabry

lcfpack

  • Recompresses all audio files with OPUS.
  • Repacks all images with xyzcrush

Ghabry avatar Jun 18 '17 23:06 Ghabry

lcfviz

  • Parses all map files and creates a reachability graph (by checking for Teleport event commands) between maps
  • Output of dot files for feeding to graphviz
  • Optionally (for the dot) instead of the nodes being map name/filename they could be images of the map (lmu2png style)

Ghabry avatar May 28 '18 10:05 Ghabry

XYZ thumbnailer for macOS

  • Allows to complete cross-OS thumbnail support.
  • By using the Quick Look API. Example 1, example 2.
  • It might be done with C/C++, Obj-C/C++ or Swift.

cc @BlisterB

fdelapena avatar Jul 15 '18 21:07 fdelapena

Used to track ideas for tools:

LCFUsage
* Generates a report where a specific Switch/Variable/CommonEvent/... is used. Useful for tracking down bugs.

I wrote a tool like this and I can tell you its game changer, especially when you have a lot of custom systems and need to to do refactoring. The general find references tool is great. Should also check where items given/taken, skills learned, etc.. All around "Show me all references to this type of thing".

I have a lot of tools I wrote for my own use here: https://github.com/fmatthew5876/hh3-rm2k/tree/fixes-2.1/dev/hh3tool

Feel free to steal any of my ideas or code if you like.

Event Dumper

Dump common, map, or troop event code in an easy to read format to stdout.

$ ./hh3tool/hh3tool ../../ evdump C 4
Info: Configuring system for map directory `../../'...                                                                                                                      
Common Event `Goodberry' (4) trigger=3 swflag=1 switch=`Goodberry' (11) num_cmds=25                                                                                         
0000: code=CallEvent(12330) indent=0 str="" params=[0 38 0]                                                                                                                 
0001: code=ControlVars(10220) indent=0 str="" params=[0 1011 1011 0 3 1 5]
0002: code=PlaySound(11550) indent=0 str="gotitem" params=[100 100 50]
0003: code=ChangeFaceGraphic(10130) indent=0 str="" params=[0 0 0]
0004: code=ConditionalBranch(12010) indent=0 str="" params=[1 1011 0 2 2 1]
0005:  code=ShowMessage(10110) indent=1 str="You Found:" params=[]
0006:  code=ShowMessage_2(20110) indent=1 str="     Goodberry x 1" params=[]
0007:  code=ChangeItems(10320) indent=1 str="" params=[0 0 8 0 1]
0008:  code=END(10) indent=1 str="" params=[]
0009: code=ElseBranch(22010) indent=0 str="" params=[]
0010:  code=ConditionalBranch(12010) indent=1 str="" params=[1 1011 0 4 2 1]
0011:   code=ShowMessage(10110) indent=2 str="You Found:" params=[]
0012:   code=ShowMessage_2(20110) indent=2 str="     Goodberry x 2" params=[]
0013:   code=ChangeItems(10320) indent=2 str="" params=[0 0 8 0 2]
0014:   code=END(10) indent=2 str="" params=[]
0015:  code=ElseBranch(22010) indent=1 str="" params=[]
0016:   code=ShowMessage(10110) indent=2 str="You Found:" params=[]
0017:   code=ShowMessage_2(20110) indent=2 str="     Goodberry x 3" params=[]
0018:   code=ChangeItems(10320) indent=2 str="" params=[0 0 8 0 3]
0019:   code=END(10) indent=2 str="" params=[]
0020:  code=EndBranch(22011) indent=1 str="" params=[]
0021:  code=END(10) indent=1 str="" params=[]
0022: code=EndBranch(22011) indent=0 str="" params=[]
0023: code=CallEvent(12330) indent=0 str="" params=[0 39 0]
0024: code=ControlSwitches(10210) indent=0 str="" params=[0 11 11 1]
TreeMap dumper

Given a map name or id it's hard to know what map it actually is. For example I have a lot of maps just named "2F" or "B1". If one of my other tools tells me there is a problem in map "B1" its not very helpful. This tool just takes a map id or name and prints out the entire sub-tree that the map belongs to.

$ ./hh3tool/hh3tool ../../ treemap 24
Info: Configuring system for map directory `../../'...
`Heaven and Hell E3' (0) parent=0
 `World 1' (1) parent=0
  `Timon' (2) parent=1
   `subway system' (22) parent=2
    `2nd area' (24) parent=22                                                                                                                                              

A general visitor style construct is useful (probably in liblcf). I use this one to easily "visit" parts of the game for certain tools. It handles iteration over the db and maps so you can just say something like "Call this function for all Event Commands."

https://github.com/fmatthew5876/hh3-rm2k/blob/fixes-2.1/dev/hh3core/Visit.H

Iterating the treemap in particular is annoying. You want to do it in the order of the treemap and not by map id. That way any reported errors come out in the same order as in the rm2k editor. Good to abstract this behind some interface so people don't have to do it again and again.

mateofio avatar Oct 15 '18 22:10 mateofio

support for more engine versions would be reely helpful. if anyone can understand ruby, pleas take a look at https://github.com/Solistra/rvpacker for reference.

MichaelHinrichs avatar Nov 08 '18 17:11 MichaelHinrichs

(Moved from https://github.com/EasyRPG/Player/issues/1824):

gbstudio game export

  • the game could be played on a real gameboy (or emulator)
  • for the subset of the features available in both

fdelapena avatar Jun 30 '19 22:06 fdelapena

More for the "Dependency Scanner":

  • Support renaming of files to "ASCII", using non-ASCII names causes lots of issues, especially outside of the Player.

Ghabry avatar Aug 31 '20 11:08 Ghabry

Protection utility restorer

  • Restores lmt, ldb and lmu header files "protected" with the RM Protection Utility. Useful for game analysis and comparison with original RPG_RT and editor and such.

fdelapena avatar Jan 22 '21 01:01 fdelapena

Likely not a tool, but to implement into Player itself:

Headless autobattle test

  • Simulates a headless battle test launch (or a lot of them in a batch) for testing difficulty and help game developers balance their games depending on variance, chance and other variables requiring to gather statistics.

fdelapena avatar Jan 22 '21 01:01 fdelapena