{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/NEd4VmDdsxM3StIUbddO/fJ8vwGe6kxfz7kj9H7Sk/YouTube.js", "ssg:https://framerusercontent.com/modules/INrlWZA3OP3jI7RR5Oyy/1nh2LqCaB1uboa7yil0N/NOikKVha9.js"],
  "sourcesContent": ["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useReducer, useState } from \"react\";\nimport { ControlType, addPropertyControls } from \"framer\";\nimport { useIsOnCanvas, emptyStateStyle, containerStyles, defaultEvents, useRadius, borderRadiusControl } from \"https://framer.com/m/framer/default-utils.js@^0.45.0\";\nvar PlayOptions;\n(function (PlayOptions) {\n  PlayOptions[\"Normal\"] = \"Off\";\n  PlayOptions[\"Auto\"] = \"On\";\n  PlayOptions[\"Loop\"] = \"Loop\";\n})(PlayOptions || (PlayOptions = {}));\nvar ThumbnailOptions;\n(function (ThumbnailOptions) {\n  ThumbnailOptions[\"High\"] = \"High Quality\";\n  ThumbnailOptions[\"Medium\"] = \"Medium Quality\";\n  ThumbnailOptions[\"Low\"] = \"Low Quality\";\n  ThumbnailOptions[\"Off\"] = \"Off\";\n})(ThumbnailOptions || (ThumbnailOptions = {}));\nvar ThumbnailFormat;\n(function (ThumbnailFormat) {\n  ThumbnailFormat[\"WebP\"] = \"webp\";\n  ThumbnailFormat[\"JPG\"] = \"jpg\";\n})(ThumbnailFormat || (ThumbnailFormat = {})); /**\n                                               * @framerIntrinsicWidth 560\n                                               * @framerIntrinsicHeight 315\n                                               *\n                                               * @framerSupportedLayoutWidth fixed\n                                               * @framerSupportedLayoutHeight fixed\n                                               *\n                                               * @framerComponentPresetProps isRed, borderRadius\n                                               */\nexport function Youtube({\n  url,\n  play,\n  shouldMute,\n  thumbnail,\n  isRed,\n  onClick,\n  onMouseEnter,\n  onMouseLeave,\n  onMouseDown,\n  onMouseUp,\n  ...props\n}) {\n  const onCanvas = useIsOnCanvas();\n  const isAutoplay = play !== PlayOptions.Normal;\n  const showThumbnail = onCanvas || thumbnail !== ThumbnailOptions.Off && !isAutoplay;\n  const [isPreloading, preloadVideo] = useReducer(() => true, false);\n  const [showVideo, startVideo] = useReducer(() => true, !showThumbnail);\n  const [isHovered, setHovered] = useState(false);\n  const borderRadius = useRadius(props);\n  const hasBorderRadius = borderRadius !== \"0px 0px 0px 0px\" && borderRadius !== \"0px\";\n  if (url === \"\") {\n    return /*#__PURE__*/_jsx(Instructions, {});\n  }\n  const parsedURL = parseVideoURL(url);\n  if (parsedURL === undefined) {\n    return /*#__PURE__*/_jsx(ErrorMessage, {\n      message: \"Invalid Youtube URL.\"\n    });\n  }\n  const [videoId, embedURL] = parsedURL; // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api\n  const thumbnailURL = getThumbnailURL(videoId, thumbnail, getWebPSupported() ? ThumbnailFormat.WebP : ThumbnailFormat.JPG); // https://developers.google.com/youtube/player_parameters\n  const searchParams = embedURL.searchParams;\n  searchParams.set(\"iv_load_policy\", \"3\");\n  searchParams.set(\"rel\", \"0\");\n  searchParams.set(\"modestbranding\", \"1\");\n  searchParams.set(\"playsinline\", \"1\");\n  if (isAutoplay || showThumbnail) {\n    searchParams.set(\"autoplay\", \"1\");\n  }\n  if (isAutoplay && shouldMute) {\n    searchParams.set(\"mute\", \"1\");\n  }\n  if (play === PlayOptions.Loop) {\n    searchParams.set(\"loop\", \"1\");\n    searchParams.set(\"playlist\", videoId);\n  }\n  if (!isRed) {\n    searchParams.set(\"color\", \"white\");\n  }\n  return /*#__PURE__*/_jsxs(\"article\", {\n    onPointerEnter: () => setHovered(true),\n    onPointerLeave: () => setHovered(false),\n    onPointerOver: preloadVideo,\n    onClick: startVideo,\n    style: {\n      ...wrapperStyle,\n      borderRadius,\n      transform: hasBorderRadius && showVideo ? \"translateZ(0.000001px)\" : \"unset\",\n      cursor: \"pointer\",\n      overflow: \"hidden\"\n    },\n    children: [isPreloading && /*#__PURE__*/_jsx(\"link\", {\n      rel: \"preconnect\",\n      href: \"https://www.youtube.com\"\n    }), isPreloading && /*#__PURE__*/_jsx(\"link\", {\n      rel: \"preconnect\",\n      href: \"https://www.google.com\"\n    }), /*#__PURE__*/_jsx(\"div\", {\n      style: {\n        ...videoStyle,\n        background: showThumbnail ? `center / cover url(${thumbnailURL}) no-repeat` : undefined\n      }\n    }), showVideo ? /*#__PURE__*/_jsx(\"iframe\", {\n      style: videoStyle,\n      src: embedURL.href,\n      frameBorder: \"0\",\n      allow: \"presentation; fullscreen; accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\",\n      onClick: onClick,\n      onMouseEnter: onMouseEnter,\n      onMouseLeave: onMouseLeave,\n      onMouseDown: onMouseDown,\n      onMouseUp: onMouseUp\n    }) : /*#__PURE__*/_jsx(PlayButton, {\n      onClick: startVideo,\n      isHovered: isHovered,\n      isRed: isRed\n    })]\n  });\n}\nYoutube.displayName = \"YouTube\";\naddPropertyControls(Youtube, {\n  url: {\n    type: ControlType.String,\n    title: \"Video\"\n  },\n  play: {\n    type: ControlType.Enum,\n    title: \"Autoplay\",\n    options: Object.values(PlayOptions)\n  },\n  shouldMute: {\n    title: \"Mute\",\n    type: ControlType.Boolean,\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\",\n    hidden(props) {\n      return props.play === PlayOptions.Normal;\n    }\n  },\n  thumbnail: {\n    title: \"Thumbnail\",\n    description: \"Showing a thumbnail improves performance.\",\n    type: ControlType.Enum,\n    options: Object.values(ThumbnailOptions),\n    hidden(props) {\n      return props.play !== PlayOptions.Normal;\n    }\n  },\n  isRed: {\n    title: \"Color\",\n    type: ControlType.Boolean,\n    enabledTitle: \"Red\",\n    disabledTitle: \"White\"\n  },\n  ...borderRadiusControl,\n  ...defaultEvents\n});\nconst defaultProps = {\n  url: \"https://youtu.be/smPos0mJvh8\",\n  play: PlayOptions.Normal,\n  shouldMute: true,\n  thumbnail: ThumbnailOptions.Medium,\n  isRed: true\n};\nYoutube.defaultProps = defaultProps;\nfunction parseVideoURL(urlString) {\n  let url;\n  try {\n    url = new URL(urlString);\n  } catch {\n    const embedURL = getEmbedURL(urlString);\n    return [urlString, embedURL];\n  }\n  if (url.hostname === \"youtube.com\" || url.hostname === \"www.youtube.com\" || url.hostname === \"youtube-nocookie.com\" || url.hostname === \"www.youtube-nocookie.com\") {\n    const pathSegments = url.pathname.slice(1).split(\"/\"); // https://www.youtube.com/watch?v=Fop2oskTug8\n    if (pathSegments[0] === \"watch\") {\n      const videoId = url.searchParams.get(\"v\");\n      const embedURL1 = getEmbedURL(videoId);\n      return [videoId, embedURL1];\n    } // https://www.youtube.com/embed/Fop2oskTug8\n    if (pathSegments[0] === \"embed\") {\n      const videoId1 = pathSegments[1];\n      return [videoId1, url];\n    }\n  } // https://youtu.be/Fop2oskTug8\n  if (url.hostname === \"youtu.be\") {\n    const videoId2 = url.pathname.slice(1);\n    const embedURL2 = getEmbedURL(videoId2);\n    return [videoId2, embedURL2];\n  }\n}\nfunction getEmbedURL(videoId) {\n  return new URL(`https://www.youtube.com/embed/${videoId}`);\n}\nfunction getThumbnailURL(videoId, res, format = ThumbnailFormat.JPG) {\n  // https://gist.github.com/a1ip/be4514c1fd392a8c13b05e082c4da363\n  const pre = ThumbnailFormat.WebP ? \"https://i.ytimg.com/vi_webp/\" : \"https://i.ytimg.com/vi/\";\n  const ext = ThumbnailFormat.WebP ? \"webp\" : \"jpg\";\n  switch (res) {\n    case ThumbnailOptions.Low:\n      return `${pre}${videoId}/hqdefault.${ext}`;\n    case ThumbnailOptions.Medium:\n      return `${pre}${videoId}/sddefault.${ext}`;\n    case ThumbnailOptions.High:\n      return `${pre}${videoId}/maxresdefault.${ext}`;\n    default:\n      return `${pre}${videoId}/0.${ext}`;\n  }\n}\nlet _getWebPSupported; // https://stackoverflow.com/a/27232658\nfunction getWebPSupported() {\n  // We're going to default to webp because it's pretty widely supported by now\n  if (!window) {\n    return true;\n  }\n  if (_getWebPSupported !== undefined) {\n    return _getWebPSupported;\n  }\n  const element = document.createElement(\"canvas\");\n  if (!!(element.getContext && element.getContext(\"2d\"))) {\n    // was able or not to get WebP representation\n    return element.toDataURL(\"image/webp\").indexOf(\"data:image/webp\") == 0;\n  } else {\n    // very old browser like IE 8, canvas not supported\n    return false;\n  }\n} // Helper components\nfunction Instructions() {\n  return /*#__PURE__*/_jsx(\"div\", {\n    style: {\n      ...emptyStateStyle,\n      overflow: \"hidden\"\n    },\n    children: /*#__PURE__*/_jsx(\"div\", {\n      style: centerTextStyle,\n      children: \"To embed a Youtube video, add the URL to the properties\\xa0panel.\"\n    })\n  });\n}\nfunction ErrorMessage({\n  message\n}) {\n  return /*#__PURE__*/_jsx(\"div\", {\n    className: \"framerInternalUI-errorPlaceholder\",\n    style: {\n      ...containerStyles,\n      overflow: \"hidden\"\n    },\n    children: /*#__PURE__*/_jsxs(\"div\", {\n      style: centerTextStyle,\n      children: [\"Error: \", message]\n    })\n  });\n}\nfunction PlayButton({\n  onClick,\n  isHovered,\n  isRed\n}) {\n  return /*#__PURE__*/_jsx(\"button\", {\n    onClick: onClick,\n    \"aria-label\": \"Play\",\n    style: buttonStyle,\n    children: /*#__PURE__*/_jsxs(\"svg\", {\n      height: \"100%\",\n      version: \"1.1\",\n      viewBox: \"0 0 68 48\",\n      width: \"100%\",\n      children: [/*#__PURE__*/_jsx(\"path\", {\n        d: \"M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z\",\n        fill: isHovered ? isRed ? \"#f00\" : \"#000\" : \"#212121\",\n        fillOpacity: isHovered ? isRed ? 1 : .8 : .8,\n        style: {\n          transition: \"fill .1s cubic-bezier(0.4, 0, 1, 1), fill-opacity .1s cubic-bezier(0.4, 0, 1, 1)\"\n        }\n      }), /*#__PURE__*/_jsx(\"path\", {\n        d: \"M 45,24 27,14 27,34\",\n        fill: \"#fff\"\n      })]\n    })\n  });\n}\nconst buttonStyle = {\n  position: \"absolute\",\n  top: \"50%\",\n  left: \"50%\",\n  transform: \"translate(-50%, -50%)\",\n  width: 68,\n  height: 48,\n  padding: 0,\n  border: \"none\",\n  background: \"transparent\",\n  cursor: \"pointer\"\n};\nconst wrapperStyle = {\n  position: \"relative\",\n  width: \"100%\",\n  height: \"100%\"\n};\nconst centerTextStyle = {\n  textAlign: \"center\",\n  minWidth: 140\n};\nconst videoStyle = {\n  position: \"absolute\",\n  top: 0,\n  left: 0,\n  height: \"100%\",\n  width: \"100%\"\n};\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"Youtube\": {\n      \"type\": \"reactComponent\",\n      \"name\": \"Youtube\",\n      \"slots\": [],\n      \"annotations\": {\n        \"framerSupportedLayoutWidth\": \"fixed\",\n        \"framerContractVersion\": \"1\",\n        \"framerIntrinsicHeight\": \"315\",\n        \"framerComponentPresetProps\": \"isRed, borderRadius\",\n        \"framerIntrinsicWidth\": \"560\",\n        \"framerSupportedLayoutHeight\": \"fixed\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./YouTube.map", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { addPropertyControls, ComponentPresetsConsumer, ControlType, Link } from \"framer\";\nimport { motion } from \"framer-motion\";\nimport * as React from \"react\";\nimport { Youtube as YouTube } from \"https://framerusercontent.com/modules/NEd4VmDdsxM3StIUbddO/fJ8vwGe6kxfz7kj9H7Sk/YouTube.js\";\nconst addImageAlt = (image, alt) => {\n  if (!image || typeof image !== \"object\") {\n    return;\n  }\n  return {\n    ...image,\n    alt\n  };\n}; /**\n   * @framerRecordIdKey id\n   * @framerSlug IL6e4n6lg\n   * @framerEnumToDisplayNameUtils 2\n   * @framerData\n   */\nconst data = [{\n  CQq935ur6: \"Look North World today launches their second release as part of their new community-focused game studio, Carrera Coast, available now in Unreal Engine for Fortnite (UEFN). \",\n  e1zZnYT2i: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"LOOK NORTH WORLD ANNOUNCES BIGGEST PRIZE POOL IN FORTNITE CREATIVE HISTORY\"\n      })\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"em\", {\n        children: /*#__PURE__*/_jsx(\"strong\", {\n          children: \"AAA Developers Alex Seropian and Team Announces Unprecedented $18,000 and 300,000 V-Bucks Tournament Prize Pool For Their Second Fortnite Creative Game in UEFN\"\n        })\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"strong\", {\n        children: \"LOS ANGELES, CA (October 25, 2023) -- \"\n      }), \"Look North World today launched a tournament in support of their latest Unreal For Fortnite (UEFN) game Carrera Coast. This exciting competition boasts a record-breaking prize pool, offering winners a staggering $18,000 and 300,000 V-Bucks\u2014the most substantial rewards ever witnessed in a Fortnite Creative tournament. Look North World is led by developers with AAA hits in their back pockets and quirk in their brains such as Alex Seropian of Bungie, Disney and Industrial Toys fame, and Patrick Moran, formerly from Amazon, Disney and Kongregate.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Carrera Coast, a spiritual homage to classic shooters of the 90s and early 2000s, Carrera Coast is a medium sized team deathmatch map to supports a wide range of gameplay with asymmetric gameplay. Players are able to quality for an $18,000 prize pool bracket tournament on November 9th, 2023 alongside some of the biggest Fortnite streamers, including \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.twitch.tv/bewitching\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Bewitching\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.twitch.tv/bhronos\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Bhronos\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.twitch.tv/foxman\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"FoxMan\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.twitch.tv/happyhappygal\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"HappyHappyGal\"\n        })\n      }), \", \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.twitch.tv/swearin\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Swearin\"\n        })\n      }), \", and \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://www.twitch.tv/goatr2\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"GoatR2\"\n        })\n      }), \". All participants stand a chance to claim their share of the 300,000 V-Bucks prize pool by engaging in daily challenges from October 25th to November 3rd. This tournament is powered by Team Hero and details are available at \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://teamhero.gg/\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"teamhero.gg\"\n        })\n      }), \". \"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: 'Patrick Moran, COO of Look North World, emphasizes their commitment to providing players and content creators with unparalleled value. \"We firmly believe that the most effective marketing campaigns begin with delivering immense value to our players and equipping content creators with the tools they need to engage and play alongside their audiences. Our culture of experimentation extends from game development to our marketing and publishing operations, where we aim to listen to players, experiment, learn, and consistently build our community with each release.\"'\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Look North World also includes several industry wizards from Industrial Toys/EA. These talents include CTO Jay Pecho, Principal Artist Aaron Marroquin, Art Director Prashant Patil and Creative Director Kyle Marks. Look North World\u2019s seed round is led by London Venture Partners, a leader in gaming-focused venture capital funding. They are joined in this initial round by 1Up Ventures and Hibbard Road Partners.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"<Quote by Alex Seropian>\"\n    })]\n  }),\n  id: \"f5CDhPQxW\",\n  IL6e4n6lg: \"look-north-world-launches-carrera-coast-biggest-prize-pool-in-history\",\n  Tl12_p3Q9: \"2023-10-25T00:00:00.000Z\",\n  WIjeRWohw: addImageAlt({\n    src: \"https://framerusercontent.com/images/2wFkqGt1XG6Wj8TTPU5smgpESI.png\",\n    srcSet: \"https://framerusercontent.com/images/2wFkqGt1XG6Wj8TTPU5smgpESI.png?scale-down-to=512 512w, https://framerusercontent.com/images/2wFkqGt1XG6Wj8TTPU5smgpESI.png?scale-down-to=1024 1024w, https://framerusercontent.com/images/2wFkqGt1XG6Wj8TTPU5smgpESI.png 1920w\"\n  }, \"\"),\n  yQL4OQyaM: \"Look North World launches new Fortnite Island Carrera Coast in UEFN with largest prize pool in Fortnite Creative history\"\n}, {\n  CQq935ur6: \"We started a company to build experiences within Fortnite. Why am I so excited about this? What\u2019s it like working in UEFN compared to working on a multi-million dollar AAA mobile game? Do I miss working in a \u201Creal programming language\u201D like C++? Let\u2019s get started!\",\n  e1zZnYT2i: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: \"Welcome to our first blog post at Look North World! \"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"For this post, I want to start from the beginning. \"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"We started a company to \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://looknorth.world/blog/look-north-world-and-outlaw-corral-announced\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"build experiences within Fortnite\"\n        })\n      }), \". Why am I so excited about this? What\u2019s it like working in UEFN compared to working on a multi-million dollar AAA mobile game? Do I miss working in a \u201Creal programming language\u201D like C++? Let\u2019s get started!\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"So, how are things different from AAA dev? First, the scope of what you can build (right now) in UEFN is just more limited. I find this to be the titular breath of fresh air. Coming off of a 6+ year project that was never globally released, the idea that we could build a fun experience in only a few months is extremely exciting. Not to mention, there are hundreds of millions of Fortnite players out there that are looking for new experiences within the game. As a software engineer and game designer, I find that constraints fuel creativity.\\xa0\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"One of my first successful projects as a game developer was \u201C\", /*#__PURE__*/_jsx(Link, {\n        href: \"https://en.wikipedia.org/wiki/Where%27s_My_Water%3F\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Where\u2019s My Water?\"\n        })\n      }), \"\u201D The constraint for that game was to build a level-based physics puzzler in the vein of \u201CAngry Birds\u201D or \u201CCut the Rope.\u201D The game should be playable without scrolling and with a single input (i.e. your finger). That quickly eliminated a lot of genres and allowed our team to focus our creativity on one type of game. The same is true of UEFN. Right now, you can\u2019t build \u201CWhere\u2019s My Water?\u201D or anything else that is a huge departure from the traditional \u201CFortnite\u201D gameplay, and I find that invigorating.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Another difference comes from how game logic is built. UEFN introduced scripting into the Fortnite Creative ecosystem via the Verse programming language. While I\u2019ve never used Haskell or Swift, Verse seems to take a lot of syntax and ideas from both languages (one of the creators of Verse also created Haskell, so that makes sense). \"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Coming from C++, there is a lot I like about Verse. The syntax is different and takes some getting used to but once you are used to the idiosyncrasies of the language, you really start to fly. This could be a whole \u2018nother blog post but the way Verse handles concurrency is pretty interesting. Also, with Verse in UEFN, there are no \u201Cupdate\u201D functions. You use the latent/concurrency features of the language to handle anything that requires periodic updates.\"\n    }), /*#__PURE__*/_jsx(motion.div, {\n      className: \"framer-text-module\",\n      style: {\n        \"--aspect-ratio\": \"560 / 315\",\n        aspectRatio: \"var(--aspect-ratio)\",\n        height: \"auto\",\n        width: \"100%\"\n      },\n      children: /*#__PURE__*/_jsx(ComponentPresetsConsumer, {\n        componentIdentifier: \"module:NEd4VmDdsxM3StIUbddO/fJ8vwGe6kxfz7kj9H7Sk/YouTube.js:Youtube\",\n        children: presetProps => /*#__PURE__*/_jsx(YouTube, {\n          ...presetProps,\n          play: \"Off\",\n          shouldMute: true,\n          thumbnail: \"Medium Quality\",\n          url: \"https://youtu.be/BbaD-FUItmM\"\n        })\n      })\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Building game logic in UEFN is like gluing puzzle pieces together. You have to find the right puzzle pieces, and then you use Verse to glue those pieces together. \"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Let me give you an example from Outlaw Corral. You may have noticed while spectating someone who wins a match that the weapon spawners are switching weapons (as in the video above). We wanted to pick a random weapon every round and didn't want those weapons to repeat between different rounds in the same tournament. In a traditional game engine, we could simply code that logic - create an array of weapons, pick a random index in the array, mark that index as used, and spawn the one we picked.\\xa0\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In UEFN, it\u2019s a bit more complicated. The weapon spawner takes an array of items it will spawn but you can\u2019t randomly index into it. There is an API to go to the next item but it doesn\u2019t do anything unless the item is spawned. So in order for us to achieve our goals, we have to connect a few devices and some custom logic together. First, we have a Verse device that \u201Ctracks\u201D the current index in the array of the item spawner. Because we actually have to spawn the weapons and we don\u2019t want them to just be sitting there in the level, we also need a mutator zone that gives pickups a very short lifetime. So we iterate to the index we randomly pick, spawning and despawning all of the weapons along the way. This may seem cumbersome, and it is, but it\u2019s also fun to figure out how to achieve your goals with the puzzle pieces you have.\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"While UEFN has been a positive development experience for us, there are a few things on my wish list. One of the main things that I\u2019m hopeful for is that\", /*#__PURE__*/_jsx(Link, {\n        href: \"https://forums.unrealengine.com/t/ask-epic-anything-programming-scripting-may-24th-2023-at-12-30pm-est/1168968/82?u=alk3ovation\",\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \" Epic will continue to improve upon its debug facilities\"\n        })\n      }), \". Currently, there are two main ways to debug problems in your game. First, there is a Verse API for debug drawables. The API will be familiar to developers who have experience in Unreal Engine. You can draw colored wireframe shapes anywhere in the world. The second way to debug, which many programmers will hold near and dear to their heart is print debugging. I recently saw a debate on twitter where people said they don\u2019t need anything more than print debugging, while the other side said it\u2019s impossible to debug without a debugger. I\u2019m in the camp of: \u201CYou don\u2019t need a debugger until you do.\u201D There are certain classes of problems that are just easier to debug with an actual debugger. That aside, UEFN print based debugging works just fine\u2026 most of the time.\"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"In my opinion, there are a few improvements to be made here. First, the logs are streamed to the editor from the server hosting the creative session. If you have too many log statements, they get throttled and some logs may be lost, so making sure logs do not get lost would be a huge improvement. Second, logs are only available in creative sessions attached to the editor. Private and public island codes do not have accessible logs or other debug information. Some bugs may only occur in a live environment or at scale so having access to live debug info would be beneficial to most teams. For example, live logs could have a different log level and/or could be throttled so as not to affect the experience.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"As it is, we\u2019ve resorted to putting some relevant information on the screen in semi-transparent text so as not to distract players. You can see this text in the top left corner of the screen. This way if players took screenshots of a bug, we could get some information about the state of the world. We felt the trade off of having some \u201Cweird\u201D text visible to the player was worth maximizing our ability to address bugs in live.\"\n    }), /*#__PURE__*/_jsx(\"img\", {\n      alt: \"\",\n      className: \"framer-image\",\n      \"data-framer-asset\": \"data:framer/asset-reference,Miebb66g6uaYuegrA5eId8sDU.png\",\n      \"data-framer-height\": \"606\",\n      \"data-framer-width\": \"1089\",\n      height: \"303\",\n      src: \"https://framerusercontent.com/images/Miebb66g6uaYuegrA5eId8sDU.png\",\n      style: {\n        aspectRatio: \"1089 / 606\"\n      },\n      width: \"544\"\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"I\u2019m super excited about the future of UEFN. Like any new platform, there are lots of things that can be improved upon. The cadence of updates from Epic and the excitement within the community have me looking to the future with enthusiasm for the adventure ahead. If this post has piqued your interest in developing on UEFN, \", /*#__PURE__*/_jsx(Link, {\n        href: \"mailto:resumes@looknorth.world\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"drop us a line\"\n        })\n      }), \" and keep an\", /*#__PURE__*/_jsx(Link, {\n        href: {\n          webPageId: \"Qy3d9KNeZ\"\n        },\n        openInNewTab: false,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \" eye out for future job openings\"\n        })\n      }), \" here at Look North World.\"]\n    })]\n  }),\n  id: \"XcR4EMO6q\",\n  IL6e4n6lg: \"a-breath-of-fresh-air-look-north-world-cto-jay-pecho\",\n  Tl12_p3Q9: \"2023-07-27T00:00:00.000Z\",\n  WIjeRWohw: addImageAlt({\n    src: \"https://framerusercontent.com/images/Miebb66g6uaYuegrA5eId8sDU.png\",\n    srcSet: \"https://framerusercontent.com/images/Miebb66g6uaYuegrA5eId8sDU.png?scale-down-to=512 512w, https://framerusercontent.com/images/Miebb66g6uaYuegrA5eId8sDU.png?scale-down-to=1024 1024w, https://framerusercontent.com/images/Miebb66g6uaYuegrA5eId8sDU.png 1089w\"\n  }, \"\"),\n  yQL4OQyaM: \"A Breath of Fresh Air, from CTO Jay Pecho\"\n}, {\n  CQq935ur6: \"Look North World today welcomes gamers to be a part of their new community-focused game studio, starting with the launch of their first game, Outlaw Corral, available now in Unreal Engine for Fortnite (UEFN). \",\n  e1zZnYT2i: /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"LOOK NORTH WORLD, A NEW DEVELOPER AND PUBLISHER OF GAMES FOR UNREAL ENGINE FOR FORTNITE (UEFN)\"\n      })\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"em\", {\n        children: /*#__PURE__*/_jsx(\"strong\", {\n          children: \"AAA Developers Alex Seropian and Team Launch First of Several Original Games and Entertainment on Creator Platforms \"\n        })\n      })\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [/*#__PURE__*/_jsx(\"strong\", {\n        children: \"LOS ANGELES, CA (July 18, 2023) -- \"\n      }), \"Look North World today welcomes gamers to be a part of their new community-focused game studio, starting with the launch of their first game, Outlaw Corral, available now in Unreal Engine for Fortnite (UEFN). Driven to experiment and explore the building of unique high-quality social games and entertainment, the studio will deliver experiences that bring players together in virtual spaces and gaming platforms. Look North World is led by developers with AAA hits in their back pockets and quirk in their brains such as Alex Seropian of Bungie, Disney and Industrial Toys fame, and Patrick Moran, formerly from Amazon, Disney and Kongregate.\"]\n    }), /*#__PURE__*/_jsxs(\"p\", {\n      children: [\"Outlaw Corral, a wild west island featuring skill-based shootouts, is the first of several games in development. Players are able to have an active role in providing input to future Look North World games by joining the company\u2019s \", /*#__PURE__*/_jsx(Link, {\n        href: \"https://discord.gg/looknorthworld\",\n        openInNewTab: true,\n        smoothScroll: false,\n        children: /*#__PURE__*/_jsx(\"a\", {\n          children: \"Discord\"\n        })\n      }), \". The first 1,000 Discord members will be automatically added to the company\u2019s Beta Test channel to help test new games before release. \"]\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"\u201CDeveloping in UEFN opens a whole new world of opportunities and we are in uncharted territory. Through experimentation we will see what the players like and involve them in decisions. We will throw in a mix of fun game components that players love with a healthy dose of humor when we can,\u201D said CEO Seropian. \u201CWe are jumping into it with a \u2018the virtual sky is the limit\u2019 mentality. As we develop creative ideas, we will learn how these platforms engage, entertain and boost social interactions in order to iterate accordingly.\u201D\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Look North World also includes several industry wizards from Industrial Toys/EA. These talents include CTO Jay Pecho, Principal Artist Aaron Marroquin, Art Director Prashant Patil and Creative Director Kyle Marks. Look North World\u2019s seed round is led by London Venture Partners, a leader in gaming-focused venture capital funding. They are joined in this initial round by 1Up Ventures and Hibbard Road Partners.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"\u201CWith an impressive track record under their collective belts, this AAA team led by Alexander Seropian is set to revolutionize the way games are made,\u201D said Matt Bilbey, partner at London Venture Partners. \u201CWe are excited to be on this journey with Look North World as they work with the gaming community to shape new game concepts, storylines, and designs.\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: /*#__PURE__*/_jsx(\"strong\", {\n        children: \"About Look North World\"\n      })\n    }), /*#__PURE__*/_jsx(\"p\", {\n      children: \"Founded in 2023 by game industry hit makers Alex Seropian and Patrick Moran, Look North World is a game studio driven to experiment and explore while focusing on building unique high-quality social games and entertainment. Funding led by London Venture Partners, a leader in gaming focused venture capital, Look North World will bring players together in community-driven virtual spaces and experiences. https://looknorth.world/\"\n    }), /*#__PURE__*/_jsx(motion.div, {\n      className: \"framer-text-module\",\n      style: {\n        \"--aspect-ratio\": \"560 / 315\",\n        aspectRatio: \"var(--aspect-ratio)\",\n        height: \"auto\",\n        width: \"100%\"\n      },\n      children: /*#__PURE__*/_jsx(ComponentPresetsConsumer, {\n        componentIdentifier: \"module:NEd4VmDdsxM3StIUbddO/fJ8vwGe6kxfz7kj9H7Sk/YouTube.js:Youtube\",\n        children: presetProps => /*#__PURE__*/_jsx(YouTube, {\n          ...presetProps,\n          play: \"Off\",\n          shouldMute: true,\n          thumbnail: \"High Quality\",\n          url: \"https://www.youtube.com/watch?v=ThTb26MZo2g\"\n        })\n      })\n    })]\n  }),\n  id: \"N233dx9OJ\",\n  IL6e4n6lg: \"look-north-world-and-outlaw-corral-announced\",\n  Tl12_p3Q9: \"2023-07-18T00:00:00.000Z\",\n  WIjeRWohw: addImageAlt({\n    src: \"https://framerusercontent.com/images/APjHDQO2FofX7WUPK4wOQzf82s.jpg\",\n    srcSet: \"https://framerusercontent.com/images/APjHDQO2FofX7WUPK4wOQzf82s.jpg?scale-down-to=512 512w, https://framerusercontent.com/images/APjHDQO2FofX7WUPK4wOQzf82s.jpg 604w\"\n  }, \"\"),\n  yQL4OQyaM: \"Look North World and Outlaw Corral Announced\"\n}];\nfor (const item of data) {\n  Object.freeze(item);\n}\naddPropertyControls(data, {\n  yQL4OQyaM: {\n    defaultValue: \"\",\n    title: \"Title\",\n    type: ControlType.String\n  },\n  Tl12_p3Q9: {\n    defaultValue: \"\",\n    title: \"Date\",\n    type: ControlType.Date\n  },\n  WIjeRWohw: {\n    title: \"Image\",\n    type: ControlType.ResponsiveImage\n  },\n  CQq935ur6: {\n    defaultValue: \"\",\n    displayTextArea: false,\n    title: \"Excerpt\",\n    type: ControlType.String\n  },\n  e1zZnYT2i: {\n    defaultValue: \"\",\n    title: \"Content\",\n    type: ControlType.RichText\n  },\n  IL6e4n6lg: {\n    title: \"Slug\",\n    type: ControlType.String\n  }\n});\ndata[\"displayName\"] = \"Blog\";\nexport default data;\nexport const enumToDisplayNameFunctions = {};\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"default\": {\n      \"type\": \"data\",\n      \"name\": \"data\",\n      \"annotations\": {\n        \"framerData\": \"\",\n        \"framerEnumToDisplayNameUtils\": \"2\",\n        \"framerRecordIdKey\": \"id\",\n        \"framerContractVersion\": \"1\",\n        \"framerSlug\": \"IL6e4n6lg\"\n      }\n    },\n    \"enumToDisplayNameFunctions\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};"],
  "mappings": "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",
  "names": ["PlayOptions", "ThumbnailOptions", "ThumbnailFormat", "Youtube", "url", "play", "shouldMute", "thumbnail", "isRed", "onClick", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "props", "onCanvas", "useIsOnCanvas", "isAutoplay", "showThumbnail", "isPreloading", "preloadVideo", "le", "showVideo", "startVideo", "isHovered", "setHovered", "ye", "borderRadius", "useRadius", "hasBorderRadius", "p", "Instructions", "parsedURL", "parseVideoURL", "ErrorMessage", "videoId", "embedURL", "thumbnailURL", "getThumbnailURL", "getWebPSupported", "searchParams", "u", "wrapperStyle", "videoStyle", "PlayButton", "addPropertyControls", "ControlType", "borderRadiusControl", "defaultEvents", "defaultProps", "urlString", "getEmbedURL", "pathSegments", "embedURL1", "videoId2", "embedURL2", "res", "format", "pre", "ext", "_getWebPSupported", "window", "element", "emptyStateStyle", "centerTextStyle", "message", "containerStyles", "buttonStyle", "addImageAlt", "image", "alt", "data", "u", "x", "p", "Link", "motion", "ComponentPresetsConsumer", "presetProps", "Youtube", "item", "addPropertyControls", "ControlType", "NOikKVha9_default", "enumToDisplayNameFunctions", "__FramerMetadata__"]
}
