my first map! woot! [wip]

mint onion

L3: Member
Jul 18, 2013
101
45
trigger sfx on players? entity's position activates trigger?

hello tf2maps.net community. lately, rather than playing tf2, i've been spending my free time learning the source sdk tools.

:sleep:

it honestly has been an absolute blast and i'd love to share some screenshots of where i'm at with my very first tf2 map with all of you. i also had two problems i hoped you might be able to help me with.

it's important to remind myself that the purpose of this map is to learn the tools and experience the entire tf2 map making process so i can apply them to another map idea i really like that i'll no doubt share some other day.

for now, please check out the latest images of the alpha of "cp_divide" right HERE!

if you're interested in starting from the very beginnings of the creation process, start HERE!

i've been grabbing shots of the map at least once a week. the file version numbers run in sequential order (01, 02, 03...) and are saved as either *.jpg or *.png using the same url path.

i had also grabbed some shots with some floors and walls hidden so i could share some harder to see playspaces, seen in this image HERE!

i hope my screenshots are enticing to you. after some time, when i've done my experimenting and building chores and have tested it with a smaller circle of my friends to overcome likely beginner missteps AND i feel its ready for a larger group to tear apart and help refine, i'll come a knocking.

i'd like to accomplish two small things in my map but i currently do not have the know-how required to create them. my tinkering and blind searching has left me with very little to go on. i'd be very grateful to any help you might have to offer.

SOUND EFFECT FROM A PLAYER?

1.> i'd like a scraping sound effect to emanate from one or multiple players, whomever activates the trigger volumes placed along the rooftop. for all tense and purposes it serves its play function but, it is something i'd like to do if there is a means of achieving the effect.

here's a clear shot of the setup:
roofscrape01.png


i could also be going about solving this problem all wrong or there might be an alternative solution and i'd be grateful to hear it.

also, i've noticed not a lot of official valve maps use large "surfable" surfaces. i don't even have what i'd call a novice level of experience playing in surf maps so, i'd ask, what are some major design pitfalls to look out for when trying to integrate a space like this into a level?

ACTIVATING A PARTICLE USING A PARENTED PROP, ENTITY, OR INVISIBLE BRUSH?

2.> i'd like to trigger a spark effect when two sawblades kiss. the blades are working thanks to an old tutorial thread i found here on the forums.

i cannot time the spark effect as i chose to trigger the start of the sawblade when a player leaves their initial spawn room, rather than using a "logic_auto" entity, as the conversation in the thread suggests. i enjoyed the idea of making the timing on it randomly unique to each session, in hopes to mix it up a bit. the second blade is actually introduced when a team captures the opposing team's cp, making that specific hallway twice as busy.

on top of those two factors, the ceiling blade moves faster when moving to the right and then slower to the left, while the ground blade moves in the opposite manner; fast left, slow right.

cropped shot of my sawblade setup:
bladescrape01.png


SO! with my limited experience, i'd assume i'd parent the env_spark to one of the blades, then a trigger volume to another that starts the spark when entering the volume, then stops when exiting. that way when the two blades happen to move in align and travel in the same position and direction, the spark would last for a longer period of time, making for what i imagine would be a great visual effect.

thanks for your time! any suggestions or help with this problem would obviously be greatly appreciated!

ps. right now i've named the map "cp_divide", what do you think? firstly, is that name taken? secondly, based on the screenshots linked at the start, what would you name it?
 
Last edited:

Freyja

aa
Jul 31, 2009
2,994
5,813
For the fist one:

An ambient_generic near the rooftop, find a scrapey sound effect (I'm sure HL2 has a lot) and name it something nice. Have the trigger volumes fire:
OnStartTouchAll > ambient_generic > PlaySound
and
OnEndTouchAll > ambient_generic > StopSound


For the second one, the way I'd attempt it is as follows; (you were in sort of the right track).

Put a trigger_multiple volume on one of the sawblades, parented to the sawblade. On the other sawblade, place an env_spark, parented to the other sawblade. Position them in such a way that they'll cross when the sawblades meet.

Place a filter_class (and name it) and set the filter class to env_spark. On the trigger_multiple, set it's activation filter to the one you just made. Then have it's outputs as follows:

OnStartTouch > env_spark > StartSpark
OnEndTouch > env_spark > StopSpark

That SHOULD work but I haven't tried it. You may need to mess with the flags on the trigger so the spark entity can trigger it (not sure if it can).

If the spark entity won't trigger it, you could use the same method but detect the prop_dynamic of the other saw instead.
 

mint onion

L3: Member
Jul 18, 2013
101
45
thanks for your help Aly :)

For the fist one:

