Loading ...
Sorry, an error occurred while loading the content.

Creating a New System Template

Expand Messages
  • ChristopherM
    I purchased a blank MetaCreator license yesterday, because I intend on writing a character-sheet for a system that currently lacks a decent one. (I don t want
    Message 1 of 13 , Feb 2, 2011
    • 0 Attachment
      I purchased a blank MetaCreator license yesterday, because I intend on writing a character-sheet for a system that currently lacks a decent one. (I don't want to reveal what game it's for yet.) I've been looking over the help files, but they don't really seem to be aimed at someone who wants to start from scratch.

      So, anyone here have any advice for someone starting with a blank copy of the program? Any particular spot where I should first focus my attention?
    • Peggy Kvam
      The Metacreator help has a section Tutorial for Creating Game System Templates , which should get you started. It would probably help if you got one of the
      Message 2 of 13 , Feb 2, 2011
      • 0 Attachment
        The Metacreator help has a section "Tutorial for Creating Game System Templates", which should get you started. It would probably help if you got one of the game systems that's similar to your system to use as an example. In addition to the systems we sell, there is also the free Eternal Soldier under the Free Stuff link on our website, www.alteregosoftware.com. It would be a good simple example for you, too.

        Peggy Kvam
        Alter Ego Software

        On 2/2/2011 4:27 AM, ChristopherM wrote:
        I purchased a blank MetaCreator license yesterday, because I intend on writing a character-sheet for a system that currently lacks a decent one. (I don't want to reveal what game it's for yet.) I've been looking over the help files, but they don't really seem to be aimed at someone who wants to start from scratch.

        So, anyone here have any advice for someone starting with a blank copy of the program? Any particular spot where I should first focus my attention?
      • Steve S.
        ... When it comes to programming, I always say: Copyright infringement is the sincerest form of flattery. Since you re (presumably) looking to publicly
        Message 3 of 13 , Feb 2, 2011
        • 0 Attachment
          On Wed, Feb 2, 2011 at 2:27 AM, ChristopherM <LonePaladin@...> wrote:

          > I purchased a blank MetaCreator license yesterday, because I intend on writing a character-sheet for a system that currently lacks a decent one. (I don't want to reveal what game it's for yet.) I've been looking over the help files, but they don't really seem to be aimed at someone who wants to start from scratch.
          >
          > So, anyone here have any advice for someone starting with a blank copy of the program? Any particular spot where I should first focus my attention?

          When it comes to programming, I always say: "Copyright infringement
          is the sincerest form of flattery."

          Since you're (presumably) looking to publicly distribute once it gets
          to a certain level, you can't actually *infringe.* But look to see
          what code is out there that's closest to what you want, and... er...
          re-engineer from there. With any luck, someone will have slapped a
          GPL or Creative Commons license on it, and you won't actually have to
          change it at all...


          - Steve S.
          who's big on not re-inventing every wheel... specially when you're
          building a train.
        • ChristopherM
          ... you ... too. ... Thanks for the tips, Peggy, but there still seem to be a few gaps here; I m certain that part of it is my own comprehension. Time for me
          Message 4 of 13 , Mar 17 4:22 PM
          • 0 Attachment
            --- In cw@yahoogroups.com, Peggy Kvam <pkvam@...> wrote:
            >
            > The Metacreator help has a section "Tutorial for Creating Game System
            > Templates", which should get you started. It would probably help if you
            > got one of the game systems that's similar to your system to use as an
            > example. In addition to the systems we sell, there is also the free
            > Eternal Soldier under the Free Stuff link on our website,
            > www.alteregosoftware.com. It would be a good simple example for you, too.
            >
            > Peggy Kvam

            Thanks for the tips, Peggy, but there still seem to be a few gaps here; I'm certain that part of it is my own comprehension. Time for me to get more specific.

            I'm wanting to create a Metacreator template for the 4th-edition Shadowrun rules (which, as far as I'm aware, don't resemble any of the game systems that MC currently supports). I don't plan on distributing this in any fashion until I can get a thumbs-up from the publishers, because they don't have anything like the Open Gaming License or some form of open-distribution licence. They're a little hard to read in this regard, because they directly link to third-party spreadsheets and sites, yet I've never seen a third-party product actually "officially" licensed by them.

            But that's not the real issue here.

            My problem is just getting started, laying down the groundwork. The tutorial seems to be the "jump right in and start making things" type, but doesn't clearly explain what's going on in the background. For something like a really basic RPG, this sort of help is fine, but I'm positive I'm going to need to really get in-depth with this, and make full use of everything that MC is capable of doing.

            One issue I'm having is with basic file structure. Some of the entries in the help file imply that everything I make needs to be in the base MC folder, while others hint that I can use a subfolder instead.

            In addition, I'm having trouble determining if I'm better off defining all of the variables I'm going to need in a text-based file, or if I should use the Modify > Defines window instead. I haven't been able to find anything that points out if MC needs variables to be formatted in any specific way (for instance, whether or not to make them all lower-case, or whether to use underscores or capitals to separate parts -- should I use "total_cost", or "totalCost"?).

            I'm considering using text-based files for the majority, so that I'm not having to adjust things with the mouse (an imperfect method at best), and saving me the trouble of digging through the interface to find a variable name. Will this method save me trouble in the long run, especially when I want to start adding additional sourcebooks?

            So, basically, I need some direction, perhaps specific entries in the help files that I should focus on to begin.

            I realize this is asking for a lot, but the help files wander all over the map, sometimes jumping from "basic entry-level" to "advanced programming", other times linking to something that just gives a general description when I'm looking for specific examples and "what not to do".

            Take your time in answering this. It's an ambitious project for me, especially considering I haven't made anything custom in MC before -- but that's how I tend to do things. I'm sure that, eventually, I'll work out how to get everything to play nice, but having a map tends to help.
          • Support
            ... Your first project should not be a huge one. You need to start with something simple to get familiar with the general principles involved. To make full use
            Message 5 of 13 , Mar 17 5:00 PM
            • 0 Attachment
              On 3/17/11 6:22 PM, ChristopherM wrote:
              My problem is just getting started, laying down the groundwork. The tutorial seems to be the "jump right in and start making things" type, but doesn't clearly explain what's going on in the background. For something like a really basic RPG, this sort of help is fine, but I'm positive I'm going to need to really get in-depth with this, and make full use of everything that MC is capable of doing.

              Your first project should not be a huge one. You need to start with something simple to get familiar with the general principles involved. To make full use of everything Metacreator can do you'd need to read all the documentation, and that's just not feasible. If you start with something small you'll figure out what you don't know and you'll know what questions to ask.

              So I'd suggest you figure out what you'd like in a simplistic "version 0.1" of your template, and then try to implement it following the general guidelines of the tutorial. You'll probably wind up throwing out much of it with your second revision, but if you don't have any experience with doing this sort of thing, you probably won't want to keep the first version of anything you do.

              Your first attempt should be trivial -- one attribute dialog and one list, perhaps -- but it should include all the files that you will ultimately want to use in your final version. A .cst file, an .mds file, a macro include file that your .mds file includes, a .def file to include function definitions for your .cst file (the .def file is referenced from the Auxiliary Files tab in the Modify Character Sheet Info dialog), a .prt file, and a .flt file. Once you understand and use all the pieces in a small project, it'll be clear what you need to do on a larger project.

              One issue I'm having is with basic file structure. Some of the entries in the help file imply that everything I make needs to be in the base MC folder, while others hint that I can use a subfolder instead.
              You can do it either way. It's better to put things in a subfolder to keep your stuff separate from other systems and avoid name conflicts, but you need to set it up. You will need to create a game system information file  (.gsi) to specify your search path if you put your files in a subfolder.

              In addition, I'm having trouble determining if I'm better off defining all of the variables I'm going to need in a text-based file, or if I should use the Modify > Defines window instead. I haven't been able to find anything that points out if MC needs variables to be formatted in any specific way (for instance, whether or not to make them all lower-case, or whether to use underscores or capitals to separate parts -- should I use "total_cost", or "totalCost"?).
              It's totally up to you. One way is not better than the other; some people prefer one method over another. Look up "expressions" in the help and click the "operands" link to get information about variable naming.

              I'm considering using text-based files for the majority, so that I'm not having to adjust things with the mouse (an imperfect method at best), and saving me the trouble of digging through the interface to find a variable name. Will this method save me trouble in the long run, especially when I want to start adding additional sourcebooks?
              You should definitely use text files where possible. They're a little more work setting up, but in the long run you will save a lot of time. In particular, you should define functions with .def file instead of placing those functions directly in the character sheet template.

              Feel free to ask questions.
            • ChristopherM
              That was exactly what I was looking for. Thank you VERY much!
              Message 6 of 13 , Mar 18 10:07 AM
              • 0 Attachment
                That was exactly what I was looking for. Thank you VERY much!
              • ChristopherM
                Okay, here s my status so far. I m taking this in baby steps, adding the required objects and defines, then putting only two or three of the relevant items
                Message 7 of 13 , Mar 23 3:32 PM
                • 0 Attachment
                  Okay, here's my status so far. I'm taking this in baby steps, adding the required objects and defines, then putting only two or three of the relevant items into the database to make sure it all plays well together. I'm definitely making progress, and figuring out how the various elements mesh.

                  One thing I've found that isn't mentioned in the documentation: If  you add something to the database that includes adjustments to variables, the system won't allow you to add anything to the template that uses the variable. So, place the object first, then put in things that might modify it.

                  Anyway, I've run into a bit of a snag when it comes to one of the basic functions: assigning a cost to ability scores. In the Shadowrun system, there are nine attributes you can purchase (ten, in some cases). Each attribute has a minimum and maximum score, which can be altered by selecting a race. (For instance, orks get +3 to Body, +2 to Strength, but –1 to Charisma and Logic.) Minimum attributes start at one (and don't go lower); maximums start at 6. It's also possible to raise the maximum another point by taking the Exceptional Attribute quality. This is easy to implement; I'm just supplying background for how the costs work.

                  When buying attributes, every point above the minimum costs 10 Build Points, unless that attribute is being bought at the maximum level — the final point purchased costs 25 instead of 10.

                  So, I made a .def file to enter this function:

                  func attrcost(attr, min, max) {
                  local cost;
                  if (attr = max)
                  cost = ((attr - min) * 10) + 15);
                  else
                  cost = (attr - min) * 10;
                  endif
                  return cost;
                  }

                  I tagged the .def file in the template, and reloaded; when I checked the Defines list, it showed up just like I expected. So far so good. At this point, I have fields that showed these minimums and maximums, and a variable edit-field for the actual value. (The first set has the variables min_body, max_body, and body.) So, by all appearances, I've got everything in place for the next step.

                  I then made a formula reference field called "bp_body" (for the first stat); in its Expression field, I entered "attrcost(body,~min_body,~max_body)". When I click OK, I get the following error:

                  Expression error: Stack underflow or missing argument (attrcost(body,~min_body,~max_body))

                  I've looked through the help files and the sample templates, but as far as I can see I'm doing everything correctly. Any idea what I'm missing?
                • Bruce Kvam
                  Min and max are predefined functions. You can t use those names for variables. Change them to something like minattr and maxattr. Using those names should flag
                  Message 8 of 13 , Mar 24 8:08 AM
                  • 0 Attachment
                    Min and max are predefined functions. You can't use those names for variables. Change them to something like minattr and maxattr.

                    Using those names should flag an error. I'll look into why it isn't doing so.

                    On 3/23/11 5:32 PM, ChristopherM wrote:
                    Okay, here's my status so far. I'm taking this in baby steps, adding the required objects and defines, then putting only two or three of the relevant items into the database to make sure it all plays well together. I'm definitely making progress, and figuring out how the various elements mesh.

                    One thing I've found that isn't mentioned in the documentation: If  you add something to the database that includes adjustments to variables, the system won't allow you to add anything to the template that uses the variable. So, place the object first, then put in things that might modify it.

                    Anyway, I've run into a bit of a snag when it comes to one of the basic functions: assigning a cost to ability scores. In the Shadowrun system, there are nine attributes you can purchase (ten, in some cases). Each attribute has a minimum and maximum score, which can be altered by selecting a race. (For instance, orks get +3 to Body, +2 to Strength, but –1 to Charisma and Logic.) Minimum attributes start at one (and don't go lower); maximums start at 6. It's also possible to raise the maximum another point by taking the Exceptional Attribute quality. This is easy to implement; I'm just supplying background for how the costs work.

                    When buying attributes, every point above the minimum costs 10 Build Points, unless that attribute is being bought at the maximum level — the final point purchased costs 25 instead of 10.

                    So, I made a .def file to enter this function:

                    func attrcost(attr, min, max) {
                    local cost;
                    if (attr = max)
                    cost = ((attr - min) * 10) + 15);
                    else
                    cost = (attr - min) * 10;
                    endif
                    return cost;
                    }

                    I tagged the .def file in the template, and reloaded; when I checked the Defines list, it showed up just like I expected. So far so good. At this point, I have fields that showed these minimums and maximums, and a variable edit-field for the actual value. (The first set has the variables min_body, max_body, and body.) So, by all appearances, I've got everything in place for the next step.

                    I then made a formula reference field called "bp_body" (for the first stat); in its Expression field, I entered "attrcost(body,~min_body,~max_body)". When I click OK, I get the following error:

                    Expression error: Stack underflow or missing argument (attrcost(body,~min_body,~max_body))

                    I've looked through the help files and the sample templates, but as far as I can see I'm doing everything correctly. Any idea what I'm missing?


                  • ChristopherM
                    That did it. Thanks! I ll keep posting updates on this thread as I go.
                    Message 9 of 13 , Mar 24 12:23 PM
                    • 0 Attachment
                      That did it. Thanks! I'll keep posting updates on this thread as I go.

                      --- In cw@yahoogroups.com, Bruce Kvam <bkvam@...> wrote:
                      >
                      > Min and max are predefined functions. You can't use those names for
                      > variables. Change them to something like minattr and maxattr.
                      >
                      > Using those names should flag an error. I'll look into why it isn't
                      > doing so.
                    • ChristopherM
                      Okay, latest update. Attribute-purchasing is in place, working just fine. I ve also covered selecting a metatype (which adjusts base and maximum attributes
                      Message 10 of 13 , Mar 26 7:42 PM
                      • 0 Attachment
                        Okay, latest update.

                        Attribute-purchasing is in place, working just fine. I've also covered selecting a metatype (which adjusts base and maximum attributes properly), and whether or not the character has magical ability (doing so unlocks either the "Magic" or "Resonance" attribute; if you pick "Mundane", it locks them at zero).

                        I've got a framework for Qualities, but only a few entries just to make sure they add properly. The system puts a limit on these — you can have 35 points of Positive, and 35 in Negative, Qualities. Not sure how to phrase the Check Expression to look for either of these to be violated, or if I should just make two separate lists.

                        One area where I'm having a bit of a mental block is skills. I'm trying to get the macros in my include file first thing, but I'm not sure of the best way to go about it here.

                        For the uninitiated, skills fall into two broad categories: Active or Knowledge. (They like to claim languages fall under their own category, but they're really treated the same way as Knowledge skills.) Most Active skills are part of a skill group; you can buy individual skills at 4 points a level, or buy the whole group at 10/level. Individual skills have the option of adding a specialization; in some cases, the available list for that is fixed, but some allow you to make up your own entry. If you buy a group skill, you can't specialize, and can't split any skills from that group at character creation.

                        Knowledge skills fall into five groups: Street Knowledge, Academics, Professional Knowledge, Interests, and Languages. All of these have the same cost (2/level), and have broad topics for the base skill (like, say, Biology or Sports or Corporate Politics), with the 'choose your own' model of specializing (i.e., Cloning, or Urban Brawl, or Ares Macrotechnology). I plan on putting as many things in the database as I can find references, so that the user gets a good idea of what's too specific and what's not specific enough. In all cases, they'll need to allow the user to enter a custom subject.

                        It might be that I'm just hitting a wall on coding the macros this evening, and that tomorrow it'll fall into place. Nonetheless, if any of you have some tips on this part, it'll help.

                        Oh, one thing for the support people who're watching: In the help files, there are some links that would be helpful. If you go from "Data Sheet Information" to "Include Files", there isn't anything there that actually tells you what should be in the file. Also, the page "Data Sheet Macros" has everything on the commands that start with $$ (such as $$macrodesc), but doesn't link to the description of item attributes (that's on "Data Sheet Item Format". All it says is, "The macro body can contain any valid text", but this doesn't tell me what text is considered valid — not without digging through other sections, at least.
                      • Support
                        I added some links in the help where you suggested. One technique we use for placing limits on the number of things such as Qualities is to color-code the
                        Message 11 of 13 , Mar 28 12:21 PM
                        • 0 Attachment
                          I added some links in the help where you suggested.

                          One technique we use for placing limits on the number of things such as Qualities is to color-code the total: if the number of choices exceeds the limit display the total in bold red instead of black. Having check expressions that prevent selection or bring up extra dialogs is generally avoided, because GMs break these kinds of rules all the time when creating NPCs. We try to make it so that violations of the rules are apparent but allowed. Ars Magica and Unisystem do this sort of thing.

                          I don't have sufficient understanding of the game system requirements to make any detailed suggestions for how you should proceed with Skills. I'd sugget implementing the simplest thing first, and when that seems solid address the more complicated items.

                          From your description it sounds like you can define the individual skills in a straightforward manner. Do that first. Then define a group skill item with a different cost formula. If you want to make the group and individual skills mutually exclusive define a category for the individual items, and add a NOT requirement on the category you added to the individual skills.

                          On 3/26/11 9:42 PM, ChristopherM wrote:
                           
                          It might be that I'm just hitting a wall on coding the macros this evening, and that tomorrow it'll fall into place. Nonetheless, if any of you have some tips on this part, it'll help.

                          Oh, one thing for the support people who're watching: In the help files, there are some links that would be helpful. If you go from "Data Sheet Information" to "Include Files", there isn't anything there that actually tells you what should be in the file. Also, the page "Data Sheet Macros" has everything on the commands that start with $$ (such as $$macrodesc), but doesn't link to the description of item attributes (that's on "Data Sheet Item Format". All it says is, "The macro body can contain any valid text", but this doesn't tell me what text is considered valid — not without digging through other sections, at least.


                        • ChristopherM
                          Okay, I m getting some of this figured out, but there s a couple parts where I could benefit from an experienced hand. Here s the essential bits. I m going to
                          Message 12 of 13 , Mar 31 2:54 PM
                          • 0 Attachment
                            Okay, I'm getting some of this figured out, but there's a couple parts where I could benefit from an experienced hand. Here's the essential bits.

                            I'm going to have two skill lists (Active, and Knowledge). The two lists have separate cost formulas, and characters get a pool of free points to use toward Knowledge skills, so it's easier to make them distinctive. In addition, there's a rule during character-creation -- basically, you can have only one skill at level 6, or two at level 5; the others have to be 4 or less -- and this rule applies separately to each list. (In other words, you could have one Active skill at 6, and two Knowledge skills at 5, and you're okay.)

                            One stumble I'm having in the Active category is skill groups. Basically, you can take a 'package deal' for some skills. The package has a higher cost/level, and fixes the level of its skills to the same number. Skills bought in a group can't have the option for a specialization (as individual skills can).

                            I'm thinking the best way to do this is to put these skill groups as sublists that can be purchased, automatically adding the skills within them, and overriding any duplicates. (For instance, if you bought Pistols at level 3, then added the Firearms Group at 2, it would move Pistols into that group and change the level to 2.) If a group were removed, it would also have to delete all the individual skills that came with it. I want to use sublists because the skills within them can be bought individually -- using sublists will help keep it organized.

                            I know it sounds like I'm getting into complicated stuff before testing the basics, but I've already gotten it to handle individual skills without a hitch. That wasn't difficult. But I'm not sure how to take a sublist and make it where it can be bought, instantly adding everything within it.

                            (I'm mainly trying to get the macro include file set up properly. I'm doing only minimal data-entry, usually two or three examples of each item just to ensure they behave.)

                            If there's still anything about this that's unclear, let me know and I'll see if I can find another way to explain what I'm aiming for.
                          • Support
                            Are all the constraints on skills removed after creation removed? That is, after character creation will the skills you bought in groups be individually
                            Message 13 of 13 , Apr 1, 2011
                            • 0 Attachment
                              Are all the constraints on skills removed after creation removed? That is, after character creation will the skills you bought in groups be individually upgradeable in exactly the same way as skills you bought individually? That is, are post-creation costs the same as costs during creation, or do completely separate rules apply?

                              Games generally have two kinds of character creation: free-form (GURPS, Champions, etc.) where you can take skills and change the levels at will, and the costs are always the same no matter what.

                              The other method is scripted character generation, where you have a lot of limitations on what you can choose, what levels you can have, etc. Five-Point Fudge (with the Fudge template) is like this: you select a bunch of skills within groups, with so many at specific levels. Install the Metacreator demo for Fudge to see how those scripts work.

                              Other game systems are a combination of the two systems: some parts are scripted, some are free-form, some have different post-creation costs, etc.

                              Another thing to consider is enforcing these rules with a script after character creation is complete. Many game systems have a "Finalize" command that checks the character for consistency and then adds options to skills that record the character state at creation time. This allows different cost structure to be used during and after character creation (many systems charge more for increasing attributes and skills after creation than during).

                              Trying to force items into sublists will likely be clumsy to implement, and forces an organization that a player may not want. It may also become inoperative after character creation, and you want everything to play together over the life of the character.

                              It sounds like your best course would be to write your creation script to moderate skill selection, enabling proper selection of individual and group skills, placing options on them to indicate their individual/group status (which you can check for in your cost formulas). After creation the user can touch things up and move things around. Then you should provide a Finalize script that checks for rule violations and does any state preservation. This will also make it easy for GMs to just blow off the rules as needed with a minimum of hassle, which they almost always do.

                              Character creation programs should be player aids, not straitjackets.

                              On 3/31/11 4:54 PM, ChristopherM wrote:
                              Okay, I'm getting some of this figured out, but there's a couple parts where I could benefit from an experienced hand. Here's the essential bits.

                              I'm going to have two skill lists (Active, and Knowledge). The two lists have separate cost formulas, and characters get a pool of free points to use toward Knowledge skills, so it's easier to make them distinctive. In addition, there's a rule during character-creation -- basically, you can have only one skill at level 6, or two at level 5; the others have to be 4 or less -- and this rule applies separately to each list. (In other words, you could have one Active skill at 6, and two Knowledge skills at 5, and you're okay.)

                              One stumble I'm having in the Active category is skill groups. Basically, you can take a 'package deal' for some skills. The package has a higher cost/level, and fixes the level of its skills to the same number. Skills bought in a group can't have the option for a specialization (as individual skills can).

                              I'm thinking the best way to do this is to put these skill groups as sublists that can be purchased, automatically adding the skills within them, and overriding any duplicates. (For instance, if you bought Pistols at level 3, then added the Firearms Group at 2, it would move Pistols into that group and change the level to 2.) If a group were removed, it would also have to delete all the individual skills that came with it. I want to use sublists because the skills within them can be bought individually -- using sublists will help keep it organized.

                              I know it sounds like I'm getting into complicated stuff before testing the basics, but I've already gotten it to handle individual skills without a hitch. That wasn't difficult. But I'm not sure how to take a sublist and make it where it can be bought, instantly adding everything within it.

                              (I'm mainly trying to get the macro include file set up properly. I'm doing only minimal data-entry, usually two or three examples of each item just to ensure they behave.)

                              If there's still anything about this that's unclear, let me know and I'll see if I can find another way to explain what I'm aiming for.


                            Your message has been successfully submitted and would be delivered to recipients shortly.