🥝 Community Kiwi Farms Community Doom Mapping Project No. 2! - Now with custom Kiwi-assets!

So we can include custom stuff this time. Realm667 is good for serious sprites but what about shitpost ones? Like if we want cops or chudjaks or troons? I assume there's no good repository for them?
just do it like the terrywadders done it and have them be flat jpgs of various kiwicows shooting dildos and turds n shit
 
  • Like
Reactions: dingusmcbingus
I want to setup a hub level that retains its state when left, but all the connected levels should reset each time you visit them
Alright, so this is not conventionally possible using the hub/cluster system (as far as I'm aware) because of the way it's implemented. Normally, the state of all the levels in the hub system will be maintained together so you can't just reset one or two of them while keeping all the rest the same. This is why sets like DUMP2/3 don't let you visit levels twice.

However, depending on exactly what you want to do with that hub level it might be possible to maintain the state of the hub level with a static event handler in ZS instead of using the cluster system and just not use the cluster system at all, but I'm not entirely sure. It wouldn't really be practical if the hub level had a lot of enemies or doors that needed to be opened or something like that. You would also have to choose manually if you wanted to maintain the inventory of the player or just reset it every time you change level. Finally, every single individual map would probably need to be hooked up so that it thinks that the hub level is the next level after it, which isn't that difficult to do but depending on how the maps are to be submitted might require you to pull them all out of their respective WAD files.

So the answer is: it's kind of possible but it's extremely work intensive if the hub is complex in any way since you would need to manually track every object and every sector that you want to maintain the changes of and implement ways to restore their state on level load into a static event handler. If there's a different set of levels that you've found that does this (golden souls? might check later), I can crack it open and take a look at what they did because maybe there's something new in the engine that I'm not aware of. Unless this is absolutely critical to the project you might just want to figure out if there's an alternative structure you can go for.
 
  • Informative
Reactions: Dull Pencil
So we can include custom stuff this time. Realm667 is good for serious sprites but what about shitpost ones? Like if we want cops or chudjaks or troons? I assume there's no good repository for them?
I have never come across anything like that. But if you are a bit crafty you can make it work with one frame. Take the autistic screeching meme as an example. If you just mirror it and alternate that every second frame you get a funny crabwalk.

Alright, so this is not conventionally possible using the hub/cluster system (as far as I'm aware) because of the way it's implemented. Normally, the state of all the levels in the hub system will be maintained together so you can't just reset one or two of them while keeping all the rest the same. This is why sets like DUMP2/3 don't let you visit levels twice.
Yes, this was my first thought. But I want secrets in the levels trigger things in the hub, and I don't want it to be missable. Else i would have done it like that.

However, depending on exactly what you want to do with that hub level it might be possible to maintain the state of the hub level with a static event handler in ZS instead of using the cluster system and just not use the cluster system at all, but I'm not entirely sure.
Yeah, I'm not gonna use the cluster system, unless there's a reset level feature that I missed. And I don't think so.
I'm not familiar with what a static event handler is though.

Now fortunately my idea for the hub does not involve monsters at all and the player will have his inventory reset every time. But I still would want doors, switches, secrets and other stuff remain triggered.
My idea was to use global variables for this, but the problem is: 1. Everything in the level has to be a script and: 2. Apparently you can only use 64 global variables and that would not be enough.
So I thought there must be a better way. How does Infinite Doom do it? There's no way it uses this method.

I'm not familiar with Golden Souls, but if you are willing to do some digging I would be very grateful. My coding skills ends at simple ACS level stuff.

Would be cool if someone could make a new version of this old Doomworld parody map. If I were to do it, the map would start with how it looked in the old version, but as soon as you enter Doomworld itself it would turn into a complete troon-infested horror show. Can't do it myself, I suck at scripting.
I took a look and the scripting is probably as simple as it gets. Why not copy and paste some and see how it works out?
 
I'm not familiar with what a static event handler is though.
It's sort of like a global script object, I guess, to put it simply. There's a more technical description for it but I don't think it really matters. Basically it's a collection of code that sits around and executes various modder-defined functions based on things that happen in the game (events). One of those events, for example, is when a map is loaded.

There are two kinds of event handlers, the normal ones and the static ones. Normal event handlers only exist in a map and get recreated every time a new map is loaded, static ones exist at a higher scope so they can pass between maps without needing to be reinstantiated. Obviously, for this application, you would need to use a static one.

The first thing that needs to be done before any work could start on trying to implement this idea would be that the map would need to be completed and every single object and sector that can be modified and needs to be saved would need to be cataloged, along with their possible states. Then there would need to be some kind of detection mechanism put into place for the sector modifications (there are a bunch of ways to do this but I don't want to state anything specific because I don't know what one would be best without seeing the map). After that, it's really just a matter of writing out a whole bunch of very basic code to check for modifications, save states, and restore the states of everything whenever the level is loaded. I'm not sure how possible it is to preserve found secrets though, that might be slightly complicated because of the way that data is stored. There's probably some fucky shit you could do with taking the secret tag off of sectors if you've already found them or something but generally the less fucky something is the better.

Now, with all that being said, 64 global variables in ACS isn't really that restrictive of a limit when you are talking about essentially just maintaining a bunch of true and false variables. You could easily use integers and just flip bits in them to multiply that number several times over, and if you need to track more than like 1024 boolean states (pretty sure ACS uses 16 bit) you might be overdoing it. If you have the ability to do this in ACS and the only thing that's stopping you is the variable limit, you should probably just look into bitwise operations because it will be much better for you to be able to modify everything yourself rather than having to pass the thing around or fiddle with a language you're not familiar with.

tl;dr You'll need to finish the map before anything else can be done no matter what, so it's best to focus on that first.
 
  • Like
Reactions: Dull Pencil
Now, with all that being said, 64 global variables in ACS isn't really that restrictive of a limit when you are talking about essentially just maintaining a bunch of true and false variables. You could easily use integers and just flip bits in them to multiply that number several times over, and if you need to track more than like 1024 boolean states (pretty sure ACS uses 16 bit) you might be overdoing it. If you have the ability to do this in ACS and the only thing that's stopping you is the variable limit, you should probably just look into bitwise operations because it will be much better for you to be able to modify everything yourself rather than having to pass the thing around or fiddle with a language you're not familiar with.
Right, bits. I forgot I fucked around with that 10y ago. I totally forgot how to use it though, but I should have some stuff since then somewhere. But if I just do a system with flags that works like the ones you use in Doom Builder, 64 variables will be enough. I can't think of anything that will require anything but a bool. Don't know how you get a combinations of bools from an int though, but I'm sure there's documents on it.

But like you said, to do this I need to make the map first and it can't be done before all submissions are in. A little disappointing I can't have the system done before I do the map though. In the future I might also want a true way of saving a level, like decals or the current state of monsters. But that won't be relevant this time though.

Thanks for the info man. 👍
 
  • Like
Reactions: AngryAboutInternets
I will say, this community project has got me interested in learning how to create DOOM maps.
Gonna share a little bit of what I'm working on

1728508555173.png1728508451082.png
 
No promises.
View attachment 6504220

This chud has now been on GoldSrc, CyberChud and now GZDoom.
That's really fucking cool. Hope you have time to work on it.

I will say, this community project has got me interested in learning how to create DOOM maps.
Gonna share a little bit of what I'm working on
Yes, that's the point of this project. To get new people interested. Some people tend to forget that this is not a Doom modding site, thus scoffing at projects like this.

Some suggestion though. An easy way to make the level pop more is to make light differences between sectors. When it gets narrower it gets darker and vice versa. Hard to tell from your screen, but doors are a good spot for this.
Or, if the room is already dark, put some lights texture next to the door and make the sector brighter.
 
  • Like
Reactions: Dick Valentine
Also try to avoid using STARTAN textures in the beginning. They are very finicky textures that require precise placement and splitting up (with verticles / dots) to look good. They can be very annoying to work with.
 
Also try to avoid using STARTAN textures in the beginning. They are very finicky textures that require precise placement and splitting up (with verticles / dots) to look good. They can be very annoying to work with.
Can't you just use the auto-align feature?
 
Can't you just use the auto-align feature?
No, I personally go in an hand align almost every single texture, unless its random enough that im able to get away with being lazy ala fireblu. Yes this process is extremely tedious but has alway had extremly promising results. I have had to actually use math on certain occasion to do texture alignment when I have used map editors before like hammer, doom builder 2, etc just to get the exact thing I wanted, sometimes the auto align feature works but it is 100% not your friend ever, ever, ever.
 
I'm planning on doing Chris Chan related content. Maybe his house or the mall? I already decided on the soundtrack:
 
  • Like
Reactions: Dull Pencil
Can't you just use the auto-align feature?
Auto align only arranges textures to a pattern, it's a quick solution. It has a lot of problems when it comes to irregular texture placement on lower and upper areas that are split from each other and need a lot of manual adjustment.

What I'm referring to, regarding the texture, is the problem of a bent linedef that could be too short or too long. When you have, for example, a support beam that has a texture that is only 16 px wide and you made the line it occupies uneven, like 18px, it will obviously look distorted. That's usually the time where you decide if you either set the line to the correct length or split the line in half to move two textures by hand until they look fine again. This sort of problem happens a lot with STARTAN textures, especially because it looks so much worse when half the texture is missing and then the wall just ends.

aa.png
b.png
 
Going from Boom format to GZDoom Hexen format is a bit confusing. I'm going to mess around in a test map first.

I've got a question about custom music: does it have to be a midi?
 
Why not be absolutely sure and make one yourself? 🙂
My buddy, My guy, My absolute legend. I may be good at writing sourcemod plugins for TF2, or writing shitty python code for Discord bots. But I've got absolutely no experience with doom mapping. And sadly the only person I know that can do it, has already seen this thread and won't do it.
 
Going from Boom format to GZDoom Hexen format is a bit confusing. I'm going to mess around in a test map first.

I've got a question about custom music: does it have to be a midi?
The biggest difference is that you have to use check boxes on line specials. Like if you want stuff to be repeatable or monster activated etc. Also, don't forget to set who and how the special is triggered from the list at the bottom.
You also need to set a class for things to show up. I just check them all.

I does not have to be midi, just no flacs.

My buddy, My guy, My absolute legend. I may be good at writing sourcemod plugins for TF2, or writing shitty python code for Discord bots. But I've got absolutely no experience with doom mapping. And sadly the only person I know that can do it, has already seen this thread and won't do it.
If you can make mods for source, you can absolutely draw lines in a cad-program. All it comes down to is if you think it's fun.
 
Back