Saturday, December 30, 2017

Postcards from Unreal, pt 2


My Unreal Tournament 4 deathmatch map "Pilsner" isn't really done. But as an exploratory project, I've fulfilled my goals to learn the basics of building 3D spaces in Unreal. I also reached the point where I needed an actual player base to confirm how the map plays, or at least tell me that it's total shit -- but it looks like I can't even get a denunciation when Unreal Tournament 4 seems to have a grand total of like 5 players!

I appreciate all the pre-configured art content and basic gameplay structures implemented in the game already, and it has been really helpful for me to learn how to configure my assets and work in Unreal projects -- but this experience has also convinced me that I shouldn't try to teach level design to my students with this half-finished basically-dead game.

It was also questionable how well this was going to run on our students' laptops, because half of them use Macbooks with small hard drives, and very little room for a Windows partition and an additional 50 GB for UT4 and the UT4 editor. This leads me to one of the original reasons why we stopped running a level design course: there are simply no popular first person multiplayer games with modern level editor suites that were easily deployable on our students' computers. (Given how long it takes to make games, computer labs are impractical.)


It seems that there's currently no popular "bread and butter" type of multiplayer shooter with an accessible level editor, anywhere in the industry. UT4 is dead; Quake Champions is struggling; Source Engine games like Team Fortress 2 and Counter-Strike: Global Offensive both still enjoy fairly active player bases and level design communities but present other problems with teaching -- TF2 maps require high player counts and CS:GO has a steep learning curve. There's also the problem with learning how to debug BSP leaks, which is mostly an arcane practice that isn't relevant to modern game development or level design anymore.

Unity / Unreal have drastically changed how people make games, but level design hasn't really changed in the last 10 years. Some cross-platform engine-agnostic editors like Sledge and TrenchBroom serve their communities well, but they're still very much rooted in their respective Goldsource / Quake histories. (The Russian CS map community even made their own Hammer replacement, "J.A.C.K")

I wish there was a free open-source cross-platform cross-engine 3D editor equivalent of Tiled that let you model / texture / export simple world geometry to OBJ / FBX, and/or setup simple entity bindings for specific engines... but that will continue to be my wish.


If multiplayer shooters can't act as the bread and butter of teaching level design, then I guess that means I'm turning to single player. This pivot requires a new technical strategy. Right now my plans for teaching level design fundamentals are looking more like:
  • use the stock Unreal Engine 4 editor (with blank project template, no starter content)
  • give students a package of basic modular static meshes (in 100uu / 500uu tile sizes)
  • teach them how to make their own basic first person controller Pawn using Blueprints
  • focus on generalist mechanics of walking and looking (don't lean on shooter-specific topics like ammo placement, cover, etc)
  • let them make their own simple local multiplayer splitscreen games (but avoid teaching networking / replication / UI, which should not be the focus of a level design course)
There's a very real danger that this will end up turning into an Unreal development class instead of a focused study on level design. My other concern is that the material will have to be extremely formalist / abstract, because there won't be a bunch of existing assets to play with, nor a set of defined game mechanics to consider.

But I think this context is still better than the technical hell that teaching with UT4 would've been!


So for January, I'm going to be engaging in a small 2 week exploratory project in UE4. It's going to be very generic and game-y so that I teach myself how to do typical game-y things in the engine.

Wish you were here,
-- R