WEBVTT 1 00:00:02.270 --> 00:00:02.909 Realistic 2 00:00:04.445 --> 00:00:08.874 Realistic Advanced Real-Time Collaboration and nDisplay Control Settings 3 00:00:08.875 --> 00:00:11.570 GCC Academy 4 00:00:27.038 --> 00:00:31.294 Network Basics for Multi-User and Switchboard Utilization 5 00:00:31.298 --> 00:00:31.878 Hello 6 00:00:31.879 --> 00:00:37.615 I am Park Ji-yong for today's lecture, Real-Time Collaboration and nDisplay Control Settings 7 00:00:38.000 --> 00:00:40.968 In this lecture, we will build upon our understanding 8 00:00:40.968 --> 00:00:44.335 of Perforce and nDisplay 9 00:00:44.336 --> 00:00:48.367 to explore Multi-User and Switchboard, 10 00:00:48.368 --> 00:00:51.936 focusing on their practical applications through hands-on exercises 11 00:00:52.362 --> 00:00:58.020 The use of Perforce, nDisplay, Switchboard, and Multi-User 12 00:00:58.020 --> 00:01:04.037 involves integrating multiple machines into a network-based system 13 00:01:04.218 --> 00:01:07.353 Before diving into the main content, 14 00:01:07.354 --> 00:01:10.468 we will briefly cover essential network concepts 15 00:01:10.469 --> 00:01:15.434 required to operate these systems efficiently 16 00:01:15.782 --> 00:01:20.607 The term network is derived from the combination of net and work, 17 00:01:21.517 --> 00:01:27.031 referring to a system of interconnected computers, smartphones, 18 00:01:27.031 --> 00:01:31.566 and data transmission devices, which we call nodes 19 00:01:31.874 --> 00:01:35.332 A network is a data communication system 20 00:01:35.333 --> 00:01:39.682 that enables several independent devices to communicate directly 21 00:01:39.683 --> 00:01:43.616 within a suitable range through a physical communication channel at an appropriate speed 22 00:01:43.764 --> 00:01:48.502 The exchange of data between nodes in a network is called communication 23 00:01:48.846 --> 00:01:50.637 To enable this exchange, 24 00:01:50.668 --> 00:01:56.145 the communication between computers, a protocol is required 25 00:01:56.574 --> 00:02:01.571 A protocol is a set of rules governing data communication 26 00:02:01.939 --> 00:02:08.514 When computers communicate over a network, they do so by exchanging packets via links 27 00:02:08.662 --> 00:02:14.800 A link is the physical communication path between nodes, used for transmitting packets 28 00:02:15.083 --> 00:02:19.895 A packet is a small unit of data that has been divided for transmission 29 00:02:20.477 --> 00:02:24.042 The primary reason for using packet-based communication is this 30 00:02:24.043 --> 00:02:29.681 By dividing data into smaller packets, 31 00:02:29.870 --> 00:02:34.584 multiple computers or nodes can share and utilize information more effectively 32 00:02:35.063 --> 00:02:38.552 An IP address stands for Internet Protocol Address 33 00:02:38.553 --> 00:02:43.580 It is a unique identifier assigned to a node on a network 34 00:02:43.876 --> 00:02:50.440 There are two major types of IP addressing systems: IPv4 and IPv6 35 00:02:50.457 --> 00:02:56.362 IPv4 was the first Internet Protocol introduced in the early days of the Internet 36 00:02:56.363 --> 00:02:58.808 It uses a 32-bit addressing system, 37 00:02:59.106 --> 00:03:02.764 allowing for approximately 4.2 billion unique addresses 38 00:03:03.223 --> 00:03:09.157 However, due to the rapid increase in Internet usage, IPv4 addresses have become insufficient, 39 00:03:09.157 --> 00:03:11.486 leading to the development of IPv6 40 00:03:12.422 --> 00:03:17.901 IPv6 uses a 128-bit addressing system, 41 00:03:17.901 --> 00:03:23.842 which provides a lot of addresses, approximately 340 undecillion 42 00:03:24.496 --> 00:03:28.694 This massive address space, a nearly infinite number, 43 00:03:28.695 --> 00:03:32.437 allows IPv6 to accommodate the explosive growth of Internet-connected device 44 00:03:32.940 --> 00:03:39.627 IPv4’s advantage lies in its relatively simple structure, making it easy to configure, 45 00:03:39.628 --> 00:03:43.499 and the fact that it is widely supported by most websites and network environments 46 00:03:43.735 --> 00:03:48.526 However, a major drawback is its limited address space, 47 00:03:48.526 --> 00:03:51.209 which has already led to address shortages 48 00:03:51.704 --> 00:03:59.747 In contrast, IPv6 provides an almost unlimited address pool 49 00:03:59.748 --> 00:04:02.852 and supports the latest devices and protocols 50 00:04:03.355 --> 00:04:09.138 IPv6 has a more complex configuration process, increasing the likelihood of errors due to incorrect settings, 51 00:04:09.139 --> 00:04:11.749 and its long addresses make it difficult to memorize 52 00:04:12.454 --> 00:04:16.213 Additionally, some websites and network environments 53 00:04:16.214 --> 00:04:19.800 still do not fully support IPv6 54 00:04:20.002 --> 00:04:25.497 IP addresses are classified into 55 00:04:25.498 --> 00:04:28.973 static IPs, dynamic IPs, public IPs, and private IPs 56 00:04:29.214 --> 00:04:31.601 Let's look into each 57 00:04:32.000 --> 00:04:37.818 Static IPs remain fixed and do not change, 58 00:04:38.003 --> 00:04:40.542 offering stability and security, which makes them suitable 59 00:04:40.542 --> 00:04:45.000 for devices and servers requiring permanent addresses 60 00:04:45.216 --> 00:04:51.762 Dynamic IPs, on the other hand, change periodically 61 00:04:52.000 --> 00:04:57.760 and are mainly used for general internet users 62 00:04:57.761 --> 00:05:01.244 Since assigning a fixed IP to every user is impractical, 63 00:05:01.259 --> 00:05:05.126 dynamic IPs help optimize network resources 64 00:05:05.655 --> 00:05:11.952 Public IPs are unique and globally recognized, 65 00:05:11.973 --> 00:05:18.755 meaning they are assigned by ICANN, the international organization that manages IP allocations 66 00:05:18.928 --> 00:05:24.113 In South Korea, the Korea Internet & Security Agency, or KISA, oversees these IP blocks, 67 00:05:24.128 --> 00:05:32.448 which are then distributed to users by ISPs 68 00:05:32.959 --> 00:05:39.097 A public IP address allows direct communication with external networks 69 00:05:39.520 --> 00:05:45.000 A private IP address is used only within an internal network 70 00:05:45.301 --> 00:05:48.457 Typically, ISPs assign a public IP 71 00:05:48.458 --> 00:05:54.199 to a household or company network, and a router or network device 72 00:05:54.199 --> 00:06:00.071 then translates it into private IPs 73 00:06:00.072 --> 00:06:03.062 for internal use 74 00:06:03.368 --> 00:06:07.125 Private IP addresses are only accessible within their designated local network 75 00:06:07.126 --> 00:06:09.852 and cannot be reached from external networks 76 00:06:10.000 --> 00:06:13.173 They are used to efficiently manage network resources 77 00:06:13.174 --> 00:06:15.556 and enhance security 78 00:06:15.784 --> 00:06:22.267 In summary, a static IP provides a stable connection that does not change and offers high security 79 00:06:22.391 --> 00:06:28.048 A dynamic IP is mainly used for efficient network resource allocation, 80 00:06:28.049 --> 00:06:30.850 making it common for general users 81 00:06:31.213 --> 00:06:36.867 A public IP is globally unique and allows direct communication with external networks, 82 00:06:36.884 --> 00:06:40.047 whereas a private IP is used exclusively within internal networks, 83 00:06:40.047 --> 00:06:41.992 enhancing security by preventing direct external access 84 00:06:42.438 --> 00:06:45.684 Now, let’s take a look at ports 85 00:06:45.684 --> 00:06:51.410 A port is essentially a detailed address used by applications when sending and receiving data 86 00:06:51.552 --> 00:06:54.915 To make this easier to understand, let’s compare it to a delivery system 87 00:06:54.923 --> 00:07:01.000 When sending a package, you need a general address, such as a city and district, 88 00:07:01.343 --> 00:07:05.024 which corresponds to an IP address in networking 89 00:07:05.180 --> 00:07:10.447 However, you also need specific details like the apartment name, building number, and more 90 00:07:10.638 --> 00:07:13.210 This specific information is analogous to a port 91 00:07:13.397 --> 00:07:17.000 While an IP address identifies the location of a computer, 92 00:07:17.000 --> 00:07:22.215 a port specifies a particular application within that computer 93 00:07:22.500 --> 00:07:25.713 Port numbers are generally categorized into three types 94 00:07:25.843 --> 00:07:28.930 The first type is well-known ports, 95 00:07:28.931 --> 00:07:32.812 which range from 0 to 1023 96 00:07:33.000 --> 00:07:36.455 These ports are reserved for standard services 97 00:07:36.641 --> 00:07:40.615 For example, HTTP uses port 80, 98 00:07:40.616 --> 00:07:44.352 while HTTPS operates on port 443 99 00:07:44.479 --> 00:07:47.000 The second type is registered ports, 100 00:07:47.229 --> 00:07:52.667 which range from 1024 to 29151 101 00:07:52.668 --> 00:07:56.761 These ports are designated for specific applications and are officially registered for use 102 00:07:56.901 --> 00:08:05.246 The third category is dynamic ports, ranging from 29152 to 65535 103 00:08:05.498 --> 00:08:09.573 These ports are assigned dynamically and can be used freely as needed 104 00:08:09.707 --> 00:08:14.744 Now, let’s examine how data is transmitted over a network 105 00:08:14.899 --> 00:08:18.667 There are four primary methods of network data transmission 106 00:08:18.750 --> 00:08:23.063 The first is unicast, a one-to-one communication method 107 00:08:23.064 --> 00:08:27.014 used to send data directly to a specific recipient 108 00:08:27.238 --> 00:08:30.180 The second is broadcast, 109 00:08:30.298 --> 00:08:34.138 which is a one-to-all communication method 110 00:08:34.139 --> 00:08:37.139 that transmits data to all devices on a network 111 00:08:37.373 --> 00:08:41.664 This method is often used when the recipient’s exact address is unknown 112 00:08:41.684 --> 00:08:47.815 and is commonly employed during network device discovery processes 113 00:08:48.083 --> 00:08:52.780 The third is multicast, a one-to-group communication method 114 00:08:53.101 --> 00:08:58.236 that allows data to be transmitted simultaneously to multiple recipients within a specific group 115 00:08:58.596 --> 00:09:02.797 Lastly, anycast is also a one-to-one communication method, 116 00:09:02.797 --> 00:09:05.334 but it transmits data to the nearest recipient among multiple devices 117 00:09:05.335 --> 00:09:09.320 that share the same address 118 00:09:09.696 --> 00:09:13.981 In summary, ports serve as detailed addresses for data transmission, 119 00:09:13.981 --> 00:09:21.000 and network transmission methods are classified into unicast, broadcast, multicast, and anycast 120 00:09:21.318 --> 00:09:23.662 These concepts form the foundation of networking 121 00:09:23.663 --> 00:09:26.949 and are essential for various application services 122 00:09:27.076 --> 00:09:32.019 Having covered the necessary networking concepts required 123 00:09:32.020 --> 00:09:35.996 for using Perforce, nDisplay, Switchboard, and Multi-User collaboration, 124 00:09:35.996 --> 00:09:41.632 we will now move on to a practical session to explore Multi-User and Switchboard functionalities 125 00:09:41.769 --> 00:09:45.528 nDisplay and Collaboration Process Practical Exercise 126 00:09:46.448 --> 00:09:52.412 Now, based on what we’ve learned so far, let’s proceed with a practical exercise 127 00:09:53.402 --> 00:09:57.260 Let's start with the basics 128 00:09:58.343 --> 00:10:04.005 All NDC systems rely on multi-device setups, 129 00:10:04.006 --> 00:10:05.954 making data communication a key component 130 00:10:07.447 --> 00:10:10.907 First, we need to disable the Windows Defender firewall 131 00:10:15.964 --> 00:10:22.509 We will go into the firewall settings and turn it off 132 00:10:23.000 --> 00:10:28.254 Additionally, I will check the firewall status of the render nodes 133 00:10:29.166 --> 00:10:30.838 that I will be connecting to 134 00:10:33.289 --> 00:10:34.455 Yes, same 135 00:10:37.849 --> 00:10:38.971 It is disabled 136 00:10:40.271 --> 00:10:41.430 Now, 137 00:10:42.506 --> 00:10:44.458 just to recap, 138 00:10:44.824 --> 00:10:46.866 though we already saw this, 139 00:10:48.256 --> 00:10:54.956 let’s verify whether the IP address and connectivity of my render node are functioning correctly 140 00:11:02.098 --> 00:11:03.780 Now that we checked, 141 00:11:04.509 --> 00:11:09.804 let’s take a closer look at Switchboard 142 00:11:10.128 --> 00:11:13.279 So we're going to look at Switchboard 143 00:11:14.575 --> 00:11:18.468 Let me first explain briefly 144 00:11:19.723 --> 00:11:27.231 Switchboard is a plugin that enables centralized control of multiple devices 145 00:11:29.175 --> 00:11:32.175 It is primarily built using Python 146 00:11:33.115 --> 00:11:37.643 and to communicate with other devices, 147 00:11:37.644 --> 00:11:40.683 it works with Switchboard Listener, 148 00:11:41.231 --> 00:11:45.692 which is a C++-based program 149 00:11:46.528 --> 00:11:53.507 Switchboard is useful for various tasks such as Multi-User collaboration, nDisplay, and Take Recorder integration 150 00:11:53.656 --> 00:11:55.894 Now, let’s take a look at its interface 151 00:12:00.105 --> 00:12:06.870 Let’s start by launching Switchboard 152 00:12:09.405 --> 00:12:17.699 At the top of the interface, you can define Sequencer, Slate, and Take Name 153 00:12:18.637 --> 00:12:24.233 Just below that, you can add multiple devices 154 00:12:25.490 --> 00:12:31.537 Once added, the device names will appear in the lower section 155 00:12:32.992 --> 00:12:43.703 To the right, you can preview the Unreal Engine level that is currently being run through Switchboard 156 00:12:45.060 --> 00:12:49.462 Below that, there is an option labeled Project CL, 157 00:12:49.462 --> 00:12:54.096 which stands for Change List in Perforce 158 00:12:54.812 --> 00:12:57.515 This allows you to view previous change lists 159 00:12:57.515 --> 00:13:05.000 and switch between older and latest versions 160 00:13:08.214 --> 00:13:10.778 There are several important buttons available 161 00:13:13.441 --> 00:13:15.743 There is Refresh, 162 00:13:15.743 --> 00:13:17.481 Sync, 163 00:13:17.482 --> 00:13:20.358 Build, and Sync And Build 164 00:13:21.000 --> 00:13:24.328 Refresh updates source information 165 00:13:24.328 --> 00:13:28.774 Sync synchronizes all connected devices 166 00:13:28.775 --> 00:13:30.551 to the selected version 167 00:13:30.551 --> 00:13:35.114 Build compiles all connected devices 168 00:13:35.122 --> 00:13:39.692 Sync And Build performs both synchronization 169 00:13:39.692 --> 00:13:43.457 and compilation for all devices 170 00:13:43.468 --> 00:13:47.899 Let me now start from the far right 171 00:13:48.360 --> 00:13:53.793 The Listener Connection button turns blue 172 00:13:53.793 --> 00:13:58.212 when a successful connection is established 173 00:14:00.875 --> 00:14:08.577 Pressing the Start button will launch the associated devices 174 00:14:08.747 --> 00:14:14.697 Switchboard also displays device names, IP addresses, 175 00:14:14.699 --> 00:14:20.286 and allows easy modification of IP settings if a connection is lost 176 00:14:20.760 --> 00:14:23.839 Additionally, when pressing this, 177 00:14:23.840 --> 00:14:27.303 it provides an overview of change lists 178 00:14:28.226 --> 00:14:31.825 The Change List at the top refers to the server’s Change List, 179 00:14:32.053 --> 00:14:37.693 while the Change List displayed below pertains to the device’s Change List for synchronization 180 00:14:38.883 --> 00:14:47.829 This one determines whether the connected devices will automatically join a Multi-User session upon startup 181 00:14:49.096 --> 00:14:53.100 Let’s enlarge the Switchboard window to examine additional details 182 00:14:54.022 --> 00:14:59.095 At this point, nDisplay-related components have been connected and synchronized 183 00:14:59.690 --> 00:15:05.067 On the right side, we can monitor the overall status of the connected render nodes, including: 184 00:15:05.424 --> 00:15:07.721 Device names and IP addresses 185 00:15:08.286 --> 00:15:10.275 Graphics card versions 186 00:15:11.122 --> 00:15:14.273 The Presenter Board within Switchboard specifically displays these details when nDisplay is running 187 00:15:15.097 --> 00:15:16.700 It gives us the sync status 188 00:15:17.625 --> 00:15:21.938 and the color bit depth 189 00:15:21.938 --> 00:15:23.291 Sync status 190 00:15:24.029 --> 00:15:25.557 Mosaic mode 191 00:15:26.004 --> 00:15:28.998 Operating system version 192 00:15:29.506 --> 00:15:31.048 Also, CPU, 193 00:15:31.505 --> 00:15:34.966 memory, GPU utilization, 194 00:15:34.967 --> 00:15:36.983 and GPU temperature 195 00:15:37.989 --> 00:15:42.196 At the bottom, there is a log panel 196 00:15:42.197 --> 00:15:47.328 where all real-time operations are recorded 197 00:15:48.085 --> 00:15:51.454 This is the Multi-User Session name 198 00:15:52.022 --> 00:15:54.659 The Multi-User session name is crucial 199 00:15:55.787 --> 00:16:01.704 because it functions as a text-based identifier for establishing and maintaining connections 200 00:16:02.367 --> 00:16:05.420 Now, let’s proceed to open Unreal Engine 201 00:16:06.154 --> 00:16:07.984 Here it is 202 00:16:07.986 --> 00:16:11.112 The previously tested project 203 00:16:12.783 --> 00:16:14.344 from last class is loading, 204 00:16:15.112 --> 00:16:18.215 and we will check on the Switchboard plugin 205 00:16:18.215 --> 00:16:21.724 The Switchboard plugin is properly enabled 206 00:16:22.033 --> 00:16:28.653 Now, we will navigate to the Launch Switchboard option 207 00:16:28.941 --> 00:16:34.918 At the bottom of the interface, there is an option to launch the Switchboard Listener 208 00:16:36.035 --> 00:16:39.663 Entering the Project Settings, 209 00:16:40.644 --> 00:16:44.638 we can check the installation status of Switchboard 210 00:16:45.260 --> 00:16:47.619 Mine has already been installed 211 00:16:47.899 --> 00:16:52.541 If the installation is incomplete or an error occurs, 212 00:16:52.541 --> 00:16:58.432 reinstalling it can be done by clicking the Install button 213 00:16:59.321 --> 00:17:04.293 This process requires an internet connection, 214 00:17:04.810 --> 00:17:07.894 as it fetches necessary files online 215 00:17:08.460 --> 00:17:13.395 When the installation begins, Python-based setup 216 00:17:14.058 --> 00:17:17.021 is executed automatically 217 00:17:18.323 --> 00:17:25.346 After the installation is completed with a Finish message, we proceed 218 00:17:25.618 --> 00:17:28.567 In my case, I have set up my Windows system 219 00:17:29.224 --> 00:17:33.354 to launch the Switchboard Listener automatically upon startup 220 00:17:34.817 --> 00:17:37.402 Once Switchboard is running, 221 00:17:38.030 --> 00:17:42.395 it is essential to verify the correct path configurations before proceeding 222 00:17:44.870 --> 00:17:47.272 The Workspace Name can be found 223 00:17:47.720 --> 00:17:54.028 in P4V, specifically in the upper-left corner of the interface 224 00:17:54.028 --> 00:17:56.503 That's the Workspace Name 225 00:17:56.934 --> 00:18:00.136 The project exists locally 226 00:18:00.137 --> 00:18:02.485 but hasn’t been synchronized with the server 227 00:18:07.939 --> 00:18:12.629 It will appear as a blank white page icon, 228 00:18:15.458 --> 00:18:20.286 indicating that the Switchboard cannot operate properly due to unsynchronized data 229 00:18:22.290 --> 00:18:24.303 To resolve this, we return to Perforce 230 00:18:24.304 --> 00:18:28.230 and synchronize the project 231 00:18:29.139 --> 00:18:30.171 Here, 232 00:18:31.407 --> 00:18:34.017 try the Revision Control system 233 00:18:36.082 --> 00:18:37.697 We can enter like so, 234 00:18:39.456 --> 00:18:42.572 but since Perforce is not currently connected, the Revision Control system is inaccessible 235 00:18:43.597 --> 00:18:48.784 Let's recap on what we learned so far 236 00:18:49.542 --> 00:18:52.896 First go inside P4V 237 00:18:54.577 --> 00:19:00.823 Here, map the newly created Depot for integration 238 00:19:02.863 --> 00:19:05.443 We're almost in 239 00:19:09.000 --> 00:19:10.194 So here, 240 00:19:14.000 --> 00:19:19.701 the project folder I created is named ndc_test 241 00:19:20.543 --> 00:19:25.179 To ensure consistency, we will create a Depot with the same name 242 00:19:27.114 --> 00:19:31.337 This time, we will create the Depot locally 243 00:19:31.869 --> 00:19:38.939 Once created, we can find ndc_test list under the Depot List 244 00:19:39.957 --> 00:19:41.981 Now that the Depot has been set up, 245 00:19:42.355 --> 00:19:45.571 we will proceed with linking the Depot to a Workspace 246 00:19:45.572 --> 00:19:50.884 and uploading the Workspace Data 247 00:19:51.083 --> 00:19:55.427 This step is carried out within P4V 248 00:19:56.519 --> 00:19:58.113 Upon entering P4V, 249 00:19:59.441 --> 00:20:00.880 we need to map 250 00:20:00.880 --> 00:20:08.242 the newly created Depot for integration 251 00:20:08.242 --> 00:20:09.487 Check that, 252 00:20:10.519 --> 00:20:11.763 press apply 253 00:20:13.778 --> 00:20:15.288 OK 254 00:20:15.378 --> 00:20:17.512 Once the mapping is complete, 255 00:20:18.270 --> 00:20:20.146 just as we learned, 256 00:20:20.147 --> 00:20:25.866 we select only the necessary files, Config, Content, and UProject, for upload 257 00:20:25.866 --> 00:20:27.537 Clicking Add 258 00:20:27.544 --> 00:20:28.981 and then Submit 259 00:20:31.674 --> 00:20:33.444 starts the upload process 260 00:20:34.683 --> 00:20:36.714 Before finalizing, we enter a description 261 00:20:48.101 --> 00:20:51.266 To speed up this process, a 10GbE network is required 262 00:20:53.123 --> 00:20:58.331 Now, at check ndc_test, the upload has been successfully completed 263 00:20:59.059 --> 00:21:01.693 With this, the basic setup is complete 264 00:21:02.857 --> 00:21:08.719 To verify everything, we proceed to Revision Control and attempt to establish a connection 265 00:21:08.725 --> 00:21:12.264 We select Perforce, choose the appropriate Workspace, 266 00:21:12.265 --> 00:21:14.331 and initiate the connection 267 00:21:15.961 --> 00:21:17.865 Once the connection is established, 268 00:21:18.935 --> 00:21:24.101 we check for the confirmation message before launching Switchboard 269 00:21:26.397 --> 00:21:29.336 Next, we create a new configuration in Switchboard 270 00:21:29.695 --> 00:21:31.036 A new config 271 00:21:33.206 --> 00:21:36.563 Although we have checked this earlier, 272 00:21:36.564 --> 00:21:42.178 we once again verify that the configuration name as ndc_test_v1 273 00:21:43.545 --> 00:21:47.292 We also ensure that the UProject path is properly entered 274 00:21:49.817 --> 00:21:51.356 Yes, looks alright 275 00:21:51.601 --> 00:21:56.692 The next step is to confirm that 276 00:21:57.015 --> 00:22:00.175 the Engine installation directory is correctly specified 277 00:22:02.038 --> 00:22:03.681 Yes, that's a way to check it 278 00:22:07.321 --> 00:22:11.712 Next is the most important Perforce-related patch settings 279 00:22:14.511 --> 00:22:15.970 The patch path 280 00:22:17.323 --> 00:22:18.705 must match 281 00:22:22.219 --> 00:22:23.912 the depot name we just created, 282 00:22:23.912 --> 00:22:25.656 which is NDC_test 283 00:22:26.831 --> 00:22:32.092 So type in NDC_test here 284 00:22:32.742 --> 00:22:33.901 For the workspace name, 285 00:22:34.703 --> 00:22:38.466 as mentioned earlier, we can verify it in P4V, 286 00:22:39.548 --> 00:22:42.322 either in the upper-left corner or under workspace settings 287 00:22:42.757 --> 00:22:48.687 Once these details are correctly entered, we click OK to proceed 288 00:22:49.640 --> 00:22:56.348 With the connection, the Switchboard interface appears empty 289 00:22:56.770 --> 00:22:58.216 At this point, 290 00:22:59.318 --> 00:23:03.134 we begin by adding devices one by one and testing them 291 00:23:03.993 --> 00:23:07.793 First, we add an Unreal Engine device, 292 00:23:08.600 --> 00:23:12.327 starting with the local machine before registering remote devices 293 00:23:12.327 --> 00:23:15.123 Name the device main_10 294 00:23:15.124 --> 00:23:18.136 and I will enter my own IP address 295 00:23:18.355 --> 00:23:20.051 If we attempt to connect 296 00:23:22.707 --> 00:23:24.950 while the Listener is turned off, 297 00:23:25.949 --> 00:23:29.740 we encounter a Socket Error 298 00:23:31.852 --> 00:23:35.758 The system cannot establish a connection without an active Listener 299 00:23:36.650 --> 00:23:38.540 Let me restart the Listener 300 00:23:41.724 --> 00:23:44.783 Once the Listener is active, 301 00:23:47.850 --> 00:23:53.654 the device successfully connects, indicating that communication is properly established 302 00:23:57.708 --> 00:23:59.240 Turn Unreal Engine off 303 00:23:59.240 --> 00:24:00.373 Here, 304 00:24:03.269 --> 00:24:06.127 now we can remotely control this 305 00:24:07.789 --> 00:24:12.482 I disabled Auto-Join Multi-User Session 306 00:24:13.583 --> 00:24:15.865 So this is how it works 307 00:24:16.939 --> 00:24:22.812 The session can be closed by pressing X 308 00:24:25.610 --> 00:24:29.628 With this setup, multiple Unreal Engine machines 309 00:24:30.230 --> 00:24:31.724 can now be controlled simultaneously 310 00:24:33.126 --> 00:24:36.682 Next, let’s add another device 311 00:24:37.363 --> 00:24:40.144 The second device we will add is nDisplay, 312 00:24:40.144 --> 00:24:42.204 which requires loading a config file 313 00:24:42.637 --> 00:24:47.772 We will load the NDC config that was created in the previous session 314 00:24:48.605 --> 00:24:50.418 After navigating to the correct directory, 315 00:24:50.419 --> 00:24:52.795 we select the saved config file and, 316 00:24:53.883 --> 00:24:56.383 instead of clicking OK immediately, 317 00:24:56.383 --> 00:25:00.903 we first press the Propagator button to process the file 318 00:25:00.903 --> 00:25:03.611 Once this step is completed, we proceed by clicking OK 319 00:25:04.584 --> 00:25:06.955 This successfully adds nDisplay, 320 00:25:07.517 --> 00:25:12.945 and we can see the render node’s IP 321 00:25:13.503 --> 00:25:16.960 However, upon attempting to connect, an error appears 322 00:25:17.371 --> 00:25:20.816 It says that the change list 323 00:25:20.816 --> 00:25:23.534 is not being detected on the render node, 324 00:25:23.534 --> 00:25:27.173 even though the main machine is working correctly 325 00:25:27.675 --> 00:25:30.266 Let's solve this together 326 00:25:30.266 --> 00:25:37.036 Navigate to the Settings menu, where all core configurations are managed 327 00:25:37.738 --> 00:25:38.586 Within the settings, 328 00:25:40.752 --> 00:25:45.080 we access the nDisplay-specific configurations 329 00:25:45.704 --> 00:25:47.959 and check the workspace name 330 00:25:47.960 --> 00:25:50.531 The main machine is set 331 00:25:50.532 --> 00:25:52.262 to main_10, 332 00:25:53.047 --> 00:25:57.801 but the render node’s workspace has a different name 333 00:25:59.281 --> 00:26:01.811 To check, go under the VNC session 334 00:26:01.811 --> 00:26:03.233 Same thing here 335 00:26:05.338 --> 00:26:09.363 We can check it with P4V 336 00:26:18.755 --> 00:26:23.450 The left top corner of P4V confirms 337 00:26:24.000 --> 00:26:27.536 that the render node’s workspace name is render_20 338 00:26:27.850 --> 00:26:33.086 After inputting the correct workspace name and attempting to reconnect, 339 00:26:33.382 --> 00:26:35.094 the error still persists 340 00:26:35.712 --> 00:26:40.412 This suggests an additional issue 341 00:26:43.690 --> 00:26:46.178 Now, while Switchboard settings are correct, 342 00:26:46.178 --> 00:26:48.771 we forgot to do one thing 343 00:26:50.010 --> 00:26:56.613 It is that the render machine has not yet received the project files 344 00:26:57.172 --> 00:26:58.078 Here, 345 00:26:59.094 --> 00:27:00.409 it is at depot, 346 00:27:00.749 --> 00:27:04.684 but not in Workspace under Render Node 347 00:27:06.000 --> 00:27:08.385 So we need to connect it gain 348 00:27:08.475 --> 00:27:13.069 by mapping the depot correctly, 349 00:27:18.826 --> 00:27:22.582 click on the target depot, 350 00:27:25.650 --> 00:27:27.410 and initiate synchronization 351 00:27:28.753 --> 00:27:31.787 Since the project is relatively small, the sync completes quickly 352 00:27:35.196 --> 00:27:38.913 Now, both the main machine 353 00:27:38.914 --> 00:27:42.813 and the render machine contain the same files 354 00:27:43.564 --> 00:27:47.133 We see that the nDisplay monitor successfully loads all render machine settings 355 00:27:49.464 --> 00:27:53.195 Once the connection is established, the nDisplay monitor 356 00:27:53.195 --> 00:28:00.185 will correctly display all settings related to the render machine 357 00:28:00.509 --> 00:28:02.479 Entering the Settings menu, 358 00:28:05.079 --> 00:28:07.957 we need to adjust a few key configurations 359 00:28:09.746 --> 00:28:11.320 First, in the Multi-User Server settings, 360 00:28:13.142 --> 00:28:17.167 we have the server name matches the system device name 361 00:28:18.385 --> 00:28:23.175 Below that, in the Multi-User Server section, there are a few settings that need to be modified 362 00:28:23.735 --> 00:28:27.215 First, the Server Name 363 00:28:29.390 --> 00:28:32.815 must match the system device name of the machine 364 00:28:35.630 --> 00:28:43.360 Next, we disable Auto-Launcher and UI Mode 365 00:28:47.633 --> 00:28:49.669 Then, in the nDisplay settings, 366 00:28:50.338 --> 00:28:54.386 we enter the Unicast Endpoint 367 00:28:55.607 --> 00:28:58.069 Although we haven’t entered the LiveLink Preset yet, 368 00:28:58.070 --> 00:29:00.007 this setting will be required later 369 00:29:00.615 --> 00:29:04.854 when incorporating tracking data for real-time synchronization 370 00:29:05.736 --> 00:29:07.162 Let's reset 371 00:29:11.470 --> 00:29:15.041 Now, instead of setting up nDisplay, 372 00:29:15.879 --> 00:29:19.548 we will add each machine as an Unreal Device individually 373 00:29:20.433 --> 00:29:22.370 However, an error occurs again 374 00:29:22.376 --> 00:29:23.719 Go into Settings 375 00:29:24.915 --> 00:29:27.459 and modify the Workspace Name 376 00:29:30.737 --> 00:29:34.722 to render_20 377 00:29:36.029 --> 00:29:39.782 Enter the Unicast Endpoint as well 378 00:29:42.125 --> 00:29:44.536 Let's connect again 379 00:29:45.202 --> 00:29:46.664 Yes, it works alright 380 00:29:49.018 --> 00:29:53.089 Now, let’s take a look at Multi-User functionality 381 00:29:54.896 --> 00:29:59.166 First, we enter a Session Name 382 00:29:59.168 --> 00:30:01.259 and enable Auto Join 383 00:30:01.424 --> 00:30:02.588 Once this is set, 384 00:30:03.018 --> 00:30:08.212 clicking the Start button will launch the Multi-User Server 385 00:30:08.703 --> 00:30:10.208 At this point, 386 00:30:10.334 --> 00:30:13.420 the server is up and running, 387 00:30:13.421 --> 00:30:16.049 and the session name we just entered 388 00:30:16.049 --> 00:30:19.143 allows two computers to connect 389 00:30:19.671 --> 00:30:22.166 Above the Auto Join option, 390 00:30:22.166 --> 00:30:26.172 we can see the Multi-User Server 391 00:30:26.172 --> 00:30:28.677 and the assigned IP address for the session 392 00:30:28.973 --> 00:30:32.962 Multi-User functionality enables 393 00:30:33.230 --> 00:30:36.210 simultaneous collaboration 394 00:30:36.210 --> 00:30:40.979 on level design across multiple machines 395 00:30:41.124 --> 00:30:43.653 Now, we proceed to launch the Unreal Project 396 00:30:44.163 --> 00:30:47.953 The current view shows the main computer 397 00:30:48.659 --> 00:30:50.923 When we open the Multi-User Browser, 398 00:30:51.711 --> 00:30:57.784 we can confirm that both the main computer and the render machine have successfully joined the same server 399 00:30:58.466 --> 00:31:02.978 Next, let’s explore how this works 400 00:31:05.119 --> 00:31:07.664 by splitting the screen, the main computer on the left 401 00:31:07.665 --> 00:31:12.185 nd the render machine on the right 402 00:31:18.430 --> 00:31:20.734 Both are running the same project, 403 00:31:25.780 --> 00:31:28.831 but there might be a slight delay 404 00:31:29.778 --> 00:31:32.259 since the render machine is connected remotely 405 00:31:33.572 --> 00:31:35.932 Now, let’s move the main machine to the left 406 00:31:36.819 --> 00:31:39.497 and the render machine to the right 407 00:31:40.152 --> 00:31:43.574 We’ll test this by moving an actor within the scene 408 00:31:45.164 --> 00:31:48.615 When we move the NDisplay, 409 00:31:49.291 --> 00:31:52.466 we can see that the render machine on the right, 410 00:31:52.466 --> 00:31:56.870 which is a separate computer, reflects these movements in real time 411 00:31:57.544 --> 00:32:00.367 This real-time synchronization is 412 00:32:02.370 --> 00:32:05.705 the key advantage of Multi-User Editing 413 00:32:07.277 --> 00:32:09.342 The camera moves smoothly, 414 00:32:10.161 --> 00:32:12.544 and if we check the history log, 415 00:32:12.545 --> 00:32:14.385 we can see a record of every action taken, 416 00:32:15.585 --> 00:32:16.698 including which client 417 00:32:18.336 --> 00:32:20.256 moved which object 418 00:32:20.257 --> 00:32:23.402 at what time, all recorded like so 419 00:32:27.000 --> 00:32:31.000 Now, let’s test this from the render machine side 420 00:32:32.220 --> 00:32:37.800 Moving an object from the render machine updates the main machine in real time 421 00:32:38.700 --> 00:32:42.680 This feature not only enables multi-user editing 422 00:32:42.681 --> 00:32:44.101 but also integrates seamlessly 423 00:32:45.362 --> 00:32:49.902 with NDC, supporting various functions 424 00:32:50.842 --> 00:32:54.960 Since we entered the session name earlier, we can confirm that both machines 425 00:32:56.088 --> 00:32:57.628 have connected to the correct session 426 00:32:58.104 --> 00:32:59.864 Now, let’s disconnect from the main machine 427 00:33:02.000 --> 00:33:02.840 Here, 428 00:33:04.358 --> 00:33:07.538 moving objects 429 00:33:07.539 --> 00:33:09.380 no longer updates across machines, 430 00:33:09.580 --> 00:33:11.260 confirming that the synchronization stops when leaving the server 431 00:33:12.240 --> 00:33:15.240 If we scroll down, 432 00:33:16.758 --> 00:33:19.608 we can still see the created session, 433 00:33:20.847 --> 00:33:25.397 which can be rejoined at any time by clicking on it 434 00:33:32.500 --> 00:33:35.500 At this point, we will exit the session 435 00:33:36.180 --> 00:33:38.140 What I've just demonstrated 436 00:33:38.608 --> 00:33:40.288 is how multiple Unreal devices 437 00:33:41.178 --> 00:33:44.658 collaborate in a multi-user editing environment 438 00:33:45.000 --> 00:33:48.240 Next, we’ll show how one machine acts as the main operator, 439 00:33:48.241 --> 00:33:55.501 while the other functions as an NDisplay device 440 00:33:56.060 --> 00:33:58.460 The concept remains identical 441 00:33:59.220 --> 00:34:02.080 We enter a session name 442 00:34:02.081 --> 00:34:05.641 and start the server 443 00:34:06.161 --> 00:34:09.736 Once this runs, we can see that 444 00:34:09.737 --> 00:34:11.717 the NDisplay monitor on the right 445 00:34:12.548 --> 00:34:15.508 will display a separate status panel 446 00:34:18.148 --> 00:34:19.020 Here 447 00:34:20.244 --> 00:34:23.004 First, the percent mode updates correctly, 448 00:34:23.005 --> 00:34:25.619 indicating proper operation 449 00:34:26.220 --> 00:34:27.420 Moving to the right, 450 00:34:28.083 --> 00:34:32.843 we can also monitor GPU usage in real time 451 00:34:34.735 --> 00:34:38.020 Returning to the main operating computer, 452 00:34:38.021 --> 00:34:41.061 we can confirm that it reflects the same data 453 00:34:41.941 --> 00:34:43.820 At render machine, 454 00:34:46.480 --> 00:34:48.540 hold on, let the change the screen size 455 00:34:50.620 --> 00:34:55.180 So this is the final image output being displayed 456 00:34:55.760 --> 00:35:03.051 This image represents what would be projected onto an LED wall 457 00:35:05.304 --> 00:35:07.268 While we are currently viewing this on a monitor, 458 00:35:07.787 --> 00:35:13.447 think of this as the final output being displayed on an LED screen 459 00:35:14.740 --> 00:35:15.720 Here, 460 00:35:18.128 --> 00:35:20.468 I just moved the ball and it disappeared 461 00:35:20.640 --> 00:35:22.320 Switching to a split-screen view, 462 00:35:24.204 --> 00:35:25.944 we can see that NDisplay movements 463 00:35:27.525 --> 00:35:29.645 and actor adjustments 464 00:35:30.565 --> 00:35:36.040 all synchronize in real time 465 00:35:36.140 --> 00:35:38.520 This ensures that camera tracking movements 466 00:35:38.521 --> 00:35:41.261 are applied to all render machines simultaneously 467 00:35:41.760 --> 00:35:43.660 If we modify lighting, 468 00:35:44.497 --> 00:35:47.897 add actors, or make other adjustments, 469 00:35:48.358 --> 00:35:53.298 all changes are instantly reflected across all render machines 470 00:35:54.480 --> 00:35:57.600 This real-time ICVFX functionality 471 00:35:58.684 --> 00:36:00.804 is a crucial aspect of the system 472 00:36:01.860 --> 00:36:02.960 Let's exit 473 00:36:06.880 --> 00:36:08.640 Next up, let's try this 474 00:36:08.944 --> 00:36:13.660 we’ll add Live Link, 475 00:36:13.660 --> 00:36:16.400 though we don’t have an active source at the moment 476 00:36:16.401 --> 00:36:20.081 But we can at least test this 477 00:36:20.701 --> 00:36:24.140 We can see that it’s receiving data but not displaying anything, 478 00:36:24.140 --> 00:36:27.180 as no external camera tracking data is currently available 479 00:36:27.960 --> 00:36:31.600 Live Link always requires a preset, 480 00:36:31.820 --> 00:36:36.240 which we typically store in the VP folder under the Live Link directory 481 00:36:40.820 --> 00:36:43.820 We create a separate preset like this, 482 00:36:44.680 --> 00:36:49.520 and if we assume this to be a camera tracking source, 483 00:36:49.521 --> 00:36:51.361 to the camera actor, 484 00:36:57.340 --> 00:37:02.820 we would apply Live Link Control 485 00:37:02.820 --> 00:37:08.480 Here, we assign it the correct tracking data source 486 00:37:08.480 --> 00:37:11.760 Since no data is being received at the moment, nothing appears, 487 00:37:12.120 --> 00:37:13.960 but this is how it would be set up 488 00:37:15.088 --> 00:37:18.668 Additionally, under Project Settings, 489 00:37:20.378 --> 00:37:22.258 we have the Live Link tab 490 00:37:22.258 --> 00:37:28.320 and we can configure the default Live Link preset 491 00:37:28.580 --> 00:37:31.340 We will now add this preset to the project settings 492 00:37:31.880 --> 00:37:39.280 By adding this, the project will automatically load the correct Live Link preset each time it runs 493 00:37:39.880 --> 00:37:43.700 Next, we proceed with checkout 494 00:37:44.812 --> 00:37:47.492 and then submit the changes 495 00:37:52.004 --> 00:37:53.244 Once this is done, 496 00:37:55.451 --> 00:37:57.631 return to Switchboard, 497 00:38:03.668 --> 00:38:07.464 and we can see that the Change List has been updated 498 00:38:07.852 --> 00:38:13.360 For the NDisplay nodes, we must configure them to load the same Live Link preset 499 00:38:13.760 --> 00:38:16.300 I just set this part up 500 00:38:16.301 --> 00:38:19.330 This setting can be found 501 00:38:20.000 --> 00:38:22.400 under NDisplay settings 502 00:38:22.400 --> 00:38:24.012 Come down a little 503 00:38:24.904 --> 00:38:27.060 When launching this node, 504 00:38:27.060 --> 00:38:30.444 you can specify which Live Link preset to load 505 00:38:30.444 --> 00:38:32.704 Here, select this 506 00:38:32.705 --> 00:38:37.905 and the preset that we created earlier for camera tracking 507 00:38:39.312 --> 00:38:40.920 Once you select it, 508 00:38:41.796 --> 00:38:43.256 you can run the system, 509 00:38:45.000 --> 00:38:50.620 and the preset I have made should load correctly 510 00:38:52.396 --> 00:38:54.576 The most crucial aspect of all this is 511 00:38:54.577 --> 00:38:58.797 ensuring that all controls and settings on my main computer 512 00:38:58.798 --> 00:39:05.611 are correctly and consistently applied to the render nodes 513 00:39:05.904 --> 00:39:09.540 Up to this point, we have covered the overall concepts 514 00:39:09.541 --> 00:39:12.381 and practical exercises for utilizing nDisplay in ICVFX 515 00:39:12.981 --> 00:39:17.600 As you go through hands-on exercises, you may encounter various errors and bugs 516 00:39:18.140 --> 00:39:23.000 However, troubleshooting and resolving these issues one by one will deepen your overall understanding of the system 517 00:39:23.720 --> 00:39:27.300 Now, let’s summarize what we’ve learned in this session 518 00:39:27.880 --> 00:39:28.880 Thank you 519 00:39:30.199 --> 00:39:31.199 Basic Networking for Multi-User and Switchboard Utilization Network: communication structure with interconnected nodes Nodes: computers, smartphones.. 520 00:39:31.200 --> 00:39:32.200 Communication: The exchange of data between nodes Protocol: A set of rules used for data communication Link: A physical communication path 521 00:39:32.201 --> 00:39:33.201 Packet: A small unit of divided data IP Address: A unique identifier assigned to nodes within a network 522 00:39:33.202 --> 00:39:34.202 IPv4 A 32-bit addressing system: 4.2 billion unique addresses Simple structure and easy configuration 523 00:39:34.203 --> 00:39:35.203 Due to the rapid increase in internet usage, address shortages have become a major issue 524 00:39:35.204 --> 00:39:36.204 IPv6 128-bit addressing system: 340 undecillion addresses Supports modern devices and protocols, Complex and likely to have errors 525 00:39:36.205 --> 00:39:37.205 Static IP: Fixed, secure, and stable Dynamic IP: Changes as needed for efficient resource use 526 00:39:37.205 --> 00:39:39.985 Public IP: Globally unique, allowing direct external communication Private IP: Used within internal networks for security 527 00:39:39.985 --> 00:39:40.966 Ports A specific address for data transmission in applications Well-Known Ports (0–1023): Reserved for standard services HTTP: 80, HTTPS: 443 528 00:39:40.966 --> 00:39:41.987 Registered Ports (1024–49151): Assigned to applications Dynamic Ports (49152–65535): Used flexibly 529 00:39:41.987 --> 00:39:43.128 Network Transmission Methods Unicast: One-to-one communication Broadcast: One-to-all transmission 530 00:39:43.128 --> 00:39:44.989 Multicast: One-to-group transmission Anycast: One-to-nearest communication within a group 531 00:39:44.989 --> 00:39:45.890 NDisplay & Multi-User Setup Switchboard Controls multiple remote devices in Unreal Engine Works with Switchboard Listener 532 00:39:45.891 --> 00:39:46.891 Switchboard Listener: C++ app for Multi-User, NDisplay, and Take Recorder 533 00:39:46.892 --> 00:39:47.892 Launch Switchboard & Verify Listener Perforce Configuration Create a Depot (NDC_test) 534 00:39:47.893 --> 00:39:48.794 Link and upload workspace data in P4V Map NDC_test_uproject to NDC_test_Depot 535 00:39:48.794 --> 00:39:49.394 Upload Config, Content, and UProject Submit, Changelist Description, Submit 536 00:39:49.394 --> 00:39:49.955 Revision Control, Set provider to Perforce Assign workspace main_10 537 00:39:49.955 --> 00:39:50.775 Create Config File Name: NDC_test_v1 Input correct Unreal Engine installation path Ensure Depot name matches Perforce settings 538 00:39:50.776 --> 00:39:51.776 Ensure project patch matches the Depot name Workspace name must match the name displayed in P4V’s top-left corner 539 00:39:51.777 --> 00:39:52.777 Adding Devices Unreal Device Add device → Select Unreal Device Register main PC as main_10 Enter current IP address 540 00:39:52.778 --> 00:39:53.459 NDisplay Add device → Select NDisplay Load test_NDisplayConfig.uasset Click Populate, then confirm with OK 541 00:39:53.459 --> 00:39:54.259 Render Node Configuration Change workspace name to render_20 Edit workspace settings to map render_20 to NDC_test 542 00:39:54.259 --> 00:39:54.847 Click Sync on NDC_test Depot 543 00:39:54.847 --> 00:39:55.785 Multi-User Session Set session name as test1 Enable Auto-Join Split screen: Main on left, Render on right Verify real-time sync between the two 544 00:39:55.786 --> 00:39:56.786 Live Link Setup Create Live Link Preset Inside Content → 0_vp → Live Link, create CameraTracking_LiveLinkPreset 545 00:39:56.786 --> 00:39:58.246 Go to Edit → Project Settings → Live Link Set default Live Link Preset to CameraTracking_LiveLinkPreset 546 00:39:58.246 --> 00:39:59.807 Check-out → Submit Update Changelist Assign CameraTracking_LiveLinkPreset in NDisplay settings