Jump to content

cregan

Members+
  • Posts

    134
  • Joined

  • Last visited

Posts posted by cregan

  1. Swapping ad hoardings for cones as @krlenjushka did (and credit where it's due for the idea, and for sparking my curiosity again), renaming the "walls" directory in "mesh" to "walls-OLD" so it'd get missed and the brick wall on blank sides of the pitch wouldn't generate, copy/pasting/renaming the spectator_blue mesh into "shipping_container" as a replacement for shipping_container.sia to get rid of the shipping containers in exchange for people wandering outside the stadium rather than dotting the place with cones, and finally deleting "corner.sia" and "corner_xrefs" from the "/stadiums/0-10000/no_stand/" directory  to get rid of corner walls, we have:

     

    nowalls.jpeg

    (click to embiggen)

    I'm not sure about the hoardings, whether it's better with or without (and it will affect all grounds not big enough for animated hoardings), but losing the brick wall and corners is a definite improvement and those spectators don't look wholly out of place milling around in the car park like that...

  2. I don't want to redistribute SI assets other than copying my JSON, but as luck would have it, here's a final step-by-step if anyone wants to give it a whirl, or mess with things further, and it's all actually pretty easy, just a matter of copying a few directories into the right places:

     

    Before going further - terms and definitions:

    Root directory: 

    (path to steamapps)/common/FM)/data/sigfx/stadiums

    All directory paths will start from here (e.g. “/root/0-10000/a/“).

    Source resources: 

    These come in pairs, the xxxx.sia and the matching xxxx_xrefs subdirectory, and they're what you'll need to copy/paste into the new directories. In reality you probably only need the .sia because they seem to point to assets in the original directories - so my top.sia in “ba” will pull graphics from top_xrefs in “b” - but for safety’s sake it’s probably best to keep them together. For clarity, I’ll refer to them like this:

    #noright: this is /root/no_stand/right.sia and right_xrefs. It gives you no stand behind the goal, and while it might be called by the game by default sometimes anyway I use #noright in the new folders.

    #notop: this is /root/no_stand/top.sia and top_xrefs. It gives you no east/west stand. I haven’t copied #notop anywhere myself (FM’s not bad at calling it for grounds of 500-cap and below) but it’d be an option if you wanted to try creating a single-stand stadium option for sub-1k.

    #nocorner: this is /root/0-10000/no_stand/corner.sia and corner_xrefs. It gives you just a wall for your corners. Most small grounds call this anyway, but I copy #nocorner into most of the new folders.

    #acorner: this is /root/0-10000/a/corner.sia and corner_xrefs. I’m not sure that this has any effect to be honest but I was hoping to get a slight variation from the basic “wall” corner by using it in one of the new folders.

    #btop: this is /root/0-10000/b/top.sia and top_xrefs. The “b” assets are where all the fun stuff is. There are so many more options here compared to "a".

    #bright: this is /root/0-10000/b/right.sia and right_xrefs.

     

    Step 1: Backup

    Copy your /root/stadium_metadata.json file and /root/0-10000/ directory to a backup location. If anything goes horribly wrong, you can copy and paste these back.

     

    Step 2: Create your directories

    In /root/0-10000/ create three new directories called “aa”, “ba” and “ca”. If you call them something else you'll have to edit the JSON to match down in Step 4.

     

    Step 3: Copy assets into them

    Into /root/0-10000/aa/ you want to copy and paste #nocorner, #noright, #btop.

    Into /root/0-10000/ba/ you want to copy and paste #acorner, #noright, #btop.

    Into /root/0-10000/ca/ you want to copy and paste #nocorner, #noright, #btop. (And yes, this is the same as “aa”, and yes, this may be needless duplication. It will give you an easy directory for making any tweaks to capacity settings in the JSON though, and doesn’t do any harm. You could also swap #noright for #aright here if you wanted to maybe get fewer two-stand grounds sub-1,500ish capacity.) 

     

    Step 4: Set the JSON

    This is my entire /root/stadium_metadata.json file: http://pastebin.com/NpZBTPUi

    Delete the existing contents of your /root/stadium_metadata.json and paste everything from that pastebin in its place. The JSON assumes you've copied the assets in Step 3. I've used a variety of calls for "name" rather than the default "medium steps" options. I don't know if doing so makes the slightest bit of difference, but given that hideous naming inconsistency between the otherwise identical "medium steps" of "a" and "b", it avoids calling the wrong one and getting missing assets.

     

    Step 5: Backup again

    Game updates may (probably won’t, but may) overwrite all this, so you want to backup your modified /root/stadium_metadata.json and /root/0-10000/ directory into another safe place so you can copy it back.

     

    Finished!

     

    The game generates stadiums from available modules according to some kind of style setting in the database (I imagine) that relates somehow to the .json. It sets which modules it’ll use for each stadium, as far as I can tell, the first time it simulates a match at full detail for that ground. Once modules have been set I don’t think they change (after running so many Swedish test saves and looking at so many stadiums I’m simply not sure any more) - if MyClub FC has “single-roof box stand tunnel east, unroofed box stand no-tunnel west, no stand north/south” flags set after its first match, that’s what it’ll be on that save no matter how much messing you do with the JSON afterwards. The only way of altering grounds once set is by deleting assets, which will leave those sections empty. We don’t want to go deleting assets, though, do we?

    This version seems to be glitch-free and offer a reasonable amount of variation given what I've got to work with. I'd love a GRASS_BANK option, for instance, or a CHAINLINK_FENCE, but without being able to add assets from scratch and edit .sia files to call them, that's impossible. Likewise, I wish I could stop the game calling the same blue shipping containers and traffic cones so often, but them's the breaks. I haven’t messed with any of the capacities here, but if you wanted to I’d advise shifting them upwards from the baseline “a” capacities to avoid multi-tier stands appearing unrealistically early. 

    I’ve considered adding in an “a_tiny” variant using #notop, #noright, #nocorner and the capacity settings from “a”, as well as a #nocorner, #btop, #bright “a_plus” variant with capacity between “a” and “b”, somewhere around 800 for the top stand and around 5-600 for the right stand, and a “c_minus” variant using the capacities for “c” but #nocorner, #btop and #bright or #nocorner, #ctop and #bright. I don’t, in all honesty, know how much difference that’d make though given that I’d expect larger grounds to be more “fixed” in the database in terms of their overall style.

    I've also considered, but not played with, trying to use the glitch I suffered before when calling something with the wrong name to sometimes artificially get rid of the brick wall behind the goal (and the corner walls that join it) when there's no stand there, by, for "ba", say, calling "NOCROWD_PARTITION" in the JSON entry for ba/right and ba/corner instead of "CROWD_PARTITION". If this worked, it'd look for an .sia file that doesn't exist and fail to render the wall asset. This'd give more variation between different two-stand grounds. I haven't messed with it, though.

  3. Minor further update:

    • The graphics glitch maybe because SI's naming scheme for the base steps structure is inconsistent. I thought I'd got it the right way round but I'm pretty sure I've goofed a couple of times which is why the steps (which underlie the whole structure) weren't appearing on certain stands. "a" stadiums have MEDIUM_EXITS_STEPS in their "top" parts list. "b" stadiums have MEDIUM_STEPS_EXITS in theirs (and, because reasons, MEDIUM_EXITS_STEPS in their "corner" parts). :idiot: That JSON in the pastebin link has it wrong at least once. I finally figured this out by reverting to my first version of JSON and folders which throws up no glitches at all. Later versions don't actually seem to improve variation at all, not noticeably anyway, so maybe this is better. (Part of that may be because individual .sia files call on the resources of others via fixed paths - pulling assets from "b", for instance - so other than presenting the game with a wider set of graphical options within a given capacity range, by offering "aa" that then routes to "b" and "no_stand", further variants probably won't add anything.)
    • The .sia files I assume are Silo 3d graphics scenes, but Silo (at least, the downloadable version from the Silo website) can't seem to open them. I tried editing the readable part of one of the "no stand" files to get rid of the brick wall behind the pitch, again for variation, because you can see the texture paths called on, but no success. That's a dead end for me, I think.
    • Even dropping all the multiple section references from "b-f" doesn't stop multi-tier stands appearing, nor does it restrict them to short exits. Damn you, Sandvikens. Just... damn you.

    In all honesty, I might be at my limit here. Unless it were possible to dig in to the existing .sia files (or create new ones - a chainlink fence mesh that would offer an alternative option to brick walls set in prop_metadata.json, for instance), or set stadium properties in the database, giving small "a" class stadiums access to the resources of "b" and "no_stand" is probably as good as I can get it.

  4. @sevestra: Ouch, that's rough. :(

    @ommerson: It's very sensitive to errors; I missed out a comma at one point and that stopped the game from running the moment it had to generate match reports.

     

    JSON entries

    I've kept noodling around with the .json for the a-c entries. This is my current .json from line 75 down to line 366 in the original: http://pastebin.com/e0CS1fDq  

    (Copy that, highlight everything in stand_metadata.json from 75 to the closing "}," on the line before the first entry for "e", which begins - 

        {
          capacity_tags : 0,
          hash_key : 2695165259,
          id : 520,
          name : "0-10000/e/corner",

     - and then paste over and it'll be exactly the same as mine.)

     

    Folders

    You'll also need a similar folder setup. This is mine: http://imgur.com/a/AOtf9 (each image's description tells you where the parts come from).

     

    What The Bits Do, Or "How Is Stadium Formed?"

    All I've changed so far are stadiums within the a-c range. With each letter - a, b, c, e, f - as well as the graphics options varying, the capacity of each modular part listed in the .json rises. "a" stadiums (or parts thereof) are the smallest, the 0-2,000-ish (you could do the maths and get the actual amount, but this seems to be the system) ones. "b" covers the band above, and so on. I've concentrated most on the smallest "a" band because it's "a" that has the fewest original graphical variants - "b" has plenty, some of them really neat. It's also in "b" that you get the first two-tier stands in the original, and I've changed the .json to (hopefully) take those out because I don't think it's especially realistic.

    So far, this is what I've deduced:

    • "Top", as referred to in the .json and in the corresponding directory, is the two main, "long" stands. Reason I think that: it's these ones that have PLAYER_TUNNEL references. Note: I used to think "top" was the stands behind the goal and I haven't yet changed those directories with "no stand" _xrefs in "top" so that it's "right" that's the spartan one.
    • "Right", confusingly, refers to the stands behind each goal. Reason I think that: they never have tunnels. Also, their capacity is always slightly lower, and they're not the first ones to start getting double tiers.
    • "Corner", is as you'd expect, the bits that fill in the corners of the ground. For small stadiums, these will almost always be empty barrier walls.
    • Within each xxxx_xrefs directory are the individual graphical pieces/options that together make up an individual design. Some will have a roof, for example, while some won't. Some have an end wall. Some are scaffolding-type bleachers, some are concrete stands. And so on. I don't know if deleting an option - a type of roof, say - within one xrefs directory will prevent it being picked as an option (since it'd surely still be listed in the directory's corresponding .sia file) or if it'll simply fail to render as a missing asset.
    • The call made in the .json for each section of ground (for example name : "MEDIUM_STEPS_PLAYER_TUNNEL"doesn't define the default look of each section. In my current version of the .json I've changed everything back to MEDIUM_STEPS_EXITS because that seems to be the expected default and doesn't seem to stop other designs appearing with equal frequency. I was also hoping to cut out a couple of graphical glitches (see below) doing this, but failed.
    • If there is more than one section listed between the square brackets after "steps:" (for example, c/top has two), each section is a tier, and tiers are set from bottom up. Reason I think that: it's the first section that has the tunnel.
    • Tiers are built like a flight of stairs and are picked from the range of available builds, layering one above and behind the other. This can result in anything from a "classic" two-tier stand built from two sets of steep seating with exit tunnels with a guard wall at the front of the upper stand to a Stade Velodrome-style smooth progression of simple steps all the way up.

    And here's what I've deciphered of the JSON tags in each entry in the file:

    capacity_tags: ???

    hash_key: ???

    id: ???

    name: the location FM will look for this section's .sia file and _xrefs directory.

    steps: how it builds the stand; more than one section within these square brackets will mean more than one tier on the stand. Edit: Not so! I should've paid more attention to "e" and "f". I think this might actually be a way of setting different options. "f" has versions of LONG_, MEDIUM_ and SHORT_EXITS_STEPS both with and without tunnels, for six steps in total, so this can't be tiering, or at least not as straightforwardly.

    capacity: how many people the section can hold; I presume FM adds together capacities to make a ground total equal(ish) to the stadium's listed total capacity. There doesn't seem to be any difference between different graphical options; a blocky concrete stand and a little-large-little scaffold stand both pulled from "b" will hold the same number of people. I think it builds main/tunnel stand first, then the opposite stand, then the two stands behind the goal, so if it picks a big one for the main stand (from "c" say) it may pull a smaller one (from "a", say) for the other long stand, then have run out of spare capacity and leave nothing behind the two goals.

    hash_key: ???

    name: what I presume to be the base, default graphical building block of the section of the options in _xrefs. Varying this doesn't seem to do much.

    section: here comes the crowd maths, I guess

    capacity (top one): same as "capacity". I presume some kind of max crowd size but mostly ??? I've not tried varying any of these yet, beyond making sure the top one matches the overall one.

    capacity (middle-top one): ???

    capacity (middle-bottom one): ???

    capacity (bottom one): ???

    tunnel: boolean, tells FM whether there might be a player tunnel or not.

     

    Results So Far

    By providing more results in the standard capacities in the "a" range, and a few more in "b" and "c", I think FM is more inclined to mix its smaller stadiums and it's definitely much more disposed to have small stadiums with only two stands, rather more realistically. From experimentation there's clearly some kind of setting for clubs within the database that means they render consistently within their size range (Boden's ground in Sweden is particularly distinctive, as is Konyaspor's), but I have no idea how, and since I'd have to copy the unmodded files back and then go messing around again, I haven't had time to play with it.

    There are flaws, though. I've noticed a couple of graphical glitches where certain assets - one type of seating for scaffold-style stands, low, unroofed steps on concrete-style stands - don't render for the stands opposite the main/tunnel stands (and nor do spectators on them, though their shadows do). See an 800-cap ground here - http://imgur.com/leEsuCj - or a 1,500-cap ground here - http://imgur.com/TSyTHUe

    I'm hoping that this might be an artifact of the deleted corner assets in the "ad" directory, some weird glitch carried over that can be sorted by getting rid of "ad". Otherwise, I'm at a loss, unless there's some odd path within an .sia file somewhere relying on the file being in "b" directory (where I copied them from). Without being able to edit .sia files, I can't know for sure (I've not tried renaming them to .xml and seeing if that's all they are, of course...).

    There's also Sandvikens IF. There are other examples, but their ground is the worst. I've been testing on Sweden which has loads of small grounds, starting a new save each time (because ground generation is fixed the moment matches start being simulated), and starting with the D2N and working down through home games, I soon come to Sandvikens IF. Used to be a big club, but not any more. The ground has a 4,000-cap in-game as I recall. In reality, it looks like this: http://www.groundhopping.se/Sandviken.htm

    That's empty behind both goals, the nearside stand just a grass bank with some wooden benches at the top, and the main stand quite a neat example of a railings/scaffold/seats type of the kind that's right there in the graphics assets. Here's how it renders without fail every single game: http://imgur.com/9NXFp5k

    Even after taking multi-tiers out of "b", I still get that hideous unroofed main stand. Empty behind both goals, single-tier on the nearside, and that monstrosity leering at me. Very annoying. It's probably removable by changing capacity values at each stage so multi-tier really won't kick in until at least 8-9,000 (or maybe not even within the 0-10k range at all), but I've not had the time yet.

    On the upside, there's a sign there and in the 800-cap glitch screenshot of Lindome's ground above that quasi-athletics tracks might be possible because there's a coloured border strip around each pitch. Lindome's is more or less the right shade for a running track. No way of setting that in the .json though.

  5. I've done a little more experimenting, creating another couple of custom directories ("ba" and "ca"), this time using just the "crowd_partition.sia" in corner_xrefs and top_xrefs (and their matching corner.sia and top.sia files) from the original "a" directory in the interests of seeing if that makes a difference - I was hoping to get a result with stands but no wall behind the goal - and amending the .json file to offer different entries for "right" like so:

            {
          capacity_tags : 0,
          hash_key : 1424662799,
          id : 545,
          name : "0-10000/ba/corner",
          steps : [
            {
              capacity : 107,
              hash_key : 1643777492,
              name : "CROWD_PARTITION",
              section : [
                {
                  capacity : 107
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                }
              ],
              tunnel : false
            }
          ]
        },
        {
          capacity_tags : 0,
          hash_key : 1081417356,
          id : 553,
          name : "0-10000/ba/right",
          steps : [
            {
              capacity : 556,
              hash_key : 1643777492,
              name : "RAILINGS_SIDE_STAND1",
              section : [
                {
                  capacity : 556
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                }
              ],
              tunnel : false
            }
          ]
        },
        {
          capacity_tags : 0,
          hash_key : 671878609,
          id : 553,
          name : "0-10000/ba/top",
          steps : [
            {
              capacity : 558,
              hash_key : 1643777492,
              name : "CROWD_PARTITION",
              section : [
                {
                  capacity : 558
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                }
              ],
              tunnel : false
            }
          ]
        },
            {
          capacity_tags : 0,
          hash_key : 1424662799,
          id : 545,
          name : "0-10000/ca/corner",
          steps : [
            {
              capacity : 107,
              hash_key : 1643777492,
              name : "WALL_BRICK_CURVED",
              section : [
                {
                  capacity : 107
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                }
              ],
              tunnel : false
            }
          ]
        },
        {
          capacity_tags : 0,
          hash_key : 1081417356,
          id : 553,
          name : "0-10000/ca/right",
          steps : [
            {
              capacity : 556,
              hash_key : 1643777492,
              name : "RAILINGS_STAND_BACK",
              section : [
                {
                  capacity : 556
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                }
              ],
              tunnel : false
            }
          ]
        },
        {
          capacity_tags : 0,
          hash_key : 671878609,
          id : 553,
          name : "0-10000/ca/top",
          steps : [
            {
              capacity : 558,
              hash_key : 1643777492,
              name : "CROWD_PARTITION",
              section : [
                {
                  capacity : 558
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                }
              ],
              tunnel : false
            }
          ]
        },

    Since I assume stadium layouts generate either at new game start or else the first time they're viewed, I've started another test game in Sweden (which has loads of tiny grounds) and the results are now:

    Arameisk-Syrianska (capacity 1,000): http://imgur.com/GwS3UYv

    Savedalens (capacity 2,000): http://imgur.com/hI5bJ4n

    And the one that I'm particularly pleased by - bearing in mind I've not deleted any of the original, default graphics/files/directories, so this is properly generated and not a case of missing graphics - is Konyaspor's 500-capacity ground: http://imgur.com/zHBBeVN

    From this, I'm guessing that @ommerson may be right and the "c" directory could be where the main stand (the one behind the dugouts) is generated from, although in the .json it seems like "a" is for very small cap modules, "b" for small, "c" for slightly larger, etc. (and it may then be that his ground where deleting "c" made his main stand vanish would have simply used a "c" module for that stand because of the ground's actual capacity, while the other, stand had a smaller capacity and was pulled from "b"). The other possibility is that they're just being pulled from the other options (particularly, I'd guess, medium_steps_exits.sia) in the "a/b/aa/ba/ca" directories.

    Next area for investigation I think I'll try will be lowering the "capacity" entries in the .json to give a more restricted set of ranges and allow for tighter control of just which modules are available in which sizing. It'd be a lot easier if I knew what the different modules actually looked like in game - (what's "double_sloped_roof.sia" actually render like, for instance?) - or had something that could edit .sia files (I can see enough to know they call different texture/mesh elements, and editing would allow quite fine control over which ones not to call, for instance) or view .dds graphics. Still, promising so far.

  6. I think I've had some luck messing with this. On a quick noodle around based on what @sevestra and @KUBI shared I:

    - Created a new "aa" folder in the "0-10000" directory.

    - Copied the "top" and "corner" directories and matching .sia files from "stadiums/no_stand/a" (that's not the subdirectory within "0-10000", but the root stadium folder) into "aa". This allows stadiums with no stands behind the goals (and I figured the corners wouldn't hurt).

    - Copied the "right" directory and matching .sia file from "0-10000/b" to "aa". The "b" directory seems to have many more variants within it than "a", including all the stands with railings, with no roofs, etc.

    - Added the following to the .json file:

        {
          capacity_tags : 0,
          hash_key : 1424662799,
          id : 545,
          name : "0-10000/aa/corner",
          steps : [
            {
              capacity : 107,
              hash_key : 1643777492,
              name : "WALL_CORRUGATED_CURVED",
              section : [
                {
                  capacity : 107
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                }
              ],
              tunnel : false
            }
          ]
        },
        {
          capacity_tags : 0,
          hash_key : 1081417356,
          id : 553,
          name : "0-10000/aa/right",
          steps : [
            {
              capacity : 556,
              hash_key : 1643777492,
              name : "RAILINGS_SIDE_STAND",
              section : [
                {
                  capacity : 556
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                }
              ],
              tunnel : false
            }
          ]
        },
        {
          capacity_tags : 0,
          hash_key : 671878609,
          id : 553,
          name : "0-10000/aa/top",
          steps : [
            {
              capacity : 558,
              hash_key : 1643777492,
              name : "CROWD_PARTITION",
              section : [
                {
                  capacity : 558
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                },
                {
                  capacity : 0
                }
              ],
              tunnel : false
            }
          ]
        },

    (I assumed the "name" attribute would match the actual graphics files within the top/corner/right directories).

    What I've ended up with on a match for Ange IF (who have a stadium of 1,000 capacity) at least seems to partly match some of the new settings: http://imgur.com/a/79XNe

    Dreadful camera angle (from low down you can see the trees and stuff behind the sea of concrete surrounding it, which makes it look better), but there's no stand behind either goal and the corners are the curved corrugated metal. I don't think the stand to the right of that pic is the "aa/right" variant, and the main stand to the left definitely isn't, but I'd guess the individual modules are picked from all those on offer in the appropriate size range. If I edited the .json to offer more all-standing/tiny options for low-capacity "right" modules (create more directories - "ab", "ac", "bb", etc. - and reference each in the .json using similar RAILINGS_SIDE variants), I suspect I'd see more of those and fewer big stands.

    For comparison, this is Soderhamns 1,000-cap ground: http://imgur.com/a/EOd0v

    No corrugated corners, so that's obviously a random choice depending on needed capacity, and most grounds at this size will have empty corners, and both main stands are different, but there's still no stand behind the goal.

×
×
  • Create New...