2019 New link to project page: http://hai.dogpixels.net/projects/Badger/ Link to new knockout.chat thread: https://knockout.chat/thread/1846/1 New link to Twitter: https://twitter.com/BestYeen - - - - - 8< - - - - - - Hello there. As originally posted in this thread, I've aborted my level editor project and focused on a little tool to do some level generation research. The tool is named Badger and can be found here or here. It targets the Black Mesa version of the Source engine and all scripts are tested with the Black Mesa version of Hammer. Using a bit of copying forth and back, the techniques from the tool can be harnessed for Team Fortress 2, too. I've added a bunch of scripts lately that can modify existing vmf files. One current example is entity support for skewed textures as portrayed in the tutorial here. The tool scans a vmf for entities with special names and properties, and applies uv projections to some brush faces. It requires a bit of getting used to, but should ultimately be easier to use than the method with the texture alignment from the camera. Here's a result with the control entities preserved: (^ This script requires textures to be registered in data\tex dimensions.txt) Here's another tool to rotate props within a given radius of a control entity randomly about their up axis: And today I've made a script to detect mirrored textures and mirror them about their horizontal axis: My earlier work involves, among other things, curvy extrusions: ^ Those are not yet very accessible because the user would need to edit the script, but I hope I can make a version of those with control entities later on, too. Hope it's useful to someone.
Crosspost from facepunch: I've scrapped my original idea for a deathmatch level and started anew. This is how far I've gotten so far. My todo list is still long, but it's a nice feeling to run through a level that, albeit following your own rough layout, is defined by tons of random decisions by the program. Thinking about level design is so different when you don't make definite decisions about how things should look in one particular version of the level, but rather work out the rules governing what things can be like. Every corner of the level must have two flights of stairs to reach all stories, but their orientation as well as their order is random, and so is the decision if that corner of the level is even generated in the first place. Does this corner look nice? If so, that is by chance. There are 2^4 = 16 ways the central room can be connected to the corners if all four are generated - with the small tunnels going either way: Some key measurements of the floor plan can also be randomized within some constraints - so the central room or a corner needn't be squareish, they could also be elongated a little. The lighting here is almost completely random. The light levels are varied slightly between lamps. I had to compromise between scattering lamps randomly and analyzing/defining enough so no too dark spots would occur. That's why all flights of stairs now have lamps directly above them. The hallway we're looking down here connects two of the level's corners. If only one of them was generated for this side, it would not exist, and there'd instead be a wall ahead. When I hit generate again, it looks just a little different: And again:
This is really interesting. I would love to see what you would do for aboveground levels (There's a Doom program that randomly generates maps with aboveground and underground segments). As for certain gamemode levels, I would assume you would need to use a different algorithm that generates a varied Mid and Red / Blu area, as well as different tunnels. And of course, if you need help there's this https://tf2maps.net/threads/randomly-generated-maps.31512/ EDIT: (I completely forgot I posted previously on this so it looks really weird to see the same person commenting but whatever, I'll probably delete the original comment).
The layout I've been working on is now finished. Columns are now func_details, and the parameters determining some measurements are randomized a little. It's available from http://shrinker.dogpixels.net/projects/Badger/ or http://shrinker.seriouszone.com/projects/Badger/ (dogpixels is new because seriouszone turned unreliable). There, it's in scripts\worlds\t-dm2.bad. At the moment, you have to place the player start manually. Hope you like.
I love what you are doing, except for the concentric rings landscaping. You might be better off with subtle random height variations.
Heh, the rings stayed. There's a new version available on the project page, now with a script to generate a complete deathmatch level pack. See scripts\level packs and tinker with the stuff that's there.
Checking in to post new stuff. The blueish theme turned into a night theme: I've started work on supporting CS:GO too, and it's a very slow process: https://twitter.com/BestYeen/status/1197273452610281473 New "prefab" features I can use slowly make their way into existing layouts, e.g. with new ladders here and there. More pictures are here: https://twitter.com/BestYeen/media
And checking in again. I'm making my first steps with procedural level generation for Half-Life 1. https://twitter.com/BestYeen/status/1333773577133416450