An ambient_generic near the rooftop, find a scrapey sound effect (I'm sure HL2 has a lot) and name it something nice. Have the trigger volumes fire:
OnStartTouchAll > ambient_generic > PlaySound
and
OnEndTouchAll > ambient_generic > StopSound

this is currently how i have it setup actually. i'd like the sound effect to emanate from the actual player that's surfing on the surface, similar to how a foot step sound effect works. any ideas?

For the second one, the way I'd attempt it is as follows; (you were in sort of the right track).

Put a trigger_multiple volume on one of the sawblades, parented to the sawblade. On the other sawblade, place an env_spark, parented to the other sawblade. Position them in such a way that they'll cross when the sawblades meet.

Place a filter_class (and name it) and set the filter class to env_spark. On the trigger_multiple, set it's activation filter to the one you just made. Then have it's outputs as follows:

OnStartTouch > env_spark > StartSpark
OnEndTouch > env_spark > StopSpark

That SHOULD work but I haven't tried it. You may need to mess with the flags on the trigger so the spark entity can trigger it (not sure if it can).

If the spark entity won't trigger it, you could use the same method but detect the prop_dynamic of the other saw instead.

i can't wait to get home after work and try this! i was so close, i think i tried using a "filter_activator_name" entity or maybe i didn't set it up correctly or something... i'll give it another go. thanks!
 

mint onion

L3: Member
Jul 18, 2013
101
45
hey thanks for the question, Terwonick

Quick question, are you doing like a 2-1-2 setup for the capture points?
Or is it more like 1-1-1-1-1 (standard capture points)?

i copied the 5cp setup from the ABS's resource pack which is SO AWESOME. i can't thank A Boojum Snark enough for sharing that!

i'm using a 1-1-1-1-1 approach. but i've been poking the settings with a stick.
  • the timer starts to countdown when the center point is captured, similar to how harvest works.
  • the map gates the final points using capture point triggers.

divide_points.gif


  • i saw i could change the cp UI and couldn't resist the urge. i wish the tool tip prompts were placed better, they are kind of hard to read with this layout. the ones that say "defend this point" ect.
  • i also hacked in an additional spawn room by disabling spawnpoints at the start and enabling them using capture triggers. it wasn't working at one point at the very start of the map. i'm guessing it wasn't able to disable the spawnpoints before they could be used because the red teams spawnpoints worked the way i wanted but blu's wasn't. then i happened to read that spawnpoints would be used in the order they were created... so i deleted the points i wanted to toggle, remade them, and it seems to work. we will see how it holds up with multiple players.

i've stepped on many rakes in the process but i'm having fun doing so.
 

mint onion

L3: Member
Jul 18, 2013
101
45
i have many issues in front of me that are likely complicating things. ಠ_ಠ

a very big problem of mine, that i have been putting off for weeks and weeks, is addressing the ***** leaks ***** in my map. my thinking was, "i know i am potentially accruing more and more leaks as i continued to work, but no problem... i'm not using the carve tool heavily and i would address them all in a single pass, once i made the playspaces to my pleasing! (because this part is so much fun!)"

i read somewhere last night that some entities may not behave properly if there are leaks in my map. and really i just needed to take care of it. so i decided to tackle them once and for all.

due to this sweetly pungent naivety, being that this is my first map... naturally, and pardon my french, but i have a shitload of leaks all over the place! and it's revealed a lot of messy brushwork i need to address. not the end of the world as i have no deadline. all i can do is move forward as i do want to take this map to the end. i assume this is a common misstep due to human nature (aka my talent in stubborn procrastination).

what i didn't realize until last night was that leaks are caused by many things, not just small cracks due to a misaligned brushes. "entity origins" ending up in the void, for example, must be a regular snag for beginners.

for some time actually, i wasn't exactly sure what those "groups" "objects" "solids" buttons did entirely. if those modes had switched in someway without me realizing it... say you shotgun a string of keystrokes into hammer's viewport thinking you were typing in an object properties textbox because over the years of using computers you've apparently developed this invisible habit of flicking your cursor an inch or so to the side so the cursor doesn't block the view of your text... or the "a" "w" and "d" keys on your keyboard have all lost the spring in their step, which you're oddly proud of, and when you rest your fingers in the "wasd" position you accidentally type long string of "aaaa" "www" or "dddd" which also causes your character to accidentally headbutt sawblades or cross-bones it off a ledge... i digress.

this is a small victory for me. these are exactly the kinds of things i would hope to run face first into so i can avoid with my future maps.

tldr; to the noobs that may read this years from now. be diligent about leaks. there are many types of leaks. and one leak can potentially make troubleshooting other problems you will undoubtedly run into, much more complex and mysterious. so, as you've probably read a dozen times, as i had before throwing caution to the wind, seal your map as you go!
 
Last edited:

mint onion

L3: Member
Jul 18, 2013
101
45
in the meantime, i had quarantined out the kissing sawblade elements from my map by pasting them into new test map.

as far as i can tell, Aly's suggestion isn't working; i am unable to figure out how to use an entity (an env_spark in this case) to activate a trigger. i think the problem lies within the trigger flags.

???
trigger_flags.gif


which of these would would you use for an entity? the only one that makes sense would be the everything flag. i've used Maya enough to learn software terminology isn't always intuitive... *cough!* "Hypershade" *cough!*

i also tried filtering the "prop_dynamic" classes with no success.

i found a demo map on the valve dev wiki called wisedoorfilter (under examples) where dude can open a door using a prop_physics and trigger brush entity. it's not in TF2, so i'm not sure how well this info translates but it was a lead. but he uses a "prop_physics" and "filter_activator_name". being that they're expensive for multi-player maps, i haven't even touched physics objects yet. there IS a specific flag for physics which seems like a clear advantage. unfortunately, it would appear "prop_physics" cannot hierarchically be attached to other entities, which i assume means parenting, which is disheartening.

unfortunately, i ran out of energy and had to sleep. now, i have to run to work. so i'll update this thread if i make any progress with it. might be a while. i have some leaks to fix.

-PEACE!aaaaaaaaaaaa
 
Last edited:

mint onion

L3: Member
Jul 18, 2013
101
45
fuck it. this is my mapdump thread

so my map is finally all sealed.

sealing my map had improved my lighting by adding bounced light and maybe allowed my water to have depth. (i was using func_water_analog /facepalm - long story)

cp_divide - WiP - my first map - 8/12/2013-8/19/2013
hammerdust_21.png
hammerdust_22.png

an invalid prop was throwing me "overflow 500" errors which i had confused for a leak in my water which made me tear everything apart and put it back together. damn you, archimedes.

my water was green and crappy looking. i see a lot of people complaining about this one in irrational ways. unclean brushwork would cause my water to break when viewing it from below, or underwater, looking up and show outside the map. making sure it was flush against a wall and not overlapping another water surface, seemed to make it happy.

i learned how to make water brushes very early on and had completely forgotten it used a world brush, got mixed up thinking i was supposed to use "func_water_analog" which automatically sets the water shader to its cheapest setting (so it can move and dance and do other shit that regular water can't but am not interested in right now. may be a common pitfall from those saying tf2's water looks like shit. or their settings are too low (like me for better performance during play) otherwise all i can think is that it's a hardware issue.

placing an env_cubemap at head's height drastically improved the look of the water's reflections (64 units)

i was provoked to peek at map optimization a bit and was curious.

divide_debug04.png


visleaf auto-generated with no optimizations made. these shots captured are the highest frame rates i saw but are all looking in unrealistic angles, ha:
divide_highfps01 - 208 fps
divide_highfps02 - 283 fps

some fun:
divide_debug01 - 130 fps
divide_debug03 (cp_gravelpit) - 161 fps

the worse frame rates i could find:
divide_lowfps01 - 35 fps
divide_lowfps02 - 30 fps

divide_debug02.png
 

mint onion

L3: Member
Jul 18, 2013
101
45
ingame console commands used:
sv_cheats 1
mat_leafvis 1
mat_wireframe 3
cl_showfps 2
r_visocclusion 1
(i think...)
 
Last edited:

mint onion

L3: Member
Jul 18, 2013
101
45
I'd be more interested in pictures showing your layout than these dev and wireshots.

this isn't exact but should help give you an abstract idea of the map's layout. all classes can take these routes and some areas are simplified for better readability.
HammerDust24.png
 

Fish 2.0

L6: Sharp Member
Nov 22, 2012
324
262
10/10 that looks like a maze, won't play well unless it actually isn't a maze but I can't tell from that.
 
Sep 7, 2012
638
500
If i had to list the things one could do that would optimize a map in order from most effective to least effective, putting nodraw on your hidden faces would probably not score near the top. However, that being said, checking to make sure that there aren't visible textures on any hidden areas is definitely worthwhile and will help your map's optimization, it's just not the area where you really win frames.
 

henke37

aa
Sep 23, 2011
2,075
515
At best you will be able to speed up the compilation by the fact that nodraw faces doesn't have any lightmaps.
 

FiLi

L4: Comfortable Member
Nov 14, 2009
195
102
Personally, if everything gameplay-wise is just about sorted out, I'd like to test it. A gameday or impromptu test will give you some of the best info you can get