I joined an artstation challenge on level design - this is what I learned
I had two months to produce a cyberpunk level. This is what I came up with.
This blog post focuses on the lessons learned, in terms of the technical production requirements of level design. The more “official” release you can find on my artstation.
The F.U.N. Part
I wrote a story. I came up with a crime scene including breaked glasses and a chalk drawing on the floor that hints at a murder case, surrounded by abspector tape, with clues in the level that tell the corresponding backstory. It’s about a J-pop producer named Tagoma-san who had a feud with the Yakuza. The idea of a handwritten letter hidden in the level that triggers a quest-started event when picked up isn’t really cyberpunk, so the next plot gadgets will be a touch more digital. Unfortunately I did the voice acting myself.
Texturing partially eliminates modeling
Part of the 3D modeling can be outsourced to the texturing. As seen here in the example of the bench:
On the outside of the “smooth” bench you don’t see any indentations of the wood pattern. They are created by the normals of the texture, as seen on the textured bench . If an outline shader is used, a Flatten Normal node with negative values can be used to increase the height of the normals until the outline shader recognizes them as real edges and outlines them accordingly.
The Pivot
Here is a convenient method to place the pivot (In Blender, start in edit-mode):
- Select Vertex
- CTRL+S
- Cursor to Selected
- Switch to Object mode and select object
- CTRL+.
- CTRL+S
- Selection to Cursor
- CTRL+.
With Hotkeys:
- Select Vertex
- CTRL+S
- Numpad 2
- Tab
- CTRL+.
- CTRL+S
- Numpad 7
- CTRL+.
Alternatively:
- Select the vertex / edge / face. SHIFT+S -> Cursors to selected
- In object mode, select the object, Object -> Origin to 3D cursor
Placing the asset to the world origin prior to export is not mandatory. Unreal’s “Bake Pivot in Vertex” ignores the world-positioning of the asset in Blender anyway.
Performance
If you are modeling in Blender, use Decimate modifiers on your meshes, set the modifiers to Collapse and turn them down to just before the level at which visual deformations occur. You don’t need to apply the modifiers, because:
Non-destructive modeling is the way to go. Apply modifiers as late as possible.
Consider LODs too. To see LODs in action, click on “Lit” at the top-left of the viewport and select “Level of Detail Coloration” -> Mesh LOD Coloration.
Gray assets represent LOD 0, the original. Red assets represent LOD 1, a slightly downscaled version. Green assets represent LOD 2, an even further downscaled version. It is not only the distance to the asset that is important, but also the percentage of the screen that the asset occupies in the player’s viewport. Therefore, larger assets should be given smaller screen sizes. In other words, the larger an asset, the farther the player must be from it before the next LOD is triggered. But other variables must also be considered: How prominently an asset is placed in the level, how many material IDs are present, what role the asset plays in gameplay, and how many instances of the asset exist in the level, among other considerations that are easy to learn and difficult to master.
Here is a youtube video of CBgameDev explaining LOD copypasting.
Mesh Splines
Power cables and power lines are best implemented using mesh splines. Check out this tutorial from Ryan Laley creating mesh splines in the Unreal Engine.
A disadvantage of mesh splines — at least in this design — is their non-physicality. Therefore, curvatures of horizontally hanging splines must be added manually (think: power pole wires running along country roads). An alternative approach is to run physics simulations within the 3D modeling software and “drop” the cable.
A decent import-export Logistic saves a lot of Time
export-import optimizations are critical, from Substance 3D and Blender downstreaming to the Game Engine. Because some textures need further calibration in the game engine, it remains an open question of one’s workflow how much of the texture logic one wants to keep in the game engine, and what part of the logic one outsources to engine-external software. I’m sure a finely balanced workflow plus some scripting in the spool directory will significantly speed up production.
Some of my material, like this ice, I created in the Unreal Engine.
Niagara
I still can’t get the hang on Unreal’s Niagara system. It takes patience to recompile every adjustment to the parameters and wait for the animation. When I programmed the swarms of fishes using Niagara, I felt like a DJ in slow motion.
If you want to develop better fish shoals, you’re in good hands with Nina Klos. She is a Technical Artist at Sumo Digital and specializes in fish. Here she is on Artstation.
Conclusion
The Neo Tokyo Challenge ran from August 08 to October 30 2023. I joined on September 05. Many thanks to Lucy Zieniuk for her concept, which I used as a basis for producing the level. Also many thanks to the organizers Javier Perez and Karen Stanley for giving me valuable feedback.
Tbh I am not quite happy with the level I made. The lighting does not create atmosphere, and the aquarium surrounding the level does not look convincing. At least this is my fierce judgement about the work I made.
I learned many things about 3D modeling, but also about UE5-blueprints and performance-optimization. I know since my early Half-Life days, that a decent videogame-level incorporates dynamic content, like interactive doors that open and close when players approach them or platforms that start to move when a certain event got triggered. My goal during this Artstation challenge was to improve at this.
If you’re planning to attend an Artstation challenge too: Do it! It’s a great chance to learn and to improve. You have nothing to lose.