Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: mbp - DFMU App Functional Specification  (Read 2445 times)

MiamiBryce

  • Bay Watcher
    • View Profile
mbp - DFMU App Functional Specification
« on: August 06, 2010, 06:38:43 pm »

These ideas keep coming to me, I've got to get them down written down somewhere.  If I never get to implementing any of this myself, at least they'll be out there where someone else can see them.

Dwarf Fortress Modding Utility Application Functional Specification

Main Form - Main Menu Strip
  • Mods
    • New:  User selects a vanilla Dwarf Fortress version (Vanilla -> Register), provides a mod name and mod tag.  A mod tag (which needs a better name) is a two or three letter code that will be used to mark the files specific to this mod.
    • Open:  Loads a registered (Mods -> New or Mods -> Register) mod into the editing environment.
    • Copy:  Makes a copy of an existing registered (Mods ->  New or Mods -> Register) mod.  If the mod copied had been published, the read-only flag will be removed.
    • Register:  User points to an existing Dwarf Fortress installation, selects an existing registered vanilla version (Vanilla -> Register),  provides a mod name and mod tag and a mod version.  The application will make an attempt to add to the change log a complete list of differences between the file.
    • Publish:  User will be prompted for a new version number and how detailed a change list to produce.  The application will take all files which differ from the vanilla install and zip them up for easy distribution (no more "Whoops!  Wrong file.").  It will include in the zip file a human readable list of changes.  It should also produce a text file that is the change log with formatting tags for this forum so changes can be copied from that document into a forum post.  Published mods become read-only, to further modify them, they must be copied (Mods -> Copy).
  • Vanilla
    • Register:  User points to an existing vanilla installation of Dwarf Fortress and provides a version for it.  The registered vanilla Dwarf Fortress can then be used for two things.  First, it can serve as the base for any new mod (Mods -> New).  Second, it can be used when an existing mod is registered (Mods -> Register) to, if not produce a full change list, at least a list of changed files.
  • View
    • Change Log:  Shows the list of changes to the mod.  This view will allow the user to roll back any (or even all) changes to the mod.  It will also allow a roll-forward again as long as no changes were made since the roll back.  There should also be a roll back (and roll forward) key combo/shortcut for ease of use.

Change Log:  While it would not yet be clear how the modding portion of this application would be handled, what is clear enough is some bit of data for some object was changed.  This application would track every single change made (most likely in an sqlite database).  The changelog would likely contain a timestamp, a path-to-change, the old value, and the new value.  The path-to-change for changing the material value of bronze to 12 would look like "inorganic_metal\bronze\material_value".  Obviously I picked a simple example and it will likely get much much more...intricate.

Auto-Versioning  Each modification in the change log can have an associated severity.  The severity would be the difference between 'break save' and 'not break save'.  I see mods as having a three part version number (ex 2.1.4)  It would be Major.Minor.Revision.  In auto-versioning Major would be controlled by the user, for only a modder knows when the change have been so mind-bogglingly awesome that they've got to kick it up a notch.  The Minor would be incremented if a change has been made that would break save compatibility.  The Revision would be incremented if any non-save-breaking changes had been made.  The version number would only be incremented when the mod is published.  If the Minor is incremented, the Revision is reset to zero.  If the Major is incremented then both the Minor and the Revision are reset to zero.


[Edit] 2010-08-07 (mb) Cleaned up post, removed drivel, clarified listed ideas, added a couple more.
« Last Edit: August 07, 2010, 07:46:03 am by MiamiBryce »
Logged

MiamiBryce

  • Bay Watcher
    • View Profile
Re: mbp - DFMU App Functional Specification
« Reply #1 on: August 06, 2010, 06:39:16 pm »

Reserved
« Last Edit: August 31, 2010, 10:02:44 pm by MiamiBryce »
Logged

Artanis00

  • Bay Watcher
    • View Profile
Re: mbp - DFMU App Functional Specification
« Reply #2 on: August 08, 2010, 02:02:43 am »

Git can do everything here. It's designed for this kind of stuff. You'd just need to put a GUI around it.
Logged
Git - fast, efficient, distributed version control system
Github - Free public repositories, issue tracking, wikis, downloads...

MiamiBryce

  • Bay Watcher
    • View Profile
Re: mbp - DFMU App Functional Specification
« Reply #3 on: August 08, 2010, 10:33:59 am »

Git can do everything here. It's designed for this kind of stuff. You'd just need to put a GUI around it.

I had never heard of Git so I grabbed Git for Windows and TortoiseGit.  I have to say they certainly beat using a text document in PSPad to track my changes.  I could about kick myself in the pants for not having thought that they must have some sort of simple version control that doesn't require installing Apache or some such nonsense.  Thank you, Artanis00.

Do you mean use write a wrapper around Git in the modding application to allow for integrated version control or do you mean forgo the integrated version control entirely?
Logged

Artanis00

  • Bay Watcher
    • View Profile
Re: mbp - DFMU App Functional Specification
« Reply #4 on: August 08, 2010, 01:33:10 pm »

Git can do everything here. It's designed for this kind of stuff. You'd just need to put a GUI around it.

I had never heard of Git so I grabbed Git for Windows and TortoiseGit.  I have to say they certainly beat using a text document in PSPad to track my changes.  I could about kick myself in the pants for not having thought that they must have some sort of simple version control that doesn't require installing Apache or some such nonsense.  Thank you, Artanis00.
I'm a strong supporter of not reinventing the wheel--unless one is learning--so you are quite welcome.

Do you mean use write a wrapper around Git in the modding application to allow for integrated version control or do you mean forgo the integrated version control entirely?

Ah. No, I forgot Git for Windows tends to have a GUI already, since I use the command line interface almost exclusively.
Logged
Git - fast, efficient, distributed version control system
Github - Free public repositories, issue tracking, wikis, downloads...

MiamiBryce

  • Bay Watcher
    • View Profile
Re: mbp - DFMU App Functional Specification
« Reply #5 on: August 31, 2010, 10:02:55 pm »

I didn't want to say/show anything until I got at least this far.  Currently you can drag from the Toolbox (of elements found in a raw file) onto Object Tree (tree view of object definitions) and rename the nodes.  Next up is validating that the different Toolbox items go only where they are allowed.  After that would be linking a properties box to the tree nodes to allow for the changing of restrictions (number ranges, enumeration string sets, etc).  If I get that far it would then be on to saving/loading the Object Tree.

Where Fuco's project is using the raw definitions to modify the raws, this project is (currently) focused on modifying raw definitions.  Unless Fuco would disagree, I'm expecting this project will load/save raw definitions in the Fuco format.  I don't mean to steal anyone's thunder, it's just I've been having some great ideas lately I want to implement in tools at work and this project is serving well as my testing ground.

One last thing, the COLOR->NAME->Name should be string, not integer, lol.

Spoiler (click to show/hide)

All of my development tools and libraries I'm using are available free on the internet for their respective sources.
Logged