Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tool suggestions #15

Open
Ghabry opened this issue Sep 15, 2015 · 13 comments
Open

Tool suggestions #15

Ghabry opened this issue Sep 15, 2015 · 13 comments

Comments

@Ghabry
Copy link
Member

Ghabry commented Sep 15, 2015

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 ;)
@fdelapena
Copy link
Contributor

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
Copy link
Contributor

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
Copy link
Contributor

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.

@Ghabry
Copy link
Member Author

Ghabry commented May 24, 2017

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
Copy link
Member Author

Ghabry commented Jun 18, 2017

lcfpack

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

@Ghabry
Copy link
Member Author

Ghabry commented May 28, 2018

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)

@fdelapena
Copy link
Contributor

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

@fmatthew5876
Copy link

fmatthew5876 commented Oct 15, 2018

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.

@MichaelHinrichs
Copy link

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.

@fdelapena
Copy link
Contributor

(Moved from EasyRPG/Player#1824):

gbstudio game export

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

@Ghabry
Copy link
Member Author

Ghabry commented Aug 31, 2020

More for the "Dependency Scanner":

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

@fdelapena
Copy link
Contributor

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
Copy link
Contributor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

4 participants