|
Post by ketmar on Nov 4, 2022 7:29:53 GMT -5
I am glad I did not spent enough time on this, since you probably knows bestest . i cheated and simply wrote a converter. ;-) actually, i had it half-finished from my previous voxel convertions, and it mostly worked. and then i had to patch the engine, because some models have more than 64K vertices, and i was using 16-bit vertex indices. ;-) do I understand right… … Each of the small "state integer" above is the 'index=' attribute number in model binding's '<state>'element: <class name="KRPGMana1"> <state index="XX" model="bluemana" frame_index="0" angle_start="0.0" angle_end="360.0" /> </class>
Do I got that right? yes, absolutely. Whats confusing me is algorithm with which I get from textual decorate into the raw "state numbers": - each sprite name + each rotation letter is one "state number"?
yep. just a boring manual counting. that's why i said that it is not a pleasant task. ;-) also, i'd recomment to NOT use this method until it is strictly necessary (for inter-state animations, for example), and attach models to sprites instead, with `sprite="SPRX"` and `sprite_frame="A"`. this attaches to any state with the given sprite, and you don't need to count things.
|
|
|
Post by camper on Nov 4, 2022 12:11:39 GMT -5
I understand you - been there done that. But I don't believe that is the way - though I might be wrong. You would be just diluting assault cube's membership and your thing is basically just and asset flip. I have a little story about this, so if you wish to read it, ask for it. I would love to read your story if you write one. I love multiplayer. The first multiplayer I played was Doom 1.2. On the local network or via Dial-up. Then a little quake 2 via Dial-up on the provider's server. Then immediately Quake 3 via fiber or in a club. Less Unreal Tournament (I liked it less). Counter-Strike didn't work for me, and I didn't like it. But after Quake 3, I actively played his UrbanTerror mod. I have tried Warsow and I have a very good opinion of it. Now I play a little AssaultCube and Sauerbraten. Experimenting with bots in k8, I also tried LAN with a person. I like the k8's potential. It would be a pity if multiplayer didn't work in k8. I recently thought about the possible porting of assaultcube maps to k8. As far as I can make sense, they have different ways of building maps: BSP and Octree (Or Quadtree?). But cube 1 and assaultcube already have a lot of maps made. I had a dumb idea to convert cube 1 maps to doom maps by saving the maps in obj format (Sauerbraten allows you to convert cube 1 maps to cube 2 and then to obj format) and then generating the doom map in Ultimate Doom Builder and then editing by hand. But the idea failed, it turned out that it was easier to draw everything again. Now my dream is to have a universal 2.5D engine capable of rendering both doom and cube 1 formats. Why am I not satisfied with just the AssaultCube? I don't like the game physics in it. I like gameplay doom.
|
|
|
Post by ketmar on Nov 4, 2022 12:16:03 GMT -5
it's not that hard to convert Cube maps, btw: they are essentialy 2.5D too. i mean, it's hard, of course, because we'll need an algo that will properly trace cube contours and build polygons instead, but it is definitely possible to write such converter. but i definitely won't do it. ;-) Now my dream is to have a universal 2.5D engine capable of rendering both doom and cube 1 formats. definitely not possible. alas.
|
|
|
Post by 3t0 on Nov 4, 2022 17:56:46 GMT -5
i cheated and simply wrote a converter. ;-) actually, i had it half-finished from my previous voxel convertions, and it mostly worked. and then i had to patch the engine, because some models have more than 64K vertices, and i was using 16-bit vertex indices. ;-) Wait, is something more needed than loading cheelo's voxel models? I was under impression k8 v loader is at least beta ready. Okay after ~30 years I think I finally understood how doom state machine/DECORATE works at high level. Fuck me, if this is correct: - So monster FSM is basically this giant array of "states", [0..n] ordered and each state is then "opline" containing a struct having probably an opcode (sprite, jump) and then refencing spritename base, rotationals (in 8 cardinal directions), tick count, and possibly a function call (I guess C style by function pointer type?).
- Most used opcode is for "draw sprite & funccall" like A_Look, A_Chase etc, that references: sprite name base, ticks, rotationals, and AI func
- When engine updates mobjs (mapobjects) it iterates over each mobj struct in a map:
- normal mobj has at least position, height above sector floor (and perhaps accel and mass?) but is left alone if not an actor
- but if the mobj is actor, it has more fields pertaining to actors, one of them tracking current state index, its ticks count, but also AI related stuff like current target, view angles, etc
- actor_update/executor function invoked by mobjs iterator (on actor mobjs only) then looks into currently active state stuct for given actor class (lifted from current mobj/actor) and uses AI A_* function from state's "opline", but with AI data from current mobj/actor (target, direction etc)
- this is repeated each tick (ie render frame in old doom) on all mobjs, and each time it updates actor, actor_update/executor function decreases actor's current state index ticks count
- once state index ticks count stored in actor decreases to zero, executor fetches new "opline" form actor class state array, and if applicable updates current state index and tickcount of the actor
- this is similar to how I pass auxiliary data to C style generalized extendable quicksort function (ie mobj iterator):
- I pass ass data to array to sort (in doom case mobjs)
- pointer to sorting function (in dooms case functions wihich eventually dispatches into actor_update/executor)
- and perhaps auxiliary data (in doom's case state FSM arrays)
- this repeats every tick/frame while game runs, animating armies of monsters
EDIT: Of course in both gzdoom and k8v this is different and more complex because actor_update/executor (or 90% of whole engine in k8v) is written in some other interpreter like vavoomc or zscript.
|
|
|
Post by 3t0 on Nov 4, 2022 22:16:58 GMT -5
I love multiplayer. The first multiplayer I played was Doom 1.2. On the local network or via Dial-up. Then a little quake 2 via Dial-up on the provider's server. Then immediately Quake 3 via fiber or in a club. Less Unreal Tournament (I liked it less). Counter-Strike didn't work for me, and I didn't like it. But after Quake 3, I actively played his UrbanTerror mod. I have tried Warsow and I have a very good opinion of it. Now I play a little AssaultCube and Sauerbraten. First experience of mine with human player (my bro), was "head to head" mode in ancient fighter jet game called retaliator. Occasionally I boot it just for nostalgic feels. It supported both nullmodem, and modem, if I am not mistaken. Nullmodem cable was special tty cable that allowed you to connect two IBM pcs as if they were connected by modem, but it was faked. This was doable only at dad's work where they had two 486s. The experience both of us to be able to fly together was something out of this world - today we don't even blink an eye about MMORPGS, LOL. Yeah then bit of Doom and more Quake, but I had really crappy hardware. Eventually I got to "work", as juvenile work laws allowed, in a computer cafe (more like gamecenter really, no cafe at that current spot , and it was booming business back then). There, main money bringer was Counter-Strike - I kinda liked it at first, because of the tactics and such (this was all pre 1.6, those who remember will know, counter went quite shit since then). Fun times. Everybody in town was into it. And then as you said usual suspects (for playing with less sheeply people that is), Quake 3 and Unreal Tournament were the games (this was only me, bosses, their girlfriends, and their friends, though). But even at Quake already, I realized, I don't have what's needed to be even decent player - I am too slow, too touristy, and too unflexible (shotgun is my weapon of choice - and this gun, besides doom, is always ridiculosly nerfed in games, because it would be best weapon otherwise - like, only these days, I do fully realize how ridiculous shotgun in game like counter-strike is (or other "simulation shooters" is, doom 3 is biggest joke), yet I refused to use anything else back then) and so on. Some people will agonize over being bad and that is what powers them to git gud, but not me. More of my satisfaction was achieved, when I could setup dedicated servers and try building levels in Worldcraft (LOL), Qoole (OMG) and Quark (still has releases, insane) - oh my, all these three are shitty as fuck compared to modern Trenchbroom. What really made me happy with multiplayer was when I got people to smile and laugh in coop doom, coop quake (original levels are so fucking short though) or sven-coop, and recently Killling Floor. The vibe at any lan-party from those games I think was best. Anything else brings out that stupid ego competitivnes in people and it's not as much fun. At least I don't like it. Thus I don't care about much fraggy competitive deathmatch netplay, but it should be there probably for people who do. I personally care about coop, which is like trice a year event for me, either with my family or with friends who are willing to setup the game. These days people are so fucked up, that unless steam does it for them, they cannot even be bothered to start a new game by hand.
|
|
|
Post by ketmar on Nov 4, 2022 22:19:28 GMT -5
Wait, is something more needed than loading cheelo's voxel models? I was under impression k8 v loader is at least beta ready. patching OpenGL code to use 32-bit vertex indices instead of 16-bit. ;-) also, i added flags to turn off frame interpolation for voxels, and angle interpolation for monsters, because voxels are closer to sprites anyway. now voxel models look like they always were there instead of sprites. ;-) as for converter, i meant VOXELDEF -> set of k8vavoom xmls, and nice directory structure. i refuse to do it manually. ;-) Okay after ~30 years I think I finally understood how doom state machine/DECORATE works at high level. Fuck me, if this is correct: yes, this is how it works. sans small things you added with extensibility in mind. ;-) i mean, no special "opcodes" in states: the engine always renders the sprite, and calls state action (if it is not NULL). that's all. also, state duration is decremented in the main loop (because it is easier, more logical, and state action may be missing at all). states also have two int args (misc1, and misc2), and each state explicitly points to the next one (that's how "GOTO" is implemented, by simply changing that pointer; that's also why "GOTO"/"LOOP"/"WAIT" instruction in DECORATE code doesn't count as separate state). also, the main mobj loop doesn't care about mobj type: everything that can be placed on the map has a state machine attached, there is no need to check types in iterator. in this regard, thinker object is not different from a monster object. the engine, for example, spawns thinker objects (invisible things w/o physics) when it needs a timer (change a light level, close a door, etc.) usually there can be only one type of thinker per sector, and thinkers are used as guards too. i.e. when you're opening a door, the engine checks if there is no "timer thinker" in door sector. if there is none, the engine activates the door, and spawns a timer. and if there is already a timer mobj there, the engine does nothing. smart trick. ;-) this way such timers also automatically saved in save file, because they are serialized as any other map object. in k8v (and some other ports, i guess), player inventory (and other object inventories) actually sits in the map, at (0,0,0) point, for example. it simply flagged as "invisible, no physics", but physically (lol) it is there. because Doomguy has no pockets, nor do monsters. ;-) was "head to head" mode in ancient fighter jet game called retaliator. yay, F29 Retaliator! it was a great game! openworld 6DOF 3D engine, and it worked on 286! (the game itself was fun too, but i was unable to finish any mission, because i couldn't properly land. i spent years just crashing until one of the elder boys tought me how to land.)
|
|
|
Post by ketmar on Nov 5, 2022 3:10:39 GMT -5
and i'll add more screenshots. i've played with voxel models, and i must say that it looks just great: the only type of 3d mosters that doesn't ruin everything. there are some slowdowns in light-heavy scenes, but the game is definitely playable. also, dynamic lighting now properliy light monsters (i mean, they're 3d now, and lit as 3d objects). mostly corpses again, because… ahem… i was playtesting it.
|
|
|
Post by 3t0 on Nov 5, 2022 7:10:38 GMT -5
yes, this is how it works. sans small things you added with extensibility in mind. ;-) i mean, no special "opcodes" in states: the engine always renders the sprite, and calls state action (if it is not NULL). that's all. also, state duration is decremented in the main loop (because it is easier, more logical, and state action may be missing at all). states also have two int args (misc1, and misc2), and each state explicitly points to the next one (that's how "GOTO" is implemented, by simply changing that pointer; that's also why "GOTO"/"LOOP"/"WAIT" instruction in DECORATE code doesn't count as separate state). This genius, I was curious how GOTO, LOOP and WAIT are done: so both "label" and "opcode" "exist" only during parsing state, once FSM is baked into real game, for each state, there is a pointer to next one. also, the main mobj loop doesn't care about mobj type: everything that can be placed on the map has a state machine attached, there is no need to check types in iterator. in this regard, thinker object is not different from a monster object. Makes sense, saves if/case dispatch in relatively tight loop. the engine, for example, spawns thinker objects (invisible things w/o physics) when it needs a timer (change a light level, close a door, etc.) usually there can be only one type of thinker per sector, and thinkers are used as guards too. i.e. when you're opening a door, the engine checks if there is no "timer thinker" in door sector. if there is none, the engine activates the door, and spawns a timer. and if there is already a timer mobj there, the engine does nothing. smart trick. ;-) this way such timers also automatically saved in save file, because they are serialized as any other map object. Are thinkers positionally bound to sectors or do they spawn in 0,0,0 as everything else? The saving hack is genius again. in k8v (and some other ports, i guess), player inventory (and other object inventories) actually sits in the map, at (0,0,0) point, for example. it simply flagged as "invisible, no physics", but physically (lol) it is there. because Doomguy has no pockets, nor do monsters. ;-) I've seen this in so many games, even commercial one I worked on, even Half-Life does this, not sure whether Quake too. In game I worked on, this thing was source of problems, our player was constantly losing things and shit (coders were pretty crappy). It is this such a good idea instead of having specially crafted voidspace item bag, with respective save representation? Or that added complexity is too much? yay, F29 Retaliator! it was a great game! openworld 6DOF 3D engine, and it worked on 286! (the game itself was fun too, but i was unable to finish any mission, because i couldn't properly land. i spent years just crashing until one of the elder boys tought me how to land.) Well its' just flatland with 3d sprites . Their polygon filler routine was godlike, not only it ran at 30fps even on 286, just like you said, but it also fit into, like what, 460kbs of memory, I think, and it had 256 colors (even more thanks to integrated dithering). Missions had everything from planes to tanks and ground forces convoys, submarines and air carriers in them, everything. No one remembers this little gem, I am really moved that you do. Yeah landing was biggest obstacle and hardest part of the game but once you learned it through powers of attached textfiles - it was a routine. I was really pissed I couldn't land. I remember translating the section from screen onto paper with vocabulary in one hand and some words were missing there (like aerospace terms : flaps, gears, LOL). I then impressed bro and dad with my first landing - pretty cool game, albeit little unknown. Thinking about it we got so far yet nowhere. They were able to do so much with so little. On the other hand in modern games grahics games look photorelistic but mechanically these are even simpler than this old crap. also, i'd recomment to NOT use this method until it is strictly necessary (for inter-state animations, for example), and attach models to sprites instead, with `sprite="SPRX"` and `sprite_frame="A"`. this attaches to any state with the given sprite, and you don't need to count things. Unfortunately this one is nowhere documented . At least I haven't found it yet. i added flags to turn off frame interpolation for voxels, and angle interpolation for monsters, because voxels are closer to sprites anyway. now voxel models look like they always were there instead of sprites. ;-) But guns if marked for rotation, when they are pickups, will rotate (or not?)? Like they do in quake/blood? Also having ability to toggle monster smooth steering I believe could be good user tunable knob (or better decorate level stuff? voxel ceiling fan model would be good prop for smooth rotation example). Personally I don't mind smooth monster steering, but I am pretty sure frame interpolation cannot really work with voxels, can it? Anyway I can't wait to try this, especially lightning is going to be glorious, I bet. i've played with voxel models, and i must say that it looks just great: the only type of 3d mosters that doesn't ruin everything. Well this is what made me instantly love them in GZ! Cheelo is amazing artist: he managed to preserve classic doom essence yet make it fully 3d - his sprites best capture the doom essence I've seen in ages. The fact that they are made in such a way that all cardinal directions map almost voxel per pixel to the source material is simply insane. You can have the cake and eat it.
|
|
|
Post by ketmar on Nov 5, 2022 7:46:06 GMT -5
Are thinkers positionally bound to sectors or do they spawn in 0,0,0 as everything else? The saving hack is genius again. it doesn't matter, because they aren't in the blockmap anyway, so they don't "physically exist". each mobj has a pointer to the sector where it resides, and that pointer is used. It is this such a good idea instead of having specially crafted voidspace item bag, with respective save representation? Or that added complexity is too much? it is much easier to have all active objects in one linked list instead of maintaining a separate list for each entity with an inventory. and that list (coincidentally) means "it's on the map". inventory items simply don't go to the blockmap (again), so they are mostly ignored by physics and such. No one remembers this little gem, I am really moved that you do. we had 286 pcs without HDDs in my school, and "retal" was one of three games i played a lot there. another one was Death Track, and yet another one was LHX. i think that F29 managed to hit the exact point between arcade and realistic flight sims (at least for me) to be fun to play, and still provide a feeling of flying. i later read that some game mags called it "too simple", but i believe that this (relative simplicity) was the exact thing that made it so playable. Yeah landing was biggest obstacle and hardest part of the game but once you learned it through powers of attached textfiles the luxury we didn't had. ;-) our copy didn't had any documentation at all, so we spent quite a time figuring out all the keys. Thinking about it we got so far yet nowhere. They were able to do so much with so little. On the other hand in modern games grahics games look photorelistic but mechanically these are even simpler than this old crap. some day i'll fork GL117, and will turn it into Retal clone. i hope. ;-) Unfortunately this one is nowhere documented . At least I haven't found it yet. it is mentioned in "specs/unfinished/k8vavoom_models.txt". ;-) But guns if marked for rotation, when they are pickups, will rotate (or not?)? Like they do in quake/blood? yes. there is a huge difference between physics-driven rotation/movement and monster AI-driven movement. monsters aren't "moving" or "rotating", the AI code simply teleports them, and write new values into `angle`. yet pickup rotating/bobbing is done the usual way, using rotation speed and frame time, there is no need to interpolate anything there. Personally I don't mind smooth monster steering it looks awful, believe me! ;-) but I am pretty sure frame interpolation cannot really work with voxels, can it? yes (i mean, no, it doesn't work ;-). adding explicit "turn it off" knob was more for the safety/completeness sake. Anyway I can't wait to try this, especially lightning is going to be glorious, I bet. if you can build k8v from sources, i can give you a link to converted pk3. i'm not making it public only because it doesn't work with the current official build. Cheelo is amazing artist: he managed to preserve classic doom essence yet make it fully 3d - his sprites best capture the doom essence I've seen in ages. The fact that they are made in such a way that all cardinal directions map almost voxel per pixel to the source material is simply insane. You can have the cake and eat it. yeah. it looks so natural that you prolly won't even notice that monsters are not 2D sprites anymore. really great work. i hope he'll finish Doom 2 monsters too. and of course, i found a bug. ;-) one voxel model for big green torch has extra voxel at the corner, so i fixed it. dunno how to report it, though: there seems to be no e-mail for bug reports. :-(
|
|
kenon
I'm too young to die
Posts: 3
|
Post by kenon on Nov 6, 2022 8:27:01 GMT -5
hi, where can I download ZDoom ACC compiler fork for the port?
|
|
|
Post by ketmar on Nov 6, 2022 9:02:40 GMT -5
just use ZDoom ACC, it works just fine. copy files from "specs/3dpobj/zacc_acs/" over the files provided with ZDoom ACC to get 3D polyobject methods. if you don't use 3D polyobjects, there's no need to copy anything, normal ACC will work just fine.
|
|
|
Post by 3t0 on Nov 6, 2022 9:04:12 GMT -5
So today I found some time after lunch and re-pivoted from git mirror to my freshly synced k8vavoom.fossil, which, thank you very much for unblock, now works! I am on c6982d2769. Engine compiled fine. Finally I saw the wiki and tracker, which is awesome! Wiki needs love though . Have you considered some fossil mirror hosting? Given developer/user ratio is ofthen 1/100 or 1/1000, perhaps some baked static page for k8v could be cool? it is mentioned in "specs/unfinished/k8vavoom_models.txt". ;-) Fuck I, like the other cmake person, again, searched everywhere on the net besides local folders, great... Nevermind will know better. if you can build k8v from sources, i can give you a link to converted pk3. i'm not making it public only because it doesn't work with the current official build. Given all above I can now playtest wink wink. and of course, i found a bug. ;-) one voxel model for big green torch has extra voxel at the corner, so i fixed it. dunno how to report it, though: there seems to be no e-mail for bug reports. :-( First it might not be a bug, I remember a torch flames have random solitary pixels in some frames, as in a little sparks, you know. Maybe it is Cheelo's attempt at transferring that effect? Second - yeah emailing people these days is night impossbile, you can porbably only reach him trough some release channel like patreon or what? I haven't yet dug out how to reach him either.
|
|
|
Post by ketmar on Nov 6, 2022 9:18:36 GMT -5
I am on c6982d2769. Engine compiled fine. of course, i already added one more commit after that one. that's what you get for using development repo. ;-) Wiki needs love though . yes, i should prolly move most specs to the wiki, and add other documentation pages. but… programmers really LOVE to write documentation, you know… ;-) Have you considered some fossil mirror hosting? actually, if you cloned the repo, you have everything you need to make a mirror. my repo is served by Fossil itself (with a slightly patched skin, but it doesn't matter). i mean, if my site will go offline, it will be possible to get it up and running with any cloned copy. so mirroring the repo itself is not that important, i believe. Given developer/user ratio is ofthen 1/100 or 1/1000, perhaps some baked static page for k8v could be cool? yeah, maybe we need The Real Internet Site for the project, more user-friendly and such. but i definitely won't do that myself — maintaining a site is quite a lot of work, and i already have more than enough at my plate. alas. it would be great to have a dedicated webmaster (and hosting, and domain), but i think that the chances are slim. ;-) First it might not be a bug it is definitely a bug: it's a stray voxel at the corner of the cube, very far away from the model itself. and two other small torches don't have it (the model for all small torches is exactly the same, sans the palette).
|
|
|
Post by 3t0 on Nov 6, 2022 10:59:40 GMT -5
yeah, maybe we need The Real Internet Site for the project, more user-friendly and such. but i definitely won't do that myself — maintaining a site is quite a lot of work, and i already have more than enough at my plate. alas. it would be great to have a dedicated webmaster (and hosting, and domain), but i think that the chances are slim. ;-) Hmmm me too (LOL). It's complicated. But I once "managed" several phpbb forums, and one of them was WOW guild that had around 300 members. Cybercafe owners I mentioned before were members of it's top leader ring and the guild had pretty militaristic structure and perfectly working chain of command. They were pretty big on some european servers I heard, I don't remember even their name, as I managed to thankfully sidestep the whole WOW bullet. There were around 300 affiliated users, so overal it was like 600 user private forum (my first "big" site LOL). One beautiful thing about it was, that by the time forum was moved to me, they already experimented (badly) with phpbb, and already beaten some/all(?) big bosses (dragons, ogres and shit - I don't know, never played WOW) so they all knew how to cooperate. I just installed software, added admin ring to the superusers showed them where they can manage their users, and told them that they should really make the proper mod roles take it all seriously and shit. I told them if anything blows up, it's their shit to clean. I was monitoring load and space and told them if we ever get bombed or spammed, I will zap the whole thing immediately and give them last backups and good bye. I "never" heard from them "again". I occasionally got request to install something, or reconfigure the machine, but otherwise it was all hassle free - they never hit the load warning and pruned forums religiously from everything unneeded - spam, misbehaving users, sock puppets, divisive posts. I came to check them half a year after the founding and I was in disbelief: the forums had thousands of posts, pretty good activity (WOW guild does lot of comms) and everything worked flawlessly: there was complete 60 person managerial structure, with private forums and user level access layers, completely configured rights and shit, daily quite active, they even had some kind of "court forum" where they judged transgressions of their members (you know like during raid) and forums users (you know like for posting shit) and they self-policed amazingly. Best forums I hosted ever. This wonderful relationship lasted around 3-4 years but at some point they decided they need bigger iron and moved elsewhere. I can compare as I also hosted forums for like 10 friends, with intention of mod making, and that was motherfucking kindergarden level ordeal. Never again. So I don't know, it's pretty complex proposition. I would not mind running some server somewhere accessible, but policing part without community leaders and managers/generals would be fucking impossible. Who would be suitable community managers even, currently? Especially westerners like to do lot of drama on the net, and everything is so fucking political these days, and politics infected even base concepts like fucking gender and/or sex (as in biological sex). It's not 1990-2005 internet anymore, where I am mentally at. I like my tits and asses, manga and anime and psycho french movies, slightly chauvinistic and crass jokes, and often am told that I come off as slightly/quite misogynistic (depending on a person) - although I have like 10 close women in the family, and come form women dominant family, and until last 4 years I was always encircled by swarm of women at work (not my choice it just always seemed to happen). IRL once the women got to know me, in like a week, they just coped easily somehow (I don't care how) and never bothered me beyond some friendly poking (I hope it was friendly). On the net, few years ago, I once wrote some bullshit somewhere, that I would normally say in a office and was immediately attacked by a swarm of harpies. I didn't care, but I mean, they behaved like bots and that was really frightening. Why would this be important for doom engine forums, I personally am not sure, but well, there are these "new" weird gender people everywhere now, and some of them seem to be pretty fragile/unstable mentally. And so one wrong post can end up being an literal explosion of bullshit , witch hunts, members pruning, banning and dramatization on completely unrelated platforms and even "news" (LOL). Like "real" gaming "news", LOL. So maybe simple static site, with mirror of releases would be enough for the start? XD ? it is definitely a bug: it's a stray voxel at the corner of the cube, very far away from the model itself. and two other small torches don't have it (the model for all small torches is exactly the same, sans the palette). Somebody in contact with Cheelo on patreon, moddb or somewhere?
|
|
kenon
I'm too young to die
Posts: 3
|
Post by kenon on Nov 6, 2022 15:02:35 GMT -5
just use ZDoom ACC, it works just fine. copy files from "specs/3dpobj/zacc_acs/" over the files provided with ZDoom ACC to get 3D polyobject methods. if you don't use 3D polyobjects, there's no need to copy anything, normal ACC will work just fine. Thanks, it works.
|
|
|
Post by ketmar on Nov 7, 2022 1:11:59 GMT -5
kenon, great! feel free to ask any further questions about the engine you may have, i'm always glad to answer. 3t0, i don't believe that k8v needs a dedicated forum, we have too much Doom forums already. ;-) besides, i'm not interested in "separate k8vavoom community", because k8v is not Yet Another (G)ZDoom. i mean, i want it to be a part of the Doom community as a whole, not something separate and loosely related to other Doom activities.
|
|
BIG DICK NIGGA
this post is a lie about my bodily proportions
Major Arlene obsessed, 100% verified freakazoid. AKA bzzrak
Posts: 2,295
|
Post by BIG DICK NIGGA on Nov 7, 2022 1:24:46 GMT -5
yeah, maybe we need The Real Internet Site for the project, more user-friendly and such. but i definitely won't do that myself — maintaining a site is quite a lot of work, and i already have more than enough at my plate. alas. it would be great to have a dedicated webmaster (and hosting, and domain), but i think that the chances are slim. ;-) You could ask 40 to give you a subforum here, like Eternity has on Arleneworld.
|
|
|
Post by ketmar on Nov 7, 2022 1:37:55 GMT -5
You could ask 40 to give you a subforum here i think k8v is not Big Enough Yet for that. this thread works ok, and besides, i don't have to watch the whole subforum for k8v related posts. ;-)
|
|
|
Post by ketmar on Nov 7, 2022 1:41:35 GMT -5
also, while i'm at it: the official build is in the works. nothing spectacular this time, just some fixes to run Cheello voxel pack, and several small bugs fixed.
|
|
|
Post by camper on Nov 7, 2022 3:10:14 GMT -5
also, while i'm at it: the official build is in the works. nothing spectacular this time, just some fixes to run Cheello voxel pack, and several small bugs fixed. Pardon me. Have you not forgotten about ipk3? It would be great if it worked without an empty iwad.
|
|
|
Post by ketmar on Nov 7, 2022 3:51:31 GMT -5
Pardon me. Have you not forgotten about ipk3? i definitely did forgot about that bug. forgot to create a ticket, and forgot about the issue. ;-) added the ticket, but can't promise a fix soon. p.s.: ok, fixed. ;-)
|
|
tdrr
Doomer
Posts: 66
|
Post by tdrr on Nov 7, 2022 13:36:36 GMT -5
I'm trying to make a VavoomC mod (Yes, I'm okay with maintaining it until the heat death of the universe :^), but I can't quite figure out how to do something. I want to override ApplyFriction, which is an EntityEx method, but only for all playerclasses, not every single EntityEx. How is that supposed to be done? I'm already using class MySlightlyDifferentK8VPlayer : replaces(lastchild of K8VPlayer); if there's anything relevant in that.
|
|
|
Post by ketmar on Nov 7, 2022 14:18:22 GMT -5
I want to override ApplyFriction, which is an EntityEx method, but only for all playerclasses, not every single EntityEx. How is that supposed to be done? ideally, you need to subclass PlayerPawn… but this doesn't work, because for some reason i disabled spawning replacements for it. dunno why. so the only way to make it work now is `EntityEx` replacement: class MyEntityExPawnRepl : replaces(EntityEx, forceparents);
override void ApplyFriction (float DeltaTime) { if (bIsPlayer) { // this is player pawn // this skips Voodoo Dolls if (Player.MO == self) { // not a doll } } // call parent method ::ApplyFriction(DeltaTime); }
PlayerEx (and K8VPlayer, as its subclass) is "Player Controller" object, not an mobj. you need `forceparents` hack here, because at the time when your mod is loaded, Actor and other classes were already processed, and they are subclasses of EntityEx. so the compiler must re-route them to your replacement somehow, and this is what `forceparents` does. ugly hack designed by some idiot (me), but it does the job for now.
|
|
tdrr
Doomer
Posts: 66
|
Post by tdrr on Nov 7, 2022 15:37:27 GMT -5
ideally, you need to subclass PlayerPawn… but this doesn't work, because for some reason i disabled spawning replacements for it. dunno why. so the only way to make it work now is `EntityEx` replacement Yep, that was it. I was reading the forceparents thing on docs/vavoomc.wiki (it's not finished, but it does work wonders reading it alongside basepak!), but I tried replacing PlayerPawn instead, which did nothing. EntityEx works and bIsPlayer does the trick. Thanks! One more thing I can't seem to find a good way of doing. How'd you reverse the player's yaw/pitch inputs? override void PlayerTick (float delta) { ViewAngles.yaw += AcsMouseX; ViewAngles.pitch += AcsMouseY; ::PlayerTick(delta); } This is the hack I tried, but it's laggy and jittery. Sorry for the dumb questions but I can't quite see any good way of handling this.
|
|
|
Post by ketmar on Nov 7, 2022 23:26:12 GMT -5
I tried replacing PlayerPawn instead, which did nothing. exactly what i tried to do too. ;-) it should work, and i'll add the way to replace player pawns in the future. it is much better, and way more logical way of doing it. i also should add a way to extend classes without creating new ones and hack-inserting them into class hierarchy. but the problem here is the VC compiler, and the order of the things. to have all actors available in the code, i need to parse DECORATE. and to parse DECORATE, i need to "seal" class definitions. i don't like `forceparents` hack, but cannot think out a better way yet. EntityEx works and bIsPlayer does the trick. Thanks! you're welcome! tbh, while i'm telling people to not use VavoomC, i am really happy that somebody actually tried! i already found a bug in compiler when i was testing the example code. ;-) One more thing I can't seem to find a good way of doing. How'd you reverse the player's yaw/pitch inputs? what exactly you want to do? i mean, if you want to "freeze" the view angles by ignoring the input on this frame, then simply save the actual values at the end of the tick, and restore them at the start. this is not the best way of doing it, but it should work — more-or-less. currently, there is no way to get "raw" mouse input in VC code, this logic is done in C++ (along with mouse acceleration and such), and the values are not exposed. if you will describe me what you're trying to do (i think it would be better to write this as PM), i'll add the required interface/API for you, and give you a test build. Sorry for the dumb questions but I can't quite see any good way of handling this. no problems, this is absolutely not a dumb question! i see that you did really a lot of work trying to figure it out, because i myself completely forgot about those Acs vars, for example. all questions are fine, but questions like this one is a pleasure to read and to answer! ;-)
|
|