Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
RederickDeathwill

Does ACS allow for in-game map-making / building?

Recommended Posts

I know that the new since-minecraft hype of crafting/survival "genre" became extremely cliché, but in zdoom/gzdoom terms it might be quite fascinating. I'm not talking exactly of creating a "minecraft wad" (Which exists), I'm curious about how one could transform / exploit the engine to allow in-game "building" and "crafting" (Not even considering procedurally generated levels / stuff, because I imagine that would be horribly complicated to do in this engine). A wad could be just huge and players could go from one level to another, building their stuff while using some variation of the invasion game mode (With waves or "events" (Which could be random)). The players could craft their weapons and items (Exploiting some of the heretic / hexen functionality). I'm interested in experimenting with scripting and even with the engine itself, but I'd like to know the opinion of the experienced port-programmers / scripters. I'm not aware of the capabilities of ACS, if it's powerful enough to allow such extreme tweaking. If done right, to a "red-stone level", it would be astronomically better than Minecraft :p. 
Concerning the title question, it would be essential to be able to "place sectors" in-game. With ACS alone is that possible or one would need to tweak with the port source-code? 

Share this post


Link to post

I'm probably a rare person who has never played minecraft at all, so I do not fully understand what you mean, but I have certain thoughts. As far as I know (I can not talk about ZScript) ACS does not have the functions for rebuilding / creating map geometry. I also doubt such functions implemented at the code of any source ports.


All that comes to my mind right now is the composition of maps from individual sections that are connected using linear interactive portals (which can be reassigned by scripts). Theoretically, you can create a script that, at the start of the map, will build its geometry from individual sections randomly. This is by no means a "procedural generation", but if you spend a lot of time on this, then there can be a very interesting result. I would be glad if someone decided to implement this, even in the most primitive form.


The idea about the generation of level geometry on the fly, right during the game using scripts, simply blowing my mind! :P. I do not know if it's technically difficult (is it possible?). I think it's worth to look at the threads on zdoom.org. Maybe something similar has already been discussed at one time. And if not, we should ask for comments to @Graf Zahl. Can we ever wait features like that? Or just dreaming? :D

Share this post


Link to post

I'm exploring the "reference" of ACS at this very moment. I'll search for something that allows me to create sectors (EDIT: Already did, there's no such function :(). There is a random function and if it's possible to create sectors, I could try to generate many on-the-fly randomly using for loops and whatever (Even using random stuff as an input seed, like the player ammo count or whatever). The point is: Even though the idea of "procedurally generated levels" sounds fascinating in doom, I'm more interested on the crafting/survival part. Minecraft is open-world and the level generated can be really huge (I don't know how big a map can be in doom). The idea of generating simple sectors on-the-fly is only appealing if the player is able to build the level himself inside the game. Minecraft is more about creativity than survival (You mine stuff and create items with it). The real POWER of Minecraft is the red-stone, which allows the player to create mechanisms, even a turing-complete computer inside of it (Torch-with-light = 1, torch-off = 0). In doom we could create little sectors that could change between 2 logic textures, but this insane concept would only be possible if the player had the ability to change the map inside the game. Not only that, he would need to have raw materials that can be collected and used to create more complex items. I'd love to work on a project like that, but anyway, it will inspire me to explore the limits of ACS.

Edited by RederickDeathwill

Share this post


Link to post

You *could* create a map which was, essentially a grid of equal-sized sectors, and, by tagging each grid square separately, you'd be able to control the height of each grid square, using various triggers. This could let you "chop away" at sectors by lowering them.

 

You could also create a thing which looked like a cinder block. Groups of these could be placed on top of each other. But, you'd never be able to have enough of these, without suffering huge performance penalties and memory usage. The engine is just not well suited for either approach.

Share this post


Link to post
8 minutes ago, Nevander said:

Back at it again with the useful replies I see.

There's quite a bit of irony in this post, no?

Share this post


Link to post
1 hour ago, kb1 said:

You *could* create a map which was, essentially a grid of equal-sized sectors, and, by tagging each grid square separately, you'd be able to control the height of each grid square, using various triggers. This could let you "chop away" at sectors by lowering them.

That would allow for sectors with corridors that are always different, and that are also quite useless (Not to mention some logic to avoid unreachable parts). Nevertheless, the simplicity of such sectors being generated would make sense within a crafting mod, with some random sectors being "invasion areas". I'm afraid that the only feasible way is to implement new stuff in the port. I'll fork GZDoom and explore the source code, see if I can make sense of the script parser. A function for defining sectors inside the game would be quite powerful.

Share this post


Link to post
45 minutes ago, Arctangent said:

There's quite a bit of irony in this post, no?

I knew you'd say that. Posted just to see if you'd be stubborn enough to do it. Try being more helpful next time instead of just saying something completely irritating like "Nope."

Share this post


Link to post
5 minutes ago, RederickDeathwill said:

That would allow for sectors with corridors that are always different, and that are also quite useless (Not to mention some logic to avoid unreachable parts). Nevertheless, the simplicity of simple sectors being generated would make sense within a crafting mod, with some random sectors being "invasion areas". I'm afraid that the only feasible way is to implement new stuff in the port. I'll fork GZDoom and explore the source code, see if I can make sense of the script parser. A function for defining sectors inside the game would be quite powerful.

I would not bother in the slightest with trying to shove map generator functions into ACS. That's just so incredibly beyond the scope of what it's made to do that I can't imagine anything but tears as a result. ZScript should be a much better candidate just from the sheer greater power of its fundamentals as a language, though I'm not sure if you'll have much progress there, either.

 

1 minute ago, Nevander said:

I knew you'd say that. Posted just to see if you'd be stubborn enough to do it. Try being more helpful next time instead of just saying something completely irritating like "Nope."

There's nothing else to say, though. It's not even like ACS or even ZDoom as a whole vaguely has something in the direction of any of this - there's no real alternatives or anything to explain, just "no it doesn't."

Share this post


Link to post

You'd probably have to do the whole nodebuilding process each time you modified anything. Even if that only takes 50 or 100 ms, it'd get pretty annoying if the game froze for that time. Besides that modern editors do a ton of magic to make level creation process smooth (and even that fails sometimes), so you'd either have to implement similar magic into the port, or have it pretty low level.

Share this post


Link to post

Ever heard of Sectorcraft ?, It's pretty much that, You'll need Skulltag content though to load it without errors I believe.

 

Each weapon acts like a tool, for example you use shotgun to lower or raise floor / ceiling heights, and plasma gun to apply textures, and Rocket Launcher to copy sector properties and paste them elsewhere, there are few limitations of course, like you can't create slopes or 3D floors or change a linedef effect for example, But other than that it allows you to build stuff.

 

(also includes src files by the way).

Share this post


Link to post
3 hours ago, dmg_64 said:

Ever heard of Sectorcraft ?, It's pretty much that, You'll need Skulltag content though to load it without errors I believe.

 

Each weapon acts like a tool, for example you use shotgun to lower or raise floor / ceiling heights, and plasma gun to apply textures, and Rocket Launcher to copy sector properties and paste them elsewhere, there are few limitations of course, like you can't create slopes or 3D floors or change a linedef effect for example, But other than that it allows you to build stuff.

 

(also includes src files by the way).

Wow, this most certainly looks promising! Thank you very much! If I modify it, I'll talk with the guy on the forum concerning github.

Share this post


Link to post
16 hours ago, RederickDeathwill said:

That would allow for sectors with corridors that are always different, and that are also quite useless

 

7 hours ago, RederickDeathwill said:

Wow, this most certainly looks promising! Thank you very much! If I modify it, I'll talk with the guy on the forum concerning github.

Wow: you went from calling my idea useless, to praising a mod that pretty much implements said idea. Ok...

 

