Conventions

    Joined
    Jan 22, 2014
    Messages
    1,047
    Reaction score
    299
    Introduction
    We as a community should agree to conventions. Why? Because standards are awesome and make everyone's lives easier.

    This thread does also fit into General Discussion, however I feel somehow more comfortable with it being located here. It is not strictly dedicated to conventions for official content, but game content in general.

    Of course I do have something specific in mind. You may have heard that we will be getting build mode templates with the next game update, which are basically parts you can paste on your structures. I quickly ran into the problem that this template list can grow huge really fast, which makes you lose overview. Meaning that you are forced to strictly organize your templates. Maybe we will get better organizational features, but we couldn't expect them anytime soon.
    Now you may ask, how does this affect the community as a whole?
    The answer is simple: Those templates can be shared. The more people sharing their templates agree to a naming convention, the easier organization will get.

    Definitions
    • Text between "less/greater than" operators is a variable (like this: <varname>). It shall be replaced by an appropriate replacement.
    • Text between square brackets is to be considered optional (not mandatory for the naming scheme).

    Template Conventions
    I suggest the following naming scheme for templates:
    <type>_<palette name>_<typespecific info>_<description>​

    Never use spaces, prefer camelCase instead. The description field (or "additional info") may also contain underscores. Spaces in file names make batch processing harder.

    Font templates
    I created a font, for fonts the scheme would look like tihs:
    Char_<font name>_<character name>[_<em size>[_<additional info>]]
    For non-alphabetic and non-numeric characters, we just put the character in the character name field. We enclose other characters in double minuses, writing the character name down (use underscores or camelCase instead of spaces).
    The em size is the height of the letter M in blocks.

    Fonts should be laid out on the YZ plane, so that they can be pasted on a ship's right side without rotation.

    Examples
    For the characters Aurek, Trill, Orenth and the question mark from the Aurebesh alphabet (each character 5 blocks high), the full template naming would be like this:
    • Char_Aurebesh_A_5_Aurek
    • Char_Aurebesh_T_5_Trill
    • Char_Aurebesh_OO_5_Orenth
    • Char_Aurebesh_--Question_Mark--_5

    Conclusion
    Since the template list is ordered alphabetically, content that belongs together will automatically be grouped together, improving accessibility greatly.

    Questions, Suggestions, Remarks, …?
     
    Last edited:
    Joined
    Jun 8, 2014
    Messages
    272
    Reaction score
    71
    • Legacy Citizen
    Finally someone knows about Aurebesh!

    Anyways, I do like this idea and fully support it.

    Sincerely,
    AdmiralGialAckbar00
    StarMade Dock Messenger
    Alliance to Restore the Republic
     

    NeonSturm

    StormMaker
    Joined
    Dec 31, 2013
    Messages
    5,110
    Reaction score
    617
    • Wired for Logic
    • Thinking Positive
    • Legacy Citizen 5
    Examples? ?
    ??

    Logic_Module_RAM-Bank_4x4b_NeonSturm_extender
    Logic_Module_RAM-Bank_4x4b_NeonSturm_first
    Logic_Module_RAM-Controller_4b-value_4b-address_NeonSturm​

    Would that be ok?

    What if somebody writes
    Logic_Module_RAM-Controller_4v-4a_ShortNameIsMyNick *pun intended*​



    I think:

    Logic_Module_ = Something big
    Logic_Element_ = Something like a 4-block XOR, XNOR, odd-parity or even-parity, raising/falling-edge detector...
    Logic_Circuit = Something that full-fills a specific purpose alone.​


    I guess we are soon getting a s**tload of standards for single paramenters and for those who write the author first and those who write the module name first.

    (author first = better group letters together
    module name first = better to choose between similar modules, less holes in many not completed sets)
     
    Last edited:
    • Like
    Reactions: der_scheme
    Joined
    Jan 22, 2014
    Messages
    1,047
    Reaction score
    299
    Finally someone knows about Aurebesh!
    Be amazed. My font was approved, which means that as soon the next update hits public (which could happen today), you can paste those glyphs onto your builds. :)


    Examples? ?
    ??

    Logic_Module_RAM-Bank_4x4b_NeonSturm_extender
    Logic_Module_RAM-Bank_4x4b_NeonSturm_first
    Logic_Module_RAM-Controller_4b-value_4b-address_NeonSturm​

    Would that be ok?

    What if somebody writes
    Logic_Module_RAM-Controller_4v-4a_ShortNameIsMyNick *pun intended*​



    I think:

    Logic_Module_ = Something big
    Logic_Element_ = Something like a 4-block XOR, XNOR, odd-parity or even-parity, raising/falling-edge detector...
    Logic_Circuit = Something that full-fills a specific purpose alone.​


    I guess we are soon getting a s**tload of standards for single paramenters and for those who write the author first and those who write the module name first.

    (author first = better group letters together
    module name first = better to choose between similar modules, less holes in many not completed sets)
    Are vast categories like this even feasible? I'm not sure because I'm not going to make big stuff with logic anytime soon, but I am wondering if circuit parts maybe are too different, so that putting them into categories for the sake of doing so would do more harm than good?
    If not, maybe categories should more resemble the function, because complexity would be hard to define. For example, let a Logic_Circuit be stateless (doesn't store data) and a Logic_Module have a state (does store data)? Or is there even some kind of industry standard scheme for categorizing logic stuff?

    Also I think it may be feasible to have the dimensions of the circuit in the template name. There may be different ways to build and layout stuff, and having all those circuits available and easily distinguishable would certainly be a benefit.

    Anyway, since the author's name would influence ordering, it should always come last. I don't think it's advantageous having stuff being ordered after the author's name. The template's designated use is far more important.
     
    • Like
    Reactions: AdmiralGialAckbar00

    NeonSturm

    StormMaker
    Joined
    Dec 31, 2013
    Messages
    5,110
    Reaction score
    617
    • Wired for Logic
    • Thinking Positive
    • Legacy Citizen 5
    Anyway, since the author's name would influence ordering, it should always come last. I don't think it's advantageous having stuff being ordered after the author's name. The template's designated use is far more important.
    If I make a font named NeonSturm or you make a font called "DerScheme" or "der-scheme" (underscore would not really fit into your naming :p), you would have your name in front of other things.

    I think _extender and _first may fit behind the name as others don't have these and it might be unique to the builder.

    I can agree on both - unique stuff not related to the function (but maybe indicating display blocks instead of cheaper stuff in their place) behind the name OR the name always at last.
    Just think there should be a standard.

    1. Module :

    Has a "private" part and an interface accessing it included.
    2. Element :

    Outputs exactly 1 bit.
    XOR, EVEN, ODD​
    3. Function :

    Outputs at least 2 bit and is not a wrapper
    AND, SUB, DIV, MULT, ..​
    4. Wrapper :

    Outputs exactly the input in another shape.
    (1 of 16 options to a 4-bit value and back)
    or 0000'1111 to 1001'110​
    But allowed to output seriell instead of parallel. (de)multiplexer.

    Does not semantically change values (else it's a function)​
    5. Logic-Interface / User-Interface :

    1. It basically allows you to use something without knowing what's behind the interface just by knowing the Interface.

    2. It has to explain how to itself is to be used (display blocks)

    Example of a Logic-Interface : RAM-Controller (shameless self promotion :)) or an alert-light control (4 states, red, green, blue, no)
    Example of a User-Interface : A password input field or a gravity-lift access panel

    6. Circuit : Something that doesn't fit in above.

    You don't have to write "Logic_Circuit_" but can also write "Logic__" with 2 underscores since it is the default.
     
    Last edited:

    Reilly Reese

    #1 Top Forum Poster & Raiben Jackpot Winner
    Joined
    Oct 13, 2013
    Messages
    5,140
    Reaction score
    1,365
    • Legacy Citizen 8
    • Thinking Positive
    • Purchased!
    Ummm this does not seem to pertain to modding. I think this would be better as a sticky in Shipyard
     
    Joined
    Jan 22, 2014
    Messages
    1,047
    Reaction score
    299
    I've updated the OP. Font template naming conventions now contain more explanations, as well as info on how to lay it out. Creators sticking to these conventions would make letters placement more intuitive, since their initial rotation would always be the same.

    If I make a font named NeonSturm or you make a font called "DerScheme" or "der-scheme" (underscore would not really fit into your naming :p), you would have your name in front of other things.

    I think _extender and _first may fit behind the name as others don't have these and it might be unique to the builder.

    I can agree on both - unique stuff not related to the function (but maybe indicating display blocks instead of cheaper stuff in their place) behind the name OR the name always at last.
    Just think there should be a standard.

    1. Module :

    Has a "private" part and an interface accessing it included.
    2. Element :

    Outputs exactly 1 bit.
    XOR, EVEN, ODD​
    3. Function :

    Outputs at least 2 bit and is not a wrapper
    AND, SUB, DIV, MULT, ..​
    4. Wrapper :

    Outputs exactly the input in another shape.
    (1 of 16 options to a 4-bit value and back)
    or 0000'1111 to 1001'110​
    But allowed to output seriell instead of parallel. (de)multiplexer.

    Does not semantically change values (else it's a function)​
    5. Logic-Interface / User-Interface :

    1. It basically allows you to use something without knowing what's behind the interface just by knowing the Interface.

    2. It has to explain how to itself is to be used (display blocks)

    Example of a Logic-Interface : RAM-Controller (shameless self promotion :)) or an alert-light control (4 states, red, green, blue, no)
    Example of a User-Interface : A password input field or a gravity-lift access panel

    6. Circuit : Something that doesn't fit in above.

    You don't have to write "Logic_Circuit_" but can also write "Logic__" with 2 underscores since it is the default.
    I think this is too complicated. Imagine a newbie trying to find a certain circuit. I propose to not use any classifications as part of the logics naming scheme. However, defining a general classification might still be good, it could be used in the palette name or the description. I therefore suggest a simplified logics naming convention:
    • Circuit_<palette name>_<circuit name>_<description>
    • Logic_<palette name>_<circuit name>_<description>

    Ummm this does not seem to pertain to modding. I think this would be better as a sticky in Shipyard
    Well, I originally intended to collect conventions for all kinds of stuff. But since I currently don't have anything else to discuss than templates, I wouldn't care if it was moved. You can of course always feel free to share concerns like this with the moderators, using the Report function.
     

    NeonSturm

    StormMaker
    Joined
    Dec 31, 2013
    Messages
    5,110
    Reaction score
    617
    • Wired for Logic
    • Thinking Positive
    • Legacy Citizen 5
    I've updated the OP. Font template naming conventions now contain more explanations, as well as info on how to lay it out. Creators sticking to these conventions would make letters placement more intuitive, since their initial rotation would always be the same.


    I think this is too complicated. Imagine a newbie trying to find a certain circuit. I propose to not use any classifications as part of the logics naming scheme. However, defining a general classification might still be good, it could be used in the palette name or the description. I therefore suggest a simplified logics naming convention:
    • Circuit_<palette name>_<circuit name>_<description>
    • Logic_<palette name>_<circuit name>_<description>


    Well, I originally intended to collect conventions for all kinds of stuff. But since I currently don't have anything else to discuss than templates, I wouldn't care if it was moved. You can of course always feel free to share concerns like this with the moderators, using the Report function.
    Then maybe add a Logic_Newbie :)
    How would you make a difference between Logic and circuit?

    Palette name is a good idea, but might certain <circuit name> difficult to find (again)
     
    Joined
    Jan 22, 2014
    Messages
    1,047
    Reaction score
    299
    Then maybe add a Logic_Newbie :)
    The whole point is that those conventions are applied to templates people share with other people. This would therefore be contradictory to the intention, because it would add another category to the ones already there.

    How would you make a difference between Logic and circuit?
    I don't. For fonts I had to decide between Font and Char (and maybe Writing, Letters, Glyphs), I chose Char because that is what the template is, a character. Personally, I would prefer Circuit over Logic, but that would have to be decided.

    Palette name is a good idea, but might certain <circuit name> difficult to find (again)
    True. Palette is probably good for everything, except logic. Should we complety omit the palette?
     

    NeonSturm

    StormMaker
    Joined
    Dec 31, 2013
    Messages
    5,110
    Reaction score
    617
    • Wired for Logic
    • Thinking Positive
    • Legacy Citizen 5
    Then maybe add a Logic_Newbie :)
    Was a joke ;)
    True. Palette is probably good for everything, except logic. Should we complety omit the palette?
    You should not edit:
    0. Logic_ABC_*
    Outputs exactly 1 bit.
    XOR, EVEN, ODD

    1. Logic_Basic_*

    Short for advanced - now you should know the palette naming convention.
    (de)multiplexer
    ...

    2. Logic_Calc_*

    Outputs at least 2 bit and is not a wrapper
    AND, SUB, DIV, MULT
    clocksDIN-normed stuff

    1+2+3 should be officially discussed and managed as one public palette (voting) + approval of at least 1 person who knows this very well. (( Not added randomly ))

    There should be a warning in the convention-description to not clutter this. Parents responsible for their kids, do that on your own risk :)



    You can use one of these freely:
    Logic-Circuit_"CircuitName"_"username"
    Logic-Circuit_Person-Counter_NeonSturm
    Everything that doesn't make a palette.
    Logic-Palette_"Palette-Name"_*_"username"
    Logic-Palette_RAM_*_NeonSturm
    everything that belongs to storing data and has a sane name

    Logic-User_"User-Name"_*
    Logic-User_NeonSturm_MyStuff
    can be anything from "MyStuff", "FuckingIntrudersXD", ...​