Map runs fine for me, crashes for everyone else.

Discussion in 'Mapping Questions & Discussion' started by Bread, Apr 12, 2014.

  1. Bread

    Bread L1: Registered

    Messages:
    11
    Positive Ratings:
    0
    As of late, I've been experiencing a really annoying issue. I had picked up development of a map due to the porters loss of motivation. I completed the map a while ago and have now found that after compiling and uploading, every person I've had test the map has crashed to their desktop (I've given the map to about 3 people). The map works fine for me with no console errors with the exception of these which have been around before I begun working on the map.

    According to them, they have had no errors pop up upon crash.

    I am only running VBSP as of now as a way to rule out any issues with VVIS/VRAD/Packed content as I found this issue when I had the map fully compiled and packed.

    Been sending the bsp packed into a bz2 archive, tested uncompressed.
    Used VBCT and the default Hammer compile tool to compile it, both give the same results.
    Only internal entities (I believe) are func_visclusters, which I removed, compiled and uploaded/tested.
    Ran the full compile log through interlopers, only to get a 'node without a volume' error.


    Heres a full compile log from VBCT.

    Here's the map fully compiled with VBSP, VVIS and VRAD. It is not packed with any custom content however, so prepare for checkers galore.

    For those interested, the map is vsh_dr_minecraftworld.
    I've been working on b4 as of late last year after the original porter (Hawke/SaintHawke) decided to hand work over to me.
     
    Last edited: Apr 12, 2014
  2. qUiCkSiLvEr

    qUiCkSiLvEr L1: Registered

    Messages:
    3
    Positive Ratings:
    1
    I believe this is your problem:

    VRAD : entdata [variable] 628207/393216 (159.8%) VERY FULL!
    VRAD --> WARNING - Max Limit Approach![/quote]

    You have way too many entities on the map and this will definitely cause clients and servers to crash.

    The compile times for normal vvis and vrad seem unusually fast too, might be something going on there.
     
  3. Bread

    Bread L1: Registered

    Messages:
    11
    Positive Ratings:
    0
    The maximum amount of entities allowed is 2048. I added all of entities (point and solid) using the map info and added 100 to account for players/weapon models/ragdolls/etc and this only accounts to 2019. Adding 100 to account for players/weapon models is pretty generous.

    100% is apparently just a recommended limit.
    Taken from the wiki:
    VVIS has been drastically reduced due to the use of func_visclusters. I have tried compiling with them gone and that has not yielded any positive results.

    Can't be sure about VRAD, although the lighting is fairly basic. The map mostly consists of a light_environment and basic light entities.
     
  4. A Boojum Snark

    aa A Boojum Snark Toraipoddodezain Mazahabado

    Messages:
    4,769
    Positive Ratings:
    5,527
    The entdata "limit" was a recommendation for the HL2 developers to meet the minimum hardware specs they wanted. It is in no way a hard limit, nor is it relevant anymore (many TF2 maps go above 100%).

    The actual engine limit of 2048 is edicts (entity dictionaries) and in no way corresponds to the "map info" in Hammer. That dialog lists every entity, including internal ones that don't even exist in the BSP (func_detail, prop_static, etc), ones that are usually removed (unnamed lights), and doesn't account for the fact that some entities require more than one edict to load into the engine (point_spotlight, move_rope, and others).

    To check the actual amount, load the map and enter cl_showents in the console. The number by the last item is roughly how many your map is using (the last couple will be you yourself). While your "100 below" was based on a different count, you should actually keep about 600 free for run-time entities to use. player + 3 weapons + 3 cosmetics * 32 players, plus additional entities like buildables, dropped weapons/debris, all projectiles... it adds up.

    With that cleared up, I am all but positive the problem lies in your "node without a volume" error. That's a significant problem in the core structure of the map. I don't have a lot of experience with what causes it though since it doesn't show up often. Do you have any unusually complex geometry? Something you carved/clipped/VMed a lot? Try Hammer's check for problems too, it might find something invalid or whatnot. For errors that don't give coordinates, if you don't have an idea of where to check you can always try a binary search. Cordon off half the map and compile, then the other half. See which side the error is in and repeat by chopping that one in half, keep going until you can locate it.
     
    • Thanks Thanks x 2
  5. Bread

    Bread L1: Registered

    Messages:
    11
    Positive Ratings:
    0
    Turns out it was the "node without a volume" error. I was a bit sceptical about it being that as I had dealt with them before and I've read about them being basically harmless. I did use the cordon tool to narrow down exactly where it was, couldn't find the exact source, but I delete the little area I had narrowed down to and remade it. All fixed.

    There isn't really any complex geometry in the map, must've just made a mistake somewhere. Haven't touched the carve tool for a good while now and haven't really had any need to manipulate the vertexes.
     
  6. Bread

    Bread L1: Registered

    Messages:
    11
    Positive Ratings:
    0
    Last edited: Apr 13, 2014
  7. Crash

    aa Crash func_nerd

    Messages:
    3,148
    Positive Ratings:
    4,746
    100% it's your entity count.

    I had it up to about 140% with Trainsawlaser and it was occasionally crashing servers. I've got it down to 109% now and it's much more stable.

    What are you doing to get that high of a count? Based on the brush count it must be a huge map?
     
  8. A Boojum Snark

    aa A Boojum Snark Toraipoddodezain Mazahabado

    Messages:
    4,769
    Positive Ratings:
    5,527
    What number do you get from cl_showents? I'm not sure why it would crash for others and not you if it is an edict issue, but I suppose.

    I don't know if it will do anything, but try removing the spaces from your entity names. I haven't ever heard of it causing problems or being allowed/disallowed ...or even being done, but I noticed it when looking through your entities and sometimes spaces are bad if a program isn't written to handle it.

    edit @ crash: like I said, the percentage listed means nothing. Meridian has an entdata value of 199% and works fine. It's all in what kind of entities.
     
    • Thanks Thanks x 1
    Last edited: Apr 13, 2014
  9. Lampenpam

    aa Lampenpam

    Messages:
    1,019
    Positive Ratings:
    337
    I would like to see the vmf *grin*
    I hope it's not made of 64unitsĀ³ brushes all over the map like in minecraft.
     
  10. Crash

    aa Crash func_nerd

    Messages:
    3,148
    Positive Ratings:
    4,746
    Gotcha. I've always just used it as a rough gauge. I think I assumed it wasn't counting the minor entities for some reason.

    It would make sense if the map is really close to the limit that it would crash for a server full and not just one person testing though, wouldn't it?

    Any chance there is a server log of the crash available? An edict error would prove it's the entity count.
     
  11. A Boojum Snark

    aa A Boojum Snark Toraipoddodezain Mazahabado

    Messages:
    4,769
    Positive Ratings:
    5,527
    Yes, except that's not what is happening. It sounds like he is just giving the map to people to run by themselves and it crashes, which is what happens for me too. As well as the fact edict errors, in my experience, ALWAYS give the error dialog rather than a silent crash. It even crashed when I tried loading it in HL2DM (which would reduce the entity count by being unable to create tf stuff).
     
  12. Crash

    aa Crash func_nerd

    Messages:
    3,148
    Positive Ratings:
    4,746
    Aaaaand I missed a really important part of the problem. Carry on.
     
  13. henke37

    aa henke37

    Messages:
    1,876
    Positive Ratings:
    440
    To elaborate: the entdata value is the size of the entdata text. It has no correlation to the number of entities defined. My 815.4% map didn't even break 500 entities.
     
  14. Quiche Robbery

    Quiche Robbery L1: Registered

    Messages:
    1
    Positive Ratings:
    0
    Me and Bread were working together to fix this problem last night. After cordoning off sections of the map to see if they would crash or not, I eventually discovered that the problem lay somewhere around the spawn house. Now, Bread has narrowed the problem even further down, to a faulty input on a func_door_rotating or the logic_auto.
     
  15. Bread

    Bread L1: Registered

    Messages:
    11
    Positive Ratings:
    0
    @Crash
    It's a fairly large map, can't say it's huge though. Though I suppose deathrun maps are pretty entity hungry. Quite a diverse number of entities too.

    @A Boojum Snark
    I'm getting 1850 entities just by myself. I added a server-full of bots and killed them a few times (for weapons/ragdolls) and got an entity count of between 1950 and 1980

    @Lampenpam
    A few parts of the map were completely made up of each individual block, which made me die inside. I fixed that up though. Although, the blocks are split up into 40x40 blocks for some unknown reason. The map was ported from CSS, so maybe there's a correlation there.
    Given how close we are to a solution, can't say I'm too comfortable releasing the vmf to the wild. Just about to test a couple other things which Quiche and I have narrowed it down to.
     
    Last edited: Apr 14, 2014
  16. Lampenpam

    aa Lampenpam

    Messages:
    1,019
    Positive Ratings:
    337
    I knew it :S

    I have heard of a programm that converts minecraft saves to vmf. And that programm make every block a single brush (dunno its size though)
    Maybe the person who made that css map used that.
    And the person who made this program has either no idea of mapping or is an evil troll.
     
  17. A Boojum Snark

    aa A Boojum Snark Toraipoddodezain Mazahabado

    Messages:
    4,769
    Positive Ratings:
    5,527
    More likely they didn't have the skill and knowledge to write the algorithm to determine what groups of blocks could be created as a single brush, because it is way easier to just make a 1:1 conversion.
     
  18. sevin

    aa sevin

    Messages:
    959
    Positive Ratings:
    661
    So to clarify, ent_data is the characters you type into the "name" field when you name an entity to parent it or add some logic to it etc?
     
  19. A Boojum Snark

    aa A Boojum Snark Toraipoddodezain Mazahabado

    Messages:
    4,769
    Positive Ratings:
    5,527
    All of that and more. Entity info isn't so much "compiled" as it is copied right into the BSP. It is almost exactly the same as in the VMF. Open one of your BSPs with GCFscape and then look at the mapname.ent (which is technically stored in lump 0, much like you can see mapname.zip with all the content in it, but it is technically lump 40).
     
  20. Bread

    Bread L1: Registered

    Messages:
    11
    Positive Ratings:
    0
    So looks like we narrowed it down to an env_sprite_oriented which was parented to a func_brush. Now it seems there are 2 more issues. One being others can't noclip out of the map into the void, and the other being a client-side crash when a new round starts. I'm unsure about the noclip issue (I can noclip around fine) but after some googling, I think I found root of the second issue was a trigger I had made to set the targetname of all players when they touched it. I made this because targetnames seem to carry over rounds, which is an issue since I have an easteregg where only one person with the targetname should be able to use. If the targetname carries over, multiple people can activate this trigger once they get the targetname.

    If anyone had a good workaround for this, that would be great. I have changed a couple things to try and combat this, these being haviing the trigger start disabled and only enable once a person hits the trigger that gives them the targetname. A cheap fix, but it's better than nothing I guess.