As far as defining new sectors at runtime, see Boris' post. Adding the sector is not the hard part. Linking the sector into the BSP and the rest of the map structure - that's what's difficult.

 

With some tricky coding, it can be done, but it's going to require a thorough understanding of all involved structures, and some snazzy code to keep performance up. I'd love to see a good implementation of it. But, if it's not *really* good, it just won't work right.

Share this post


Link to post
3 hours ago, kb1 said:

 

Wow: you went from calling my idea useless, to praising a mod that pretty much implements said idea. Ok...

 

Nah, the corridors would be useless because considering procedural generation and a standard good doom map, it would be hellishly difficult to actually generate a DOOM level. They would be too basic and boring, but the idea is not useless if the player can alter the sectors himself in-game. I can imagine some procedural generation for landscapes perhaps (But a dwarf-fortress-like idea of generating rivers and such would also be too complicated). It would require a community-level of thinking and problem solving. The combination of procedural generation and the doom sector-based engine is just... eccentric... But we all love doom and that's why it's worth delving in such concepts. Doom *can* be anything we want given enough patience and devotion. Instead of devoting my time developing arcade games in Python or whatever without graphic skills, I prefer to devote myself to experimenting with doom.

Share this post


Link to post
3 hours ago, RederickDeathwill said:

procedural generation

I guess I don't understand what you're trying to do. Procedural generation? I thought you wanted to be able to alter sectors arbitrarily at runtime. Oh well.

Good luck with your mod.

Share this post


Link to post
30 minutes ago, kb1 said:

I guess I don't understand what you're trying to do. Procedural generation? I thought you wanted to be able to alter sectors arbitrarily at runtime. Oh well.

Good luck with your mod.

Yep, that's what I want to do (alter sectors arbitrarily at runtime), which would also allow for some procedural generation on the fly (Just to remember, the comparison was with the mainstream Minecraft. To be able to craft items, build stuff and survive in multiplayer). In this case, procedural generation (As exists in Minecraft) is not necessary, since maps could be previously created quite simple and flat to allow for player construction. It would be awesome, but not necessary, and also because the point is not to create another minecraft, but to create something unique for doom. Crafting would require changes to the hud, in-game sector placement, a "thing-combination system" (thing1 + thing2 = thing3). In minecraft, you actually chop wood, mine minerals and use them to craft various items and place them in the world. In doom, the idea of actually collecting these basic materials is kind of stupid, so one should have a list of them and craft only things important for battle (weapons, ammo and such). The player could construct his "fort" and prepare to defend it / survive, while having to explore deeper realms to be able to colect the items necessary to craft the stronger equipment. 

Share this post


Link to post

Well, just so you know, the Sectorcraft mod indeed works on the very principle that kb1 was describing in his post. It doesn't actually create map geometry on the fly, as that simply can't be done in this engine.

Share this post


Link to post
13 minutes ago, scifista42 said:

Well, just so you know, the Sectorcraft mod indeed works on the very principle that kb1 was describing in his post. It doesn't actually create map geometry on the fly, as that simply can't be done in this engine.

I'm studying the engine. Inserting sectors on the precise position on the binary tree is really insane :(, since the whole purpose of the BSP is to be only traversed recursively. So, the only option is indeed the idea of the sectorcraft. Having a weapon for lowering the square sector and one for raising it (Square because everything would be precisely blocky (As kbl suggested)). Or even, a weapon with 2 fire modes (Which could be configured to the mouse wheel for speed building). The texture could be selected as an item on the inventory. The crafting system would need to be implemented from scratch. If there's none, then the whole mod would be an "Invasion with Building" (Scripting the invasion in such a way that the process of building actually helps with fighting the hordes). 

Share this post


Link to post

Your best bet with procedural generation is not to do at all while the player is actually in the level - something like OBLIGE integration that generates the level before you enter it would probably be as far as you can get.

 

So yeah, not really any good way to do a building game, outside of like plopping down barrels or something simple like that.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×