
Launch Unreal Engine 5, set up a blank blueprint project, keep defaults, specify your project location and name, then create to begin this chapter.
Navigate the Unreal Editor by switching to the UE4 classic layout via window > load layout, or stick with the UE5 default to follow the course with ease.
Open the Unreal editor, turn off real time, create an empty level via file > new level, then save by creating a _map folder in the Content Browser named map_1.
Create blueprint folders for game mode and pawn, build BP_game_mode_base and BP_pawn_empty, assign Pawn Empty as the default pawn in the game mode, then compile and save.
Set the default game mode to your Game Mode Base and map one as the editor startup and game default map, then disable engine content, auto exposure, and texture streaming.
Import the Smfb mesh into Unreal Engine, create a folder named underscore geo, disable generate missing collision in FBX options, skip creating materials, and ensure collision meshes support physics.
Create a bp cylinder blueprint actor, add two static meshes (base and tube), assign materials, and drive vertical translation based on distance in the initial setup.
Use a physics constraint to anchor a 0.1 base mesh, set collision to query-only no physics collision and hidden, then enable simulate physics on the base mesh and assign components.
Set up the level in Unreal Engine 5, place and scale the puck, and apply materials. Run a simulation to test physics constraint and observe the puck return after release.
Rename cylinder components to PC anchor and drive tube z movement from world location calculations. Clamp distance 0–125 and map to tube mesh z, with a dead zone for stability.
Refactor BP cylinder by modularizing rotation toward the origin with pure functions, cleaning the node graph, and creating reusable components like get bass anchor vector and set center tube height.
Compute the tube rotation from the base-to-anchor vector with make rot from X, apply the Z rotation to the tube mesh, and visualize the result in the viewport.
Create a master decal material for Unreal Engine 5, using a texture as opacity, convert color and texture into parameters, and adjust the decal transform and simulate for final alignment.
Glow the decal by adding an emission parameter to the decal master material and driving it with a dynamic material instance based on distance from the center.
Unreal Engine 5 demonstrates faking a line between base and anchor by scaling a plane along x and rotating toward the base using the anchor-base vector, all in a blueprint.
Normalize the input vector to derive a z-axis rotation, apply a world rotator to BP_Cylinder's line z rotation, then test and invert the vector for accurate puck movement in simulation.
Block event tick executions when the base mesh rests, boosting performance. Collapse functions into a set scale rotation, apply a dead zone, and prototype grid-based procedural spawning.
Build a BP grid spawner in Unreal Engine 5 using two nested for loops in the construction script to visualize a ten by ten grid with a placeholder mesh.
Center a grid of spawned actors in unreal engine 5 using max X/Y and spacing math in BP_GridSpawner - Center Offset blueprint. Adjust grid size and FOV for 1:1 aspect.
Spawn cylinders at runtime by iterating the grid spawner, use world transform to spawn bp cylinder actors with ignore collisions, then destroy placeholders and test.
Scale floor to 15x15 with non-uniform Z, adjust camera, run simulation, and fix decal visibility by zeroing fade size in BP cylinder and decal rotation.
Apply the base material to the static mesh in the grid spawner's construction script, switch to an eight by eight grid, adjust the camera to 700–750 units, and save map.
Use v interp two for vectors to smooth positions in BP_MyLevel, using delta time, an interp speed of ten, and blueprint steps to compile, save, and run the map.
Adjust BP_Cylinder parameters by tweaking the dead zone and center tube height, and refine the emission to a 0 to 4 output range, then compile and save.
Set up four 10 by 10 planes to create bounce surfaces for improved lumen global illumination, then tune directional light and add a movable skylight with a cube map.
Create a colored frame border in Unreal Engine 5 using a decal, a master decal material instance, and a rect hollow texture mask with a blue tint.
Create a custom cursor in Unreal Engine 5 by building a UI widget with 32 by 32 image, animating opacity and scale on left-click, and set it in project settings.
Enable two keyboard events in the bp my level blueprint to execute when paused, including escape, so they trigger during pause and speed shader compilation on standalone runs.
Adjust lighting in Unreal Engine 5 by rotating sun to 230 in z, applying floor material to mesh, boosting intensity to 0.9, and setting specular y to -55, then save.
Run the standalone game to enter full screen and cap the frame rate at 60 fps as shader compilation starts; press p to pause, then unpause when shaders finish compiling.
Unreal Engine 5: create a physics material override for BP cylinder base mesh, set friction to near zero, and apply it to prevent pieces from binding up in real-time physics.
Enable the OSC plugin, create a BP_OSC actor, bind on message received, convert the message address to a string, and test via print to receive mobile inputs.
Configure an OSC input mode by exposing a boolean OSCE mode (false) to switch between mouse input and OSC touch mode, and spawn BP OSC actor to test OSC server.
Compare ZigSim and touchOSC for OSC control in Unreal Engine 5. Use the XG app, enable 2D touch, and configure UDP IP, port, and OSC at 60 messages per second.
Enable listening and OSC mode, then compile and save; run in viewport and connect a mobile device to a hotspot to view touch zero coordinates (-1 to 1) and touch count.
Extract zigsim values in Unreal Engine 5 via osc by splitting the string, parsing touch count and touch zero, and triggering touch down/up events in bpm level.
Apply osc values to move the puck in unreal engine 5, using bp_myLevel. Learn to choose between osc and mouse input and scale -1 to 1 to puck bounds.
Resolve ZigSim issues by testing with a hotspot, saving the map, and inverting values; compare touch-based input for accurate location tracking in real-time OSC-driven interactive art.
Configure TouchOSC on iOS as a standalone app, save a named document, set an 800 by 800 canvas, and enable OSC over UDP with IP and ports.
In this course, you will learn how to code interactive art with real-time physics in Unreal Engine 5. This is a creative coding course, where you learn to create programs that animate for you, rather than you manually creating keyframes in a traditional sense of 3D animation.
This 2 hr 45 min course, is packed with code snippets, techniques and workflows that I've acquired creating interactive art and multimedia installations in the field. Here are just a few lists of thing you'll do:
Configuring a Unreal Engine project for interactive art (disabling GameDev features).
Creating 'plugin' like functions that can be reused and repurposed in later projects.
Using vector math to achieve several procedural FX and animations.
Linking a mobile device through OSC (Open Sound Control) to create an immersive experience.
Optimization of the UE5 physics system to increase performance and computational stress.
As an artist or designer, it's not easy to dive into programming and Unreal Engine can be quite overwhelming. However, like everything with repetition and many practical projects you'll soon realize that it is not too difficult and more of an issue of time.
For programmers wanting to create more aesthetically pleasing work in Unreal Engine. This course will allow you to see through the lens of an artist and how to think differently if you are more used to creating programs for traditional GameDev contexts.