Niagara: What’s New | Live Training | Inside Unreal

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
>>AMANDA: HEY FOLKS! WELCOME TO THIS WEEK'S UNREAL ENGINE NEWS AND COMMUNITY SPOTLIGHT. WE ARE THRILLED TO ANNOUNCE THE WINNERS IN OUR FIRST EVER UNREAL AWARDS: EXPERIENCE DESIGN COMPETITION, AS WE SET OUT TO FIND DESIGN INNOVATORS USING UNREAL ENGINE FOR ARCHITECTURE, MANUFACTURING, AND PRODUCT DESIGN, AND WE WEREN'T DISAPPOINTED. BE SURE TO LOOK AT THE BLOG TO SEE THE FULL LIST OF WINNERS. CONGRATULATIONS TO ALL OF THEM, WHO WILL SHARE OVER $70,000 WORTH OF PRIZES, AND THANK YOU TO EVERYONE WHO ENTERED, AND OF COURSE TO OUR GENEROUS SPONSORS: SUBSTANCE, ESRI, AXYZ, AND TURBOSQUID. UNREAL ENGINE 4.22 ISN'T QUITE READY YET, BUT YOU CAN START EXPERIMENTING WITH ITS NEW FEATURES TODAY WITH THE RELEASE OF 4.22 PREVIEW 1! PREVIEW 1 INCLUDES SUPPORT FOR REAL-TIME RAY TRACING, EDITOR UTILITY WIDGETS, MOVABLE SPOTLIGHT SUPPORT ON MOBILE, VIRTUAL PRODUCTION UPDATES, OCULUS QUEST SUPPORT, AND BLUEPRINT INDEXING OPTIMIZATIONS. A FULL LIST OF THE UPCOMING CHANGES TO THIS BUILD ARE AVAILABLE ON THE FORUMS AND, AS ALWAYS, WE'D LOVE ANY FEEDBACK ON THE CURRENT PREVIEW. DO KEEP IN MIND THAT PREVIEW RELEASES ARE INTENDED ONLY TO PROVIDE A SAMPLE OF WHAT WILL BE RELEASED AND THEY ARE NOT PRODUCTION-READY. FOR NOW, PLEASE USE COPIES OF YOUR PROJECTS TO TEST NEW FEATURES. IN OUR LATEST TECH BLOG, UNREAL DEV GRANT RECIPIENT AND MELBOURNE-BASED INDIE STUDIO BIT DRAGON EXPLAINS HOW THEIR SMALL TEAM SHIPPED THE FAST-PACED ARENA BRAWLER HYPER JAM, THE TEAM'S FIRST TITLE, ON PC, PS4, AND XBOX ONE WITH LOCAL VERSUS, PRIVATE ONLINE, AND CROSS-PLATFORM MATCHMAKING. DIVE IN AND SEE HOW THEIR TEAM ACCOMPLISHED THIS AMBITIOUS FEAT AND GIVE HYPER JAM A WHIRL. VLADIMIR MASTILOVIC, 3LATERAL FOUNDER AND DIRECTOR, JOINS OUR LATEST PODCAST TO TALK ABOUT THEIR AMAZING, REAL-TIME FACIAL-CAPTURE TECHNOLOGY, HOW NEW DEVELOPMENTS WILL CHANGE FILMMAKERS' APPROACH TO DIGITAL PERFORMANCE IN VIRTUAL PRODUCTION, AND HOW HE'D LIKE TO SHARE IT WITH THE WORLD. GO LISTEN TODAY TO ALSO HEAR ABOUT HOW 3LATERAL PLANS TO CONTINUE THEIR WORK AS PART OF THE EPIC GAMES FAMILY. NOW FOR THIS WEEK'S KARMA EARNERS! MANY, MANY THANKS TO: CHYROS, THOMPSONN13, NEBULA GAMES INC, SENSEIHAKETON, MAVERICK_TANGO, TUERER, SHADOWRIVER, MIGHTYENIGMA, RAXS_SLAYER, AND BRIAN JOHNSTONE. HEAD OVER TO ANSWERHUB, SHARE YOUR UE4 KNOWLEDGE AND YOU COULD HEAR YOUR NAME UP HERE TOO! AND NOW FOR OUR SPOTLIGHTS! FIRST UP IS THE ADORABLE FARMING SIM SNACKO, IN DEVELOPMENT BY A HUSBAND AND WIFE DUO! IN SNACKO, YOU'LL FARM, FISH, MINE, COLLECT, AND BUILD YOUR WAY TO A PROSPEROUS TOWN THAT'S UNDER YOUR CONTROL! WITH A WORKFLOW INSPIRED BY OCTOPATH TRAVELER, YOU'LL TRAVERSE DUNGEONS AND SOLVE PUZZLES TO FIND NEW FRIENDS THAT YOU CAN RECRUIT IN THE 2D AND 3D BLENDED WORLD. A PUZZLE GAME WITH LOADS OF EXPLOSIONS, MR BOOM'S FIREWORK FACTORY IS OUR SECOND SPOTLIGHT! IN IT, YOU'LL TRY TO SHIP YOUR CRATES IN THE CORRECT ORDER WITHOUT DESTROYING THEM, WHICH SEEMS LIKE AN AWFULLY TRICKY TASK. AND FINALLY, INSPIRED BY THE ART STYLE OF DARKSIDERS, GO ' RIM CREATED THE FORGE, A COOL, MOODY DUNGEON-ESQUE SCENE. WE REALLY ENJOY THE COMPETING WARM AND COOL ELEMENTS USED TO BALANCE THE ENVIRONMENT. VERY NICE WORK! AND THAT'S ALL FOR THIS WEEK'S NEWS AND COMMUNITY SPOTLIGHT THANKS FOR JOINING! >>AMANDA: HEY, FOLKS. WELCOME TO OUR UNREAL ENGINE LIVESTREAM. I'M YOUR HOST, AMANDA BOTT. WITH ME THIS WEEK, WE HAVE WYETH JOHNSON, OUR LEAD TECHNICAL ANIMATOR, AND A RESIDENT NIAGARA EXPERTS. >>WYETH JOHNSON: HEY, GUYS. >>AMANDA: -- SO THANK YOU FOR JOINING US. >>WYETH: IT IS MY PLEASURE. >>AMANDA: AND FELLOW COMMUNITY MANAGER, VICTOR BRODIN. >>VICTOR: I'M BACK. >>AMANDA: SO TODAY, WE'VE GOT -- WELL, WE'RE DOING WHAT'S NEW IN NIAGARA. >>WYETH: YEP. >>AMANDA: SO WE WILL BE GOING OVER THE NEW FEATURES AND CHANGES THAT HAPPENED IN THE LAST SIX MONTHS SINCE WE HAD YOU ON. I CAN'T BELIEVE IT HAS BEEN THAT LONG. >>WYETH: WE HAD SOME ENGINE RELEASES IN THERE AND SO WE NEEDED TO SUSS OUT WHAT IS VALUABLE FOR PEOPLE TO SEE, NOT JUST WHAT'S COMING UP IN 4.22, BUT MAYBE WHAT WE MISSED IN 4.21 AND SO ON. >>AMANDA: AWESOME. AND TODAY IS ALSO OUR WINTER UE4 JAM KICKOFF. SO HANG TIGHT, WE WILL HAVE LOTS OF WONDERFUL INFORMATION COMING VERY SHORTLY, AND THEN WE'LL HIT YOU WITH A THEME ANNOUNCED LATER IN THE STREAM. SO FEEL FREE TO DIVE IN AND BESTOW YOUR KNOWLEDGE UPON OUR COMMUNITY. >>WYETH: LET'S DO IT. I CAN'T WAIT. SO THE -- NIAGARA IS IN A GOOD STATE RIGHT NOW BECAUSE WE ARE STARTING TO ROUND OUT THE SET OF FEATURES THAT MOST PEOPLE WOULD FEEL LIKE THEY REALLY, REALLY NEED TO MAKE THE MAJORITY OF THINGS. YOU KNOW, WHEN WE FIRST WENT INTO EARLY ACCESS, WE HAD A COUPLE OF BIG MISSING PIECES, SOME THINGS THAT YOU JUST KIND OF, IF YOU WERE THINKING ABOUT A FORWARD-LOOKING TOOL AND REALLY PUSHING FORWARD TO THE FUTURE, IT WOULD BE STUFF THAT WAS MISSING. NOW AS WE MOVE INTO 4.22, WE ARE STARTING TO SCRAPE OFF THE ROUGH EDGES A LITTLE BIT. >>AMANDA: RIGHT. >>WYETH: NOW I THINK WOULD BE A GREAT TIME, IF YOU HELD OFF PLAYING WITH THE TOOL, BECAUSE YOU ARE -- "WELL, I'M WORKING IN CASCADE, IT IS FAMILIAR TO ME, MAYBE I'M IN A SHIP CYCLE" OR SOMETHING LIKE THAT. I THINK RIGHT NOW, 4.22 IS THE RIGHT TIME TO MAYBE PICK IT UP BECAUSE I THINK YOU WILL FIND THERE ARE FEWER SHARP CORNERS TO -- >>AMANDA: GOOD. >>WYETH: -- TO CATCH YOUR FINGERS ON, SO TO SPEAK. >>AMANDA: THAT'S IMPORTANT. >>WYETH: SO I THINK PROBABLY WHERE WE SHOULD START WOULD BE TO GO BACK TO THE EXAMPLE HALL, WHERE WE LEFT OFF LAST TIME. >>AMANDA: UH-HUH, BACK TO THE HALLWAY. >>WYETH: SO INTREPID VIEWERS WHO WERE WATCHING LAST TIME WHO WOULD KNOW WE DIDN'T MAKE IT TO THE END OF THE EXAMPLE HALL, AND WE HAVE ONE NEW EXAMPLE WE'VE ADDED IN THE MEANTIME, AND WE CAN TALK ABOUT THAT AS WELL. THERE ARE ACTUALLY SOME CHANGES TO THE EXISTING EXAMPLES, TO GO ALONG WITH THAT. >>AMANDA: PERFECT. >>WYETH: SO, I WILL START FROM THE BEGINNING, AND WE CAN TALK ABOUT THE THINGS FUNDAMENTALLY WE'VE CHANGED TO MAKE THINGS BETTER FOR USERS, AND THEN WE'LL GET TO THE END OF THAT HALL, SHOW THE STUFF -- >>AMANDA: WE WILL FINALLY SEE WHAT'S IN THE OTHER ROOM. >>WYETH: -- THAT SECRET ROOM THREE, YEAH, THERE'S SOME PRETTY COOL STUFF IN THERE. AND THEN I'VE GOT A BIG LIST OF OTHER THINGS NOT NECESSARILY REFLECTED IN THE CONTENT EXAMPLES, BUT JUST STUFF WE'RE WORKING ON. AND I TALKED WITH SHAWN A LITTLE BIT EARLIER TOO, AND HE'S OKAY IF WE TEASE A FEW THINGS THAT AREN'T QUITE READY FOR 4.22, BUT THEY ARE COMING. >>AMANDA: AWESOME. >>WYETH: SO WE'LL DROP A FEW FOR YOU SO YOU KNOW, YOU CAN PREDICT -- >>AMANDA: LITTLE TREATS. >>WYETH: -- YEAH, LITTLE TREATS, AND STUFF THAT WE KNOW IS COMING. SO, YEAH, LET'S GET INTO IT. SO ONE THING I WANTED TO FIRST START OFF WITH IS, WE -- ALL THESE EXAMPLES WILL LOOK THE SAME AS THEY DID FROM WHEN YOU SAW IT LAST TIME. HOWEVER, UNDER THE HOOD, WE MADE A COUPLE OF CHANGES TO MAKE THINGS A LITTLE EASIER FOR YOU TO RE-CREATE THEM OR DERIVE FROM THEM. SO I WILL SHOW YOU ONE OF THOSE. IF I SELECT THIS EMITTER HERE AND I OPEN IT, SO ONE OF THE FIRST THINGS THAT WE'VE DONE IS WE REALIZED, AS WE WENT THROUGH-- THERE'S A NUMBER OF ATTRIBUTES YOU GENERALLY ALWAYS CARE ABOUT. >>AMANDA: UH-HUH. >>WYETH: AND THESE MIGHT BE JUST POINT ATTRIBUTES, LIKE HOW LONG DOES SOMETHING LIVE, OR WHAT ARE ITS -- THE SIZE OF ITS SPRITES, OR THE COLOR YOU ARE WRITING TO IT. THESE ARE REALLY COMMON THINGS. BEFORE, IN THESE EXAMPLES, WE WERE WRITING TO THE ATTRIBUTES THAT DRIVE THOSE DIRECTLY. SO, FOR EXAMPLE, I WOULD GO IN AND, YOU KNOW, WRITE TO PARTICLE LIFETIME, FOR EXAMPLE, OR TO PARTICLE COLOR. AS A WAY TO MAKE IT A LITTLE EASIER FOR PEOPLE, WE HAVE NOW CREATED THIS INITIALIZED PARTICLE MODULE. THIS MODULE COMES ALONG FOR THE RIDE IN ALL OF OUR TEMPLATES NOW. SO, IF I HAVE BASIC ATTRIBUTES -- I JUST WANT SOME SPRITES OR SOME MESHES, OR SOME RIBBONS TO FLY AROUND, ALMOST ALL OF THE SET-UP WORK I WOULD NORMALLY DO IS HERE IN THIS WINDOW. AND SO I CAN SAY, "YOU KNOW WHAT I WANT TO SAY THE LIFETIME OF MY PARTICLES. I WOULD LIKE TO INITIALIZE THEIR MASS," -- I WILL GET TO MASS IN A SECOND, BECAUSE I WILL SPEND SOME TIME TALKING ABOUT MASS. "I WOULD LIKE TO INITIALIZE THEIR COLOR OR, YOU KNOW, CREATE A SPRITE SIZE FOR WHEN THEY SPAWN," THOSE KIND OF THINGS. WE PACKED ALL OF THESE INTO ONE SPACE, AND OFTEN TIMES WHAT'LL HAPPEN IS YOU WILL FIDDLE WITH THESE UNTIL YOU GET THEM RIGHT, AND THEN YOU DON'T NEED THEM ANYMORE, SO IT IS NICE TO COLLAPSE ALL OF THIS INITIALIZATION STUFF ALL IN ONE SPOT. THAT'S THE FIRST THING WE'VE DONE WHICH, IS JUST A HELPER FUNCTION, BUT IT IS SOMETHING THAT KIND OF GETS PEOPLE ROLLING A LITTLE BIT MORE QUICKLY. THE OTHER THING YOU'LL NOTICE IS THAT THESE ARE CONDITIONAL, AND KIND OF BEHIND AN IF STATEMENT, WHICH SAYS, IF I DON'T WANT TO WRITE TO POSITION, I JUST UNCHECK THE BOX, AND SO THAT GIVES PEOPLE A LITTLE BIT OF FLEXIBILITY TO DECIDE WHAT TO WRITE TO AT ANY GIVEN SITUATION. AND YOU'LL SEE THAT ACROSS ALL OF THE DIFFERENT CONTENT EXAMPLES THAT ARE HERE IN THE HALL. THE -- THESE GUYS ARE ALL THE SAME, AND YOU SHOULD GO BACK AND WATCH THE PREVIOUS VOD IF YOU WANT ME TO TALK IN DEPTH ABOUT WHAT EACH ONE OF THEM IS DOING. WE'VE UPDATED A COUPLE OF MODULES HERE AND THERE, A COUPLE LITTLE REFERENCES INSIDE OF THEM, BUT THE BEHAVIORS ARE BASICALLY THE SAME ACROSS THESE. YOU WILL NOTICE A COUPLE OF SUBTLE THINGS. FOR EXAMPLE, THIS LOOKS SMOOTHER NOW. SO THIS IS OUR STATIC BEAM EXAMPLE. AND THE -- THIS IS BASICALLY JUST A SIMPLE EXAMPLE OF SPAWNING BEAMS THAT HAVE A START POINT AND END POINT AND IT CALCULATES A BUNCH OF POINTS IN BETWEEN AND THEN THOSE POINTS SIMULATE AWAY OVER TIME, USING FORCES AND SO ON. IN 4.21, THIS HAS A LITTLE BIT OF, KIND OF, KINKING AND INTERRUPTIONS IN THE SHAPE, AND THAT WAS DUE TO SOME PROBLEMS WITH OUR CURL NOISE. OUR PREVIOUS CURL NOISE CALCULATION WAS FINE, BUT IT WASN'T REALLY DOING THE JOB. IT WASN'T WHAT THEY WOULD CALL DIVERSIONS FREE, WHICH MEANS A PERFECTLY CONTIGUOUS, SMOOTH FIELD. THE APPROXIMATIONS WE WERE USING JUST -- THEY WEREN'T WHERE YOU WOULD WANT. AND SO WE WENT BACK IN AND, FROM THE GROUND UP, REWROTE CURL NOISE. A LOT OF TIMES IN CASCADE, PEOPLE WOULD USE VECTOR FIELDS TO JUST GET, KIND OF, GENERAL NOISE ON THEIR PARTICLE. >>VICTOR: RIGHT. >>WYETH: YOU PUT IN A VECTOR FIELD, I JUST WANT SOME ERRATIC ERRATIC NATURE TO THE LOOK OF MY THING, THAT IS SO COMMON. ANYTHING LINEAR TENDS TO FEEL BORING. >>AMANDA: RIGHT. >>WYETH: YOU WANT TO INTRODUCE A BIT OF NOISE IN THERE ALONG THE WAY, AND WE SUPPORT VECTOR FIELDS, AND I WILL TALK MORE ABOUT THE NEW VECTOR SUPPORT WE HAVE IN NIAGARA. BUT, OFTEN TIMES, IF YOU JUST WANT A LITTLE NOISE, YOU CAN JUST DROP SOME CURL NOISE IN. >>AMANDA: HUH. >>WYETH: SO GO IN AND CHECK OUT THE CHANGES TO CURL NOISE, IT SHOULD BE MORE ROBUST NOW. SOME SCALE FACTORS HAVE CHANGED, SO IF YOU HAD AN EMITTER IN 4.21 THAT USES CURL NOISE, THE SCALE OF THAT NOISE MIGHT BE DIFFERENT NOW. IF YOU ARE WONDERING WHY YOUR EFFECT LOOKS A BIT DIFFERENT, THIS IS WHY. BUT I PROMISE YOU -- >>AMANDA: BECAUSE ONGOING CHANGES. >>WYETH: -- IT IS FOR THE BETTER, BECAUSE THAT IS NOW A REALLY NICE, SMOOTH NOISE RESULT. >>AMANDA: YEAH, THAT'S BEAUTIFUL. >>WYETH: UM, NOTHING NEW IN ANY OF THESE. ALL OF THESE ARE PRETTY MUCH UNCHANGED, I'M GENERATING EFFECTS WITH EXPRESSIONS AND SO ON. YOU'LL NOTICE SOMETHING FUNNY HERE WHICH IS, IN THIS EXAMPLE, THE COLLISIONS ARE BROKEN. AND YOU MIGHT SAY, WYETH, WHY ARE YOU SHOWING ME BROKEN COLLISIONS? WELL, THAT IS BECAUSE THIS PARTICULAR BUILD, JUST THE ONE THAT I CHOSE THAT HAD OTHER EXAMPLES FOR YOU GUYS IN IT, DOES NOT HAVE OUR LATEST AND GREATEST COLLISION STUFF. >>AMANDA: UH-HUH. >>WYETH: SO, IN FACT, I WILL TAKE A PIT STOP IN A SEC AND TALK ABOUT COLLISION IN A MINUTE. I WANT TO GET TO THE END OF THE HALLWAY, AND THEN TALK THROUGH THOSE. BUT WE WILL DEFINITELY REVISIT COLLISION, BECAUSE THERE'S SOME PRETTY NICE STUFF COMING THERE. >>AMANDA: TO REITERATE FOR THE FOLK THAT MAYBE HAVEN'T WATCHED THE LAST STREAM, WHERE DO THEY GO TO GET THIS HALL? >>WYETH: YEAH, SO YOU BASICALLY GO TO THE LAUNCHER, YOU GO INTO THE LEARN TAB -- THAT'S THE MOST IMPORTANT THING TO KNOW, IF YOU ARE SEARCHING FOR MARKETPLACE ASSETS, YOU WON'T FIND THE CONTENT EXAMPLES. THEY ARE IN A VERY DEDICATED PLACE CALLED LEARN. SO GO TO LEARN, AND THERE, THERE'S A PROJECT, A UPROJECT CALLED CONTENT EXAMPLES. AND THERE'S A NIAGARA.UMAP IN THERE. YOU OPEN IT UP AND YOU GET A WHOLE HALLWAY AND ALL THE EXAMPLES ARE THERE. AND IF THESE EXAMPLES USE ADDITIONAL, CUSTOM-WRITTEN MODULES, FOR EXAMPLE, THE NEXT EFFECT WHICH I'M GOING TO TALK ABOUT, HAS SOME MODULES THAT WERE WRITTEN BY JOHN LINDQUIST, A BRILLIANT TECH ARTIST, BY HAND, AND HE INCLUDED THEM IN THE CONTENT EXAMPLES SO PEOPLE CAN ALSO SEE HOW YOU MIGHT DEVELOP YOUR OWN WORK OUT SIDE OF THE CONTEXT OF OUR PLUGIN. BECAUSE NIAGARA IS A PLUGIN. SO IT IS SITTING THERE OFF TO THE SIDE, IT HAS ITS OWN CONTENT DIRECTORY WITH FUNCTIONS, MODULES, AND ALL OF THESE BEHAVIORS -- >>AMANDA: AND YOU CAN ADD TO IT. >>WYETH: -- BUT THERE IS NOTHING TO SAY THAT YOU CAN'T MAKE YOUR OWN MODULE ANYWHERE YOU WANT IN YOUR OWN CONTENT TREE AND BRING IT INTO THE TOOL. THIS WILL SHOW YOU SOME OF HOW THAT WORKS. OKAY, SO THIS IS THE FIRST PLACE THAT WE DIDN'T MAKE LAST TIME, WHICH IS THE CONCEPT OF SAMPLING A STATIC MESH. >>AMANDA: UH-HUH. >>WYETH: SO BASICALLY THE IDEA IS, I HAVE A STATIC MESH, THE STATIC MESH HAS VERTEX COLORS, SO EACH VERTEX KNOWS WHAT COLOR IT IS BY BEING ENCODED FROM A DCC PACKAGE, LIKE 3DS MAX OR HOUDINI OR SOMETHING. AND IT HAS ITS POSITIONS IN SPACE, LIKE HERE IS WHERE MY ANY INDIVIDUAL VERTEX IS, AND THEN HERE IS WHERE THE LITTLE COORDINATE IS BETWEEN THE VERTICES, WHICH MAKE A TRIANGLE, AND THERE'S ALL OF THIS DATA HERE ON A MESH, AND SO WE'VE WRITTEN SOME SAMPLING FUNCTIONS WHICH BASICALLY SAY, "OKAY, GIVEN A LITTLE COORDINATE, WHERE ARE YOU? WHAT ARE YOU? WHAT IS YOUR UV, WHAT IS YOUR NORMAL, WHICH NORMAL DIRECTION ARE YOU FACING," AND SO ON. AND SO WE HAVE AN EMITTER HERE, I'M GOING TO OPEN THIS EMITTER FOR YOU GUYS SO WE CAN SEE IT. AND I'M GOING TO GO AHEAD AND COVER THE SCREEN FOR NOW, BECAUSE YOU SAW THAT IN ACTION. BUT, SO WHAT'S HAPPENING HERE? BASICALLY, THE WAY WE THINK OF SAMPLING, WE USUALLY DO IT IN TWO STEPS: THE FIRST IS WE ASK FOR THE DATA, AND THEN WE -- IN A SUBSEQUENT MODULE, WE ACT ON THAT DATA. SO THAT'S WHAT WE'RE DOING HERE. SO BASICALLY, WE HAVE A MODULE HERE CALLED SAMPLE STATIC MESH. THAT STATIC MESH IS BASED ON A STATIC MESH PARAMETER, IT IS LIKE A DATA TYPE, OF TYPED STATIC MESH. THIS IS ONE OF THESE NIAGARAISMS WHERE WE HAVE THIS FLOW OF DATA, "OKAY, I HAVE POINTS IN SPACE, I HAVE A SKELETAL MESH THAT I CARRY ABOUT," THAT'S A DATA TYPE OF TYPE SKELETAL MESH, I HAVE STATIC MESHES, I HAVE CURVES, FOR EXAMPLE, LIKE A CURVE ASSET, LIKE SAMPLING A CURVE, IT IS ACTUALLY ITS OWN LITTLE TYPE OF DATA THAT GETS, KIND OF, PIPED ALONG THROUGH THE SIMULATION. SO WE'RE BASICALLY JUST SAYING, "HEY, SAMPLE A STATIC MESH. ASK IT FOR ITS ATTRIBUTES." IN HERE, THIS IS AS SIMPLE AS SAYING, OF THAT LITTLE STATIC MESH THAT I JUST EXPOSED TO THE USER HERE, GIVEN A RANDOM COORDINATE, A RANDOM TRIANGLE, AND A RANDOM POSITION ON THAT TRIANGLE, WHAT ARE YOUR ATTRIBUTES? AND SO I GET THE TANGENT OF IT, I GET THE NORMAL OF IT, I GET ITS POSITION, ITS VELOCITY IN CASE IT'S MOVING. I GET THE TRIANGLE COLOR, WHICH IS THE VERTEX COLOR. I CAN ASK FOR IT'S UV, AND SUBSEQUENTLY, I CAN GO AND USE THAT TO LOOK UP AND DO A TEXTURE, AND ASK FOR, YOU KNOW, THE TEXTURE SAMPLE. WE'RE BASICALLY HERE DOING THAT, AND THEN WE PACK ALL OF THIS INTO THESE LITTLE ATTRIBUTES. SO I SAY, OKAY, I'VE SAMPLED THIS INFORMATION. I'VE GOT THIS INFORMATION, SAVE ALL THIS ATTRIBUTES OFF. SO IN MY LITTLE PARTICLE PAYLOAD HERE, I'M SAYING, SAVE OFF THE NORMAL, THE TANGENT, THE POSITION, AND ALL THESE OTHER THINGS. SUBSEQUENTLY, THOSE GET USED IN A MODULE WHICH ACTS ON THEM. IN THIS CASE, I'M ASKING FOR THOSE THINGS WHICH I JUST SAMPLED, AND THEN I'M ACTUALLY PUTTING THE PARTICLES IN THOSE LOCATIONS. SO I HAVE A DIFFERENT MODULE, WHICH IS BASICALLY ASKING FOR THOSE ATTRIBUTES. THEY COME IN ALONG THE CHAIN, THE SAMPLED POSITION OF THE MESH, THE SAMPLED NORMAL OF THE MESH, AND THEN I WRITE THOSE TO THE ATTRIBUTES OF THE PARTICLE. SO I SAY, "HEY, WHERE WAS THE POSITION ON THE MESH, I'M GOING TO MAKE THAT MY PARTICLE POSITION." SO WE HAVE THIS LITTLE HELPER MODULE HERE. SO YOU MIGHT ASK YOURSELF, WHY NOT DO THAT ALL IN ONE STEP, WHY NOT SAMPLE IT AND WRITE IT RIGHT THERE. YOU ARE LITERALLY RE-USING IT AS WE SPEAK. THE REASON WE DO THAT IS BECAUSE NIAGARA IS COMPLETELY PROGRAMMABLE. AND WE DON'T WANT TO PRESUME THAT WE KNOW HOW YOU WANT TO USE THAT DATA. SO WE WANT TO SPLIT THE IDEA OF ASKING FOR DATA AND USING IT INTO TWO SEPARATE THINGS. SO YOU WILL OFTEN SEE US DO THAT AS WE MAKE MODULES, YOU WILL SEE US MAKE A SAMPLE FOR, LIKE, SAMPLE A VECTOR FIELD. SAMPLE A TEXTURE. BUT WE DON'T ACT ON IT. WE JUST SAY, "ASK FOR IT, PACK IT AWAY INTO SOME ATTRIBUTES." AND NOW YOU KNOW, SO TO SPEAK, AND THEN WE LET THE USER DECIDE WHAT THEY WANT TO DO WITH IT. IN THE BEGINNING, MOST PEOPLE ARE GOING TO SAY, PUT IT WHERE IT'S GOING TO GO AND WE GIVE YOU THAT FUNCTION. IF YOU DIDN'T USE THIS, AND YOU WANTED TO, LET'S SAY, SAMPLE A NORMAL ON THE MESH, AND THEN YOU WANT TO USE THAT AS YOUR PARTICLE VELOCITY, THEN YOU WOULD JUST GO IN AND ADD SOME VELOCITY INTO THE SCRIPT AND THEN YOU WOULD LINK THE SAMPLED NORMAL OF THE OF THE TRIANGLE YOU ASKED FOR, YOU WOULD LINK THAT TO SOMETHING THAT ADDS VELOCITY. NOW YOUR PARTICLES WILL FLY AWAY IN THE DIRECTION OF THE SURFACE NORMAL OF THE TRIANGLE. THIS IS WHY WE DON'T PRESUME TO KNOW HOW YOU WANT TO WORK. WE TRY TO BREAK THOSE UP FOR YOU, BUT WE WILL GIVE YOU THE HELPER FUNCTIONS IF YOU WANT TO DO THE 99 PERCENT CASE, SO THEY ARE THERE FOR YOU. WHAT'S HAPPENING IN THIS SPECIFIC EXAMPLE IS PRETTY SIMPLE. WE BASICALLY DO TWO THINGS. WE SPAWN THE PARTICLES IN A SPHERE, AND THEN WE SAMPLE THE STATIC MESH LOCATIONS, AND THEN DOWN HERE, IN THIS UPDATE SCRIPT, WE JUST INTERPOLATE BETWEEN THOSE TWO THINGS. SO I'M DIRECTLY SETTING THE PARTICLE POSITION TO BLEND BETWEEN WHERE I SPAWNED IN A SPHERE, AND THEN WHAT I SAMPLED -- THE POSITION I SAMPLED WHEN I WAS BORN ON THE MESH, AND THEN I, AS THE INTERPOLATION, OR THE LERP IN BETWEEN THOSE POSITIONS, I USE A SINE WAVE. SO UP HERE AT THE EMITTER LEVEL, I'VE USED -- I'VE MADE MYSELF A LITTLE SIN WAVE. I MADE MYSELF AN EMITTER LEVEL VARIABLE AND, AGAIN, SOMETHING HAPPENING AT THE EMITTER LEVEL IS JUST HAPPENING, KIND OF, ONCE. SO, LIKE RIGHT NOW, EMITTER UPDATE, SO EVERY FRAME, THIS IS RE-EVALUATING ITSELF, JUST PER EMITTER, THAT IS NOT PER PARTICLE. I HAVE THIS GLOBAL SINE WAVE PER EMITTER GOING UP AND DOWN, UP AND DOWN, UP AND DOWN. IT IS GOING FROM 0 TO 1, 0 TO 1, 0 TO 1. THEN I USED THAT TO BLEND BETWEEN MY POSITIONS. THE PARTICLES KNEW WHERE THEY SPAWN, WHICH IS IN A CIRCLE. THEY KNEW WHERE THEY WANTED TO GO, THE POSITION OF THE MESH, AND THEN I JUST GIVE THIS LITTLE INTERPOLATION FACTOR USING THAT SINE WAVE TO BLEND BETWEEN THE TWO. SO THE END RESULT HERE IS WHERE THEY SPAWNED, THEY SPAWNED IN A SPHERE, AND THEN THERE'S A SINE WAVE THAT SAYS, "YOU KNOW WHAT, BLEND YOURSELF WITH THE POSITIONS." THEN WE ALSO DO SOME LOGIC IN THERE TO BLEND ITS COLOR, SO THEY SPAWN WHITE, AND THEN THEY BLEND TO THE COLOR OF THE MESH, AND THEN THEY BLEND BACK. SO I THINK THIS IS A GOOD EXAMPLE BECAUSE IT SHOWS -- IT IS A LITTLE BIT -- WE PUT IT IN ADVANCE, EVEN THOUGH IT IS A SIMPLE IDEA, BECAUSE OF THIS CONCEPT OF ABSTRACTING THE -- ASKING FOR DATA AND USING IT CONCEPT. I THINK IT IS AN ADVANCED, NIAGARA CONCEPT. AND ALSO, THIS IS THE FIRST EXAMPLE, WHICH IS STARTING TO REALLY UNLOCK THE POWER BURIED IN THERE, WHERE YOU DON'T HAVE TO USE THE STUFF THE WAY WE THINK YOU WANT TO USE IT. ANY OF THE DATA WE GIVE YOU, GO AHEAD AND USE IT HOWEVER YOU HAD LIKE. THIS IS KIND OF A FIRST EXAMPLE OF DOING THAT IN A LIGHT WAY. >>AMANDA: HUH. >>WYETH: THIS EXAMPLE IS SIMPLE. IT'S ONLY PUT INTO ADVANCE FOR ONE REASON: YOU HAVE TO KNOW A LITTLE BIT ABOUT HOW NIAGARA FUNCTIONS. SO I SEE THESE LITTLE ARROWS FLYING AROUND, THESE LITTLE ARROWS ARE PARTICLE SIM, AND THEY'RE THE ORIGIN OF THE PARTICLE IS RIGHT AT THE WHITE SPOT AT THE BOTTOM OF THE ARROW. AND THEY FLY AROUND AND THEY ORIENT THEMSELVES TO THE DIRECTION OF TRAVEL. BUT THEN YOU ALSO HAVE THIS SECONDARY SPRITE, AND THE WAY WE WOULD HAVE DONE THIS IN THE PAST IS YOU HAVE A WHOLE OTHER EMITTER, AND THAT SECOND EMITTER WOULD BE TICKING AND SIMULATING AND HAVING ALL THIS OVERHEAD AND THEN YOU WOULD TELL IT, YOU KNOW, I WANT TO LINK YOU OVER TO THIS OTHER ARROW. AND SO NOW, YOU ARE PAYING THE COST OF TWO SIMULATIONS IN ORDER TO GET THIS RESULT. WITH NIAGARA, YOU CAN SIMULATE ONCE, AND YOU CAN RENDER AS MANY TIMES AS YOU'D LIKE. THAT IS INCREDIBLY POWERFUL, THIS IS AN AMAZING OPTIMIZATION AND A VISUAL IMPROVEMENT IN THE AREAS WHERE YOU JUST WANT TO RAPIDLY LINK TWO CONCEPTS TOGETHER. THERE'S A NUMBER OF REASONS WHY THIS IS NICE. >>AMANDA: HUH. >>WYETH: IT IS IN ADVANCE BECAUSE IT REQUIRES YOU TO CREATE SOME NEW ATTRIBUTES. THIS IS ANOTHER THING THAT'S REALLY FUNDAMENTAL TO THE CONCEPT OF NIAGARA. SO I'M INITIALIZING MY PARTICLES, MY POINTS IN SPACE, I'M SETTING THEIR COLOR AND THEIR SIZE AND ALL THIS OTHER STUFF. I'M SPAWNING THEM IN A SPHERE, AND THEN I HAVE A LITTLE VORTEX VELOCITY HERE, WHICH IS DIRECTLY SETTING THEIR VELOCITY TO A VORTEX STYLE MOVEMENT. I'VE CREATED MYSELF A NEW VARIABLE, AND I'VE DONE THIS BY GOING OVER TO THE PARTICLES PANE AND I JUST HIT THE PLUS SIGN. SO I MADE MYSELF A LITTLE VECTOR HERE, AND IF I WANTED TO SET THAT, I WOULD JUST DRAG IT INTO THE STACK AND IT WOULD DROP ME IN THIS LITTLE SET VARIABLES NODE. SO I MAKE MYSELF A NEW VECTOR, I DRAG IT IN, BOOP, AND IT APPEARS HERE AS A LITTLE SET VARIABLES NODE. WHAT AM I DOING IN HERE? I'M PACKING A LITTLE EXTRA PIECE OF DATA INTO THIS. I HAVE THIS VECTOR, WHICH IS MY RENDER OFFSET. WHERE DO I WANT THE SPRITES TO RENDER, WHICH ARE OFFSET FROM THE INITIAL MESH? WHAT I DO IS, IS I ADD THE EXISTING PARTICLE POSITION, WHICH IS THE POSITION OF MY FIRST PARTICLE, MY ARROW, AND I ADD ANOTHER VECTOR TO THAT. SO I HAVE THIS ROTATING VECTOR OUT HERE THAT'S SPINNING AT A RATE OF, YOU KNOW, I DON'T KNOW, 100 DEGREES A SECOND, OR WHATEVER THAT MAY BE. AND THEN I JUST HAVE THIS KIND OF RANDOM OFFSET FOR HOW FAR AWAY I WANT TO BE. SO THE END RESULT HERE IS I HAVE MY PARTICLE POSITION, WHICH IS WHERE THE ARROW WAS, AND THEN I HAVE AN ADDITIONAL VECTOR THAT IS SPINNING AROUND IT, JUST LOOPING AROUND AND AROUND AND AROUND. AND THEN I MADE A SECOND RENDERER. SO THIS IS A KEY THING TO UNDERSTAND ABOUT NIAGARA, IS THAT I'M SIMULATING, AND THEN IF I JUST CLICK THIS PLUS SIGN, I CAN ADD AN ADDITIONAL RENDERER TO MY SIM. SO YOU HAVE SEEN THAT, I DROPPED ANOTHER SPRITE RENDERER IN NOW, AND NOW YOU CAN SEE THAT I HAVE A THIRD SPRITE THAT IS DRAWING EXACTLY IN THE POSITION OF MY FIRST ARROW. I CAN ADD AS MANY OF THESE AS I WANT. WE HAVE RIBBON RENDERERS, WE HAVE SPRITE RENDERERS, WE HAVE LIGHT RENDERERS, MESH RENDERERS, AND SO ON. THE ONLY THING I THEN HAVE TO DO IS LINK THE POSITION OF MY NEW RENDERER TO THIS NEW LITTLE ATTRIBUTE I CREATED, WHICH IS AN OFFSET FROM MY EXISTING PARTICLE POSITION. SO I GO DOWN INTO MY RENDERER, AND YOU CAN SEE THAT THERE'S A LINK FOR BINDINGS HERE. NORMALLY MY POSITION BINDING IN THE RENDERER WOULD BE PARTICLE POSITION, BUT IT SEES THAT THERE'S ANOTHER VECTOR THAT I'VE MADE, AND IT ALLOWS ME TO CHOOSE THAT OTHER VECTOR TO MY RENDER OFFSET. IF I JUST SET THIS TO PARTICLE POSITION, NOW THEY ARE BOTH RENDERING IN THE SAME LOCATION, JUST LIKE THEY NORMALLY WOULD IF I ADDED IT. BUT IF I GO AND FIND THAT RENDER OFFSET I MADE, WHICH IS JUST A VECTOR, I HAVE A BUNCH OF OTHER VECTORS WHICH IT THINKS I CAN USE, AND I COULD USE. IF I CHOOSE THAT, NOW THAT LITTLE OFFSET VECTOR TAKES EFFECT. SO GREAT OPTIMIZATION, SIMULATING ONCE AND RENDERING A BUNCH OF THINGS, IS POTENTIALLY REALLY VALUABLE. IF YOU'RE HEAVILY PERFORMANCE CONSTRAINED, THIS COULD BE A GREAT THING. AND ALSO, IT'S JUST FUN TO PLAY WITH. I DON'T THINK WE'VE REALLY PLUMBED THE DEPTHS OF THIS FEATURE -- >>AMANDA: THERE'S SO MUCH -- >>WYETH: -- TO HAVE THE COMMUNITY RUN WITH IT. >>AMANDA: -- THAT YOU COULD DO THERE. >>WYETH: THERE IS. >>AMANDA: AND SO MUCH POTENTIAL. >>WYETH: AND WE HAVE TAKEN THIS TO ABSURD PLACES IN OUR TESTING. WHEN WE MAKE A HUGE SCRIPT, WHICH IS DRIVING ALOT OF DIFFERENT ATTRIBUTES, AND YOU HAVE A TON OF RENDERS WHO ARE ALL BEING DRIVEN FROM IT. RIGHT NOW IT GETS A LITTLE CUMBERSOME AT SOME POINT. YOU'RE DEALING WITH TOO MUCH DATA -- WE WILL HAVE TO GIVE YOU BETTER TOOLS IF YOU WANT TO GO REALLY CRAZY. >>AMANDA: RIGHT. >>WYETH: THAT BEING SAID, I THINK THAT WHEN PEOPLE START TO GET USED TO THIS IDEA, THEY WILL REALIZE THEY DON'T NEED QUITE AS MANY EMITTERS AS THEY THOUGHT, AND THAT'S JUST GONNA BE A GENERAL PERFORMANCE WIN ACROSS THE BOARD FOR A LOT OF PEOPLE. >>AMANDA: YEAH, A LOT OF POTENTIAL TUCKED AWAY IN THAT, I THINK. >>WYETH: YES. OKAY, THIS GUY. THIS ONE SHOULD MAYBE BE AN ULTRA ADVANCED [LAUGHTER]. THIS EFFECT SHOULD BE IN THE NEXT ROOM OVER PROBABLY, AND IN THE BEST WAY. BECAUSE IT REALLY SHOWS HOW DEEP YOU CAN GO IN CREATING YOUR OWN MODULES, AND YOUR OWN BEHAVIORS, IN LINKING TOGETHER ATTRIBUTES AND THINGS FROM ACROSS SPAWN AND UPDATE SCRIPTS FROM HAVING ONE PARTICLE EMITTER SEND EVENTS TO ANOTHER. THERE'S JUST -- THIS HAS A LOT OF STUFF GOING ON, BASICALLY. AS YOU BECOME A LITTLE BIT MORE FAMILIAR WITH NIAGARA, THIS WILL BE WHERE YOU'RE GONNA START TO GO TO REALLY SEE KIND OF A POWER USER AT WORK DEVELOPING SOMETHING. THIS WAS MADE BY JOHN LINDQUIST, WHO'S AN ABSOLUTELY BRILLIANT TECH ARTIST, AND WHO HAS BEEN CREATING A NUMBER OF THE MODULES WHICH YOU GUYS ARE USING IN NIAGARA NOW. SO LET'S LET'S BREAK DOWN A TEENY LITTLE BIT OF WHAT'S HAPPENING. THE THEORY BEHIND IT, BEFORE I OPEN THE EFFECT, IS YOU HAVE TWO EMITTERS. YOU HAVE ONE PARTICLE EMITTER, WHICH IS JUST THESE LITTLE GLOWY SPHERES. THEY'RE JUST FLYING AROUND AND THEY JUST HAVE SOME RANDOM POSITION AND VELOCITY OR, YOU KNOW, AN ATTRACTOR WHICH IS PULLING THEM BACK TOWARD THE CENTER OR WHATEVER. I DON'T REMEMBER EXACTLY HOW THEY'RE SET UP. THEN YOU HAVE A SECOND EMITTER, WHICH IS SAMPLING A SKELETAL MESH, AND ASKING THAT MESH EVERY SINGLE FRAME FOR ITS ATTRIBUTES. WHERE IS THE -- WHERE ARE YOUR BONES, WHERE IS THE TRIANGLE THAT IS BOUND TO ANY GIVEN BONE, WHAT IS THE VELOCITY OF THAT, WHAT IS YOUR SURFACE NORMAL, ALL THESE DIFFERENT THINGS. WHAT ARE YOUR UVS. THEN EVERY FRAME, IT'S UPDATING THAT. SO YOU CAN SEE HIM START TO UPDATE HERE. AND THEN AS THE SPHERES KIND OF ENTER HIS INFLUENCE, THEY START TO DISRUPT THAT SAMPLING. BUT EVERY SINGLE FRAME, THOSE PARTICLES ARE BEING RESAMPLED TO SAY, "HEY, I KNOW WHERE YOU CAME FROM. WHEREVER YOU SPAWNED ORIGINALLY, I WANT YOU TO GO BACK TO THERE, AND I WANT YOU TO ORIENT YOURSELF PROPERLY." >>AMANDA: THAT'S SO COOL-LOOKING. >>WYETH: YEAH, IT IS VERY COOL. AND THE OTHER THING TO NOTE IS THAT, IF WE'RE GETTING CLOSE, WE'RE DOING KIND OF A COARSE APPROXIMATION OF THE ACTUAL SHADING OF THE MESH. IT'S INHERITING ITS NORMALS, IT'S INHERITING ITS ALBEDO VALUE -- THE DIFFUSE COLOR -- ITS INHERITING THE SPECULAR COLOR FROM THE MESH. WE'RE ACTUALLY BASICALLY REPRODUCING THIS MESH USING PARTICLES. THEY TAKE A SPRITE, THEY GET THE ATTRIBUTES OF THE MATERIAL THAT'S APPLIED, AND THEN THEY PUT IT ROUGHLY WHERE IT'S SUPPOSED TO BE. SO ONE OF THE BIG IDEAS ABOUT WHAT IS HAPPENING IN HERE IS BASED ON THIS CONCEPT OF EVENTS. SO I HAVE TWO EMITTERS. I HAVE THE SKELETAL MESH REPRODUCTION EMITTER. AND THIS GUY IS BASICALLY SAYING, "HEY, I'M GONNA RECREATE THIS SKELETAL MESH." IT DOES THAT WITH SOME BUILT-IN SAMPLING FUNCTIONS AND THEN SOME BESPOKE FUNCTIONS, BASICALLY. THERE'S THIS MESH REPRODUCTION SPRITE MODULE, WHICH IS KIND OF LIKE A REALLY ROBUST VERSION OF A BASIC SKELETON MESH SAMPLER. SO WE SUPPLY IN THE NIAGRA PLUGIN, WE SUPPLY A SAMPLE SKELETAL MESH THING, WHICH ALLOWS YOU TO SAMPLE BONES OR SURFACES. IT'S A MODULE THAT'S AVAILABLE TO YOU. THIS WOULD BASICALLY BE LIKE AS IF SOMEBODY TOOK THAT, AND THEN DUPLICATED IT AND ADDED EXACTLY THE FEATURES THEY NEEDED TO DO SOMETHING VERY SPECIFIC. IN THIS CASE, TO START TO REPRODUCE A SKELETAL MESH IN ITS ENTIRETY. YOU KNOW, IT'S BASICALLY WRITING TO THE INTRINSIC PROPERTIES OF THE PARTICLES DIRECTLY. IT'S SAYING, "YOU KNOW WHAT, JUST SPAWN AND GO RIGHT WHERE I TELL YOU. I'M NOT GONNA SAMPLE AND ASK FOR DATA AND SAVE IT OFF. I'M JUST GONNA PUT YOU WHERE YOU'RE SUPPOSED TO GO." YOU KNOW, YOU'VE GOT CONTROLS OVER HOW LARGE THE PARTICLES ARE THAT ARE BEING ATTACHED TO THE MESH. YOU BASICALLY -- ALL THESE KIND OF THINGS ARE EXPOSED TO YOU FOR WHAT'S SUPPOSED TO HAPPEN ON THE FIRST FRAME WHEN THE PARTICLES ARE BORN, WHICH IS TO PUT YOURSELF ON THE MESH, AND THEN WHAT HAPPENS EVERY FRAME THEREAFTER. WHICH IS, "OKAY, I INITIALIZED MY REPRODUCTION. SO IF I WAS STATIC, I'M DONE. BUT NOW I HAVE A SECOND MODULE, WHICH IS ACTUALLY UPDATING THIS EVERY SINGLE FRAME." AND SO, EVERY SINGLE FRAME, I GO IN THERE AND I SAY, "HEY MESH, WHERE'S YOUR CURRENT TRIANGLE? WHAT'S THE UV, YOU KNOW, WHAT ARE SOME OF YOUR OTHER PIECES OF INFORMATION?" AND THEN I'M GONNA PACK ALL THOSE INTO SOME ATTRIBUTES, AND I'M GONNA WRITE THEM DIRECTLY OUT. BASICALLY, THIS WOULD BE SOMEBODY WHO REALLY KNEW WHAT THEY WERE LOOKING FOR TO DO SOMETHING DIFFERENT FROM SOME OF OUR KIND OF SUPPLIED IDEAS, TAKING THOSE CONCEPTS, AND CREATING SOMETHING BESPOKE. THAT'S WHAT YOU'RE SEEING HERE. WHAT GETS REALLY INTERESTING IS WHAT HAPPENS DOWN BELOW WITH THE EVENTS. SO WE HAVE THESE LITTLE SPHERES HERE, WHICH ARE YOUR INFLUENCERS. THESE ARE JUST SPAWNING AND THEY'RE JUST FLYING AROUND. WE'RE JUST SETTING THE POSITION DIRECTLY TO, YOU KNOW -- THEY'RE IN A SPHERE AND THEY HAVE SOME VELOCITY. THEY FLY ABOUT USING SOME CURL NOISE AND THEY GET ATTRACTED BACK TO THE CENTER. THESE ARE ALL BUILT IN MODULES INSIDE OF NIAGARA. AND THAT'S WHAT'S CONTROLLING THESE ORBS THAT ARE JUST FLYING AROUND. THIS IS BASIC, FUNDAMENTAL NIAGARA BEHAVIOR: KEEPING THOSE GUYS IN PLACE AND DOING WHAT THEY'RE SUPPOSED TO BE DOING. AND THEN -- GO AHEAD, PLEASE. >>AMANDA: REALLY QUICK. YOU WOULD -- YOU HAD SHOWN THE GRAPH, AND THEY WERE ASKING ABOUT THE GRAPH INSIDE THE NODE THAT YOU ARE EDITING. >>WYETH: OH, YEAH. I PROBABLY SKIPPED OVER THAT TOO QUICKLY. BUT YOU'RE GONNA SEE SOMETHING SIMILAR IN BOTH THE SPAWN GRAPH AND THE UPDATE GRAPH. SO IF I DECIDE THAT I WANT TO INITIALIZE MY PARTICLE POSITIONS, I BASICALLY -- I NEED TO KNOW A TRIANGLE COORDINATE. I NEED TO KNOW WHERE I'M GONNA GO. AND SO I CAN GET ONE RANDOMLY, OR I COULD GENERATE ONE RANDOMLY AND THEN SAVE IT OFF. AND SAY THIS TRIANGLE COORDINATE, THIS SPECIFIC PART OF THE MESH, THAT'S WHERE I CAME FROM. SO INSTEAD OF EVERY FRAME SAYING, "I CARE ABOUT A DIFFERENT SPOT ON THE MESH, I'M SPAWNING. THEN I'M GONNA SAY, YOU KNOW WHAT -- AND THIS IS MY PLACE. THIS SPOT ON THE ARM, THAT'S WHERE I WANT TO GO TO." AND SO THAT'S BASICALLY CALLED A TRI-COORDINATE. AND THEN, INSIDE OF THAT, YOU'VE GOT A LITTLE LOCATION ON THE TRIANGLE THAT IS INSIDE OF THAT LITTLE TRIANGLE THAT YOU PICK. JOHN HAS ALSO DONE SOME CLEVERNESS IN HERE TO FIGURE OUT THE SURFACE AREA OF THAT TRIANGLE. SO YOU COULD CRACK THIS OPEN AND YOU CAN SEE HE'S GOT, LIKE, SOME -- BASICALLY SOME CALCULATIONS HERE, WHICH CALCULATE THE AREA BASED ON THE WORLDSPACE POSITION OF THE THREE CORNERS OF THE TRIANGLE. SO HE KNOWS WHERE THE THREE VERTICES OF THE TRIANGLE ARE AND, THEREFORE, HE CAN ROUGHLY CALCULATE THE AREA FROM THAT AND THEN THAT'S HOW HE KNOWS HOW BIG TO MAKE HIS SPRITE. IF IT IS A BIG TRIANGLE, HE PUTS A BIG SPRITE ON IT. IF IT'S GOT A TINY TRIANGLE, HE PUTS A TINY ONE ON IT. AND THEN HE'S KIND OF SAVING ALL OF THIS STUFF OFF INTO ATTRIBUTES HE THINKS HE'S GOING TO USE LATER. SO HOW BIG IS THE TRIANGLE, YOU KNOW, WHAT IS THE UV AREA THAT'S TAKEN UP BY THE TRIANGLE. WHAT'S THE MAX SIZE A TRIANGLE OR A SPRITE SHOULD EVER BE. HE'S BASICALLY DOING A BUNCH OF CLEVERNESS TO BAKE ALL OF THESE ATTRIBUTES THAT ARE, YOU KNOW, AVAILABLE TO HIM EVERY SINGLE FRAME THEREAFTER. HE ALSO DOES A COUPLE OF THINGS WHERE, "HEY, THAT PARTICLE IS TOO SMALL. SO MY CALCULATED SIZE, YOU KNOW WHAT, I'M JUST GONNA GO AHEAD AND KILL YOU BY SETTING YOUR ATTRIBUTE FOR WHETHER YOU'RE ALIVE OR NOT. I'M JUST GONNA SET YOU TO DEAD." AND IT'S JUST AN EFFORT TO REDUCE TRIANGLES OR SPRITES THAT DON'T REALLY MAKE THAT MUCH OF A DIFFERENCE TO THE LOOK, JUST TO MINIMIZE PERFORMANCE PROBLEMS, THAT KIND OF THING. AND THEN, IN THE LAST STEP HERE, HE BASICALLY JUST WRITES ALL OF THOSE THINGS DIRECTLY TO THE ATTRIBUTES OF THE PARTICLE. SO THAT HAPPENS ON THE FIRST FRAME, AND THEN EVERY FRAME THEREAFTER, THERE'S BASICALLY THAT SAME LOGIC IS RUNNING AGAIN, EXCEPT HE'S NOT DOING ANY OF THE CALCULATIONS FOR SURFACE AREA, OR WHICH UV I AM ON THE MODEL. HE'S ALREADY DONE ALL THAT MATH. HE ONLY NEEDS TO DO IT ONCE AND SAVE IT OFF. SO REALLY, DOWN HERE IN THE UPDATE SCRIPT, WHICH IS WHAT HAPPENS EVERY FRAME THEREAFTER, HE JUST HAS TO SAY, "OKAY, WHAT'S CHANGING ON THE MESH?" WELL, HIS POSITION AS HE RUNS. OKAY, SO EVERY FRAME I'M GONNA SAY, "WELL, I KNOW THAT I WAS SUPPOSED TO BE HERE, AND NOW YOUR HAND'S OVER THERE? JUST SET ME THERE DIRECTLY." IT'S KIND OF THE WAY TO DO IT. SO IF YOU SLOWLY GO THROUGH THIS MODULE, THE INITIALIZATION MODULE, TO SEE WHAT IT'S DOING, YOU'LL THEN UNDERSTAND WHAT THIS GUY IS DOING DOWN HERE? >>AMANDA: AND HOW, LIKE, EXPENSIVE OR HEAVY IS THIS EFFECT? >>WYETH: UM, IT'S SOMEWHERE IN THE MIDDLE. RIGHT NOW, IT'S ONLY ON THE CPU. AND ACTUALLY, IT'S A GREAT THING TO TALK ABOUT, TAKE A LITTLE PIT STOP. RIGHT NOW, SAMPLING SKELETAL MESHES ONLY HAPPENS ON THE CPU. AND THAT WILL PROBABLY ALSO BE TRUE IN 4.22, ALTHOUGH WE'LL SEE -- IT'S ONE OF THE ON THE EDGE FEATURES WE'RE STILL KIND OF TESTING AND SEEING WHETHER OR NOT WE CAN MAKE IT IN, SO IT MAY NOT. WE ARE RIGHT ON THE EDGE OF SUPPORTING STATIC AND SKELETAL MESH SAMPLING ON THE GPU. THAT OPENS THE -- BLOWS THE PERFORMANCE DOORS OFF, RIGHT? SO NOW YOU HAVE THE ABILITY TO ASK FOR A LOT OF THINGS WHEN YOU'RE SAMPLING DATA ON THE GPU. ORDERS OF MAGNITUDE MORE PARTICLES COULD BE SPAWNED, AND COULD BE, YOU KNOW, AFFECTED BY A STATIC OR A SKELETAL MESH. I'M HOPING IT MAKES INTO 4.22. IF NOT, YOU CAN GET IT OFF OF THE PREVIEW BUILDS -- >>AMANDA: THE GITHUB. >>WYETH: -- AND THE DEV BUILDS AND STUFF LIKE THAT. BUT WE'RE CLOSE, WE'LL SEE IF THAT MAKES IT IN. IT'S ON OUR LIST. THE OTHER THING THAT UNLOCKS IS THE ABILITY TO NOT ONLY SAMPLE A, LET'S SAY, A SKELETAL MESH ON THE GPU, BUT ALSO SAMPLE A CORRESPONDING TEXTURE. BECAUSE SO -- RIGHT NOW, NIAGARA IS IN A SLIGHTLY AWKWARD PLACE WHERE YOU CAN SAMPLE STATIC OR SKELETAL MESHES ON THE CPU, BUT YOU CAN ONLY SAMPLE TEXTURES ON THE GPU. AS SOON AS YOU CAN DO BOTH, AS SOON AS YOU CAN ASK FOR A MESH AND ASK FOR TEXTURES, YOU CAN DO A LOT OF REALLY, REALLY COOL STUFF. LIKE, THAT COMBINATION IS EXTREMELY POWERFUL. >>AMANDA: YEAH. >>WYETH: SO WE'RE WORKING HARD TO UNLOCK THAT FOR PEOPLE AS SOON AS POSSIBLE, BUT THAT IS VERY MUCH HIGH ON OUR LIST OF, "HEY, LET'S BLOW THE DOORS OFF THIS THING. LET'S ALLOW YOU TO SAMPLE A MESH, AND THEN SAMPLE A RENDER TARGET AT THE SAME TIME, AND DO REALTIME FLUID SIMS WHERE PARTICLES ARE SWIRLING OVER THE -- " >>AMANDA: OH MY GOODNESS. >>WYETH: -- I MEAN, THE DOORS WILL BE BLOWN OFF FEATURE-WISE, SO I'M REALLY EXCITED TO SEE THAT HAPPEN SOON. >>AMANDA: YEAH. >>VICTOR: THIS WAS THE INTENTION ALL ALONG WITH NIAGARA, RIGHT? >>WYETH: YES, THAT HAS ALWAYS BEEN THE INTENTION IS, WHEREVER POSSIBLE, CPU AND GPU PARITY. AND WE'RE GETTING CLOSER THAN EVER. >>AMANDA: THAT'S FANTASTIC. >>WYETH: THERE'S NOTHING TECHNICALLY TO STOP US OTHER THAN JUST CODE TIME AND SO ON. >>VICTOR: DOES THAT ALSO ALLOW YOU TO SAY, IF YOU'RE ALREADY HARD, YOUR GPU IS WORKING HARD, CAN YOU THEN CHOOSE TO MOVE OVER SOME PARTICLES TO THE CPU? DOES IT GIVE YOU THAT THAT FREEDOM? >>WYETH: MM-HMM. SO ON THIS EFFECT HERE, THIS WOULD NOT WORK BECAUSE CURRENTLY YOU CAN ONLY SAMPLE ON ONE. BUT CHANGING THE EMITTER PROPERTY FROM CPU SIM TO GPU SIM IS AS ALL IT TAKES. ANY OF THE FEATURES THAT ARE UNSUPPORTED WILL JUST GRACEFULLY TURN OFF, AND THEN ANY FEATURES UNDER THE HOOD, PROGRAMMED TO CHANGE WILL GO AHEAD AND CHANGE. WE HAVE SPOKEN ABOUT, IN THE PAST, DYNAMIC LOAD-BALANCING BETWEEN CPU AND GPU. WE HAVE NO PLANS FOR THAT AT THE MOMENT, BUT IS SOMETHING I THINK IS INTERESTING, WHICH WOULD BE, "WOW, CPU FRAME TIMES ARE REALLY TAKING A HIT. LET'S SWITCH THE SIM FOR A COUPLE OF FRAMES OVER TO THE GPU, OR FOR, YOU KNOW, UNTIL THE PERFORMANCE GETS MORE REASONABLE AND THEN WE'LL GRACEFULLY LET IT AUTO SWITCH BACK." THAT WOULD BE REMARKABLE -- >>VICTOR: SOUNDS LIKE LIKE BLACK MAGIC. >>WYETH: WE SHOULD DEFINITELY DO THAT, WE'VE TALKED ABOUT IT A NUMBER OF TIMES, WE JUST HAVEN'T WRITTEN THE FEATURE YET. BUT THERE'S NOTHING -- THEORETICALLY, THERE'S NOTHING STOPPING US FROM DOING THAT, OTHER THAN CERTAIN AREAS IN WHICH IT WOULDN'T MAKE SENSE. FOR EXAMPLE, IF I HAVE A GPU COLLISION WHERE I'M COLLIDING WITH THE DEPTH BUFFER OF THE SCENE, CPU WOULD NEVER HAVE ACCESS TO THAT INFORMATION. THAT'S A GPU ONLY IDEA. CERTAIN THINGS WILL NOT WORK IN THIS PARADIGM. FOR A LOT OF SIMULATIONS, I THINK YOU COULD GRACEFULLY SWITCH. YOU WOULDN'T EVEN NOTICE. IT WOULD JUST HAPPEN. SO YES, I THINK THAT WOULD BE VERY COOL. WE SHOULD DO THAT. OKAY, SO THIS SECTION HERE -- THE THING THAT'S INTERESTING ABOUT THIS -- BEFORE I MOVE ON TO SOME OTHER STUFF, IS THESE LITTLE ORBS THAT ARE FLYING AROUND ARE GENERATING A LITTLE EVENT EVERY FRAME THAT SAYS, "HERE'S WHERE I AM. HERE'S WHERE I AM, HERE'S HOW FAST THEY'RE MOVING, HERE'S SOME OTHER INFORMATION ABOUT ME." YOU'LL NOTICE THAT THE LOCATION EVENT IS AFTER THE SOLVER. SO WHAT I MEAN BY THAT IS, WE HAVE THIS SOLVER HERE THAT SAYS, OKAY, BASED ON MY CURRENT POSITION AND HOW FAST I'M GOING, HERE'S WHERE I'M GOING TO END UP AT THE END OF THE FRAME. WE DO THAT WORK, WE SOLVE TO KNOW EXACTLY WHERE I'M GONNA BE, RIGHT BEFORE THE FRAME STARTS OVER, AND THEN I SEND AN EVENT. THAT ENSURES THAT I'M AS ACCURATE AS POSSIBLE ABOUT SENDING INFORMATION ACROSS TO A DIFFERENT EMITTER. AND THEN IN HERE, IN THIS REPRODUCTION EFFECT, I HAVE AN EVENT HANDLER. THE EVENT HANDLER HAS A RECEIVER WHICH BASICALLY RECEIVES THAT EVENT AND ACCUMULATES THEIR INFLUENCE ONTO THE PARTICLES THEMSELVES. SO THOSE ORBS ARE SAYING, "HEY, HERE I AM." THEN OVER ON THE MESH THAT IS BEING REPRODUCED OUT OF SPRITES, WE HAVE THIS LISTENING MODULE, WHICH IS LISTENING FOR THAT EVENT, AND IT'S ASKING FOR ITS POSITION. LATER ON, YOU'LL SEE IT ASK FOR ITS VELOCITY. IT JUST PACKS THOSE, YOU KNOW, CALCULATED VALUES OFF INTO SOME TEMP VARIABLES THAT WE USE LATER. THE IDEA HERE IS, YOU YOU BASICALLY FIGURE OUT WHAT THE SUM OF THOSE SPHERES ARE AS THEY'RE RELATED TO THEIR INFLUENCE TO THE PARTICLES ON THE GUY YOU'RE REPRODUCING. AND THEN YOU CALCULATE A DISTANCE BETWEEN THOSE SPHERES AND THOSE PARTICLES THAT IT'S INFLUENCING, THAT WAY YOU GET LIKE A NICE DISTANCE-BASED FALLOFF. SO THAT'S WHAT'S HAPPENING IN THIS LOGIC. YOU GET A ROUGH COUNT OF HOW MANY NUMBERS ARE BEING INFLUENCED, AND THEN YOU CACHE OFF THAT INFLUENCE AS AN ATTRIBUTE ON EACH ONE OF THE PARTICLES THAT ARE BEING INFLUENCED. AT THE VERY END OF THIS WHOLE THING, WE SAY, HEY, ARE YOU BEING INFLUENCED BY THE BUDDIES THAT ARE FLYING AROUND? THAT'S REALLY ALL THIS MODULE IS ANSWERING IS, AM I RECEIVING INFLUENCE? YES. IF SO, THEN UP IN THE UPDATE SCRIPT FOR THE PARTICLE, WE USE THAT VALUE TO INTERPOLATE BETWEEN RANDOM POSITIONS AND THE POSITION ON THE MESH. SO, YOU KNOW, THIS -- AGAIN, THIS IS A VERY POWER USER-Y IDEA HERE. THERE'S A LOT OF CONCEPTS HERE. YOU CAN SEE THERE'S EXPRESSIONS IN HERE WHERE HE IS WRITING HLSL DIRECTLY HERE JUST FOR CONVENIENCE, HE'S SENDING EVENTS, HE'S WRITING CUSTOM MODULES TO RECEIVE THEM, WRITING CUSTOM MODULES TO BLEND PARTICLE ATTRIBUTES BETWEEN THE THE NEW POSITION IN THE OLD ONE. THERE'S A LOT GOING ON IN HERE BUT, AS YOU GET A LITTLE BIT FURTHER DOWN INTO THE BONES OF THE TOOL, THIS IS THE THING THAT WILL START UNLOCKING SOME IDEAS FOR USERS. SO IT'S A REALLY COOL EFFECT. I LOVE IT. >>VICTOR: IT IS. >>WYETH: I COULD LOOK AT IT ALL DAY. OKAY, SO MOVING ON, THIS IS THE NEW EXAMPLE THAT WE ADDED INTO THE CONTENT EXAMPLES, WHICH IS THAT YOU CAN NOW SAMPLE TEXTURES ON THE GPU. SO YOU CAN SEE HERE, WE HAVE A TEXTURE OF THE UNREAL ENGINE LOGO. IT'S A REALLY, REALLY SIMPLE EFFECT. BASICALLY, WHAT WE DO IS IS WHEN THE PARTICLE SPAWNS, WE SAMPLE THIS TEXTURE. YOU MIGHT ASK, WELL, WHAT DID YOU USE FOR UVS TO SAMPLE THAT TEXTURE? THE TRUTH IS, YOU CAN PASS ANYTHING IN. YOU, HAVE KIND OF TOTAL CONTROL OVER WHICH UVS YOU WOULD USE TO SAMPLE THE TEXTURE. WHAT WE'RE DOING, IN THIS EXAMPLE, IS YOU'RE LAYING OUT THE PARTICLES IN A GRID. SO WE BASICALLY HAVE THIS -- JUST MOVE THIS OVER -- YOU CAN SEE HERE WE'VE GOT THIS GRID OF PARTICLES THERE, AND ALL OF THEM ARE JUST BEING SPAWNED PERFECTLY IN A GRID. AND WE COULD ALMOST CONSIDER THOSE OUR PIXELS FOR THE PURPOSES OF SAMPLING THE TEXTURE. AND THEN, ONE OF THE THINGS THAT THIS GRID LOCATION MODULE DOES, IF I SHOW OUTPUTS, WHICH ARE -- THEY ARE SHOWN, WHICH IS NICE, IF I GO DOWN TO THE OUTPUTS. IT IS OUTPUTTING A GRID UV. SO THIS WOULD BE AS FAR AS THE GRID LOCATION GOES, WHERE AM I ON THIS LITTLE GRID THAT I GENERATED, WHAT IS MY POSITION. TURNS OUT, THAT COURSE CORRELATES PERFECTLY WITH THE CONCEPT OF A UV, LIKE, FROM 0 TO 1. WE JUST SAVE THAT OFF FOR YOU AS A SIDE EFFECT OF WRITING YOUR PARTICLES TO A GRID. SINCE WE SAVE THAT OFF FOR YOU, WE CAN BASICALLY TAKE THAT ATTRIBUTE AND YOU CAN SPLIT OFF THE ARRAY LOCATION ON THE GRID, THE X-AXIS AND THE Y-AXIS, AND MAKE THEM INTO A LITTLE 2D VECTOR FOR YOU AND APPLY THAT AS YOUR UVS. SO NOW WHEREVER I WAS ON THE GRID, THAT'S WHERE I'M ASKING FOR MY TEXTURE POSITION, IF THAT MAKES SENSE. EACH ONE IS KIND OF LIKE A PIXEL ON THE TEXTURE. THEN I INITIALIZE THE PARTICLE. I TELL IT HOW LONG I WANT IT TO LIVE. FOR THE PARTICLE COLOR, I'VE JUST LINKED THE SAMPLED TEXTURES COLOR RIGHT TO THE COLOR ATTRIBUTE. SO IN THE TEXTURE SAMPLER, WHICH IS A MODULE THAT JUST ASKS FOR TEXTURE ATTRIBUTES, AND IT'S SO EASY, SO SIMPLE. BASICALLY, ALL I'M DOING HERE IS I HAVE A TEXTURE WHICH I'VE ASSIGNED, I GIVE IT MY UV, AND THEN FROM THERE I ASK FOR ITS VALUES. SO HERE, I'M BASICALLY JUST SAYING, "WHAT'S YOUR COLOR?" AND IT'S JUST GOING TO GIVE ME THE RGBA FROM THE TEXTURE. AND THEN WHAT I DO IS I BASICALLY JUST PACK THAT RIGHT INTO THE COLOR. NATURALLY, BECAUSE THE A COMES ALONG FOR THE RIDE, THE ALPHA, WHERE THERE'S ALPHA IN THE TEXTURE, THAT MEANS THE PARTICLE IS INVISIBLE. THE OTHER THING YOU COULD DO, RIGHT NOW YOU CAN SEE ALL OF THE PARTICLES. EVEN WHEN SELECTED, YOU CAN SEE ALL THE PARTICLES. >>AMANDA: RIGHT. >>WYETH: YOU CAN ALSO WRITE A MODULE THAT SAYS, IF ALPHA EQUALS ZERO, KILL ME. AND THAT WAY, YOU WOULD PERFECTLY CUT OUT AROUND YOUR TEXTURE BEFORE YOU GET INTO THE BUSINESS OF SIMULATING THEM. THAT WOULD BE AN OPTIMIZATION. IF YOU WERE SPAWNING A TON OF PARTICLES AND YOU DECIDED NOT TO SIMULATE THEM ALL, JUST THE ONES THAT ARE BEING BORN FROM THE TEXTURE, THEN YOU CAN WRITE YOURSELF A LITTLE BEHAVIOR TO DO THAT. SO AGAIN, 100 PERCENT PROGRAMMABLE, DO WHATEVER YOU WANT. DOWN IN THE PARTICLE UPDATE, WE JUST APPLY SOME ACCELERATION AND IT FALLS DOWNWARD. THAT'S IT. >>AMANDA: THAT'S IT, NO BIG DEAL. >>WYETH: THIS ONE IS PRETTY SIMPLE, BUT THE CONCEPT OF SAMPLING THIS DATA IS A LITTLE BIT MORE OF AN ADVANCED THING, SO WE PUT IT IN ADVANCED. WE'LL PROBABLY END UP MOVING SOME OF THESE INTO DIFFERENT AREAS AS WE GO FORWARD, AND AS WE GENERATE MORE OF THESE EXAMPLES. OKAY, SO WE FINALLY MADE IT TO THE END OF THE HALLWAY, THAT IS GREAT. SOME OTHER THINGS I WANTED TO COVER THAT I THINK WOULD BE INTERESTING. ONE WAS EARLY ON, WHEN WE WERE TALKING ABOUT THE INITIALIZED PARTICLE, WE WERE TALKING ABOUT THE DIFFERENT PARTICLE ATTRIBUTES. ONE OF THOSE ATTRIBUTES IN THE INITIALIZED PARTICLE IS MASS. SO I'M GONNA JUST OPEN AND EXAMPLE REALLY QUICK. WHAT WE HAVE DONE IS, WE HAVE STARTED TO CONSIDER MASS A FIRST-CLASS CITIZEN. THIS IS ENTIRELY OPTIONAL. YOU DON'T HAVE TO WORK WITH MASS, BUT WE THINK THAT IT UNLOCKS SOME REALLY INTERESTING THINGS AND IS, ALONG WITH UNLOCKING THOSE INTERESTING THINGS, IS ALSO POTENTIALLY A PRETTY SIGNIFICANT OPTIMIZATION. I'LL EXPLAIN WHY IN A SECOND. THE BASIC IDEA HERE, AND IF YOU REMEMBER WHEN I WAS TALKING ABOUT THE PARTICLES BEING INITIALIZED, FOR THIS EXAMPLE I'M BASICALLY JUST SETTING MASS DIRECTLY. BUT, IN THAT INITIALIZE PARTICLE EXAMPLE, MASS IS RIGHT THERE. AND IT DEFAULTS TO ONE. SO A MASS OF ONE JUST MEANS IT CANCELS OUT. YOU KNOW, IT DOESN'T FACTOR INTO ANY OF THE CALCULATIONS. BY DEFAULT, PARTICLES JUST HAVE A MASS OF ONE, WHICH MEANS MASS DOES NOTHING. WHY DO WE THINK MASS IS INTERESTING? THE BIGGEST REASON IS BECAUSE, ALMOST EVERYTHING THAT WE DO WHEN WE'RE MOVING PARTICLES AROUND, IS THROUGH FORCES. THE DEFINITION OF A FORCE IS A, YOU KNOW, IS MASS TIMES ACCELERATION EQUALS A FORCE. IN THE DEFINITION OF THE CONCEPT, IS THE CONCEPT OF MASS. EVERYTHING THAT WE DO TO MOVE A PARTICLE, OR INFLUENCE A PARTICLE, OR FIGURE OUT HOW FAST IT ROTATES AND STUFF, IS THEORETICALLY AFFECTED BY THIS VALUE. THERE'S A REALISM THAT COMES ALONG WITH THAT. IF YOU GET YOUR NUMBERS RIGHT, THEN A LOT OF THINGS JUST KIND OF FALL OUT OF THE OTHER END OF THAT, KIND OF, FOR FREE. SO A GOOD EXAMPLE WOULD BE, I HAVE A BUNCH OF ROCKY DEBRIS. IF I GO INTO MY MASS AND I SET MY DENSITY TO ROCK, AND WE HAVE SETTINGS FOR DIFFERENT DENSITIES, AND I GIVE MYSELF ROUGHLY THE APPROPRIATE SETTINGS, AND I PUT AN EXPLOSION IN THERE, THE LITTLE PIECES ARE GONNA FLY OFF REALLY VIOLENTLY AND THEY'RE GONNA SPIN REALLY RAPIDLY. AND THEN THE BIGGER PIECES ARE GONNA -- KIND OF LIKE THERE'S MORE RESISTANCE TO THAT MOTION, THEY'RE GONNA COME UP MORE MORE SLOWLY, THEY'RE GONNA TURN LESS RAPIDLY , THEY'RE GONNA LAND WITH A THUD, THEY'RE GONNA REACH RESTITUTION, THEY'RE NOT GONNA BOUNCE AS HIGH, ALL THESE THINGS. WHEN WE USED TO WORK IN CASCADE, WE WOULD HAVE TO MAKE, LIKE, FOUR OR FIVE DIFFERENT EMITTERS TO SATISFY THOSE DIFFERENT IDEAS. THE BIG HEAVY ONES THAT MOVE SLOWLY, AND THEN THE LITTLE TINY PARTICULATE ONES THAT FLY OFF. NOW, IF YOU GET YOUR NUMBERS RIGHT, THEN YOU CAN HAVE ONE EMITTER THAT IS GRACEFULLY REACTING REASONABLY WELL TO THE FORCES THAT YOU'RE APPLYING TO IT, AND IT JUST KIND OF WORKS. IT JUST KIND OF DOES THE RIGHT THING. THIS IS THE FANTASY WHERE -- I DON'T THINK WE ARE 100 PERCENT TO THE REALITY, BECAUSE WE HAVE MORE HELPER FUNCTIONS TO WRITE, WE HAVE SOME MORE THINGS TO DO IN THIS REGARD. BUT IT'S DEEPLY POWERFUL. AGAIN, IF YOU DON'T WANT TO FACTOR MASS IN AND YOU JUST WANT TO NOT CARE, JUST SET IT TO ONE, OR UNCHECK THE CHECKBOX TO SET IT TO ALL, AND THE SIM GOES ALONG AS NORMAL. BUT IT IS PRETTY COOL. I'LL SHOW YOU HOW IT AFFECTS PARTICLES. SO IN THIS CASE, I HAVE THIS PARTICLE HERE THAT HAS A MASS OF 150. THEN WE HAVE SOME HELPER FUNCTIONS HERE. THIS HELPER FUNCTION IS CALCULATE SIZE BY MASS. AND SO NOW, I BASICALLY HAVE DECIDED THAT MY -- THE DENSITY OF MY MESH IS BASED ON THE DENSITY OF WATER. THIS IS JUST ARBITRARY. I COULD CHOOSE A DIFFERENT ONE. I CAN SAY, "OH, YOU'RE MADE OUT OF WOOD INSTEAD," AND ACTUALLY YOU CAN SEE THE SIZE AS IT RELATES TO ITS DENSITY HAS CHANGED, BECAUSE AN EQUIVALENT PIECE OF PINE WEIGHS LESS THAN AN EQUIVALENT BODY OF THAT AMOUNT OF WATER. AND SO ALREADY YOU'RE SEEING SOME OF THESE SETTINGS AT PLAY. AND WE HAVE FUDGE FACTORS TOO, FOR ARTISTIC CONTROL -- IF YOU'RE JUST NOT HAPPY, YOU CAN ALWAYS FUDGE THINGS AROUND A LITTLE BIT. AT THE END OF THE DAY, WE HAVE TRIED TO GIVE YOU SOME BONES TO MAKE THIS GOOD IN THE BEGINNING. IF I CHANGE MY MASS, MY SIZE JUST AUTOMATICALLY UPDATES. BECAUSE NOW MY MASS HAS CHANGED, BUT YOU'LL NOTICE SOMETHING ELSE. NOW IT'S SPINNING FASTER. BECAUSE IT HAS LESS RESISTANCE TO THAT ROTATIONAL FORCE, NOW IT'S ACCUMULATING THOSE FORCES MORE RAPIDLY, BECAUSE THE MASS HAS CHANGED. SO IF I GO UP TO 200, IT'S YOU KNOW -- THE SAME ROTATIONAL FORCE IS BEING APPLIED, BUT NOW IT'S JUST, KIND OF, MOVING A LITTLE BIT MORE SLOWLY. WE HAVE AN INVERSE VERSION OF THIS MODULE AS WELL. SO IF YOU WANT TO CALCULATE YOUR MASS BY YOUR SIZE, WE SUPPLY THAT AS WELL. SO, EITHER WAY, YOU WANT TO WORK, GREAT. THE -- >>AMANDA: YOU'RE BLOWING EVERYONES MIND RIGHT NOW. >>WYETH: THIS ONE WE THOUGHT REALLY HARD ABOUT. >>AMANDA: YEAH. >>WYETH: BECAUSE IF YOU TALK TO PEOPLE, EVEN PEOPLE WHO DO REALLY, REALLY HIGH-END WORK -- LIKE GUYS AT ILM DOING WORK IN HOUDINI ON FILM, NOT ALL OF THEM WANT TO WORK WITH MASS. BUT SOME OF THEM DO, AND THEY'RE ZEALOTS, AND SO IT'S THIS THING WHERE WE HAVE TO RIDE THE LINE BETWEEN SUPPORTING THESE TWO DIFFERENT PARALLEL WORKFLOWS AND MAKING SURE THEY'RE BOTH REALLY GOOD, AND ALSO GIVING YOU ALL THE FUNCTIONS THAT YOU NEED TO MAKE THIS APPROPRIATE, YOU KNOW, FOR THIS PARADIGM, WHICH IS A SLIGHTLY MORE PHYSICALLY CORRECT PARADIGM. >>AMANDA: RIGHT. >>WYETH: AND THAT'S THE OTHER THING TOO, IS THAT WE NOW HAVE -- INSTEAD OF JUST DOING ROTATION RATE, WE NOW HAVE A ROTATION FORCE. THIS FACTORS MASS INTO THAT EQUATION. AND SO, YOU KNOW, IF I TURN THIS UP REALLY HIGH, NOW THIS GUY IS REALLY STARTING TO GO. IF I THEN GO AND AFFECT THE MASS OF IT, THEN IT'S GONNA, YOU KNOW, IT'S JUST GONNA TAKE OFF. YOU'LL ALSO NOTICE THE PARTICLE FLIES AWAY -- I'LL JUST BACK UP A LITTLE BIT, I'LL JUST PULL THIS DOWN A LITTLE BIT -- THAT IS THE CURL NOISE FORCE. AGAIN, THIS CURL NOISE FORCE IS ANOTHER ATTRIBUTE WHICH IS BEING MODULATED BY THE EFFECTIVE MASS. SO THE HEAVIER THEY ARE, THE LESS LIKELY THEY ARE TO GET MOVING, SO TO SPEAK. NOW, THERE'S A SPECIAL CASE HERE. I INCLUDED THIS MODULE AS AN EXAMPLE: GRAVITY. GRAVITY IS IRRESPECTIVE OF MASS. YOU KNOW, IT'S THE THING WHERE, IN A VACUUM YOU DROP A FEATHER AND A BOWLING BALL AND THEY BOTH LAND AT THE SAME TIME. THAT'S KIND OF THE -- GRAVITY DOES NOT TAKE MASS INTO ACCOUNT. THAT MEANT WE HAD TO MOVE AWAY FROM HOW WE USED TO DO GRAVITY, WHICH WAS AN ACCELERATION FORCE. IF YOU'RE USED TO PUTTING ACCELERATION FORCE INTO YOUR EFFECTS -- DON'T DO THAT ANYMORE. INSTEAD, YOU WANT TO ADD A GRAVITY FORCE, WHICH HAS SOME ADDITIONAL CALCULATIONS TO FACTOR MASS BACK INTO THE EQUATION, SO THAT THE GRAVITY FORCE IS EQUAL NO MATTER YOUR MASS. THEN THE LAST THING HERE, IN ORDER TO REALLY MAKE THIS STUFF CORRECT, IS THAT YOU WOULD WANT TO GO IN AND YOU WANT TO ADD SOME DRAG. BECAUSE THERE'S STILL THIS CONCEPT OF AIR RESISTANCE. THERE WE GO. SO YOU WOULD ADD SOME DRAG, AND THAT WOULD START TO KIND OF, TONE DOWN ALL OF THESE DIFFERENT THINGS. EVEN WITH GRAVITY YOU'RE STILL GOING TO HAVE AIR RESISTANCE AND DRAG. THAT'S WHAT WOULD MAKE THE BOWLING BALL AND THE FEATHER FALL DIFFERENTLY OUTSIDE OF A VACUUM. WE START TO MODEL SOME OF THAT. ANYWAY, MASS IS A FIRST-CLASS CITIZEN. WE'RE SUPPLYING A BUNCH OF HELPER FUNCTIONS IN ORDER TO MAKE THAT GOOD FOR PEOPLE. I CAN'T WAIT FOR PEOPLE TO TRY IT AND SEE WHERE IT'S GOOD AND WHERE IT'S NOT GOOD. MAYBE WE NEED BETTER FUDGE FACTORS. ONE THING THAT'S A GOTCHA RIGHT NOW IS THAT, WHEN YOU CALCULATE THE SIZE BY MASS, WE DON'T KNOW THE DIMENSIONS OF THE MODEL YOU IMPORT. SO IF YOU'RE NOT IMPORTING A MODEL THAT IS 1 CENTIMETER BY 1 CENTIMETER SQUARE, WE CAN'T FIGURE OUT YOUR SCALE APPROPRIATELY FOR YOU, BASED ON DENSITY. SO IN THE VERSION 4.22, YOU HAVE TO TYPE IN THE INITIAL DIMENSIONS OF YOUR MODEL AS IT WAS IMPORTED, AND THEN ALL THE OTHER THINGS WORK. WE HAVE PLANS TO MAKE IT SO THAT, WHEN YOU AUTO IMPORT, THAT IT KNOWS. WE'LL DO THAT AT SOME POINT. FOR NOW, IF YOU'RE PLAYING WITH THIS STUFF AND YOU WANT TO CALCULATE YOUR SIZE BY MASS APPROPRIATELY, YOU JUST HAVE TO MAKE SURE THAT YOUR INITIAL MODEL DIMENSIONS ARE SET CORRECTLY AND THEN, THEORETICALLY, THE TOOL SHOULD TAKE OVER AND TRY TO DO THE RIGHT THING FOR YOU. BY THE WAY, THIS STUFF WILL ALSO BE ALL FACTORED INTO JOHN'S NEW COLLISION CALCULATIONS WHICH WILL BE COMING. I CAN'T SHOW YOU THE NEW COLLISIONS RIGHT NOW, BECAUSE THEY'RE NOT IN THIS EXACT BUILD. >>AMANDA: YEAH. >>WYETH: BUT JOHN LINDQUIST, WHO MADE THAT AMAZING EXAMPLE OF THE MODULE MODEL BREAKING UP AND STUFF LIKE THAT, HE HAS SPENT A VERY IMPRESSIVE AMOUNT OF EFFORT ON A COMPLETE REWRITE OF COLLISIONS. THIS ALSO INCLUDES A BUNCH OF HELP ON THE CODE SIDE OF EVERYONE IN THE CODE TEAM WRITING NEW FUNCTIONS TO MAKE SURE EVERYTHING WORKS THE WAY IT SHOULD. BUT, AT THE END OF THE DAY, WE'RE GOING TO HAVE INCREDIBLY STABLE CPU COLLISIONS, REALLY REALLY STABLE ANALYTICAL COLLISION PLANES, SO LIKE A FAKE COLLISION PLANE WILL NOW WORK CPU AND GPU. WE'LL HAVE SCENE DEPTH COLLISIONS THAT ARE BETTER THAN WE'VE EVER HAD THEM BEFORE IN UNREAL, AND WE CAN COLLIDE WITH THE DISTANCE FIELDS THAT ARE IN THE LEVEL SET, THE DISTANCE FIELDS THAT WOULD GENERATE WHEN YOU TURN THAT PROJECT SETTING ON. >>AMANDA: THAT'S GREAT. >>WYETH: THEY'RE REALLY STABLE, REALLY ROBUST, THEY HAVE A TON OF CONTROLS, THEY FACTOR IN ALL THE STUFF I'M TALKING ABOUT HERE WITH MASS AND THE ROTATIONAL INERTIA, THE RABBIT-HOLE GOES DEEP, THANK YOU JOHN. YOU HAVE DONE WELL. THE ONE THING THAT WE DO KNOW ABOUT THAT MODULE IS THERE ARE A COUPLE OF UI THINGS RELATED TO IT BEING UNCLEAR WHETHER YOU'RE IN THE CPU MODE, OR THE GPU MODE, BECAUSE WE CAN'T NECESSARILY HIDE AND SHOW YOU ALL THOSE THINGS ALL AT ONCE. SO LOOK FOR THE VERSION 2 OF THIS MODULE IN THE NEXT RELEASE HAVING MORE SLICKNESS IN THAT, YOU KNOW, KIND OF UI SENSE. /FROM A FUNCTIONALITY STANDPOINT, DIVE RIGHT IN AND PLAY WITH IT. >>AMANDA: NOW THE COLLISION, IS ALL OF THIS AVAILABLE IN THE PREVIEW WE JUST RELEASED? >>WYETH: IT'S NOT. >>AMANDA: OK. >>WYETH: IT WILL ONLY TRULY PROBABLY MAKE IT IN RIGHT BEFORE WE GO OUT LIVE. >>AMANDA: OK. >>WYETH: YEAH. SO THE COLLISIONS ARE GREAT. I'M EXCITED ABOUT WHERE THAT'S HEADED. A COUPLE OF THE OTHER THINGS -- OH SPEAKING OF DISTANCE FIELDS ACTUALLY, ONE OF THE OTHER THINGS WE WILL TRY TO GET INTO THE NEXT PREVIEW -- WE WILL SEE -- IS SAMPLING PSEUDO-VOLUME TEXTURES. THERE'S THIS CONCEPT OF PSEUDO VOLUME TEXTURES IN THE ENGINE. YOU CAN GO WATCH RYAN BRUCKS' AMAZING RAY MARCHING DEMONSTRATIONS AND 3D FLUID SIM DEMONSTRATIONS. THOSE PSEUDO VOLUMES COULD BE GENERATED INSIDE OF UNREAL USING HIS BLUEPRINT HELPER FUNCTIONS, OR YOU CAN WRITE, YOU KNOW, WE HAVE SOME PLUGINS OR -- SIDEFX ACTUALLY WROTE THEM, THANK YOU SIDEFX -- SOME ABILITY TO EXPORT PSEUDO VOLUME TEXTURES OUT OF HOUDINI AS WELL, WHICH WE ALSO INGEST. IF YOU WOULDN'T MIND PLAYING THAT VIDEO, YOU CAN SEE WE HAVE SOME SAMPLING FUNCTIONS TO ACTUALLY SAMPLE THESE. SO, THIS IS MY HOMAGE TO SIDEFX FOR WRITING THESE FUNCTIONS BECAUSE THAT'S THE RUBBER TOY FROM HOUDINI. THE IDEA HERE IS THAT YOU WRITE A VOLUME TEXTURE OUT, WHICH INCLUDES THE DISTANCE TO THE NEAREST SURFACE, LIKE THE ISO SURFACE OF THE MESH YOU'RE GENERATING. AND WE'RE ALSO SAVING OFF THE INFORMATION LIKE THE NORMAL, BASICALLY, AND WE'RE CODING ALL THAT INTO A TEXTURE, AND THEN NIAGARA IS ABLE TO SAMPLE THAT, AND IT'S ABLE TO DO A BUNCH OF CALCULATIONS FOR, IT IS SUPPOSED TO BE ON THE SURFACE, AND CAN I MOVE AROUND IT, CAN I FLOW ACROSS IT, CAN I BREAK FREE? THERE'S A BUNCH OF THINGS THAT ARE AVAILABLE TO USERS NOW. IT WILL BE A BASIC SAMPLING FUNCTION WHICH IS JUST, "HEY, SPAWN AND PUT YOURSELF ON THE SURFACE, AND ALIGN YOURSELF." THIS SHOULD BE ENOUGH TO GET PEOPLE COOKING, AND THEN THEY CAN PLAY. SO THANKS FOR SHOWING THAT VIDEO. >>AMANDA: THAT'S SO COOL. >>WYETH: THAT SHOULD BE COMING. LET'S SEE, ONE OTHER THING: HOW AM I DOING ON TIME? >>AMANDA: A LITTLE BEFORE 3:00. >>WYETH: OKAY, PERFECT. SO LET ME SHOW JUST A FEW MORE THINGS HERE. I'LL GO BACK TO THIS. ONE OTHER THING THAT I WANT TO TALK ABOUT, IT'S KIND OF A TENTPOLE FEATURE THAT WENT IN AND IS IN THE CURRENT PREVIEW, IS DETERMINISM. WHAT I MEAN BY THAT IS, IF I PICK A RANDOM NUMBER, I'M ASKING FOR A RANDOM NUMBER. IN THEORY, I CAN USE A SEED VALUE TO GET THAT NUMBER BACK EVERY TIME. I COULD BASICALLY TAKE MY RANDOM -- THE FUNCTION I'M ASKING A RANDOM NUMBER FOR AND I COULD SEED IT WITH A PIECE OF DATA THAT SAYS, LIKE, "HEY I WANT A RANDOM NUMBER BUT I'M GONNA TELL YOU TO SEED IT WITH THE NUMBER EIGHT." THEN IT WILL ALWAYS GIVE ME A VALUE BACK THAT CORRESPONDS TO THE NUMBER EIGHT. IT'S BECAUSE THERE'S A LITTLE THIS KIND OF LINKAGE BETWEEN RANDOMNESS AND THE UNDERLYING VALUES THAT GENERATE RANDOMNESS. WE NOW FULLY SUPPORT DETERMINISM IN NIAGARA FROM TOP TO BOTTOM. THIS ENABLES A BUNCH OF STUFF INCLUDING, LIKE, SCRUBBING ON TIMELINES AND GENERATING A CONSISTENT, REPRODUCIBLE RESULT IN SELECT, IN LET'S SAY, A SEQUENCER PLAYBACK WHERE YOU WANT THE CINEMATIC TO BE THE SAME EVERY TIME, WE NOW SUPPORT THAT. LET ME SHOW YOU WHAT IT MEANS AND HOW TO USE IT. SO I JUST MADE A REALLY, REALLY QUICK TEST EMITTER HERE, IN FACT, I'LL JUST DO IT HERE IN THE VIEWPORT. LET'S SAY I HAVE THESE PARTICLES THAT ARE RANDOMLY SPAWNING, AND I BASICALLY WANT THEM TO BE EXACTLY THE SAME EVERY FRAME. RIGHT NOW, IF I DRAG FORWARD, THE SIMULATION ADVANCES BECAUSE IT KNOWS WHAT TO DO ON THE NEXT TIME STEP. BUT BECAUSE ALL OF OUR RANDOM NUMBERS ARE BEING DYNAMICALLY GENERATED EVERY FRAME, IF I GO BACK IN THE TIMELINE, IT RESIMULATES THE WHOLE SIM AGAIN UP TO THAT POINT, BECAUSE IT DOESN'T HAVE THE CONCEPT OF A FIXED SEEDED VALUE TO GO BACKWARDS TO, IF THAT MAKES SENSE. SO NOW, ON YOUR EMITTER PROPERTIES, YOU CAN TOGGLE DETERMINISM. UNLIKE CASCADE THIS IS JUST A BLANKET THING THAT AFFECTS ALL RANDOMNESS. YOU DON'T HAVE TO REBUILD YOUR EFFECT TO SUPPORT THIS, IT'S JUST A CHECKBOX. NOW, THIS SIMULATION IS COMPLETELY DETERMINISTIC. SO IF I SCRUB BACKWARDS, CAN REWIND THE SIMULATION BECAUSE IT KNOWS WHERE IT CAME FROM. IT KNOWS THE SEED THAT GENERATED THIS DATA. FOR DEBUGGING, FOR SLOW-MO PREVIEW, FOR GETTING YOUR EFFECT JUST RIGHT, THIS IS INCREDIBLE, USEFUL BEHAVIOR. WE TRY TO GO FURTHER THAN THIS, THOUGH, AND GIVE THE USER CONTROL OVER DETERMINISM. LET'S SAY THAT I WANT THE POSITION OF MY PARTICLES TO BE DETERMINISTIC. I WANT THE VELOCITY AT WHICH THEY FLY OUT TO BE DETERMINISTIC, BUT I WANT THEIR COLOR TO BE TRULY RANDOM. LET ME GO AHEAD AND SET THEIR COLOR, AND THEN I'M JUST GONNA CREATE A LITTLE RANDOM RANGE. SO THIS IS GONNA GIVE ME A RANDOM COLOR ON EACH OF MY PARTICLES. NOW, BECAUSE DETERMINISM IS TOGGLED, THAT COLOR STAYS CONSISTENT. SO, EVERY TIME I PLAY, THEY'RE ALL GONNA -- THAT PURPLE GUY THAT FLIES OFF TO THE RIGHT IS ALWAYS GOING TO BE THAT. IF I GO INTO THE RANDOMNESS SETTING FOR MY RANDOM CALL AND SWITCH AWAY FROM DETERMINISM BACK TO NON-DETERMINISTIC JUST FOR THIS RANDOM, THEIR COLOR IS NOW COMPLETELY RANDOM EVERY TIME I RUN IT, BUT THE REST OF THE SIMULATION IS NOT. THE OTHER THING THAT'S REALLY NICE IS YOU CAN FIX THE SEED IF YOU LIKE. WE ACTUALLY GIVE YOU THE SEED. IF I GO TO DETERMINISM, AND SO I WANT THIS TO BE COMPLETELY DETERMINISTIC, BUT I REALLY DON'T LIKE THE COLORS I GOT, I JUST GIVE IT ANOTHER NUMBER. NOW I HAVE DIFFERENT COLORS, BUT THEY'RE STILL STABLE DIFFERENT COLORS. SO NOW THE USER HAS COMPLETE CONTROL OVER THE RANDOMNESS BEHAVIOR OF THEIR EMITTER. >>AMANDA: THAT'S INCREDIBLE. >>WYETH: IT IS A TRULY FUNDAMENTAL PART OF THE TOOL, BASICALLY, IS THIS. IT HAS BEEN A BIG MISSING PIECE, AND I THINK THE WAY IT'S BEEN IMPLEMENTED IS REALLY GRACEFUL, AND IT'S AN EASY WAY FOR USERS TO HAVE EXACTLY THE TYPE OF CONTROL THEY WANT. BY THE WAY, THIS SETTING, SIMULATION DEFAULTS -- ALL THIS MEANS IS, "HEY, RESPECT THE CHECK BOX." WHATEVER THE CHECK BOX SAYS, THAT'S WHAT I AM, AND THEN YOU CAN SET IT TO BE DIRECT. ONE NICE THING ABOUT ONCE YOU'RE DETERMINISTIC IS ALSO CHANGING OTHER ATTRIBUTES. IT DOESN'T RESET YOUR SIM. SO IF I'M NOT QUITE HAPPY WITH, LIKE, MY SIZES, I CAN AFFECT MY SIZES WITHOUT THE SIMULATION RESETTING ITSELF. WHEN I'M NOT DETERMINISTIC, EVERY TIME I DRAG ONE OF THESE VALUES, THE WHOLE SYSTEM SAYS, I DON'T KNOW WHAT I'M SUPPOSED TO DO. SO NOW YOU COULD HAVE AN EXPLOSION, EXPLODE, GET IT RIGHT TO THE POSITION YOU WANT IT TO FREEZE IT, AND THEN NOODLE THE VALUES SO YOU'RE EXACTLY PERFECT. YOU KNOW WHAT I MEAN? YOU GET TO BE AS ANAL AS YOU WANT ABOUT THESE SETTINGS. YOU CAN REALLY GET IN THERE AND ART DIRECT SOMETHING, WHICH IS REALLY REALLY HARD TO DO WITHOUT THIS TYPE OF FEATURE. SO WE'RE SUPER EXCITED ABOUT IT. >>VICTOR: IS THAT CONSIDERED A MODULE AS WELL? >>WYETH: YEAH, SO THAT'S ONE NICE THING IS THAT THIS IS NOT SOME INTRINSIC THING THAT IS WRITTEN -- THAT IS LOW-LEVEL CODE THAT CONTROLS THIS. THIS IS ALL USER CREATED. SO, AFTER THE FEATURE WAS MADE, MORTON, WHO WROTE THE FEATURE, WENT IN AND UPDATED ALL OF OUR MODULES TO SUPPORT IT. BUT IT'S LITERALLY JUST A NUMBER OF -- ITS SOME IF NODES, IT'S SOME SETTINGS, IT'S BEING ABLE TO PASS A SEED FROM THE USER INTO THE RANDOM FUNCTION ITSELF, AND ALL OF THESE RANDOM RANGE FUNCTIONS ARE NOW WRITTEN COMPLETELY TO TAKE ADVANTAGE OF DETERMINISM, AND EVEN THE SEEDS THAT DRIVE THEM, THINGS LIKE THE TIME AND ALL THESE OTHER THINGS, ARE OPEN. SO JUST BECAUSE THEY'RE IMPLEMENTED THIS WAY, IF YOU WANT TO GO IMPLEMENT THEM ANOTHER WAY, GO AHEAD. HAVE FUN. EVERYTHING IS IS IMPLEMENTED HERE IN THE NODE GRAPH, EVEN THOUGH IT IS A LOW-LEVEL BEHAVIOR. >>VICTOR: AND ARE THEY PART OF THE SORT OF A LIBRARY OF MODULES? >>WYETH: YES, EVERY ONE OF THESE GUYS -- SO THESE GUYS ARE CALLED DYNAMIC INPUTS, AND THESE LITTLE DYNAMIC INPUTS ARE SOMETHING WHERE, "HEY, I HAVE AN ATTRIBUTE, LIKE A PARAMETER, LIKE A FLOAT, AND I WANT TO HAVE A LITTLE BIT OF GRAPH LOGIC TO ACT ON THAT. I'M GONNA WRITE A TINY LITTLE BEHAVIOR, WHICH I CAN SLOT IN." SO INSTEAD OF JUST A FLOAT, LIKE A 1.3, I CAN ACTUALLY RUN A LITTLE LOGIC TO GIVE ME A FLOAT BETWEEN 1 AND 10 OR WHATEVER. SO THAT'S BASICALLY WHAT THIS IS, AND THESE LITTLE GUYS ARE ALL JUST LITTLE NOTE GRAPHS. SO IT'S PRETTY GREAT. >>AMANDA: I THINK WE NEED TO TAKE A SHORT DIVERSION AND LET OUR JAMMERS GO. >>VICTOR: THEY'RE READY. >>AMANDA: THEY'RE CHOPPING AT THE BIT. >>VICTOR: TRULY CHOMPING. >>AMANDA: SO WE WILL COME BACK TO WYETH IN JUST A MINUTE. >>WYETH: OKAY, AWESOME. >>AMANDA: YOU CAN KEEP YOUR QUESTIONS COMING, IF YOU DON'T MIND GRABBING QUESTIONS, VICTOR. >>VICTOR: I AM. >>AMANDA: I'LL GET YOU SET UP WITH SOME UE4 JAM INFO. SO WE ARE KICKING OFF OUR WINTER UE4 JAM TODAY. SO YOU HAVE FIVE DAYS TO MAKE SOME PRETTY RAD GAMES, AND WE'RE EXCITED FOR YOU ALL. AGAIN, MANY MANY THANKS TO ALL OF OUR SPONSORS. IF YOU HAVEN'T JUMPED ON AND GRABBED SOME OF THEIR RESOURCES, TOM SHANNON'S DONE A GREAT JOB PUTTING A PRESENTATION TOGETHER. YOU CAN STILL GRAB A TEAM ON CROWD FORGE. BEN, WHO IS IN CHAT, SO SHOUT OUT TO BEN MEARS, HE'S FROM -- HE'S THEIR GAMES COMMUNITY MANAGER. >>WYETH: I LOVE BEN. I SAW HIM IN LA. GREAT DUDE. >>AMANDA: THEY'RE GIVING TWO MONTH LICENSES TO HOUDINI, SO IF YOU'D LIKE TO PLAY WITH THAT, HE'S THE GUY THAT'S GONNA HOOK YOU UP, AND AGAIN, PING US. WE'RE STILL HANDING OUT ACCESS TO ASSEMBLA REPOSITORIES IF YOU NEED THAT. SO SHOOT US AN EMAIL AT COMMUNITY@UNREALENGINE.COM AND WE CAN GIVE YOU ACCESS THERE, SET UP YOUR TEAM, AND LET YOU GET ROLLING. GAME TEXTURES IS OFFERING FREE ACCOUNTS TO LET YOU GET ACCESS TO TEXTURES, AND SOUNDLY IS PROVIDING THEIR LIBRARY AGAIN, SO HUGE HUGE THANKS TO THOSE TEAMS, ALWAYS EXCITED FOR THAT. I FEEL LIKE MOST OF YOU KNOW THE DRILL -- YOU'VE GOT TO MAKE A GAME, AND IT'S GOT TO BE FULLY PACKAGED. WE'RE TOTALLY THROUGH IT ITCH.IO NOW, SO IF YOU'RE UPLOADING YOUR GAME TO THERE, IT'S SUPER HANDY TO TAKE CARE OF THAT, OR GET THOSE UPLOADED, THAT WAY PEOPLE CAN COMMENT ON YOUR GAME. BUT DO REMEMBER YOU SUBMIT YOUR GAME, OR YOU UPLOAD YOUR GAME TO YOUR ACCOUNT, AND THEN YOU HAVE TO SUBMIT IT TO THE JAM. THAT IS A VERY, VERY IMPORTANT STEP THAT SOME OF YOU HAVE FORGOTTEN. SO MAKE SURE YOU DO BOTH OF THOSE STEPS. IF YOU HAVE A LARGE FILE, ITCH.IO HAS A DEFAULT SIZE OF -- I THINK IT'S 600MB, THEY KEEP CHANGING IT. AND IT NEEDS TO BE UNDER A GIG. IF IT NEEDS TO BE LARGER THAN THAT, THERE IS A BUTLER TOOL. NICK FISHER HAS WRITTEN A GREAT TUTORIAL ON HOW TO DO THAT. I THINK WE HAD HIM -- HE WALKED THROUGH IT ONE TIME ON OUR JAM, OR ON OUR LIVE STREAMS. DEFINITELY CHECK THAT OUT. WE WANT TO GIVE A HUGE THANK YOU TO INTEL. THEY ALWAYS PARTNER WITH US. THEY HAVE A GREAT GAME DEVELOPER PROGRAM IN WHICH THEY'RE TRYING TO HELP FOLKS WITH MARKETING, WITH JUST GENERAL OPTIMIZATION PROBLEMS, AND REALLY WONDERFUL INFORMATION THERE. YOU KNOW, WE HAVE A GAMETEXTURES.COM RAFFLE, SO ALL PARTICIPANTS WITH VALID SUBMISSIONS CAN RECEIVE ONE OF TEN ONE-MONTH SUBSCRIPTIONS TO GAMETEXTURES.COM. WE ALSO HAVE THESE REALLY RAD RACING CHAIRS. I DON'T KNOW IF YOU'VE SEEN THESE. SO DXRACER HAS THESE REALLY AWESOME CHAIRS. I SIT IN ONE AT MY DESK, AND THEY'RE PRETTY PHENOMENAL. >>WYETH: THOSE LOOK FANTASTIC. >>AMANDA: THEY'RE BEAUTIFUL, BEAUTIFUL CHAIRS. THEY WERE THE ENVY OF THE OFFICE. I REMEMBER TWEETING ABOUT THEM THE LAST TIME, AND EVERYBODY'S LIKE, "WHERE DO I GET THAT?!" >>WYETH: VULTURES. >>AMANDA: YEP. WE HAVE THREE FINALISTS IS HOW WE DIVVY IT OUT. THEN WE'LL HAVE THREE SPECIAL CATEGORIES. WE HAVE FRIENDS AND FOES, WHICH IS THE BEST SHARED SCREEN MULTIPLAYER GAME, VICTOR'S NEW CATEGORY. >>VICTOR: IT WAS MY ADDITION. >>AMANDA: YEAH, YOU WANT TO TALK ABOUT IT A LITTLE BIT? >>VICTOR: SURE. THERE WERE A COUPLE OF QUESTIONS ABOUT IT. SO SHARE SCREEN MULTIPLAYER ESSENTIALLY -- ANYTHING YOU CAN DO WHERE SEVERAL PLAYERS ARE PLAYING ON ONE SHARED SCREEN, WHETHER IT IS SPLIT SCREEN, SHARED CAMERA, DOESN'T MATTER. IF YOU COME UP WITH SOMETHING EVEN WEIRDER, ONE MONITOR, SEVERAL PLAYERS. THAT'S BASICALLY THE DETAILS OF IT. >>AMANDA: TINY AWARD FOR A BEST GAME UNDER 100 MEGABYTES, AND YOU'RE DOING THAT UNZIPPED. >>VICTOR: I AM. SO UNZIPPED -- YOU CAN USE THE COMPRESSION TOOLS THAT EXIST IN THE ENGINE TO LOWER THE SIZE SO YOU'RE EXECUTABLE, BUT IT NEEDS TO BE BELOW 100 MEGABYTE UNZIPPED. IF YOU SEND US A ZIP FILE THAT'S BELOW, WE UNZIP IT SO THAT WE CAN ACTUALLY PLAY IT AND IT'S ABOVE, YOU ARE NOT QUALIFYING FOR THE CATEGORY. >>AMANDA: YEP, HE'S MAKING THE RULES. HE MEANS BUSINESS. AND THEN WE ALSO HAVE OUR SOMETHING-SOMETHING REALITY. SO IF YOU'RE MAKING AN AUGMENTED REALITY, OR MIXED REALITY, OR VIRTUAL REALITY, ANY KIND OF XR EXPERIENCE -- THAT FALLS UNDER THAT CATEGORY. WE HAVE OUR THREE SPECIAL CATEGORIES, AND THEN OUR THREE FINALISTS, ALL GAMES ARE JUDGED ON FUN, AESTHETICS, AND UNIQUE USE OF THEME. THEN OUR THREE FINALISTS WILL BE ENTERED INTO A GRAND PRIZE RAFFLE FOR A BEAUTIFUL FALCON NORTHWEST TIKI. OOHHHHH. >>VICTOR: JEALOUS. >>WYETH: THAT'S AWESOME. >>AMANDA: SO THIS IS A BEAUTIFUL RENDER. WE LOVE WORKING WITH THE TEAM OVER THERE. THEY'RE SO GOOD TO US. AND I'M JELLY EVERY TIME I -- LIKE THEY ALWAYS COME IN, WE OPEN THE BOX -- I'M LIKE, I HAVE TO MAIL IT AWAY. >>WYETH: YOU SMELL THE ELECTRONICS. >>AMANDA: YEAH WE OPEN IT UP, HAVE TO TOUCH IT, THEN SHIP IT OUT. SO YEAH, WE LOVE WORKING WITH THEM. DEFINITELY RECOMMEND THEIR COMPUTERS. SO, IF THERE ARE -- LET'S SEE. WE HAVE A COUPLE OF GAME JAM QUESTIONS I'LL ANSWER. >>VICTOR: YEAH I WAS GONNA SAY, SOME OF THE GAME JAMMER RELATED QUESTIONS, I'VE GATHERED THEM ALL AND I WILL RESPOND TO THEM ON THE FORUM AFTERWARDS SO WE CAN HAVE MORE TIME WITH WYETH FOR ALL THE QUESTIONS RELATED TO NIAGARA. >>WYETH: THAT'S GREAT. >>AMANDA: YEAH, SO FOLLOW UP ON THOSE QUESTIONS IN THE JAM THREAD. >>VICTOR: YEAH, CORRECT. >>AMANDA: NOT THE LIVE STREAM. I'LL DROP THOSE IN THE CHAT. AND WE'LL GET BACK TO YOU. BUT, SHALL WE ANNOUNCE THE THEME REAL QUICK? >>VICTOR: I THINK IT'S TIME. >>AMANDA: ARE YOU GUYS READY? DO YOU WANT THE THEME? ALL RIGHT. LET'S HIT IT. FOR VALENTINE'S DAY -- ALL'S FAIR IN LOVE AND WAR. THERE'S YOUR THEME. I WANTED TO GIVE A SHOUT-OUT TO BARRY LANDES, WHO MADE THIS BEAUTIFUL SCENE I PULLED FROM ART STATION. SO THANK YOU FOR LETTING ME APPRECIATE YOUR WORK. BUT SO -- THAT'S YOUR THEME. FOR JAMMERS, IF YOU HAVE QUESTIONS, GO TO THE UNREAL ENGINE FORUM. THE WINTER UE4 JAM FORUM THREAD, TOSS YOUR QUESTIONS, IN THERE AND WE WILL FOLLOW UP ALSO. IF AGAIN, IF YOU HAVE ASSEMBLA REQUESTS, MESSAGE US AT THAT ALIAS, THE COMMUNITY ALIAS. AND YEAH, GOOD LUCK. MAKE SURE YOU'RE TWEETING IF YOU'RE SHARING YOUR PROGRESS, IF YOU'RE A SOCIAL PERSON, #UE4JAM. WE LOVE, LOVE, LOVE BEING ABLE TO CHECK THEM OUT ALL WEEKEND. >>VICTOR: THAT'S ALL WE DO ALL WEEKEND. >>AMANDA: WHAT ARE THEY MAKING? SO AMAZING. >>VICTOR: WE GET TO WATCH. >>AMANDA: BUT YEAH, SO JAM AWAY. >>WYETH: JAM AWAY. >>AMANDA: WE WILL RETURN TO THE WONDERFUL WYETH. >>WYETH: OKAY. >>AMANDA: AND NIAGARA MAGIC. >>WYETH: AWESOME. >>VICTOR: ALL RIGHT, LET'S SEE -- >>WYETH: THAT IS A BRICK OF QUESTIONS. LET'S SEE, I HAVE A FEELING THAT IF I DIDN'T GET TO SOMETHING HERE, WE'RE GONNA GET IT HERE. LET'S TRY. >>AMANDA: OUR Q&A? >>VICTOR: YEAH. WILL NIAGARA BE RELEASED AT SOME POINT? IT'S NOT CLEAR IF IT WILL REPLACE CASCADE OR NOT. >>WYETH: YEAH. SO RIGHT NOW, NIAGARA IS IN EARLY ACCESS. EARLY ACCESS BASICALLY MEANS VERY ACTIVE DEVELOPMENT, AND OFTENTIMES THAT COMES WITH A LOT OF CHURN. THE OTHER THING THAT CAN POTENTIALLY COME ALONG WITH THAT IS INVALIDATION OF ASSETS. MEANING WE MAKE SOME FUNDAMENTAL CHANGE, WHICH BREAKS THE STUFF YOU WERE USING. WE CAN'T DO THAT ONCE THAT'S A REAL, YOU KNOW, RELEASED FEATURE. SO IT'S IN EARLY ACCESS UNTIL WE FEEL LIKE THAT IS NO LONGER TRUE. SO RELEASING, IN THAT SENSE, MEANS ONCE WE EMERGE FROM EARLY ACCESS -- WE DON'T HAVE A CURRENT TIMELINE FOR THAT. WE'RE JUST BANGING AWAY, MAKING THE BEST THING WE CAN. AT SOME POINT, IT WILL REACH THE STABILITY OF PERFORMANCE, STABILITY OF FEATURE SET, AND THE ABILITY TO PREVENT INVALIDATION OF EXISTING STUFF. THAT'S WHEN WE'LL EXIT EARLY ACCESS. AS RELATES TO CASCADE, CASCADE AND NIAGARA WILL LIVE SIDE-BY-SIDE FOR YEARS. I MEAN, THERE'S JUST NO WAY WE BASICALLY SAY LIKE, "HEY, NIAGARA'S OUT, GOODBYE CASCADE." SO MANY PEOPLE OVER, WHAT, 14 YEARS NOW, 13 YEARS, HAVE BEEN RELYING ON CASCADE. SO IT WILL IT WILL LIVE, YOU KNOW, ON FOR QUITE SOME TIME, JUST LIKE MATINEE AND SEQUENCER -- EVEN THOUGH SEQUENCER NOW CARRIES A LION'S SHARE OF STUFF, WE WILL STILL HAVE THAT IN THE ENGINE. IN THE FUTURE, WE WOULD LIKE TO MAKE A BEST EFFORT TO POTENTIALLY PORT STUFF IN A LIGHTWEIGHT WAY FROM CASCADE TO NIAGARA. WE DON'T CURRENTLY HAVE ANYTHING WRITTEN THERE, AND THERE'S NOTHING ON THE ROADMAP FOR IT, BUT I THINK THAT WOULD BE A REALLY NICE, GOOD-FAITH THING TO PROVIDE TO THE COMMUNITY SOMEDAY SO THAT IF YOU HAVE EXISTING CASCADE THINGS, WE CAN GET THEM IN SOME FUNDAMENTAL WAY OVER TO NIAGARA FOR YOU. I THINK THAT WOULD BE COMPELLING. BUT WE HAVE NO PLANS FOR THAT RIGHT NOW, NOR DO WE HAVE AN ANNOUNCED EARLY ACCESS EXIT DATE. >>VICTOR: SOMETIMES THINGS TAKE TIME. >>WYETH: THEY DO. >>VICTOR: YEAH, LET'S SEE HERE. WHEN WILL IT BE POSSIBLE TO SET ACTOR OR COMPONENT REFERENCES DYNAMICALLY DURING GAMEPLAY AS A VARIABLE? >>WYETH: YES, I AM SO GLAD YOU ASKED THAT. THAT IS UNDER ACTIVE DEVELOPMENT. I AM UNSURE IF THAT WILL MAKE IT INTO 4.22 BECAUSE IT -- THIS IS THIS IS LITERALLY THE PROBLEM DU JOUR. WE KNOW IT'S BEEN PERSISTENTLY THE PROBLEM UP TILL THIS POINT AS WELL, BUT YES, THIS IS HIGH ON THE LIST. WE WILL FIX THIS SOON. I DO NOT KNOW IF WE'LL MAKE IT INTO 4.22, BUT IT WILL BE IN SOON THEREAFTER, FOR SURE. AND, YOU KNOW, IN THE BEGINNING THAT'LL BE STATIC MESHES. AND THEN WE WILL ALSO THEN FIX THAT FOR SKELETAL MESHES AS WELL. >>VICTOR: THAT'S GREAT. WILL YOU ADD SUPPORT FOR INTERACTION WITH THE WIND ACTOR? >>WYETH: THAT'S A GOOD QUESTION. PROBABLY NOT WOULD BE MY ASSUMPTION. THE REASON I SAY THAT IS BECAUSE THOSE ARE TWO REALLY FUNDAMENTALLY DIFFERENT SYSTEMS, AND RIGHT NOW OUR FEELING IS IF YOU EXPOSE A USER PARAMETER, WHICH IS SOMETHING YOU WANT THE ENGINE TO TALK TO OUTSIDE OF THE TOOL, WE WOULD PROBABLY DO THAT BY HAVING BLUEPRINT BE THE INTERMEDIARY. SO, IN THAT SENSE, IF YOU HAD A WIND ACTOR, YOU WOULD WANT A CONTAINER WRAPPER BLUEPRINT THAT SETS THAT WIND ACTOR PROPERTIES THAT WOULD ALSO SET A CORRESPONDING NIAGARA SYSTEM PROPERTY -- WOULD PROBABLY BE HOW WE WOULD DO IT IN THE BEGINNING. >>VICTOR: AND THAT'S ALSO A LITTLE BIT LESS OVERHEAD. >>WYETH: AND YEAH, CERTAINLY NEVER SAY NEVER, BUT WE KIND OF FEEL LIKE IF WE'RE GONNA TAKE AN APPROACH WHICH REALLY UNIFIES FORCES LIKE WIND AND, LIKE, EFFECTORS IN THE LEVEL, WE SHOULD DO THAT IN A BROADER WAY, WHICH IS REALLY DEEPLY INTEGRATED WITH WHAT NIAGARA IS. SO, FOR NOW, THERE'S NO PLANS TO DO THAT. I WILL SAY THAT, JUST VERY QUICKLY, AS AN ADDITION TO THE TOOLSET, WHICH WILL BE IN 4.22, WE DO HAVE A WIND FORCE, SO SIMILARLY TO THE GRAVITY FORCE. WE ALSO HAVE A WIND FORCE WHICH BEHAVES DIFFERENTLY FROM ACCELERATION, WHERE ACCELERATION, YOU KNOW, SOMETHING SPEEDS UP AND IT JUST KEEPS SPEEDING UP BASICALLY. THE WIND FORCE, YOU GIVE IT A GOAL SPEED AND THEN AN AIR RESISTANCE VALUE, AND IT WILL MOVE ITS WAY TO THAT GOAL SPEED AND THEN CONTINUE ON AT THAT SPEED, WHICH MORE CLOSELY MATCHES HOW, KIND OF, WIND BEHAVES. IF YOU'RE DOING BLOWING LEAVES OR SNOW OR SOMETHING LIKE THAT, IT'LL LOOK A LITTLE BIT BETTER IN 4.22. >>VICTOR: YOU HAVE ONE? I GOT A COUPLE. >>AMANDA: WILL NIAGARA FULLY SUPPORT MOBILE DEVICES? >>WYETH: YES, THAT IS THE PLAN TO BASICALLY SUPPORT THE UNREAL ECOSYSTEM ALL THE WAY UP AND DOWN. THERE MAY BE TIMES WHERE THE FEATURE SET LAGS A LITTLE BIT BEHIND ON MOBILE, WHERE THE -- KIND OF -- THE PROVING GROUND FOR DEVELOPMENT IS PC, AND THEN IT TRICKLES OUT, BECAUSE OFTEN THAT STUFF HAS TO BE PORTED OR, IN SOME CASES, EVEN REWRITTEN IN SMALL WAYS IN ORDER TO WORK ON SOME OF THE MOBILE DEVICES. BUT YES, THE GOAL IS IS PARITY ALL THE WAY UP AND DOWN, WITHIN REASON IN THE SENSE THAT THERE ARE -- THERE VERY WELL MAY BE VERY, VERY OLD OR VERY, VERY WEAK MOBILE DEVICES THAT DON'T SUPPORT THE SHADING MODEL THAT NIAGRA MIGHT RELY ON TO GENERATE, LIKE COMPUTE SHADERS OR SOMETHING. THAT MIGHT BE A HARD FEATURE CUTOFF FOR A DEVICE RELATED TO NIAGARA, IN WHICH CASE YOU SHOULD BE USING CASCADE FOR THOSE REALLY, REALLY LOW-END DEVICES. >>VICTOR: IS THERE A WAY TO SET CUSTOM STENCIL DEPTHS TO NIAGARA PARTICLES? >>WYETH: THERE IS NOT. THAT COMES UP A LOT. WE WOULD LIKE TO DO THAT. THERE ARE SOME QUESTIONS ABOUT EXACTLY HOW, BECAUSE THERE'S THIS ALPHA CONCEPT, AND USUALLY CUSTOM STENCIL IS BASED ON A POLYGON OR, LIKE, A MASKED RESULT. SO WE ARE LIMITED TO MASS PARTICLES. IS THERE WAY WE COULD SUPPORT THIS ON TRANSLUCENCY? IT'S JUST A LITTLE BIT AWKWARD, I WILL SAY THAT. RIGHT NOW, WE DON'T SUPPORT IT. IT'S SOMETHING WE'VE THOUGHT ABOUT, BECAUSE THE REQUEST COMES UP -- BUT RIGHT NOW WE DON'T EXACTLY KNOW THE BEST WAY TO HANDLE IT. >>VICTOR: LET'S SEE, IS THERE A WAY TO IMPORT ANIMATED POINTS FROM HOUDINI? >>WYETH: YES. SO I DON'T KNOW IF YOU -- SIDEFX HAS WRITTEN A DATA INTERFACE. AGAIN, THANK YOU SIDEFX. THEY'VE DONE THE LION'S SHARE OF THE WORK IN THAT REGARD. THEY HAVE A HOUDINI NIAGARA PLUG-IN, WHICH IS AN OPTIONAL INSTALL AS WELL, AND THAT INCLUDES THE ABILITY TO BASICALLY SAMPLE ARBITRARY POINT ATTRIBUTES FROM HOUDINI, AND BRING THEM IN TO NIAGARA AND DO WHATEVER YOU LIKE WITH THEM. THERE ARE A BUNCH OF TRAINING VIDEOS ON HOW TO USE THAT ON THE SIDEFX WEBSITE SO YOU CAN, YOU KNOW, TAKE A TAKE A GANDER AT THAT. I TALK TO THOSE GUYS ALL THE TIME AND THERE ARE, I THINK, A NUMBER OF WAYS WE COULD CONTINUE TO COLLABORATE WITH SIDE EFFECTS IN THE FUTURE. NOTHING ANNOUNCED YET, BUT I THINK THERE'S A CLEAR PATH FORWARD TO CONTINUING TO ADD MORE HOUDINI-RELATED WIZARDRY INTO THE NIAGARA WIZARDRY TO MAKE MORE WIZARDRY. >>AMANDA: WIZARD, WIZARD WIZARD. YES, WE ALL JUST NEED SOME UE4 -- >>VICTOR: YES, I'M THERE. >>AMANDA: WIZARD HATS. >>VICTOR: I'LL PUT IT ON FOR THE LIVE STREAM. IT WILL HAPPEN [LAUGHTER]. YOU SAID THAT, THAT'S A PROMISE TO CHAT. >>WYETH: THAT'S FINE. I LOOK GREAT IN A WIZARD HAT. >>VICTOR: COME ON, I'M SURE YOU DO WITH THE BEARD, TOO. IF YOU ARE USING MESH ROTATION RATE, IS THERE AN EASY WAY TO STOP A MESH PARTICLE ROTATING ONCE IT HITS THE GROUND? >>WYETH: SO THERE ARE SOME THINGS IN THE NEW COLLISION MODULE WHICH SHOULD MAKE THAT EASIER. WE HAVE SOME ROTATIONAL INERTIA VALUES THAT USE SOME FUDGE FACTORS YOU CAN SET, WHICH SHOULD BASICALLY, KIND OF, DO THE RIGHT THING-ISH. THE OTHER THING, IS THAT WHEN A PARTICLE COLLIDES, WE CACHE OFF A VALUE OF WHETHER OR NOT IT HAS COLLIDED. AND SO THAT COULD BE SOMETHING WHERE YOU CAN ROLE YOUR OWN BEHAVIOR, SO TO SPEAK, WHERE YOU RELY ON THAT BOOL TO BE SET IN A SCRIPT, YES OR NO, HAVE I COLLIDED OR NOT. AND THEN, IN THAT, YOU COULD DIRECTLY SET YOUR PARTICLE ROTATION RATE BACK TO A SANE VALUE. I WOULD SAY THAT THE HELPER FUNCTIONS THAT ARE COMING WHENEVER WE GET THE FINAL COLLISION STUFF MERGED IN SHOULD BE ABLE TO ACCOMPLISH WHAT THEY'RE LOOKING TO DO. >>VICTOR: IT'S GREAT. ARE THERE A SET NUMBER OF POINTS OR MAXIMUM NUMBER OF POINTS WE CAN SAMPLE OFF A STATIC MESH SCALES A MESH, ETC.? >>WYETH: NO, ON THE CPU, YOU'RE JUST PERFORMANCE LIMITED. WELL, YOU'RE ALWAYS PERFORMANCE LIMITED, THAT'S JUST COMPUTERS. BUT CPU IS -- YOU'RE MORE LIMITED JUST BECAUSE CPU SIMULATION IS GENERALLY MORE HEAVYWEIGHT. SO, IN THE ECOSYSTEM WHERE YOU CAN ONLY SAMPLE FROM THE CPU, IT ALL DEPENDS ON THE PERFORMANCE BUT IF YOU'RE ON A HIGH-END PC, YOU MIGHT GET UP TO 50,000 PARTICLES AND THEN YOU REALIZE IT'S GETTING KIND OF SLOW. >>VICTOR: UH-HUH. >>WYETH: IF YOU'RE ON THE GPU AND YOU HAVE A REASONABLE GPU, YOU COULD SPAWN A FEW MILLION AND NOT EVEN NOTICE. SO REALLY, IT JUST DEPENDS ON THE AMOUNT OF WORK YOU'RE DOING. IF YOU'RE JUST SPAWNING PARTICLES AND TELLING THEM WHAT COLOR TO BE AND TO FLY OFF IN A DIRECTION, THAT'S MORE LIGHTWEIGHT THAN DOING A BUNCH OF LOGIC IN THE PARTICLE SYSTEM ITSELF, YOU KNOW. THE MORE MATH YOU DO -- AT THE END OF THE DAY, NIAGARA IS JUST COMPILING SHADERS. IT'S A BIG SHADER UNDER THE HOOD. THE MORE MATH OPERATIONS YOU ADD TO THAT SHADER, THE SLOWER IT GETS. SO THAT'S JUST KIND OF THE NATURE OF THE BEAST, SO TO SPEAK. >>VICTOR: SOUNDS GOOD. THEY'RE ASKING IF IT'S POSSIBLE FOR THEM TO GET MORE HELPER FUNCTIONS, AND THEY ARE MAKING ONE SPECIFIC ONE. "CONSTRUCTING MY OWN QUATERNION OUT OF A FOUR-VECTOR IS NOT NICE." >>WYETH: YEAH, WE DON'T EVER WANT TO WORK WITH QUATERNION. THOSE ARE SCARY. NO, WE DO ACTUALLY HAVE SOME HELPER FUNCTIONS FOR QUATERNIONS. I BELIEVE WE HAVE AN EULER-TO-QUATERNION FUNCTION. YOU GIVE IT EULER ANGLES -- YAW, PITCH, AND ROLL, WHICH ARE THE COMMON THINGS THAT ARTISTS WOULD WORK IN WITH ROTATION, AND THAT OUTPUTS A QUATERNION FOR YOU. SO I THINK PROBABLY THE BEST THING TO DO WOULD BE IF THERE ARE ONES MISSING WOULD BE TO START A THREAD ON THE FORUM AND SAY, LIKE, "HEY THESE ARE THINGS THESE ARE BEHAVIORS THAT I END UP DOING A LOT THAT I DON'T HAVE A HELPER FUNCTION FOR. COULD YOU WRITE ONE FOR ME?" BUT WE HAVE A PRETTY GOOD QUATERNION LIBRARY, ACTUALLY. WE, YOU KNOW, FOR LERPING AND THE S LERP, MULTIPLYING, GENERATING THEM FROM EULER ANGLES, GENERATING THEM FROM AN AXIS AT AN ANGLE, OR COMING FROM A QUATERNION BACK TO AN AXIS AND AN ANGLE. SO, AS IT RELATES TO ROTATIONS, WE HAVE A REASONABLE THING. I THINK THE SPIRIT OF THE QUESTION WAS, "HEY, WE WANT MORE HELPER FUNCTIONS JUST FOR ALL KINDS OF RANDOM STUFF." AND I THINK THAT'S A FAIR ASK. WE USUALLY ADD THEM AS WE RUN INTO A NEED. SO IF WE'RE TRYING TO WORK WITH QUATERNIONS WHICH, AS A HUMAN, YOU REALLY CAN'T MEANINGFULLY DO THAT WELL. IT'S JUST NOT SOME MENTAL MAPPING THAT MAKES A LOT OF SENSE, THEN WE WOULD SAY OH, WELL, THEN I WANT TO WORK IN EULER ANGLES. WELL, THEN LET'S WRITE THE HELPER FUNCTION. >>VICTOR: AND THE IDEA IS THAT IF A USER COMES ACROSS SOME OF THESE AND THEY BUILD HELPER FUNCTIONS FOR THEM, IT'S MEANT TO BE EASILY SHAREABLE WITH OTHER PEOPLE, RIGHT? >>WYETH: IT'S A UASSET. >>VICTOR: RIGHT. SO THEY JUST IMPORT IT AND THEN THEY CAN USE IT IF IT WAS SOMETHING THAT CAME STRAIGHT FROM YOU? >>WYETH: OUR FAVORITE THING TO DO IS TO GO MAKE A CONTENT PLUGIN. GO TO GO TO THE PLUGINS FOLDER, MAKE A NEW CONTENT, MAKE A NEW PLUG-IN, CLICK CONTENT ONLY, GIVE IT A NAME, AND IT JUST SITS THERE.THEN YOU CAN PUT ANYTHING YOU WANT TO SHARE INTO IT, AND THEN GO BACK TO THE PLUGINS FOLDER AND HIT PUBLISH. IT GIVES YOU A NICE LITTLE ZIP FILE OR WHATEVER, OR A NICE LITTLE FOLDER -- GIVE IT TO ANYONE, AND THEY DROP IT IN THEIR PLUGINS FOLDER AND THEY HAVE ALL YOUR STUFF. THAT'S MY FAVORITE WAY TO TRADE STUFF AROUND AS IT COMES TO UNREAL. >>VICTOR: AND THAT'S A LOT THE IDEA BEHIND THE MODULARNESS OF EVERYTHING THAT'S IN THE ENGINE. THEY'RE ALSO ASKING ABOUT A GOOD TUTORIAL SERIES ON NIAGARA. >>WYETH: YEAH, SO ONE OF THE DOWNSIDES TO US BEING IN EARLY ACCESS IS WE DON'T START A REALLY BIG DOCUMENTATION UNTIL WE'RE OUT. SO THE THERE'S A LOT OF TRIBAL KNOWLEDGE, THERE'S A LOT OF PIECEMEAL KNOWLEDGE. WE DO HAVE A SMALL BLOG WE POSTED A COUPLE OF THINGS TO, WE POSTED A COUPLE OF OTHER THINGS ON THE FORUMS. WE TRY TO DO THESE TO EDUCATE. I DON'T THINK THAT'S REALLY GONNA CHANGE MUCH UNTIL WE'RE OUT OF EARLY ACCESS, AND THEN WE ARE GONNA ABSOLUTELY BLITZ WITH DOCUMENTATION. SO WE'RE GONNA GO -- WE'RE GONNA GO PRETTY HEAVY-HANDED ON IT AND REALLY, REALLY TRY TO MAKE PEOPLE UNDERSTAND WHY THE TOOL EXISTS AND NOT JUST HOW TO CLICK THE BUTTONS. BECAUSE, FUNDAMENTALLY, THE IDEAS BEHIND NIAGARA ARE VERY DIFFERENT FROM CASCADE. THE WHY WOULD DO SOMETHING IS REALLY DIFFERENT, AND A LOT OF THE IDEAS DON'T DON'T MAP MENTALLY BETWEEN THE TWO. SO WE'RE GONNA NEED TO DO OUR DUE DILIGENCE WHEN IT COMES TO DOCUMENTATION, BUT THAT'S NOT REALLY GONNA COME TILL AFTER WE'RE OUT OF EARLY ACCESS. >>VICTOR: LET'S SEE. WILL IT WORK WITH TRIANGLES CREATED BY TESSELLATION? AND I BELIEVE THIS WAS IN REFERENCE TO WHEN YOU WERE SHOWING OFF -- >>WYETH: THE STATIC MESH SAMPLER? >>VICTOR: I BELIEVE SO, YES. STATIC OR SKELETAL. >>WYETH: THAT IS A GREAT QUESTION. MY GUT SAYS NO. AND THE REASON IS IS BECAUSE A LOT OF THE WORK WE DO UP FRONT TO ASK FOR THOSE POSITIONS, EVEN IF IT'S A GPU EMITTER, ORIGINATED ON THE CPU AND THEN GET PASSED OVER IN BIG, PAYLOADS OF DATA UP INTO THE -- ALMOST TEXTURES BASICALLY, IF YOU WILL, OF DATA JUST PACKED UP TO THE GPU, WHICH THEN DOES THE SIM. SO THE CPU SIDE OF THAT EQUATION IS NOT GOING TO UNDERSTAND THE TESSELLATION, WHICH IS A GPU ONLY CONCEPT. MY GUT SAYS THAT THAT WOULD NOT WORK. TO BE FAIR, I'VE NEVER TRIED THAT. I HAVEN'T TRIED IT. I SHOULD TRY, IT BUT BUT I DON'T THINK THAT WILL WORK. >>VICTOR: IS THE RIBBON RENDERER ON GPU ALSO BEING WORKED ON? >>WYETH: YEAH, THAT'S HIGH IN THE LIST. IT IS NOT UNDER ACTIVE DEVELOPMENT, I SHOULD SAY, LIKE A COUPLE OF THE OTHER THINGS I MENTIONED ARE, LIKE THE COLLISION STUFF AND A FEW OTHER THINGS, THE STATIC AND SKELETAL MESH SIDE. WE HAVE PORTED OVER TIME MORE AND MORE PIECES OF THE RIBBON RENDERING AND GENERATION CODE TO THE GPU AS WE'VE GONE ALONG. SO WE'RE CLOSE NOW. BUT WE'RE NOT EXACTLY RIGHT THERE AT THE MOMENT, WE'RE GONNA START IMPLEMENTING THAT. BUT THAT IS HIGH ON OUR LIST, BECAUSE WE WOULD LIKE TO BE IN A POSITION WHERE WE CAN GENERATE A REALLY SUBSTANTIAL NUMBER OF RIBBONS, BECAUSE THERE ARE A BUNCH OF AESTHETIC LOOKS THAT ARE REALLY APPEALING, I THINK, WHEN YOU START TO TALK ABOUT THAT. LIKE BEING ABLE TO ON THE GPU, SAMPLE SCALE TO MESH ON THE GPU, GET ALL THESE DIFFERENT POSITIONS, AND THEN BASICALLY DO FUR. AND THERE'S REALLY NO REASON WHY YOU COULDN'T DO SOMETHING LIKE FUR USING A RIBBON SIM, YOU KNOW, AND BLOW THEM AROUND WITH WIND AND DO CURL HOLES. AND THERE'S A NUMBER OF THINGS THAT ACTUALLY DOES REMIND ME -- I'LL LOAD THIS WHILE WE'RE THINKING. >>VICTOR: DO YOU WANT TO GRAB ANOTHER QUESTION WHILE YOU'RE DOING THAT? YOU ARE MULTITASKER THEN -- >>WYETH: YEAH, PLEASE DO. >>VICTOR: THE SAMPLE TEXTURE, CAN IT BE AN ANIMATED TEXTURE, IMAGE SEQUENCE, OR A FLIPBOOK? >>WYETH: YES. WE HAVE A FLIPBOOK SUB-UV SAMPLER NODE IN THE NIAGARA FUNCTIONS, WHICH COULD DO A FLIPBOOK STYLE LOOKUP FOR YOU, AND IT COULD BE A RENDER TARGET. WE'VE ALREADY EXPERIMENTED WITH THAT, AND IT'S REALLY QUITE BEAUTIFUL. YOU HAVE A RENDER TARGET DOING A FLUID SIMULATION OR SOMETHING, AND THEN YOU GIVE THOSE ATTRIBUTES TO YOUR NIAGARA SIM AND IT WORKS, AND IT LOOKS AMAZING. >>VICTOR: THAT'S SUPER COOL. >>WYETH: IF YOU WANT TO SWITCH OVER TO THIS SCREEN REALLY QUICK, I WAS GOING TO SHOW OFF, SPEAKING OF FUR. THIS IS ANOTHER THING THAT WE HAVE IN 4.22 IS A PENDULUM COMPONENT. SO, THIS IS US STARTING TO DABBLE A LITTLE BIT IN CONSTRAINTS -- NOT JUST FORCES, BUT ALSO CONSTRAINTS. SO, THIS IS A CPU OR GPU LEVEL CONSTRAINT THAT BASICALLY GIVES YOU A PENDULUM, AND THIS IS A SINGLE ONE, JUST WORKING THE WAY YOU WOULD EXPECT IT TO WORK. THEN, OF COURSE, IF YOU SEED THAT WITH SOME INTERESTING DATA LIKE THE, YOU KNOW, POSITIONS OF THE SPRINGS OR, DISTRIBUTE THE POINTS ON A SPHERE OR WHATEVER, ONE THING KIND OF COOL WE'RE DOING IS WE BASICALLY HAVE A BUNCH OF PENDULUMS ARRAYED ON THE SPHERE. THEN WE GIVE THEM A TENSION SO THEY KIND OF WANT TO GO BACK TO WHERE THEY ORIGINALLY STARTED, WHERE THEY WERE ORIGINALLY POINTING, AND THEN WE ALSO CALCULATE THE KINETIC AND THE POTENTIAL ENERGY OF THOSE PENDULUMS AS THEY MOVE, AND WE USE THAT TO FEED THE BRIGHTNESS OF THE PARTICLES THEMSELVES. AS MY POTENTIAL AND KINETIC ENERGY GOES UP, THE BRIGHTNESS OF MY PARTICLES GO UP. I FIGURED I'D SHOW THAT REALLY QUICK, BECAUSE THAT IS IN THERE. ALL YOU HAVE TO DO IS DROP A PENDULUM CONSTRAINT INTO YOUR EMITTER AND GIVE THAT A TRY. >>VICTOR: ALL RIGHT, WE STILL HAVE A FEW PAGES HERE. >>WYETH: YEAH, THAT'S GREAT. TELL ME WHEN TO STOP. I'M HAPPY TO ANSWER QUESTIONS FOREVER. >>AMANDA: WE'VE SORTED THAT OUT, DON'T WORRY. >>VICTOR: YEAH, THEY WERE ASKING AGAIN ABOUT IF THEY WERE ABLE TO GET BLUEPRINT EVENTS OUT OF THE PARTICLE COLLISION EVENTS AND IF THAT IS THE PLAN, YES? >>VICTOR: WELL, SO RIGHT NOW, GETTING DATA OUT OF A SIMULATION IS VERY EXPENSIVE, AND WE DON'T ACTUALLY HAVE FORMAL PLAN RIGHT NOW TO SUPPORT THAT. THAT'S NOT TO SAY THAT WE WILL NOT SUPPORT THAT. IT'S JUST THAT RIGHT NOW WE DON'T HAVE A FORMAL PLAN, WHICH BASICALLY ENSURES THE PERFORMANCE IS NOT THE BIGGEST SINGLE PROBLEM WITH THAT IDEA. BECAUSE THEY'RE INHERENTLY -- PARTICULARLY IF YOU'RE TALKING ABOUT A GPU SIM. GETTING DATA BACK DOWN TO BLUEPRINT. I DON'T THINK WE'LL EVER DEAL WITH THAT RABBIT HOLE. ON A CPU SIDE SIM, IT IS VERY MUCH THEORETICALLY POSSIBLE TO PASS ATTRIBUTES OR EVENTS FROM A SYSTEM OUT AS IT RELATES TO WHAT IS EACH INDIVIDUAL PARTICLE DOING. THAT IS DOABLE. BUT YOU'RE LOOKING AT A SIGNIFICANT POTENTIAL SET OF PROBLEMS. SO, YEAH. ONE THING THAT IS MORE INTERESTING TO US IS TO BASICALLY DEFINE A PAYLOAD. IN ESSENCE, AN -- EVENT SOMETHING THAT WE COULD TELL A PARTICLE TO SEND OVER THE FENCE SOMETHING WE WOULD WRITE INTO A STRUCT OR SOMETHING LIKE, "HEY, YOUR POSITION YOUR VELOCITY AND YOUR SIZE, OR YOUR COLOR" OR SOMETHING. THESE ARE THE ONLY THINGS BLUEPRINT NEEDS TO CARE ABOUT. WHY DON'T WE PACK THOSE INTO A PAYLOAD AND THEN WE'RE GONNA WHITELIST THE PARTICLE TO SAY, LIKE, "HEY. I'M HERE, AND THIS IS MY VELOCITY" OR WHATEVER, AND THEN BLUEPRINT IS GONNA GO, "OH, THANKS" AND ACT ON IT. WE DON'T SUPPORT THAT RIGHT NOW. BUT THAT, I THINK, IS A MUCH MORE REASONABLE VERSION OF THIS CONCEPT RATHER THAN AN ARBITRARY, HEY, ANY DATA OUT OF OUR SIMULATION, I DON'T THINK WE'RE EVER GOING TO KIND OF GET THERE, IF THAT MAKES SENSE. SO NO PLANS TO SUPPORT THAT RIGHT NOW, WE THOUGHT A LOT ABOUT IT, AND WE'RE THE FIRST ONES TO ADMIT HOW HIGH-VALUE THAT WOULD BE. IF YOU COULD SPRAY PARTICLES AROUND AND HAVE THEM BOUNCE AROUND AND THEN THE PARTICLE HAS A TEMPERATURE VALUE AND YOU SPRAY THEM INTO A PILE OF LEAVES AND THEY LIGHT THE LEAVES ON FIRE, THAT'S -- NO ONE WOULD SAY THAT'S NOT APPEALING. OBVIOUSLY THAT'S REALLY APPEALING. WE JUST HAVE TO DO IT IN A PERFORMANT WAY, AND DO IT KIND OF GRACEFULLY. SO WE WILL ADDRESS THAT AT SOME POINT, BUT THAT IS NOT ON THE CURRENT. >>VICTOR: SO CURRENTLY YOU WOULD DESIGN IT MORE SO THAT THE BLUEPRINT ITSELF IS PASSING DATA TO THE PARTICLE RIGHT NOW? >>WYETH: YEAH, IT'S A ONE-WAY TICKET. YEAH, YOU CAN GO IN TO THE NIAGARA SIM ALL YOU WANT, BUT BRINGING DATA BACK OUT IS HARD. YEAH. >>VICTOR: THAT'S GREAT. CAN YOU SPAWN PARTICLES OFF OF A MATERIAL? >>WYETH: NOT DIRECTLY. SO, IN ORDER TO DO THAT, YOU WOULD NEED TO DO THE DRAW MATERIAL TO RENDER TARGET BLUEPRINT FUNCTION. YOU WOULD WRITE THE RESULT OF THE MATERIAL TO THE RENDER TARGET, AND THEN YOU WOULD SAMPLE THAT USING THE SAMPLE TEXTURE SIMILAR TO OUR EXAMPLE IN THE CONTENT EXAMPLES. SO, YES, IN THE SENSE YOU COULD HAVE A COMPLEX MATERIAL, DOING SOMETHING INTERESTING. LIKE, LET'S SAY, CAUSTICS. THEN YOU COULD USE THAT TO HAVE YOUR PARTICLES SAMPLE THAT AS A TEXT -- THE FINAL RESULT IS A TEXTURE, AND THEN DO SOME THINGS WITH IT. >>VICTOR: SO A LITTLE BIT OF A ROUNDABOUT WAY. >>VICTOR: THERE'S A LAYER OF -- INDIRECTION THERE, BUT I THINK IT'S ACTUALLY THE RIGHT LEVEL OF INDIRECTION, BECAUSE YOU'RE NOT SENDING MUCH DOWN THE PIPE. YOU'RE JUST SAYING, "HEY, WHAT IS THE END RESULT OF ALL THIS?" AND THEN YOU GIVE THAT TO THE SIMULATION, AND THAT WILL BE INCREDIBLY PERFORMANT. REALLY, REALLY PERFORMANT. >>VICTOR: SEE, I THINK WE TOUCHED ON THAT ONE. CAN WE ADD IN OUR OWN DENSITY PROFILES? >>WYETH: OH, YES. SO RIGHT NOW, THERE'S AN ENUM, WHICH IS A DROP-DOWN OF DENSITIES. YOU COULD LOCALLY MODIFY THAT ENUM WITH AS MANY ENTRIES AS YOU WANT, OR YOU -- THERE IS A TYPE IN BOX RIGHT ON THAT SIZE BY MASS, OR MASS BY SCALE CALCULATION FOR A USER SUPPLY DENSITY. SO IF YOU KNOW A DENSITY, THEN YOU CAN TYPE THAT IN AND IT SHOULD READ SOMEPLACE. >>VICTOR: GREAT, AND THAT'S FOR 4.22 AS WELL? >>WYETH: PREVIEW. >>AMANDA: NICE. >>VICTOR: CAN NIAGARA PARTICLES INTERACT BETWEEN THEMSELVES AND USE THEM AS LIQUID OR SAND SIMULATION, LIKE NVIDIA FLEX OR SOMETHING LIKE SIMPLIFIED SPH? >>WYETH: YEAH, WE'VE TALKED A LOT ABOUT SPH. I THINK THERE'S A PATH FORWARD TO US REALLY CLEANLY AND CLEARLY TO DO SOME SORT OF SPH OR GRAIN-STYLE APPROACH. I DON'T KNOW ABOUT PBD OR, I DON'T KNOW. WE'LL GET THERE AS FAR AS IMPLEMENTATION SIDE, AND WHAT WE KIND OF WANT TO SUPPORT. BUT THAT IS ALL THEORETICALLY POSSIBLE. WE WOULD NEED TO WRITE CUSTOM CODE TO DO THAT. I THINK IN THE SYSTEM, AS IT STANDS, YOU WOULD NOT BE HAPPY WITH THAT. ONE THING THAT WOULD BE REALLY, REALLY NECESSARY FOR SOMETHING LIKE THAT IS WHAT WE WOULD CALL A SPATIAL HASH, SO BASICALLY AN IDEA OF A LITTLE GRID, AND THE GRID HAS CELLS, AND THE CELLS KNOW HOW MANY PARTICLES ARE IN EACH CELL, AND WHICH PARTICLES ARE AROUND IT. OTHERWISE, EVERY PARTICLE HAS TO ASK EVERY OTHER PARTICLE IN THE WHOLE SIMULATION WHERE THEY ARE AND WHAT THEY'RE DOING, AND THEY CALL THAT N SQUARED SLOW, WHICH MEANS YOU'RE MULTIPLYING HOWEVER MANY BY THAT NUMBER AGAIN IN ORDER TO SEE HOW MANY TIMES YOU HAVE TO ASK. WHEREAS IF YOU HAVE A LITTLE SPATIAL STRUCTURE, SOME SORT OF LITTLE VIRTUAL DATA STRUCTURE, YOU CAN SAY, "HEY, I'M ME AND I JUST NEED TO CARE ABOUT YOU 12 GUYS." SO I'M GONNA ASK YOU WHAT YOUR ATTRIBUTES ARE. THAT CAN BE INCREDIBLY INEXPENSIVE TO DO -- ORDERS AND ORDERS OF MAGNITUDE LESS EXPENSIVE. WE HAVE NOT WRITTEN A SPATIAL HASH YET. BUT, BELIEVE ME, THAT'S ON THE LIST. WE WILL SOMEDAY DO THAT, BECAUSE THAT'S REALLY, REALLY HIGH VALUE. AND ONCE WE START TO DO THAT, THEN WE CAN START TALKING ABOUT LIKE AN SPH SIMULATION FOR FLUIDS OR WHATEVER. >>VICTOR: IT'S EXCITING. >>WYETH: YEAH, I'M REALLY EXCITED TO GET IT SOMEDAY. THERE'S A LOT OF STUFF THAT WOULD UNLOCK. SO BELIEVE, IT'S ON OUR INTERNAL ROADMAP. >>VICTOR: YEAH, AND A LOT OF THIS IS JUST A MAIN FRAMEWORK TOOL? >>WYETH: YES. >>VICTOR: IS IT FRIENDLY TO SOME SOME DEGREE, AND THEN KEEP ADDING MORE AND MORE BETTER FEATURES? >>WYETH: ABSOLUTELY. YEAH, OUR BELIEF IS THAT WE GOT TO GET THE BONES RIGHT, AND THEN IF WE GET THE BONES RIGHT THEN, AS WE EXPAND, WE EXPAND IN A WAY THAT DOESN'T BREAK THE IDEAS BEHIND WHY WE BUILT IT IN THE FIRST PLACE. >>VICTOR: IS THERE A WAY TO WORK WITH THE NIAGARA MODULES FROM C++? >>WYETH: NO. WELL, YOU CAN WRITE NATIVE FUNCTIONS WHICH CAN BE BROUGHT INTO THE NODE GRAPH IN C++ CODE. SO I COULD GO WRITE C++ CODE TO MAKE A MODULE LIKE EULER ANGLES TO QUATERNION. I COULD GO WRITE THAT. THEN I'D BE ABLE TO DROP IT IN THE GRAPH -- IF YOU'RE EXPERIENCED PROGRAMMER, YOU CAN GO DO THAT. BUT THE NODE GRAPH LANGUAGE -- THE WAY THE NODE GRAPH EVALUATES IS INTO HLSL. SO, IF YOU ARE A PROGRAMMER AND YOU WANT TO WRITE IN CODE, SO TO SPEAK, YOU CAN DROP A CUSTOM NODE DOWN. YOU CAN WRITE CODE RIGHT IN THAT CUSTOM NODE, AND THAT WILL EVALUATE JUST AS IF THE NODE GRAPH ITSELF HAD COMPILED ITSELF DOWN INTO HLSL ITSELF. IT WILL EVALUATE THE SAME WAY. >>VICTOR: THAT'S THE SAME CUSTOM NODE WE USE IN THE MATERIAL GRAPH AS WELL. >>WYETH: IT'S THE SAME IDEA. >>VICTOR: SAME IDEA, YEAH. >>WYETH: IT'S A TOTALLY DIFFERENT IMPLEMENTATION, BUT THE IDEA IS BASICALLY THE SAME, YEAH. YOU'LL NOTICE WE HAVE A COUPLE OF COMPLEX FUNCTIONS. LIKE WE HAVE, LIKE, A TRANS-MATRIX TO QUATERNION HELPER FUNCTION OR SOMETHING -- WHICH WOULD JUST BE A REAL BEAR TO MAKE IN THE NODE GRAPH. THAT ONE IS ALL WRITTEN IN A CUSTOM NODE, JUST BECAUSE IT'S JUST CLEANER. SOME THINGS ARE CLEANER IN CODE, AND SOME THINGS ARE BETTER TO DO IN A NODE GRAPH SO YOU CAN SEE THE FLOW OF EXECUTION. IT'S, ALL YOU KNOW SIX AND ONE -- >>AMANDA: YOU HAVE TO FIND THE METHOD THAT WORKS BEST FOR THE -- >>WYETH: TOTALLY. AND EVERY PROJECT IS GONNA DO IT DIFFERENTLY. I COULD SEE WHOLE PROJECTS WHERE THEY JUST WRITE CUSTOM NODE STUFF INTO THEIR NODE GRAPHS LIKE IT. HAVE AT IT. WE SUPPORT THAT JUST FINE. LEARN HLSL, YOU'RE GOOD. >>VICTOR: TRY TO KEEP THE SPAGHETTI IN CHECK. >>WYETH: MMM-HMM, I AGREE. >>VICTOR: THIS USER SAID THAT HE OFTEN STARTS WITH AN EMITTER, AND THEN MAKES A SYSTEM TO PUT IT IN, AND END UP DOING ALL MY CHANGES IN THE SYSTEM. IS THERE A WAY TO PROPAGATE THE CHANGES TO THE EMITTER, OR IF THERE A BETTER WORKFLOW FOR THIS? >>WYETH: THERE IS NO BETTER WORKFLOW, AND WE FEEL YOUR PAIN. THAT IS HIGH IN THE LIST. WE KNOW THAT THE INHERITANCE FLOW NEEDS A VERSION 2, AND WE HAVE TALKED A LOT ABOUT THAT AND, I THINK THAT -- ALTHOUGH WE DON'T HAVE AN ANNOUNCED FRAMEWORK FOR THAT, I THINK WE'RE GONNA WANT TO ADDRESS THAT RELATIVELY SOON, WHICH IS PUSHING FROM AN EMITTER UP TO A SYSTEM, BEING BETTER AWARE THROUGH UX, WHEN YOU'RE IN A SYSTEM IN AN EMITTER, WHAT HAS BEEN INHERITED AND WHAT HAS BEEN ADDED THAT'S NEW AND DIFFERENT, COLOR CODING, DISABLING, YOU KNOW, HIDING OF DISABLED MODULES THAT ARE INHERITED, ALL THESE DIFFERENT THINGS. THEN THE ABILITY -- IF YOU HAVE MODIFIED A SYSTEM AND YOU WANT TO PUSH BACK, YOU HAVE THE ABILITY TO DO THAT. THERE ARE A NUMBER OF UX AND UI CONSIDERATIONS AROUND THAT THAT WE WANT TO SOLVE. WE'VE TALKED AT LENGTH ABOUT THOSE PROBLEMS, AND WE FEEL YOUR PAIN. AND WE KNOW THAT'S NOT THE PERFECT WORKFLOW FOR YOU RIGHT NOW, AND WE HAVE PRETTY GOOD PLANS, I THINK, TO FIX IT. WE JUST DON'T HAVE IT IN 4.22. >>AMANDA: GREAT. WHAT'S NEXT? >>VICTOR: ALRIGHT, I'LL CONTINUE. WOULD IT BE POSSIBLE TO COMBINE NIAGARA WITH SIMULATED ACTORS, LIKE CLOTH AND CABLE ACTORS? >>WYETH: THAT'S AN INTERESTING QUESTION. SO THE CABLE COMPONENT, I THINK, AT THE END OF THE DAY, DOES JUST GENERATE -- >>VICTOR: IT'S A PARTICLE. >>WYETH: WELL, THE POINT -- THE SIMULATION OF THE POINTS IS PARTICLE SIM. BUT I THINK THERE IS PARTICLE DATA THAT IS GENERATED. SO THE QUESTION IS WHETHER OR NOT THAT DATA IS CONSIDERED UNDER THE HOOD OF STATIC MESH, OR NOT, OR SKELETAL MESH, OR SOME OTHER SORT OF ANIMATED MESH. PROBABLY RIGHT NOW, THERE'S NO GOOD WAY TO ASK FOR THAT DATA. BUT BECAUSE IT'S SO SIMILAR TO A STATIC MESH IN THE WAY IT'S MADE, I THINK WRITING A DATA INTERFACE TO SAMPLE A CABLE COMPONENT, FOR INSTANCE, WOULD BE PRETTY STRAIGHTFORWARD, YOU KNOW. IT'D BE VERY SIMILAR TO THE SAMPLING FUNCTIONS WE HAVE NOW. I THINK IF YOU WANTED TO DO THAT, YOU WOULD HAVE TO GO AND WRITE THAT DATA INTERFACE YOURSELF. BUT I HAVE A FEELING -- I HAVE NOT WRITTEN THAT DATA INTERFACE MYSELF, SO MAYBE I'M DEEPLY WRONG HERE. MY INSTINCT SAYS IT WOULD PROBABLY NOT BE TOO COMPLICATED TO ASK FOR THOSE IN VERTEX LOCATIONS AND NORMALS FROM THAT COMPONENT, JUST LIKE YOU WOULD THE STATIC MESH. >>VICTOR: I KNOW YOU CURRENTLY CAN GET THE LOCATIONS OF EACH INDIVIDUAL PARTICLE OF THE CABLE COMPONENT, BUT I THINK THAT'S EVERYTHING THAT'S EXPOSED AS OF RIGHT NOW. >>WYETH: YEAH. AND THEN THE QUESTION WOULD BE, HOW DOES NIAGARA ASK FOR THE DATA? >>VICTOR: RIGHT. >>WYETH: YOU WOULD NEED A DATA INTERFACE TO INGEST IT AND FEED IT TO THE SIM. >>VICTOR: WE SHOULD PROBABLY DO A STREAM ENTIRELY ON THE DATA INTERFACES. >>WYETH: THAT'S A GOOD IDEA. >>VICTOR: YEAH. >>WYETH: YOU KNOW WHAT WE SHOULD DO IS DO THAT ONCE WE HAVE THE CPU/GPU PARITY THAT I'M TALKING ABOUT, AND THEN WE CAN TALK ABOUT THE PROS AND CONS. >>VICTOR: YEAH, SOUNDS GREAT. LET'S SEE HERE -- >>AMANDA: THEY'RE WONDERING -- CAN YOU ACCESS OR CHANGE THESE SETTINGS THROUGH BLUEPRINT AT RUNTIME? SO FOR EXAMPLE, CAN YOU CHANGE THE MASS? >>WYETH: YES. SO, IN FACT, LET ME JUST SHOW SOMETHING REALLY QUICK. SO BASICALLY, IF I HAVE A PARTICLE SYSTEM. IF I WANT SOMETHING TO BE EXPOSED TO THE USER -- I DON'T KNOW. WHAT WOULD BE A GOOD -- LET'S SAY WE ARE GOING TO EXPOSE -- WELL, THIS PENDULUM ISN'T A GREAT EXAMPLE BECAUSE IT'S ALL, KIND OF, THE PARAMETERS ARE ALL TUNED FOR IT TO WORK. LET'S SAY I WANT TO EXPOSE SOMETHING ON THE PARTICLE SYSTEM TO EITHER A USER OR, LIKE, A LEVEL DESIGNER PLACING THIS STUFF IN THE WORLD, OR AN EFFECTS ARTIST PLACING THIS IN THE WORLD, I DO THAT THROUGH SYSTEM EXPOSED PARAMETERS. LET'S SAY I HAVE -- LET ME SET THIS DIRECTLY. SO I'M JUST GOING TO SET MASS DIRECTLY, JUST TO KIND OF DEAL WITH YOUR EXAMPLE. RIGHT NOW, MASS IS JUST SET TO ONE. IF I GO AND MAKE A PARAMETER, MASS IS A FLOAT CAN BE ANYTHING. SO I'M GONNA GO MAKE A USER-EXPOSED PARAMETER, WHICH IS A FLOAT. THEN I'M GOING TO CALL THIS MY MASS. OKAY. NOW, AND I GET TO SET A DEFAULT ON THIS VALUE AS WELL. IF I GO DOWN TO MY MASS WHERE I'M SETTING MASS DIRECTLY ON THE PARTICLE, AND I LINK IT TO THAT THING THAT I JUST MADE, THAT SYSTEM USER-EXPOSED PARAMETER, I'M NOW INTRINSICALLY LINKING EACH PARTICLES VALUE OF WHAT MASS IS SUPPOSED TO BE WITH THIS USER-EXPOSED PARAMETER. AND SO, IF I COMPILE THIS -- IF I GO TO THIS PARTICLE IN THE EDITOR, MY OVERRIDE PARAMETERS HERE -- SEE MY MASS? IT'S RIGHT DOWN THERE, READY FOR ME TO CHANGE. AND IF I CHANGE THIS, IT WILL AFFECT THEM -- MY PARTICLE MASS IN THE SIM. YOU NOTICE HOW MASS GOT HEAVIER, SO IT HAS A RESISTANCE TO, YOU KNOW, ROTATION OR WHATEVER THERE? LIKE, YOU KNOW, IT'S TAKING LONGER TO RETURN BACK TO PLUMB? THAT'S A FACTOR OF THE MASS. THIS SAME THING WHERE YOU'RE EXPOSING SOMETHING DOWN HERE ON THE SYSTEM, YOU CAN SET THIS PARAMETER VIA BLUEPRINT. YOU JUST GO SET A NIAGARA PARAMETER, AND YOU CAN SET A NIAGRA SCALAR, NIAGARA FLOAT, NIAGARA VECTOR, NIAGARA BOOL, ANYTHING EXPOSED HERE AS A USER PARAMETER, YOU JUST SET IT DIRECTLY ON A NIAGARA SYSTEM AND IT DOES JUST WHAT YOU'RE ASKING. >>VICTOR: THAT'S GREAT. I THINK THAT ANSWERED THE QUESTION. LET'S SEE, ARE THERE PLANS TO SIMPLIFY/IMPROVE THE BASIC WORKFLOWS BEYOND TEMPLATES? >>WYETH: YES. SO THERE ARE A NUMBER OF WAYS IN WHICH WE THINK THE STACK -- THE PRESENTATION OF THE STACK HERE COULD BE BETTER. THAT INCLUDES BETTER UNDERSTANDING OF INHERITANCE, WHAT CAME FROM EMITTERS AND ARE INTO SYSTEMS, COLOR CODING POTENTIALLY OF MODULES AND DIFFERENT BEHAVIORS THAT ARE COMMON. FOR INSTANCE, THINGS DEALING WITH COLLISION ALL HAVING A SLIGHT TINT TO THEM OR WHATEVER. WHITE SPACE UTILIZATION IS SOMETHING THAT WE WANT TO IMPROVE, IN LINE CURVE EDITOR AND THE, YOU KNOW, KIND OF LIKE COLOR PICKING STUFF. I THINK THERE'S ROOM FOR IMPROVEMENT THERE. THEN ALL THE STUFF I WAS TALKING ABOUT AS FAR AS PASSING INHERITANCE UP AND DOWN THE CHAIN, I THINK THAT WILL HELP WORKFLOW A LOT. ALSO, INSIDE OF THOSE TEMPLATES, MAKING MORE BEHAVIORS IN THE TEMPLATES, AND THEN MORE SYSTEM TEMPLATES THAT HAVE LINKED BEHAVIORS TOGETHER, WHERE TWO OR THREE DIFFERENT EMITTERS ARE ALL ACTING IN TANDEM TO DO -- TO ACHIEVE A RESULT, PACKING THOSE ALL INTO A SYSTEM TEMPLATE BEHAVIOR AND APPLYING THAT AS WELL. THOSE ARE, KIND OF -- THOSE ARE KIND OF THE THE MAIN WAYS IN WHICH WE WANT TO MOVE TO, KIND OF, THE NEXT STEP OF UX AND WORKFLOW. >>VICTOR: ALL RIGHT. AND I THINK IT'S TIME FOR THE LAST QUESTION. >>WYETH: OKAY. >>VICTOR: YEAH, AND THIS ONE WILL BE -- I PICKED THIS ONE BECAUSE I WAS CURIOUS AND WE DID TALK ABOUT A LITTLE BEFORE. IS THERE ANY PROGRESS WITH AUDIO SUPPORT IN NIAGARA? >>WYETH: YEAH. WHAT WOULD NEED TO HAPPEN IS WE WOULD BASICALLY NEED TO HAVE A DATA INTERFACE -- SO THE DATA INTERFACE IS JUST PHILOSOPHICALLY THE CONDUIT INTO NIAGARA FROM OUTSIDE. AND THAT MIGHT BE FROM OUTSIDE FROM A DCC PACKAGE, THAT MIGHT BE FROM ANOTHER PART OF UNREAL, LIKE THE PHYSICS SYSTEM, OR THE SKELETAL MESH ANIMATION SYSTEM OR, IN YOUR CASE, THE AUDIO SYSTEM. SO BASICALLY WHAT WE NEED TO DO, WHICH WE HAVE NOT DONE YET BUT WHICH, AGAIN, IS SOMETHING WE'VE EXTENSIVELY DISCUSSED, IS AN AUDIO DATA INTERFACE. AND THAT WOULD BE FED FROM THE AUDIO ENGINE. AND WE WOULD BE ABLE TO GET BACK WAVEFORMS AND YOU WOULD GET BACK INTENSITIES AND, YOU KNOW, THE TRANSFORMS OF THOSE INTO A SPACE THAT MAKES SENSE FOR A PARTICLE SIMULATION. THERE'S NO ZERO TECHNICAL REASON, OTHER THAN WE JUST NEED TO TAKE THE TIME TO WRITE IT, THAT THAT WON'T WORK AND BE AWESOME. AND EVERY ONE OF US ON THE NIAGARA TEAM WANTS TO GO WRITE A MUSIC VISUALIZATION. I WANT TO DO IT IN VR, I WANT TO DO IT WITH REAL PHYSICS,. >>AMANDA: THAT WOULD BE A COMPETITION, SEE WHO MAKES THE BEST ONE. >>WYETH: I WOULD DO IT WITH CRAZY COLORS. I WOULD -- IF WE DO A JAM, I'M IN THAT ONE. >>AMANDA: ALL RIGHT. >>WYETH: BECAUSE THAT JUST SOUNDS LIKE SO MUCH FUN. EVERYONE WANTS TO GET AUDIO VISUALIZATION GOING IN NIAGARA, AND -- I THINK THEY'RE LIKE CHOCOLATE AND PEANUT BUTTER. I MEAN, THAT'S LIKE A PERFECT COMBINATION. SO NO CURRENT TRAJECTORY FOR THAT RIGHT NOW, BUT HIGH VALUE, HIGH DEMAND, WE KNOW WE WANT IT, AND THAT WOULD BE THE WAY WE WOULD GET. >>VICTOR: IT'S GREAT. THANK YOU SO MUCH FOR COMING OUT. >>AMANDA: YOU KNOW, WE HAVE SO MANY PEOPLE CHOMPING AT THE BIT THAT REALLY WANT TO DIG IN AND USE NIAGARA. SO FOR YOU TO COME AND SIT ON A STREAM WITH US, IT REALLY HELPS MOVE THEM IN THE RIGHT DIRECTION, AT LEAST GET PLAYING. IT'S REALLY VALUABLE. >>WYETH: I HOPE SO. I THINK 4.22, IF YOU HAVEN'T PLAYED YET, 4.22 IS THE BEST TIME TO START NOW, BECAUSE A LOT OF THE ROUGH EDGES HAVE BEEN SANDED DOWN, AND I THINK IT'S MUCH CLOSER TO THE TYPE OF TOOL YOU WOULD, YOU KNOW -- YOU HAVE AN IDEA, AND YOU CAN ACTUALLY VISUALIZE TO THE END. I THINK WE'RE THERE NOW, AND NOW IT'S JUST ENHANCING AND MAKING IT BETTER. >>AMANDA: AWESOME. YEAH, THANK YOU, THANK YOU, THANK YOU. IT MEANS A LOT TO US AND TO THE COMMUNITY. >>WYETH: THANKS, EVERYBODY. >>AMANDA: WE'VE -- I'VE TOSSED A -- GOSH, HAVING BRAIN FARTS TODAY -- SURVEY INTO THE CHAT TODAY. SO IF YOU'VE HAD FEEDBACK FOR US ON HOW WE'RE DOING TODAY, OR THINGS YOU'D LIKE TO SEE IN THE FUTURE, WE ALWAYS WANT TO KNOW KINDS OF TOPICS ARE GOING TO BENEFIT YOU THE MOST. SO, IF YOU LET US KNOW, IT HELPS US SERVE THOSE NEEDS. AND, IF YOU PROVIDE YOUR EMAIL, WE RAFFLE AWAY A T-SHIRT TO ONE OF THE FOLKS THAT FILL OUT THE SURVEY. AND SO THAT'S A SWEET WAY, OR A SIMPLE WAY, TO GET UNREAL ENGINE SWAG. ALSO, CHECK FOR YOUR LOCAL UE4 MEETUPS. THERE'S LOTS OF REALLY, REALLY TALENTED PEOPLE ALL OVER THE WORLD THAT ARE WORKING IN UNREAL ENGINE. THIS IS A GREAT WAY TO GET TO KNOW THEM, HELP GET FEEDBACK ON YOUR PROJECT IF YOU'RE HAVING PROBLEMS WITH YOUR GAME OR PROJECT YOURSELF, LIKE, THESE PEOPLE CAN PROVIDE YOU HELP. SO THEY'RE A WONDERFUL RESOURCE. USE THEM. AND IF YOU HAVEN'T, OR IF THERE ISN'T ONE IN YOUR AREA, YOU CAN ALWAYS REACH OUT TO US AND WE'LL HELP YOU GET GOING. YOU WANT TO TALK ABOUT SPOTLIGHTS? >>VICTOR: YES. SO EVERY WEEK, WE SHARE THREE OF OUR COMMUNITY-MADE SPOTLIGHTS, AND WE SPOTLIGHT THEM AS OUR SPOTLIGHTS. AND THERE'S A LITTLE SPOTLIGHT. IF YOU WANT TO SEE THEM ON THE STREAM, JUST SHARE THEM WITH US. WE TEND TO LOOK AT THE RELEASE AS PART OF THE FORUM, AS WELL AS WORK IN PROGRESS. YOU CAN ALSO CONTACT US IN DISCORD, OR COMMUNITY@UNREALENGINE.COM. IT'S A GREAT WAY IF YOU HAVE AN ESSAY YOU WANT TO WRITE US FOR SOME REASON. THEY'RE HARD TO READ, SO BE BE DELIBERATE WITH CHOICE OF WORDS AND SENTENCES. WE ALSO DO A COOL LITTLE COUNTDOWN IN THE BEGINNING OUR STREAMS, THE LITTLE SPED UP VIDEO. SO IF YOU WANT US TO SHOWCASE THAT, PLEASE SEND US A VIDEO. ONCE IT HAS BEEN SPED UP SHOULD BE AROUND FIVE MINUTES. >>AMANDA: WE USUALLY RECOMMEND TAKING ABOUT 30 MINUTES OF DEVELOPMENT AND COMPRESSING IT DOWN TO ABOUT 5 MINUTES, SO IT DOES HELP US IF YOU INCLUDE YOUR LOGO, YOUR TEAM NAME OR YOUR STUDIO NAME, AND THE NAME OF YOUR PROJECT SO THAT WE CAN SHARE THAT AND LET PEOPLE KNOW WHAT WHAT YOU'RE WORKING ON. >>VICTOR: THAT'S GREAT. IF YOU'RE STREAMING UNREAL ENGINE ON TWITCH, REMEMBER TO USE THE UNREAL ENGINE TAG, THE GAME UNREAL ENGINE. AND THEN, OF COURSE, MAKE SURE TO FOLLOW US ON SOCIAL MEDIA, TWITTER, FACEBOOK, ALL THE PLACES. >>AMANDA: INSTAGRAM. >>VICTOR: ALL THE PLACES EVERYWHERE. >>AMANDA: WE'RE ALWAYS POSTING REALLY BEAUTIFUL PICTURES ON INSTAGRAM, SO THAT'S A GREAT WAY FOR A PROJECT TO SURFACE AS WELL. AGAIN, PLEASE #UE4JAM IF YOU'RE TWEETING ABOUT YOUR PROGRESS OVER THE JAM THIS WEEKEND. WE'RE GONNA BE AROUND TO ANSWER QUESTIONS ON THE FORUMS, IF YOU HAVE LAST-MINUTE JAM QUESTIONS, AND ANY QUESTIONS WE DIDN'T GET TO YOU TODAY, CAN WE SEND THEM TO YOU AND TOSS THEM UP ON THE FORUMS, MAYBE? >>WYETH: ABSOLUTELY. >>AMANDA: SO IF YOU DO HAVE MORE QUESTIONS THAT WE DIDN'T GET, TO WE'LL TRY TO FOLLOW UP ON THE FORUM POST ABOUT THAT. SO, AGAIN, THANK YOU SO MUCH. >>WYETH: MY PLEASURE. >>AMANDA: IT'S BEEN AN ABSOLUTE TREAT, AND I HOPE WE CAN GET JOHN ON MAYBE, AND ABSOLUTELY DO MORE NIAGARA STREAMS IN THE FUTURE. >>WYETH: I'M IN. >>AMANDA: GREAT. THANK YOU, GOOD LUCK TO ALL THE JAMMERS, AND WE'LL SEE YOU NEXT WEEK. TAKE CARE EVERYONE. >>VICTOR: BYE EVERYONE. >>AMANDA: BYE. [MUSIC]
Info
Channel: Unreal Engine
Views: 39,178
Rating: undefined out of 5
Keywords: Game Development
Id: PKFKeoZY7Hc
Channel Id: undefined
Length: 106min 51sec (6411 seconds)
Published: Fri Feb 15 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.