|Posted by Hai on 2016/11/21 00:31:59|
|I have a newbie here who is really fast but needs very precise instructions. I'm trying to walk him through making a playable Quake 4 singleplayer map.
I began by building two samples - simple, tiled rooms/room types with floor trims and something that looked good for steps. I've taught him how to texture brush sides and be conservative about how many brushes to use. The thing that I originally had in mind for steps turned out to be too complicated, so we've agreed on building the basic floor trims there too.
After that, we've gone through light entities, the in-game light editor for some extra properties, and how to build lamps with lensflare texture patches. The initial results didn't look so good, but we've tuned everything, used the "round" textures, and added a bunch of extra ambient lights until all the hard lines from overlapping light volumes disappeared.
This is where we are now:
There is still a lot to teach, and I hope I have the right topics planned for the next lessons so that he doesn't ragequit. The next thing on my list is merging small lamps into more powerful lamps and breaking up the very uniform lighting patterns.
I hope that someday he'll be skilled enough with this so that someone would want to play his levels... put together tirelessly, on demand, and within seconds.
Have you done similar teaching yet? Inspiration is welcome. I've collected references to similar projects, but this experiment has no project page yet to put them on. This is my second attempt - I've already tried this for HL2, but engine/tool constraints and overall bad looks in the game drove me off.
I was considering a similar project, although my idea was to use prefabbed shapes and texture "themes" for the program to utilise.
You know what would be really badass... A map scraper that would scrape a shit-tonne of maps for textures or entites that are regularly used together.
It would be really awesome to be able to do the same with shapes or geometry of maps, but I doubt this is easily doable.
Someone should make a Beginners guide on how to make quake maps in youtube from the ground up. installing and setting up trenchbroom, creating a room with a light and a player start then compiling it. after that moving on to more advances stuff like doors, platforms triggers. and then go into level design more deeply. I feel that video is a great media for teaching.
the lessons should come in short bursts that have a clear goal, that way you can hook your audience and get them into more advanced stuff. :)
I Second That Motion
#3 posted by Mugwump
on 2016/11/21 22:42:32
You can easily find "getting started" tuts, but for more advanced stuff, not so much.
he is talking about a program he's created, not a real person.
#5 posted by Mugwump
on 2016/11/22 04:00:38
Holy shit! He's creating a map autogen?! Wow... Still, I'd love to see advanced YT tuts.
Fuck Off Furry
#6 posted by anonymous user on 2016/11/22 07:41:08
#7 posted by mjb
on 2016/11/22 13:07:55
Way above and beyond my brain but I am fascinated by this project.
I wish you the best of luck!
#8 posted by Qmaster
on 2016/11/22 16:10:33
Beware letting him try to treat the brushes like minecraft, unless you wanted him throw large amounts of brushes at the map in a voxel like manner and use subtractive methods to generate spaces and merge brushes into more angled and believable spaces. It can be a fun method, though tedious for us slowpokes.
You should also let him know that repetition can be a good thing that can add a sense of continuity and uniformity of style between sections to a map, though it can be overdone, especially if you are trying to use the same modular sections over and over to save time. Not that he needs to save much time, apparently.
#9 posted by Hai
on 2016/11/23 01:18:59
@Shamblernaut: Yeah, it would be nice to have some kind of "content-aware fill" for actual level parts.
Some research in that direction is here: https://twitter.com/ExUtumno/status/781833475884277760
At the moment, I think it would be too complicated for such first person shooter levels.
@Beware: It actually does use a voxel space, for populating the level with cubes of a side length of 16. When it's done, it merges them a bit along all axes.
Randomly merging lamps now works as I wanted and gives the level a dirtier look:
I've placed the player start by hand.
#10 posted by anonymous user on 2016/11/28 12:04:30
#11 posted by anonymous user on 2016/11/28 12:08:14
Let Me Know
#12 posted by Qmaster
on 2016/11/28 16:19:58
When your newbie can create tetrahedron soup caves, heck he could even make diamond-quad-tetrahedron voxels like how 7 Days To Die creates their caves and terrain, if he's fast enough.
This Is Amazing
#13 posted by Hai
on 2016/11/28 21:05:22
I wasn't aware of that, but it does make sense that more and more research is being done in these fields. Maybe I can tap into that when I get stuck, and work my way through it anyway for some inspiration. - or others too when they look at this thread.
On the other hand, this little project can't be a silver bullet incorporating all the best practices known to date. I'll need to focus on specific design goals all the way and feel content with parts that work well to actually get something done. It might make sense to treat it like a little level pack, and in the end it will have a comparable development time, albeit for an entirely uncertain and mutating result.
#14 posted by Hai
on 2016/11/28 22:52:27
A third room skin for this room type:
Intentionally generating a bit off-grid but still retaining correct alignment of everything:
Adding little orange lights because they were on discount during the Thanksgiving weekend:
On Sunday, I'll fly to Finland for two weeks. :)
#15 posted by Hai
on 2016/12/02 19:11:36
#16 posted by Hai
on 2019/04/01 01:12:16
Two and a half years into the future, I gave up and later started anew with Haskell and Black Mesa. And I'm getting somewhere now!
Making a level generator is quite difficult. :D
I can imagine porting this for other games and engines later on.
#17 posted by Joel B
on 2019/04/01 18:03:03
It looks like you've really got your teeth into an interesting long-term project. Very cool!
I don't know how much you are (at this point) interested in getting participation or even just comments/feedback from other people? Since you're posting here, I'd guess you want at least a bit. So FWIW my perception is that it's difficult to determine exactly what this tool is intended to do and how it does it... even for someone who has read this thread, read the Facepunch thread, and downloaded the tool and looked through its docs and examples. (That someone would be me.)
If you ever want to encourage more engagement, you could allocate some time to put together a blog-y sort of post on your site that uses explanations and pictures to talk about the project's purpose and then walk through a specific concrete example. I.e. show some output, show the input that generated it, and point out how the input leads to the output along with some callout of the most interesting bits.
I'm also curious how this compares to other tools that do geometry generation at the macro scale (like OBLIGE) or the micro scale (like the bevy of plugins for Unity or Unreal that make stairways, roads, etc.).
So Many Thoughts From Me
#18 posted by Hai
on 2019/04/02 12:21:25
Hm... that is a good point.
My goal is to deliver fully-fledged levels that require no further handiwork in a level editor and can be compiled as they are - with the compile scripts generated for them.
At the moment, the "gen random dm level.bad" is the only script that goes in that direction. The other scripts are special tools to process existing vmfs ("in-out"), and demoing the technology and building very specific examples of the tools I use to attain my overarching goal.
I am not quite there yet.
Technology-wise, Badger is somewhere between WadC (https://jmtd.net/wadc/) and the aforementioned and unfortunately discontinued OBLIGE. Both and more are linked to from the bottom of the project page.
Making this stuff accessible is difficult, and I don't see myself able right now to give a tutorial-style introduction to the API and the programming language. If someone wanted to do a little thing from scratch, my hope would be that they look at one of the really basic scripts (samples 1 or rainbow) and experiment from there. But ultimately, the great obstacle here is that programmatically generating these things is really difficult.
I've already had a lot of inquiries where people asked how to accomplish this and that using the tool. I've let them know, down to the individual lines of code in a script that needed to be changed, and every time the response was something along the lines of "too difficult, won't bother" - _even if the solution was just to save a vmf file in the world dir and run the bat file_ - or nothing came back at all. Investing more time into a better guide for beginners would most likely lead nowhere given the steep learning curve at the moment.
I am releasing it, as it is and very frequently, to discipline myself to maintain the project in a very clean condition and make sure all the specifications are up to date too. From a consumer standpoint, a first "real" release would start to make sense when a level is fully generated and stocked with items and monsters - and that should come with a guide or some front-end to make gameplay choices.
Is it more of a full level generator or more of a general use tool? I guess the project doesn't really know yet. I've delved into processing an existing level with newly invented entities that are consumed by the script and have an effect in the world, and at the other end of the spectrum I want a script that just delivers a fully playable level or even a campaign. What I also want to look at sometime is interpreting an existing graphic rough schematic (png or svg) and generating a level in that shape.
I have a really hard time providing "basic" building blocks to make levels from. Brushes are incredibly hard to manage and get right. They require careful consideration for numeric stability, they can't be auto-merged, and anything CSG-like is really hard. Entities? There are so many properties to them, and managing the interconnections is hard to understand and explain too.
Right now, the path to generated levels for black mesa goes like this:
2. scripts\worlds\run all.bat
This proved good to work with and "good enough" to explain to friends so they can use it. The releases are not just about work discipline, they are also a part of prioritizing work and keeping up motivation. It's such a steep hill to climb to stick to such an insanely difficult project plan for many years.
But after all this, I've managed motivation long enough to build up some momentum and sustain myself. Here I am now, with great confidence in being able to stock the deathmatch levels with items soon and at least start with something decent in regards to linear singleplayer levels.
If the deathmatch layouts turn out fun to play and the singleplayer ideas work out, steps to support games beyond Black Mesa will be much, much smaller than all the rest that was done until then. Large parts of the overall process are independent of the target file format and the target game's assets.
#19 posted by Hai
on 2020/12/01 20:09:19
My level generator now works well for Black Mesa deathmatch levels, and I've started working on Half-Life 1 stuff after CSGO turned out to be just not for me.
More is on my Twitter: https://twitter.com/BestYeen
You must be logged in to post in this thread.
Website copyright © 2002-2023 John Fitzgibbons. All posts are copyright their respective authors.