#classic-doom-maps-mods

1 messages ยท Page 82 of 1

haughty flower
#

@vast pulsar have you played tad too much ultima and decided to make floor which attacks you?

#

@remote coral are you trying to make undertale wad?

remote coral
#

UT isn't the only game to use CTD as a shock mechanic.

#

And I'm not really making anything yet. I'm just figuring out what is or isn't possible, so I won't go in over my head.

haughty flower
hexed sky
#

I would say it's not a great idea to intentionally crash games unless it's something the player expects

#

I used to think otherwise but I was convinced after a long talk

#

(and it wasn't the only "don't do that" kind of thing I wanted to do)

haughty flower
#

it depends. if you're going for high-meta narrative (undertale, pony island, golem creation kit) - then it actually might be a twist. The problem is - this is zdoom engine we're talking about. it wouldn't be able to pick up at the specific spot from saved info right on launch. it doesn't have that functional built in

shadow bone
#

Yeah, GZDoom's not the right platform for that A large part of the developers' design philosophy is player control and comfort.

haughty flower
#

i mean if you REALLY want to get down to it - you gonna need to get down to code and code-in special loading procedure. it's doable.

#

even though it is md2 format. still - works

#

tho pitch and roll do not work for some reason

#

@light prism also, so far from my conversion process it did turn out to be 1:1

#

at least when converting through 3dsmax > obj > fragmotion > md2

#

@shadow bone any idea why pitch/roll values don't do anything for these?

shadow bone
#

I think you need to set the proper flags in MODELDEF

#

USEACTORPITCH and USEACTORROLL

haughty flower
#

OH! Thank you

haughty flower
#

Actually now that i'm thinking about it. with visplanes and all - is there a "exclude from visplane calculation" flag anywhere? You know - like in quake map format - all the map detail which can generate shitton of unecessary bsp splits can be moved to detail brush and will not affect any calculation at all

#

o_O gzdoom tells me "USEACTORPITCH" is unrecognized. even though builder recognizes it just fine

#

oh, it didn't like that i had + before them

#

even though that's default flag syntax in decorate. this disparity is crap

shadow bone
#

MODELDEF is pretty widely considered crap, yes ๐Ÿ˜‰

haughty flower
#

sick. onscreen detail compression got a substantial bump with simple addition of lamp posts.

light prism
#

nice

#

now can you imagine having to do all of those with 3d floors? ๐Ÿ˜›

#

i mean yes, you could use a single set of controls for a parallel sequence of them

#

but it would get messy and unnecessary very quickly

haughty flower
haughty flower
#

i hope this'll make player realize that he should scale hanging gauntlet and reach electrical station on separate hanging island (after he tries a door which says "no power")

inner fulcrum
#

idk this goes in here or showroom but, concept idea I've gotten from a comment from one of my videos from a while back

haughty flower
#

@inner fulcrum 'murica.

light prism
#

dat ass

vast pulsar
#

Anhmmmmm

haughty flower
#

only fockin way to make these wires visible and also have them anchor around one edge was this.

#

this is why i wish we had angles to wall textures

#

so i wouldn't need to do shit like this

#

is there "always render" flag?

light prism
#

yes

#

in a sense, yes

#

RenderRadius

#

if you did RenderRadius 32768 it would basically be 'always render'

haughty flower
#

oh!

#

thank you

light prism
#

what do you mean 'angles to wall textures'

#

btw

#

you want your wires to hang at different angles/sizes without having to make new actors?

haughty flower
#

i alreaady did that as you can see

#

i have 3 wire lengths

#

the problem is - they are offset with wire center being at the one end. that way i can angle them more efficiently

#

rather than averaging center and then trying to balance 2 poles between wire

light prism
#

true

#

you know you can use +ROLLSPRITE

haughty flower
#

i already did that as well

#

in modeldef tho USEACTORPITCH USEACTORROLL

surreal meteor
#

Hey guys how do i make a room

haughty flower
surreal meteor
#

Thats the only canadian i tolerate

haughty flower
#

what about skallagrim? he has canadian passport as well

surreal meteor
#

nah

#

idk

haughty flower
#

as good as Ian with forgotten weapons

light prism
#

@haughty flower for something like a wire you can forego using models entirely and just rely on +ROLLSPRITE

#

which basically turns it into a flat planular model anyway

haughty flower
#

nah, i'm fine with models.

#

it has thickness. not much but still

light prism
#

that's what she said

haughty flower
#

@light prism only problem i encountered so far is that GZDB has 'spotlights', but i don't see them working

light prism
#

include gzdoom.pk3 in your base resources (dont load for testing)

#

make sure your gzdb is up to date

haughty flower
#

oh. wait. it just started. peculiar. i guess i did something wrong before

#

hm. doesn't pitch for some reason. hmm

#

ok nvm, it works

#

yeah, this is fine. tho i should see if i can mount a lightsource under a part of the actor at an offset

#

Okay, documentation is scarce. can i set dynamic light intensity from the acs?

light prism
#

yes

#

Thing_SetSpecial

#

i think

#

sorry

#

is better

haughty flower
#

oh, it's standardized there. thank you

#

@light prism ok wait, so on the dynamic lights, since special is 0 i just set it as SetThingSpecial(<tag>, 0, args ...) ?

#

because second argument is action num

light prism
#

yep

haughty flower
#

sweet. one more question. can i dynamically set brightmaps?

#

or rather enable/disable them?

light prism
#

you could make a version of the texture that has no brightmap

haughty flower
#

how can i switch between the textures on a model then?

light prism
#

then use ANIMDEFS to create a 'switch' version that incorporates both

#

oh

haughty flower
#

this is specifically for street lamp

#

map contains a puzzle at the end of which player enables lighting

light prism
#

you'll have to create a seperate version with the brightmap set in GLDEFS

haughty flower
#

and energy

light prism
#

then either apply it as a second frame for your actor, or as a seperate actor that the first can morph to

#

second frame is probably easier

#

skin 1 "myskin_bright.png"

#

frameindex LITE B 1 0

haughty flower
#

Okay i see.

haughty flower
#

Now. from a bit more fancier features. Can i somehow move all the outputs from print and item/lock messages to some sort of text log. Say a text typer hud piece which is offset to the bottom-left and also displays previous messages?

light prism
#

you could make an array to hold messages

#

then send them there instead of printing

#

and have a function that prints updates from the array

#

other than that i dont know, there might be a way

muted wing
#

If you want an example of that, it's in Marissas wad

#

it's in the abort button

haughty flower
#

@muted wing thank you, i'll check it out

#

Here's other question. Notice Color value. when i try to punch that into acs script - resulting value is bright-red rather than white

muted wing
#

@haughty flower just note that it does not solve the text log, just how the array works

light prism
#

i think color has to be in hex

#

and thus uses a string value

haughty flower
#

@light prism do i just type it blatantly as "#FFFFFF" ?

light prism
#

FFFFFF

#

no hash i doubt

haughty flower
#

okay, i'll try that

#

SetThingSpecial(62, 0, "FFFFFF", 8, 32, 96, 0);

#

I don't even.

light prism
#

oh i think SetThingSpecial is probably messing with it

#

since it only takes integers its probably converting the value as a string into int

#

you might be better off figuring out zscript for spotlight control

haughty flower
#

Uh. what format are these actually in?

#

fixed point? flat integer?

light prism
#

int

#

look at the top

haughty flower
#

no i mean light special

light prism
#

huh?

#

the light values in a dynamic light are 0-255

haughty flower
#

the color of the light when it's not string

light prism
#

and in the spotlight it is hex

haughty flower
#

then the value 16777215 should be correct since it is FFFFFF in decimal

#

and yet it sets it to bright red instead

light prism
#

im at work so i cant be super helpful

haughty flower
#

No problem, i'm just thinking out loud at this point

haughty flower
#

well okay it does at least switch state. but brightmap for some reason refuses to apply

#

placing it in brightmaps/auto also did nothing

light prism
#

pastebin modeldef & gldefs

haughty flower
light prism
#

change brightmap texture strtlmp2 { to brightmap texture "textures\models\strtlmp2.png" {

haughty flower
#

that worked. thanks a lot cat. now i just need to figure out light color

haughty flower
#

hol' up. what if it factors in alpha under RGBA?.... trying 4294967295

#

nope. still red.

#

FML

#
{ 
arg1 "Red" 
arg2 "Green" 
arg3 "Blue" 
arg4 "Intensity" 
}``` The fucking fuck
#

so. editor shows completely different arguments to that special. this is a crutch

vocal crypt
#

I'm liking the gun spriting stuff

#

it reminds me of the 90s games

#

with the "good CGI then but terrible now" charm

#

even though I'm a filthy 2000 and beyond teenager.

haughty flower
#

Well, how do i put it. i am just one guy and i don't have enough time to actually pixelize these sprites more (edit jitter)

vocal crypt
#

That wasn't a negative

haughty flower
#

if i had a bit of budget to dedicate more time to them - sure

#

i mean i got that, but it sure can be made to look a bit better

vocal crypt
#

tbf it does depend on what chu want with aesthetics

haughty flower
#

right now i'm still in midst of figuring out if aesthetics work even

vocal crypt
#

ooh, that's why it seems charming to me. It reminds me of the digitalized models from the likes of Fallout 1-2

haughty flower
#

the thing is digitalized models in fallout 1-2 were still hand-fixed after the fact. mine aren't - they're raw straight from rendering through palette appliaction (batched) into the engine

vocal crypt
#

'tis still charming, to me at least.

haughty flower
#

i should just use 3d models at this point. i already have them for poles, wires, street lamps, pump rotors...

vocal crypt
#

Might wanna focus on what aesthetic yous goin for first

haughty flower
vocal crypt
#

Don't want models like Psychophobia

haughty flower
#

don't worry i know how to fit them properly

vocal crypt
#

lol

haughty flower
#

for starters psychophobia doesn't have correct doom-gun lighting applied to it's models

#

so they end up looking out of place. not to mention texture detail is too high. along with polycounts

vocal crypt
#

Don't want monsters looking like this psychophobia model either lol

haughty flower
#

xD

#

-HURR

#

is all i can see

vocal crypt
#

Even worse than the Risen3D models

haughty flower
#

@vocal crypt try nightmare 3d

#

๐Ÿ˜„

#

again. do not worry. it's not the fact that they use 3d models. it is the coherency of them with the rest of the set

#

problem is that usually these mods don't have resemblance of art direction to begin with

vocal crypt
#

just cobbling stuff together

#

and adding GZDoom features

#

just like KDIZD(?)

haughty flower
#

actually kdizd was decent(?)

#

here, as an example. these 3d model fit better due to aesthetic matching. of course this is bw aesthetic so eh

vocal crypt
#

from what i've heard, peeps don't like it cobblin GZDoom features

#

wew

haughty flower
#

that's from one of my unfinished wads btw

vocal crypt
#

wew, you a damn good modeler

#

and texturer

haughty flower
#

bleh

vocal crypt
#

I can't model sculpt for shit tbh

haughty flower
#

again. bleh. i still have about 70% of way to go before i could consider myself good modeler. i can do rigid bodies no problem. however with soft tissue - i start having a lot of problems

vocal crypt
#

get bonus points from me doin it in Blender

#

I just did the only models I did in Sculptris

#

and mine just looked like a sphere withlegs

#

and moose's horn

haughty flower
#

i don't use blender.

vocal crypt
#

Woops

#

I misread

#

sorry

haughty flower
#

i use 3dsmax. because you can actually do stuff in it. fairly quickly as well

vocal crypt
#

gonna be honest, Blender's UI is complete arse.

haughty flower
#

it has gotten a little bit better since 2.68 but not by much. they did promise they'll redo it again in 3.0

vocal crypt
#

It seems to mostly be for the programmers first

haughty flower
#

other way around. it was designed by a bunch of programmers with no regards to ux

vocal crypt
#

oh

haughty flower
#

at least initially. as i said - it has gotten a lil' bit better. but eh

vocal crypt
#

is the Steam one the version that's most recent

#

or nah

haughty flower
#

it is

light prism
#

blender is fine

#

you are just bitches

vocal crypt
#

and who is this Harley C person who lurks in here.

modern mason
#

Sorry, mistyped a letter and left it there

light prism
#

yes, his actual name is Hrley

haughty flower
#

@light prism nah, you just adopted to the shittiness of it

light prism
#

any 3d workstation is going to be complex, no matter how you go about it

haughty flower
#

i on the other hand started from working with industry standard tools such as max and poser.

light prism
#

blender is modular and you can adjust it to the way you want to work

haughty flower
#

Yeah, max has much better UX all around

light prism
#

also i started from povray, which was fuckin' textbased

#

like 'add cube (coords, dimensions)'

haughty flower
#

AHAHAhahahahahahah. yeah, sure. SUUUUURE. I tried doing that for a week. Even started writing actually working mirror tools for it. then dropped all that shit because i realized that i can spend that time working for "Free as in freeloader" community, or i can actually just use max and earn proper money with it

light prism
#

you could probably write a script to generate the script for it

#

i mean this was like... 20 years ago

haughty flower
#

povray is hopeless

light prism
#

it was all that was available at the time

haughty flower
#

you know you could've always pirated softimage back then?

light prism
#

on my 2400baud modem

vocal crypt
#

povray was in 2013?

light prism
#

great idea

vocal crypt
#

oh

#

no

haughty flower
#

actually no povray is a very old renderer suite

vocal crypt
#

initial release was in 1991

#

2013's just a stable release

light prism
#

it took me literally a whole day to download 4mb

#

back in those days

vocal crypt
#

well now it's not those days anymore.

haughty flower
#

@light prism that's why you built connections with someone who had access to T1

#

and downloaded it proper

vocal crypt
#

t1?

light prism
#

i was barely a teenager dude

vocal crypt
#

I'm from the XP era so I have no clue how the 3.1-98 era works

light prism
#

i live in new zealand also

#

like we had t1 connections in the early 90's

haughty flower
#

No wonder this cat is so feisty. it's half kiwi

vocal crypt
#

or gatekeeping.

light prism
#

it works... by WINSOCK

haughty flower
#

Nuke 127.0.0.1

#

that's a meme only few people would remember

vocal crypt
#

sorry, no bells for me

haughty flower
#

right at the turn of the windows 95 osr1 microsoft shipped it with a critical network stack bug, which allowed, by sending just a few stray packets - to completely tank a target pc so it needed a reboot. the script kiddie exe to do that was called Nuke (i think) hence the term nuke <ip>

#

of course- script kiddies were as stupid back then as they are now, so suggesting to test it by nuking 127.0.0.1 was common practice.

vocal crypt
#

what was 127.0.0.1

#

some poor dude's computer?

#

or some companies?

haughty flower
#

Oof.

#

localhost ip. your own pc's internal ip on null network adapter

vocal crypt
#

Oh

#

nuking yourself basically

haughty flower
#

yep

light prism
#

man i havent done any work on mods in a few weeks now

#

its either too much work or not work the payoff

#

i guess i did make a map last week

warped rampart
vocal crypt
#

does this require BD

warped rampart
#

It is BD

vocal crypt
#

ah

#

you're just doing a simple sound replacement

#

which sounds are the BFG ones, name wise?

warped rampart
#

I mixed 20B with the 2016 weapons pack into one file and the sound doesn't play
@vocal crypt iirc it's BFGFIRE

vocal crypt
#

RN I'm only seeing BCHARGE in your sound folder

#

Wait

#

It's in combat/weapons, which it's missing an E.

#

Though, I'm not sure I'm seeing it in SNDINFO

warped rampart
#

Almost!

#

It makes the fire noise, but no boom or charge

vocal crypt
#

great, gonna have to scuffle in the weapon decorate.

#

well thank god it has its own decorate file.

warped rampart
#

I'll finish up SNDINFO tomorrow

vocal crypt
#

also, nitpick, but scrolling through the weapons, most of them say shotgun

warped rampart
#

@vocal crypt Thanks for your help

vocal crypt
#

I tried.

#

prob didn't help tho

warped rampart
#

yeah, that's the mod itself, the shotgun thing

vocal crypt
#

Seems like a conflict of names

warped rampart
#

You definitely helped, SNDINFO was the problem

vocal crypt
#

oh?

#

What was the prob?

#

well

#

regarding SNDINFO

light prism
#

ahhhh home

warped rampart
#

BFG stuff is missing

#

As is EXPLOSIO3

vocal crypt
#

Ah

warped rampart
#

So thanks for pointing that out

verbal hinge
#

Hey all!
Is this the channel I should go to, if I have a tiny issue with GZDoom?

light prism
#

this is more for modding than technical issues but what is it

verbal hinge
#

Yeah - I just didn't know which other channel to use. I figured the people in here might be the best to help me, in any case.

Well, basically, I like to bind weapons to keys surrounding WASD, rather than 1, 2, 3, 4, etc. - however, normally you can't bind the two shotguns to separate keys. I tried 'bind KEY "use supershotgun"' and similar in console, but to no avail. I figure it's probably possible, though, right?
Anyway, would be sweet if one of you know.

light prism
#

bind slot 3

#

bind e "slot 3"

#

oh you want it seperate uhhh

verbal hinge
#

Yes, exactly ๐Ÿ˜ƒ

#

Shotgun on Z and Super Shotgun on C, for instance

light prism
#

bind c "use supershotgun"

#

that works for me

verbal hinge
#

Hm. Maybe I was an idiot and forgot quotes T_T

#

Thanks ๐Ÿ˜ƒ

#

Hm... it doesn't seem to work for me. Damn weird.
Could it have anything to do with me being on version g3.1.0 ?

light prism
#

no idea

verbal hinge
#

Updating to the newest is not an option for me because of other reasons

light prism
#

i just did

verbal hinge
#

Hm

light prism
#

bind c "use supershotgun"

#

give all

#

c

#

and it worked

#

i cant imagine thats a new feature

verbal hinge
#

Yeah, innit

light prism
#

uh

#

did you actually give yourself the weapon

verbal hinge
#

Yup

#

I can select it just fine normally

light prism
#

werx4me

verbal hinge
#

Weird :/

#

Yup, works for me in the newest release too

#

I guess my question, then, is, how do I get 3.3.2 to work with the Steam overlay?

#

Hm, it works, but only when I add it as a non-steam game. Eh, nevermind, it'll do. I might fiddle with it some

#

Thanks for the help regardless ๐Ÿ˜ƒ

light prism
#

you shouldnt get steam on your computer

#

it will cause condensation and water damage

verbal hinge
#

๐Ÿ˜‰

dusk terrace
#

is it possible to make destroyable pickups like when you shoot the health bonus bottle it breaks and spills and you cant pick it up?

light prism
#

sure why not

dusk terrace
#

i tried this but does nothing (the bon2 is just to see does it work i dont have the graphics yet)

hexed sky
#

add +SHOOTABLE

dusk terrace
#

works now but it spawns blood and i still can pick it up

#

after shooting it

hexed sky
#

hmm

#

add +NOBLOOD to the flags

#

and in the first death frame put A_ChangeFlag("SPECIAL",false)

#

that will disable picking it up

remote coral
#

Oh god

#

That feeling when you're making a map

#

and you get loads of ideas for it

#

But you focus way too much on the little details to actually make a fully functional map first

remote coral
shadow bone
#

They're vertices ๐Ÿ˜›

#

You can move them up and down to define slopes

remote coral
#

But why are they visible only on a select few vertices?

unreal oyster
#

those pyramids are visible in 3d mode on triangular shaped sectors

#

which can be sloped according to their vertices

#

no other sector shape can do that

remote coral
#

Huh.

remote coral
#

Is SLADE the only way to add custom textures into a wad?

shadow bone
#

There's other programs, but most are buggy and out of date

#

Slade is the most current and active one I think

#

If you're using .pk3 with gzdoom instead of .wad you can unzip it like a folder though, and work that way instead

remote coral
#

Yeah, I'm using GZdoom

shadow bone
#

Sweet. If you're not targeting other ports (like vanilla or Boom or whatever), I'd recommend using .pk3 files then

#

They're much easier and more stable than .wad files

#

and you can work with them like a folder instead of using a special program like Slade

#

Hell, GZDoom can even load plain old folders if you want to work that way while testing, then make it a .pk3 when you're done

remote coral
#

Make the entire map into a .pk3?

#

I'm going to despise STARTAN2 before I'm done with placing down the general layout of the level

vocal crypt
#

I already despise it

remote coral
#

So yeah
Plans for this level
a factory inside a volcano
A train station to break up the outer yard
Blowing up a hole on the ceiling of the volcano to drop down onto the roof of the factory
possibly even a small section inside a giant tunnel bore if I can get texture importing to work

#

I may be going in WAY over my head though

shadow bone
#

The map (s) would still be in .wad files inside the maps/ folder of a .pk3, but any custom textures and such would be in other folder namespaces. Check the zdoom wiki, there's a page on it.

#

"using zips in place of wads"

remote coral
#

Righto.

#

Seriously though
A tunnel bore might be a pretty interesting idea for a Doom map

#

It's going to be a challenge to keep it from being cramped or linear

shadow bone
#

Looks boring

#

ba-dum-tsh

remote coral
#

huehue

#

laugh as much as you want, Elon Musk's tunnel drilling company is named the Boring Company
Just for shits and giggles

#

Fairly sure you knew that already, but whatever

haughty flower
#

@remote coral basically you need to turn sectors to distinct triangles in order to use this sloping method. it is quite good actually, you can create highly complex ground curvature without even thinking about invoking "sector slope" line special

remote coral
#

I saw that already, and noticed that it was quite effective.

#

I'm still having some issues with making ramps on a ceiling with complex building under it

light prism
#

sector slopes are gr8

remote coral
#

I'm having a hard time believing that's from Doom

#

care to show a screenshot from closer up?

light prism
remote coral
#

I know that realm667 is a good place for custom enemies (which I doubt I'll use), but what's a good place to get textures?

#

The stock Doom 2 textures are good, but they're often quite lackluster and don't fit what you're trying to achieve.

light prism
#

r667 also has texture packs in the vanilla style

#

ie 64x64 flats and 64/128x128 textures

remote coral
#

I'll have to check that out too then.

remote coral
#

Fuck me, that screenshot though.

#

Gotta love all these doom modders making me feel like a scrub.

#

Probably because I am one.

vocal crypt
#

@haughty flower sorry to ping ya, but what sculpting program you use for teh models

haughty flower
#

@vocal crypt i don't sculpt. i use 3dsmax then i use substance painter. between the two there is enough flexibility to add desired detail

vocal crypt
#

ah

haughty flower
#

that's why i still haven't progressed in living things department. ๐Ÿ˜„

vocal crypt
#

I'm using Sculptris rip

haughty flower
#

the problem is that most of the sculpting tools are too slow

#

at least for my hardware

vocal crypt
#

I just suck at model sculpting

haughty flower
#

3d coat and zbrush are for damn sure

vocal crypt
#

my first model is still just a sphere with arms and legs

haughty flower
#

thing is - i can sculpt in 3dsmax but its active preview shaders are shit

vocal crypt
#

gotta render to see what it'll look like fully?

haughty flower
#

so it becomes a guessing game at small enough detail

#

yeah. luckily quicksilver renderer is almost instant

#

tho results may vary

#

@light prism Cat you might wanna fix normals on these trees

#

Spherify them

#

granted any of the formats supports edited vertex normals correctly.....hm....i think md3 should eat edited ones no problem

light prism
#

what

#

i dont think theres much i can do about that

#

easily, i mean

#

i use sculptris for sculpting. its way better than blenders internal sculpt tools

haughty flower
light prism
#

im at work

#

ill have a look when i get home

remote coral
#

Is there a wiki that explains all the actions sectors and linedefs can do?

#

There's seven different door buttons, and I have no idea what they do.

hexed sky
#

you can change the sorting by clicking on each of the headers

remote coral
#

Thanks a bunch.

#

TI also L that I don't have to tag every single door I use.

#

That I can just keep 'em at 0, so they'll affect whatever sector is behind it.

#

What?
So I have two sectors, one has 229 (Carry East Fast) and the other has 244 (Carry West Fast).
So why is the sector with the tag 229 animated and the one with 244 isn't?

#

I feel like the best way to learn how action specials work is to just go through Doom's maps and open them in the editor

unreal oyster
#

[15:04] Two Simple Eggs (Okkim): TI also L that I don't have to tag every single door I use.
you do have to do this if the map is intended for non-zdoom ports

remote coral
#

It still seemed to work on GZDoom.

unreal oyster
#

gzdoom is a zdoom-based port so yeah

#

i'm talking about the boom family (and maybe eternity as well, though that might support 0 = back)

shadow bone
#

Did vanilla doom require tagging backside sector actions like doors? I didn't think it did...

#

But it has been a while

remote coral
#

Well I'm mostly just making these maps for my own fun.
And GZDoom.

#

So I don't know whether or not I should use the 0 tag trick.

shadow bone
#

If you're just targetting GZDoom it's fine

remote coral
#

Right.

unreal oyster
#

cali, vanilla did, "0 is the back sector" is a zdoom feature

shadow bone
#

Weird. I don't remember that at all lol

#

But it has been like 12 years since I mapped for vanilla

unreal oyster
#

(which imo should only apply in zdoom hexen + UDMF for better compatibility but it is what it is)

remote coral
#

Honest question though.
Why do people, whenever anyone talks about Doom mapping, they say Zdoom and practically never GZDoom?

unreal oyster
#

force of habit

shadow bone
#

Because ZDoom is the granddaddy ๐Ÿ˜›

unreal oyster
#

most people have been around from before gzdoom was the main port

#

there was a looooong period of time where zdoom's featureset was in-line with gzdoom's apart from hw renderer features

#

nowadays it'd make more sense to say gzdoom, yes, but it's hard to shake off a habit like that

remote coral
#

It's not made my mapping journey any easier.

#

When I keep looking for answers to questions, and everyone talks about Zdoom

#

Not knowing whether or not it works.

unreal oyster
#

i always assume that zdoom is equivalent to gzdoom unless context indicates otherwise

shadow bone
#

Yeah, just about anything that worked in ZDoom will work in GZDoom

#

I use them interchangeably when searching

remote coral
#

So I got some textures from realm667 and imported them into my project.
When I compile the map, will it only contain the textures which were actually used inside the map, or will it cram everything in it?

#

I'd assume it doesn't.

shadow bone
#

It sounds like you're using the textures as an external resource (meaning the texture pack will need to be loaded with your map)

#

To my knowledge none of the map editors will just save whatever textures you used into your map wad

vocal crypt
#

yeah

remote coral
#

they're WADs, added through the "Add resource" button when loading/creating a map.

shadow bone
#

Yeah, that's an external resource

#

It doesn't combine them

vocal crypt
#

you'd need to move them textures into the map wad if you don't want to keep doing add resource button.

#

or if you don't want the user to download extra files for the proper experience.

remote coral
#

How would I do that?

vocal crypt
#

Using the SLADE 3 editor

remote coral
#

oh boy

#

another program to learn

vocal crypt
#

You could be using XWE which is outdated af ๐Ÿ˜›

shadow bone
#

NO

#

DON'T USE XWE

vocal crypt
#

I was joking at that, lol

shadow bone
#

He might take it seriously

remote coral
#

...what's XWE

shadow bone
#

An old wad editor

#

Very buggy

#

Often eats (corrupts) entire projects

vocal crypt
#

and less clean than Slade 3.

remote coral
#

oof

shadow bone
#

Anyway, SLADE 3 isn't hard. It's basically for moving / editing anything in the wad that isn't a map

#

It has a map editor, but it's inferior to GZDB

remote coral
shadow bone
#

don't worry about it

#

GZdoom builds nodes internally

remote coral
#

"don't build nodes"?

shadow bone
#

Yeah

#

Nodes are what makes your map functional in the engine. Used to be you had to "compile" the map before running it. But GZDB is probably handling that for you, and if not then GZDoom compiles the map internally when you run it (just takes an extra second or so when loading)

remote coral
#

do I make a WAD archive?

shadow bone
#

No, you open your existing wad

#

and existing texture pack

remote coral
#

the texture pack is a wad too.

shadow bone
#

That's fine

vocal crypt
#

he's saying open them both

remote coral
#

kk.

vocal crypt
#

they'll be in seperate tabs

shadow bone
#

Now, in theory you just copy all the contents of the texture pack, and paste them into your map wad.

#

But just in case something goes wonky, make sure to copy your map somewhere else as a backup

#

It's been a long time since I did anything with wads instead of PK3s

vocal crypt
#

ikr

#

I can't do wads without the organization of PK3s

shadow bone
#

PK3s are so much nicer. You just drop stuff into a textures/ folder instead of having to worry about _pp and _tx markers and shit

remote coral
#

Meanwhile I'm sitting here, not even sure what makes pk3's different from wads.

shadow bone
#

pk3s are basically a zip file

#

so you can have subfolders and such

vocal crypt
#

can make your life so much easier

shadow bone
#

wads are a binary format, meaning they need markers and things, which are annoying to deal with

remote coral
#

Anyway, I got all my textures and the map loaded up in slade.
The thing is, I'm not sure if I'm going to use all of these texture packs.
Should I still compile them into one WAD for mapping?

shadow bone
#

You could just copy what you want to use

#

but if you don't know, then just copy it all and paste it to the end of your map wad

remote coral
#

only the graphics?

#

or the markers too

shadow bone
#

No, the markers too

remote coral
#

I'm sure there's a guide for this somewhere so I wouldn't have to ask.

shadow bone
#

Those are what tell the wad "stuff between here is this type of file*

#

Also, when you paste, make sure the lumps that make up your map don't get split up. they need to stay in order

remote coral
#

so if there are multiple PP_ENDs, I'll put all the textures between that and PP_START and only include a single copy of the PP_END and PP_START markers?

shadow bone
#

don't try to reorganize it. the texture wad should already be in the order it's supposed to be

#

without seeing it myself I don't know what you can rearrange or not

remote coral
#

I mean there are multiple texture wads I'm trying to add.
And they all have their own markers.

shadow bone
#

hmph

#

Gah, I dunno.

#

Maybe

#

I can't remember if wads can have multiple texture namespaces

remote coral
#

I feel really dumb right now.

#

Well I have a backup, so I can try both.

shadow bone
#

TBF this is a really archaic way of doing things.

#

It's not just you

remote coral
#

I'll try single markers first.

shadow bone
#

I think it should work that way

#

fingers crossed ๐Ÿคž

remote coral
#

How do I know it works?
That all the textures appear in GZDB without issues?

shadow bone
#

Yes, they should appear without loading your extra resource (so make sure to disable the texture wads in the map properties/resources)

remote coral
#

I didn't enable any yet.

#

So after I actually finish the map, I should just be able to recompile the wad in GZDB and get rid of the excess.
If I'm reading this right.

shadow bone
#

GZDB won't "get rid of the excess"

#

If there's textures you don't want to use, you need to remove them manually from the wad

remote coral
#

Well that's just wonderful.

shadow bone
#

It's smart. It'd be really bad if GZDB deleted half a wad of textures just because the mapper didn't use them

remote coral
#

Well if the mapper has compiled their map for public use, you'd think they want the unused textures brought in with the texture WADs to be dropped.

shadow bone
#

Then they remove them by hand ๐Ÿ˜›

remote coral
#

Also, I think the markers need to be separate.
There's files named PNAMES that are different from texture pack to texture pack.

shadow bone
#

Lots of wads don't even include the texture packs, they just say "play this with the Blood Textures wad"

#

ยฏ_(ใƒ„)_/ยฏ

remote coral
#

Do I need the pk3 for that then?

vocal crypt
#

lmao really Cali?

shadow bone
#

Yeah Zoop

#

Moreso in the 90's when a texture pack took 5 hours to download over dial-up or BBS.

#

So you didn't have to re-download it multiple times

remote coral
#

It doesn't make sense to me that that isn't streamlined yet.

#

How would I even get the list of texture names?
Is that convoluted to do too?
Seriously, how do people even make maps with custom textures, knowing that they have to manually discard about 90% of the textures when there's only a handful of textures in a pack that they needed

shadow bone
#

The alternative is only copying in the textures you used instead of deleting what you didn't use

#

But yes, you need to keep track of it

remote coral
#

But if I'm trying out different textures, I'd still need to have them in the wad to begin with.
...unless I just use the "Add resource" button for temporary use.

#

Goddamnit, why didn't I just use that?

shadow bone
#

These days no one really blinks at multi-megabyte mods so you're probably worrying about nothing.

remote coral
#

I'm a bit obsessive about keeping files tidy.

#

Having a fuckton of unused textures in a file doesn't make sense to me.
The worst example might be in HDTF, where dataminers found literally gigabytes of completely unused assets.

vocal crypt
#

don't think anyone's gon give a crap about file size unless your pk3/wad is like 5 gigs ๐Ÿ˜›

remote coral
#

Eh, if I don't use many custom textures, I should be able to hand-pick them from the wads.
Still, thanks a million for all your help.

#

I may seem like completely braindead with my constant questions, so thanks for putting up with me.

shadow bone
#

no worries

#

It's a process learning new stuff, especially archaic crap like this

#

not very intuitive until you've been doing it for a year or so, lol

remote coral
#

It's always weird to think about just how many sourceports exist for Doom.

#

I used to think a Doom source port was a port of Doom made on the Source engine, which made me even more confused
Like, why are there so damn many ports of Doom just for the Source engine

vocal crypt
#

lmao

#

Doom 2: Source

coarse quail
#

Lol de hek.

vocal crypt
#

The Ultimate Doom: Source

#

Final Doom: Source

remote coral
#

Anyway, back to mapping.
I read up a bit, and saw that there's multiple ways to get screenshake. But what's the best one if I want the screen to shake after pressing a switch (say, a detonator for a bomb)

#

the wiki lists four.

shadow bone
#

Probably Radius_Quake2 in an ACS script that triggers when you flip the switch

remote coral
#

Cheers.

#

Right now I'm experimenting with what I can do with Doom mapping and scripting.
It's in preparation for the map.

#

Shame that the wiki page for it doesn't explain much.

shadow bone
#

Radius_Quake2?

#

It's fairly striaghtforward

remote coral
#

I guess I'm just dumb.

vocal crypt
#

it turns your radius into the Quake 2 video game /jk

remote coral
#

Everything else I understand, but damrad and sound I don't get.
Does the quake damage the player, and can I make the quake silent?

shadow bone
#

The quake can damage the player, yes. If you don't want that, set it to zero

#

Sound can be "world/quake" if you want to use the default earthquake sound, or just "" to play nothing, or some other sound effect.

remote coral
#

Thanks.

vocal crypt
#

I've wondered how some levels

#

have a wall that's part of teh room

#

and when you trigger a script (I assume it's a script)

#

it has sectors for the "broken" wall

#

or something

remote coral
#

It works

#

I'd assume the quake can be set to dissipate instead of ending abruptly?

shadow bone
#

Not directly, but you could call multiple short quakes with gradually decreasing intensity

vocal crypt
#

I was thinking of that

#

using short quakes

#

to give illusion of it decreasing

remote coral
#

Back to the scripting wiki to figure out how subroutines work in Doom then

shadow bone
#

Just do it in the same script

#
script "scriptname" (void) {
    radius_quake2(0, 3,  5, 0, 256, "world/quake");
    delay(5);
    radius_quake2(0, 2, 10, 0, 256, "world/quake");
    delay(10);
    radius_quake2(0, 1, 20, 0, 256, "world/quake");
}```
#

A one-second (35-tic) quake that goes from intensity 3 to intensity 1

#

note, untested. I haven't written ACS in like ten years

remote coral
#

Ah, that makes it much simpler.

#

Thank you.

shadow bone
#

If you wanted to get fancy you could use decrementing for loops or something

#

but it's not necessary

remote coral
#

Oh god

#

hyuk

#

I set my Doom to fullscreen to record a quick clip

#

and GZDoom enabled motion blur

shadow bone
#

... GZDoom doesn't have motion blur

#

At least not last time I checked

remote coral
#

Then why did it have motion blur

#

Am I just not used to this amount of frames

shadow bone
#

Possibly.

remote coral
#

Throwing some issues I came across here while experimenting.
Unless I picked the wrong action, the ceiling crusher moves constantly up and down, but the floor crusher only moves up and stops.

#

I also found two floor actions, both of which push the player.
But one of them also has the texture moving.

#

Carry West Fast moves the player, but Carry East Fast moves the player and the texture.

#

If anyone wants to have a look, I can provide the wad.

shadow bone
#

Probably just picked the wrong actions. There's a lot and many are either duplicated or very close in name/function

#

Mostly because of backwards compatibility cruft

#

(Hexen uses slightly different action specials than Doom but ZDoom supports both, for example)

remote coral
#

I am confuse.

#

If I'm just moving the player, should I use Wind instead then?

shadow bone
#

I think so, yes

#

Always make sure to check the ZDoom wiki pages, most of the classic stuff is pretty well documented

remote coral
#

Seems like the action specials only has the actions for vertices, and none for sectors.

shadow bone
#

Vertices don't have actions, linedefs do

remote coral
#

sorry, meant linedefs.

shadow bone
#

As you noticed...
The east carry specials will also scroll the floor texture.

#

This is probably a holdover from something Hexen did

remote coral
#

Yeah.

#

That's weird.

light prism
#

its for water ya mungus

#

Two Simple Eggs (Okkim): Back to the scripting wiki to figure out how subroutines work in Doom then

#

subroutines dont really exist in classic acs

#

the closest thing would be functions

#

gdcc lets you do subroutines though

hexed sky
#

three quake calls or... you could use QuakeEx with QF_SCALEDOWN

#

it really bothers me that quake intensities are integer

shadow bone
#

... Yeah that would probably be better.

#

๐Ÿคฆ

remote coral
#

Pardon?

#

@hexed sky can you explain that a bit?

shadow bone
#

Provides a ton more options, including a flag to make the quake die down smoothly instead of using multiple quakes like I suggested

remote coral
#

Sorta understood what I'd need to do.
I just don't know what I'd do with the plethora of flags at the end and where I'd put QF_SCALEDOWN.

#

I'll fiddle with it.

shadow bone
#

See where in the command overview it says flags?

#

Just enter QF_SCALEDOWN in that argument

#

If you want to use flags in combination, put a pipe character between them

#

QF_SCALEDOWN | QF_SCALEUP

remote coral
#

Ah.

#

Why is it an integer though?

shadow bone
#

It's actually a bitfield

#

The flags just have nice names

remote coral
#

I'm not even going to ask what that is

shadow bone
#

It's actually pretty simple

#
QF_SCALEDOWN = 1
QF_SCALEUP = 2
QF_WAVE = 4

QF_WAVE | QF_SCALEDOWN = 5```
remote coral
#

Do I leave a zero at all the other bracketed arguments if I don't use them?

light prism
#

yes

#

or no

shadow bone
#

Or just leave them off

light prism
#

it depends

remote coral
#

So I don't add them at all?

shadow bone
#

If you don't need to use any of them

remote coral
#

I'm not on my pc right now, so I can't check

#

I'll do soon

shadow bone
#

If you want to use one, all the ones before it need to be filled in

remote coral
#

Kk

light prism
#

yeah, but you can drop trailing arguments for the most part

remote coral
#

I'll prolly just use flags

light prism
#

except that some functions wont let you do that

remote coral
#

So the others aren't in the way

remote coral
#

Does the script editor show what errors it has?`

#

But I don't know what it is.

light prism
#

you dont use the square brackets

#

the square brackets on the wiki represent an optional argument

remote coral
#

oh.

#

oooooh.

light prism
#

like if it was Thing_DoStuff(tid, speed, [flags])

#

you could just do Thing_DoStuff(1, 16);

remote coral
#

Well

#

the script works now

#

but the smoothing doesn't.

#

It stays consistently shaky throughout the script.

light prism
#

for uhhh three seconds?

remote coral
#

Yes.

#

it's supposed to reduce from level 5 shakiness to no shakiness during that time.

light prism
#

replace the flags 1 with QF_SCALEDOWN

#

it might not equate to 1

#

(i dunno)

remote coral
#

compiled without errors.

light prism
#

judging from its position on the flags list it might be 2 but theres no guarantee, its safer to just use the text

remote coral
#

And the shakiness smoothens out now!

#

hooray.

#

Thanks, @light prism!

#

I'm actually l e a r n i n g

haughty flower
#

@light prism oi, have you checked out that link?

light prism
#

i had a look but i havent done anything yet

remote coral
#

Well now

#

BTW, is scipting like this done separately to the scripting used in GZDB?

light prism
#

actors and weapons and items and such are 'state engines'

#

ie they are entites that exist within a serial state list

#

like 'spawn' 'see' 'death' 'pain' etc

#

there are two modern ways to go about writing that stuff

#

one is DECORATE, and the newer one is zscript

#

decorate looks like this

#

the scripting you do in gzdb is ACS, which are event-triggered world scripts

remote coral
#

Right.

remote coral
#

So I want to share my devmap with a friend.
But the wad I'm making my map in doesn't show in GZDoom.

#

How can I fix this?

#

I'm guessing it's because it's not replacing any existing maps?

haughty flower
#

@remote coral mapdefs

remote coral
#

?

haughty flower
#

pardon. mapinfo

remote coral
#

oh boy

#

back to SLADE then

haughty flower
#

yep

remote coral
#

So I found a pastebin link for a mapinfo file

#

But I found something that the video nor the wiki really explains.

#

`map MAP31 lookup "HUSTR_MAP31"
{

}`

#

lookup? HUSTR_MAP31?

unreal oyster
#

lookup looks up from the LANGUAGE lump/DeHackEd strings table

remote coral
#

I'm guessing I don't need to worry about it.

unreal oyster
#

The wiki does explain this btw

#

HUSTR_31 in vanilla doom 2 translates to "level 31: wolfenstein" iirc

remote coral
#

But what does a LANGUAGE lump/DeHackEd strings table do?

unreal oyster
#

The language lump allows modders to provide translations for various things based on the users' system language

#

I can't be bothered to explain DeHackEd

remote coral
#

nothing I have to worry about then.

#

Still, thanks.

#

one last thing, I can't seem to find the names for the doom songs for the MAPINFO file, no matter how hard I look.
Even the filenames on the Doom wiki aren't the right ones.

unreal oyster
#

$MUSIC_RUNNIN, $MUSIC_STALKS, etc. is what you use for default doom 2 music in mapinfo

remote coral
#

those are what I mean.

#

Where can i find the list?

unreal oyster
#

The $ sign is a LANGUAGE lookup

#

So gzdoom.pk3/language.enu

remote coral
#

Thanks.

#

Well I managed to get the map showing on the list at least.

#

now to just actually try and get it working as the first map.

#
{
    LevelNum = 01
    skybox = SKY1
    next = "MAP02"
    sky1 = "SKY1", 0
    cluster = 1
    par = 30
    sucktime = 1
    music = "D_SHAWN"
}```
#

IS what I have currently.

#

Is the only way to get the first level as the dev level just having the map name MAP01?

shadow bone
remote coral
#

Will the first episode specified in MAPINFO be automatically assumed by the game as cluster 1?

shadow bone
#

I... think so?

#

Been too long since I messed with this

remote coral
#

I'll try.

#

And hope that it's true.

#

Because if it is, I could just clear existing episodes, make a new episode and only include my map in it.

shadow bone
#

That would probably work, in my understanding

remote coral
#

๐Ÿคž

#

There's its own cluster definition though.

#

...huh.

#

I'm... actually stunned that it worked.

haughty flower
#

What do i compile acs with, outside of the builder? there are several projects where i saw acs files general for the whole project

remote coral
#

I just thought of something.
Why are there only blue and green armor as well as armor bonuses?

#

Where are the 10 and 25 armor pickups?

shadow bone
#

@haughty flower GZDB just calls acs.exe to compile scripts. You can do that as well, via the command line or even configure Slade to point at acs.exe, if you want to have scripts outside a given level

#

You just need to make them libraries and use LOADACS to have them run

remote coral
#

It's really weird.
Not even realm667 has 10 and 25 armor pickups.
You'd think someone has made them already.

shadow bone
#

ยฏ_(ใƒ„)_/ยฏ

#

Dunno

#

Be the change you wish to see

remote coral
#

I'd do it if I had the attention span and skills in both scripting and spriteworking.

#

Well I did find a 10 armor bonus.

#

But the sprite looks a bit crummy.

shadow bone
#

Code-wise, making a new armor bonus pickup is pretty trivial

#

here, one minute

remote coral
#

no need to make one right now.

shadow bone
#

this is ZScript, by the way, not DECORATE

class ArmorBonus10 : ArmorBonus
{
    default {
         Armor.SaveAmount 10;
    }
    States {
        Spawn:
            BON3 ABCDCB 6;
            Loop;
    }
}```
remote coral
#

well then

shadow bone
#

BON3 would be your new sprite

remote coral
#

That didn't take long.

#

I did find 10 and 5 armor bonuses.

#

So they're not completely lacking.

shadow bone
#

If you like them functionally, then you can just change the sprites and keep the same code

haughty flower
#

suggest to check out decorate inheritance

#

if you gonna use decorate that is

shadow bone
#

Yeah, inheritance is great

#

works in ZScript too

haughty flower
#

are there any upsides of using zscript rather than decorate?

shadow bone
#

uh, all of them

haughty flower
#

like?

shadow bone
#

Like the ability to work with basically engine-level c-like code

#

Custom functions

#

event handlers

#

virtual overrides

haughty flower
#

Hm. So basically it is like quake-c?

shadow bone
#

Yes, that's exactly what it's based on, if I recall correctly

#

The cool thing is, all your DECORATE knowledge will still work in ZScript. All you have to do to convert DECORATE to Zscript:

  • change actor to class
  • use a default block for actor properties
  • put semi-colons after every line
remote coral
#

I'm either really crummy at Google-Fu, or that there really aren't tutorials for making custom pickups.

#

I don't get it.

shadow bone
#

I'd say start with ZScript, but the documentation isn't quite there yet

#

But 90% of what you learn with DECORATE will apply to ZScript with a few tweaks anyway

#

So it's not an awful place to start

haughty flower
#

@shadow bone question. if i have something like this

TNT1 ABCDEF 1
     {
        //Do something
     }``` will it execute the code within brackets on each frame? (a then execute again at b), just like decorate does with it's calls?
shadow bone
#

Yes, each frame

remote coral
#

I'm sure that it's possible if I dig deep enough into how DECORATE works, but it still feels odd how there doesn't seem to be a single tutorial for it.

haughty flower
#

@remote coral You sound like you cannot be bothered lol

#

open up a wad which contains working decorate and look at it

remote coral
#

I guess that's the best way to go at it.

#

Can you give an example?
Example map, I mean.
If you have one lying around.

haughty flower
#

also. i was digging a bit - it's quite fun how doom alpha hud eventually inspired Wraith of earth to actually make working version of it.

remote coral
#

I love how old games used to have massive huds.

haughty flower
#

similarities are uncanny

remote coral
#

Because there was just not enough power for fullscreen.

haughty flower
remote coral
#

A-ha.

#

I was just confused where the decorate files can be viewed/used.

#

I'm not a very smart man.

haughty flower
#

what you can do is you can inherit it and then just change Armor.SaveAmount to 5/10

remote coral
#

I'll have to check that out.

#

And probably try and do that.

haughty flower
#

I fucking...wait, does ACS STILL doesn't support strings as arguments?

#

@light prism you told me earlier that i can make a typer via scripting

#

There is retarded and then there is acs.

shadow bone
#

Ain't that the truth....

haughty flower
#

So basically. in order to actually create the typer i need to have a pre-defined string table. thonking

#

sigh

#

this is 3rd time i'm this close to the just snapping and moving everything to unity

#

last time it was homage to wraith of earth, time before that - eques virtute.

remote coral
#

This one
singular
plank of wood

shadow bone
#

That's a prime candidate for a decorative 3D model ๐Ÿ˜‰

remote coral
#

that's basically what it is.

#

I'm planning on hiding a soul sphere in the middle of some shipping crates, and that acts as the method of getting out

shadow bone
#

You're using a sloped sector though, right?

#

So it's part of the map?

remote coral
#

yes.

shadow bone
#

That's good if you want to be able to walk on/up it. For pure decorations, you might find your life easier actually importing 3D models, if you wanted to take the time to learn

#

Slopes are useful, but they're tedious for detail work

remote coral
#

Makes sense.

unreal oyster
#

[17:37] smoke_th: I fucking...wait, does ACS STILL doesn't support strings as arguments?
ACC doesn't, there are other ACS compilers that do

#

gdcc-acc allows you to put str as the argument type (though i don't think it's strongly typed, still)

#

and gdcc-cc is full-on C so i'd assume it lets you do that since C has strings

#

though admittedly i wouldn't be able to tell you the specifics of that since I haven't had a need for gdcc since ZScript was invented, which was fairly shortly after i joined the community

#

like, half a year or so after

#

@light prism uses gdcc iirc, they might be able to tell you

remote coral
#

Wait, how did you make an area of a map a secret again?

shadow bone
#

It should just be a flag in the sector properties, I think

remote coral
#

found it.

#

I have no idea why I didn't see it in the generalized effects.

#

It's not in the specials list either, it has a flag ID of 1024.

#

At least it's easy to remember.

vocal crypt
#

Those wooden planks remind me of the training mission in Conflict Desert Storm lmao

remote coral
#

Can you assign multiple tags to one sector?

unreal oyster
#

yes, in UDMF

#

there's a + button

remote coral
#

I guess I saw incorrectly.
I had tried it, but only thought it only gave a new tag for tag 1.

haughty flower
#

Uh...what is BCS?

remote coral
#

in what context?

haughty flower
#

in zdoom modding context

#

@shadow bone is bcs just for zandronum? it has definable enums, which are absent from acs compilation

unreal oyster
#

bcs is a language

#

and the source ports don't read the language

#

they read the acs bytecode

#

so any language that has a compiler to ACS bytecode can be used in any ACS-compatible source port

#

it looks like BCS is just an extension onto ACS' feature set

haughty flower
#

odd thing is that gzdb kinda refuses to compile it, but instead of actual error message it just tells me that temp file is missing

#

oh. i see. it just shits itself because of the wrong declaration but doesn't give the error line

#

smh can i somehow read last console message from acs?

unreal oyster
#

gzdb's script editor's error box is defaulted to not shown for some reason, you have to click here to get it up

haughty flower
#

i know

#

that i already figured out

#

sigh guess i'm dropping lockdefs and tying every keyed door to ACS as well

#

ah great. i also cannot include a bcs file to a map script or switch map acs format to bcs

#

facedesks

unreal oyster
#

well bcs uses a specific compiler, bcc

#

acc isn't going to support it

#

and gzdb ships with acc

haughty flower
#

nevermind, it does come with bcc. i'm having different problem right now - goddamn thing refuses to compile - tells me #library must come before anything else.

#

when it does

#

Okay it needed to be #import, not include

#

seems to compile now...?

#

great, it even picked up library named functions

#

@light prism Cat, i need your help. do you have any clue how typedefs work in bcs?

#

i'm mostly interested in structs and gauging info from one struct

#

or even general structs

haughty flower
#

Okay so this piece of shit compiles just fine when i compile library on itself

#

but when i try to target it from map specific script - it, for some retarded reason, assumes it's ACS and eats shit

#

it's been awhile since i've been frustrated so much on the retardation of tools

#

oh. wait.

#

i need to switch script type when i open goddamn thing

#

yeah, works perfectly fine now. ๐Ÿ˜„

remote coral
#

I know that the entirety of the zdoom wiki has a fuckton of useful info

#

But as someone who hasn't looked up into coding in Zdoom (or doom mapping in general), I feel so lost

haughty flower
#

uh. if someone is at zdoom discord, can you invite GZDB_Bugfix developer here? As well as BCS compiler developer

#

i'm having some diffuculties and information is scarce.

struct MessageObject objMessages[ 64 ];``` this works
```c
struct MessageObject objMessages[ 64 ] = {
    { "A", "B", "C" },
};``` this doesn't and it shits at me that error: initializing struct member of string type
#

how the hell do i even define array of structs then

#

however this shit does c struct MessageObject objMessages[ 64 ] = { { 1, 2, 3 }, };

#

I fucking.....what

shadow bone
#

I don't know what the problem might be, but I do know strings are second-class citizens in ACS and derived languages. That probably has something to do with it

haughty flower
#

....

#

facedesks

shadow bone
#

If you want a more robust language option, check out GDCC

haughty flower
#

does gzdb even support it?

shadow bone
#

I'm not sure.

#

But you don't need GZDB to make/compile scripts

#

You can compile them externally and import them to your map

#

It's an extra step but might be easier

#

ยฏ_(ใƒ„)_/ยฏ

unreal oyster
#

there's a configuration for gdcc-acc for gzdb, but not gdcc-cc

haughty flower
#

facedesks

unreal oyster
#

(gdcc-acc is a mostly a superset of "normal" acs)

#

(gdcc-cc compiles C code to ACS bytecode)

haughty flower
#

does gdcc-acc support structs and struct arrays with strict string initialization?

unreal oyster
#

i can say yes definitely for supporting structs, couldn't tell you for the second bit, never used it

#

gdcc-cc is C so i can tell you confidently that yes that supports that

shadow bone
#

And again, you don't need GZDB to compile / edit the scripts

unreal oyster
#

but i can understand not wanting to use C, especially for map scripting

haughty flower
#

sigh

unreal oyster
#

can i ask what exactly you're doing here? i know for sure i'm missing context

haughty flower
#

Making a message typer hud for player. Think press release doom alpha but fancier

unreal oyster
#

like, what sort of messages?

haughty flower
#

All of them

#

pickups, door has no key messages, has key messages, etc

unreal oyster
shadow bone
#

> acs hud
You have my pity

unreal oyster
#

also yeah, why acs? do you care for zandronum compatibility?

haughty flower
#

no

#

gzdoom only

shadow bone
#

Should really use ZScript then

haughty flower
#

tho i looked how Death & Decay does things - seems to be pretty straightforward for zandronum

#

i mean they have such a fancy shop hud. can't go wrong with that

unreal oyster
#

yeah why are you even using ACS if this is for gzdoom? ACS-based modding has been practically dead for a while now (like, since the start of 2017 or so)

#

ZScript can do anything it can, including HUDs which would make this a ton easier

#

(doom delta uses a ZScript HUD for exactly this)

haughty flower
#

yeah last time i was doing large modding project was in 2014, so pardon my outdated knowledge

shadow bone
#

It's okay, everyone has their starting points

#

I still don't know how to do haven't myself done ZScript HUD stuff, but I know for a fact it's miles easier than ACS

haughty flower
#

SIGH. Alright.

#

Guess i'll switch to zscript then

#

hold up, does gzdb support it?

unreal oyster
#

in the sense that you can place ZScript actors in-editor, yes

#

but gzdb isn't (and never has been) an all-around modding tool

#

use SLADE for that

haughty flower
#

I'm so confused right now. Do line specials support zscript?

unreal oyster
#

no, you still use ACS for basic map scripting

#

full-on game modding is done with ZScript

#

like custom HUDs

#

and enemies

#

and menus

#

etc.

#

you would still use ACS to make a lift lower and print a message on pressing a switch, for example

haughty flower
#

Okay. can i then use zscript to throw that Print to a hud?

unreal oyster
#

yes, but tbh i wouldn't exactly recommend trying to do what you're doing in ZScript first without any prior knowledge on the language

#

the problem with ZScript is really that nobody's yet built an all-in-one tutorial that can teach you every area

#

and graf doesn't self-document the language, which has proved really annoying

haughty flower
#

Ok stop. I need answer for this specific question - how do i redirect Print() to a new area via zscript? Or rather intercept it completely and store print output to an array

#

or any output game throws at it for that matter. Prints, pickup messages, locked door messages

#

That's the only reason i was bothering with bcs

unreal oyster
#

i don't think you can do that, least i've never seen it been done - how would you do that in this BCS?

shadow bone
#

Yeah, I'm pretty sure those messages are engine-level

haughty flower
#

I wouldn't use outputs altogether and instead redefine whole messaging via bcs

unreal oyster
#

well you could do that using ZScript too, i thought you meant intercepting existing stuff, which as cali says is engine-level and not passed to any callbacks

shadow bone
#

If it were me I'd start with an event handler that triggers on a world pickup and calls the HUD function.

unreal oyster
#

there is a way to make a ZScript function accessible via ACS

#

using the ScriptCall() function in ACS

#

and a class with a static member in ZScript

light prism
#

are all these messages linked to actors?

haughty flower
#

@light prism all messages. Pickup messages are on actors. Door inaccessible messages are in lockdefs

light prism
#

because if they're just extended 'look'-style descriptions, you could fit them in the actors Tag field

#

rather than creating an array that you have to reference

haughty flower
#

that's hacky as shit

light prism
#

its actually less hacky than this method