|
Post by ketmar on Sept 13, 2023 22:35:52 GMT -5
hi! ;-) Can you give me a comprehensive list of differences between VavoomC and ZScript and explain why one is better than the other? I may have other questions later on depending on how this goes. sorry, i don't think that it is possible. ZScript and VavoomC have completely different purposes, so it's like comparing apples and oranges because they're both spherical. ;-) ZScript is there to augment the existing engine. VavoomC is there because the whole engine is written with it. i.e. ZScript created to support C++ code, and for VavoomC C++ is a "support script". of course, both things expose engine internals (more or less), so there is no easy way to convert between them (because engines are very different). yet both ZScript and VavoomC are powerful enough to create a new game, with different physics and playsim. VavoomC may be less restricted as a language, though: it is actually not a scripting/supporting language, but all-purpose one. i am using standalone VavoomC to write some software not related to Doom at all, for example. but i don't think that it really matters. both langs are powerful enough. i'd be glad to see some more works which uses full k8vavoom feature set, but tbh, if you have a lot of expirience with GZDoom, you'd better stay with it. k8vavoom is a very different beast (it is not even a lockstep engine!), so you will have to learn all tricks and engine quirks from scratch. and you're on your own in that journey, because there is no friendly wiki for k8vavoom. also, if your maps are complex, k8vavoom may struggle to render them. GZDoom renderer is way faster. k8vavoom also doesn't have any way to use custom shaders (this is conscious design choice, i'm not planning to implement this feature), it doesn't support portals (again, design choice), and overall has less features than GZDoom. also, there are no official k8vavoom builds for 64-bit systems (neither GNU/Linux, nor Windows), and no support for OpenGL ES. there were Android and Switch builds long time ago, but they are unmaintained. so with GZDoom you may reach a much wider audience. but we have dynamic shadows (even from sprites!), and fully 3d polyobjects. if this is what you need for your game, then there could be some sense in using k8vavoom. i guess i didn't done a very good work promoting my engine. ;-) but i prefer to be honest here. i don't want to see people investing time and efforts in k8vavoom only to find out that it is not what they really wanted. sorry for not being specific in my answer, but that's prolly the best i can do, because side-by-side comparison has little sense in this case.
|
|
|
Post by ketmar on Sept 13, 2023 22:40:28 GMT -5
tl;dr: ZScript and VavoomC are more-or-less on par. yet with VavoomC you need to know the engine internals good enough, because with VavoomC you're basically modifying the engine itself, not extending it. it means that you (in theory) can change more things with VavoomC, but it will require more efforts and domain knowledge than doing the same with ZScript.
|
|
DoomKrakken
Doomer
Aspiring game designer and programmer looking for work. https://ko-fi.com/DoomKrakken
Posts: 37
|
Post by DoomKrakken on Sept 14, 2023 1:48:33 GMT -5
tl;dr: ZScript and VavoomC are more-or-less on par. yet with VavoomC you need to know the engine internals good enough, because with VavoomC you're basically modifying the engine itself, not extending it. it means that you (in theory) can change more things with VavoomC, but it will require more efforts and domain knowledge than doing the same with ZScript. Fair enough, thank you for your candor. I wish you the best of luck in your endeavors!
|
|
|
Post by ketmar on Sept 14, 2023 2:14:04 GMT -5
thank you too. and don't forget that we still have dynamic shadows! drop ZScript, join The Shadows Guild! ;-)
|
|
DoomKrakken
Doomer
Aspiring game designer and programmer looking for work. https://ko-fi.com/DoomKrakken
Posts: 37
|
Post by DoomKrakken on Sept 15, 2023 2:23:00 GMT -5
thank you too. and don't forget that we still have dynamic shadows! drop ZScript, join The Shadows Guild! ;-) I'd probably do so in a heartbeat if we had some decent multiplayer stuff going on from the get-go. Fully 3D polyobjects are certainly nice, for sure. Quick question... can you use VavoomC to change how it reads sprite names? Like, you can change the index name to be up to 8 characters + frame letter(s) + rotation index/indices, instead of 4 characters + frame letter(s) + rotation index/indices?
|
|
|
Post by ketmar on Sept 15, 2023 4:22:39 GMT -5
I'd probably do so in a heartbeat if we had some decent multiplayer stuff going on from the get-go. it is almost there. as usual. ;-) internally, k8vavoom is client/server system, with replication modelled after UnrealScript (so VavoomC code can declare any object fields for replication), and fully-featured RPC. but it is half-finished (mostly works, but there are some nasty bugs and inefficiencies), because i have very little interest in multiplayer. Quick question... can you use VavoomC to change how it reads sprite names? Like, you can change the index name to be up to 8 characters + frame letter(s) + rotation index/indices, instead of 4 characters + frame letter(s) + rotation index/indices? alas. this is hardcoded into the engine in too many places (including DECORATE parser). tbh, i never envisioned k8vavoom as an engine to create new/standalone games. it is first and foremost the engine to play idTech1 based stuff, with some mod support. lifting some idTech1 limitations is possible, but then i will need to maintain either two code pathes, or much more complex code. and the beast is already complex enough. ;-) i mean, there are no wads/mods which use non-standard sprite naming (because they obviously can't ;-). spending time implementing this feature will not increase number of mods k8vavoom could run, and yet it requires quite extensive engine redesign (sprite naming scheme is hardwired even in some VavoomC data structures). as i am basically the sole developer for such low-level features, i have to choose between implementing something k00l, but not used by anyone, and my free time/other projects. implementing 3d polyobjects was an interesting task by itself, so i did it. implementing different sprite naming scheme… well, it is not an interesting task at all. ;-) so prolly the only way to have it is to hire me to implement it. ;-)
|
|
|
Post by camper on Sept 15, 2023 10:52:49 GMT -5
tbh, i never envisioned k8vavoom as an engine to create new/standalone games. it is first and foremost the engine to play idTech1 based stuff, with some mod support. lifting some idTech1 limitations is possible, but then i will need to maintain either two code pathes, or much more complex code. and the beast is already complex enough. ;-) Let me make a comment. But vavoom is a new engine, as the name of the site www.vavoomengine.com/ suggests. But on the other hand, it is focused on doom, as follows from the motto: "The first unified doom engine source port". For a universal 2.5D game engine, like cube 1, you need to fork k8vavoom, and for this need a team of developers. Personally, I see a lot of potential in multiplayer. Similar to the Assault Cube, but with free resources (to get to libregamewiki.org/List_of_games ). Besides the fact that the assault cube resources are not free, the cube engine also lacks something in the gameplay that idtech1 has.
|
|
|
Post by ketmar on Sept 15, 2023 11:17:04 GMT -5
i'm in no way trying to say that multiplayer is worthless, or an engine tailored to creating standalone games based on idTech1 is worthless. but those are things i personally not interested in. there's only so much time one can spent doing something, and there are a lot of interesting things around! so i simply don't want to spend time on something i'm not personally interested in.
that is, if somebody will join and develop something, i'll gladly accept the patches. just don't expect me to do it. ;-)
sorry if my posts look rude or aggressive. i had no such intentions, just tried to explain what one can expect from k8vavoom in the future, and what is much less likely to happen. also, English is hard. ;-)
|
|
|
Post by camper on Sept 15, 2023 12:10:50 GMT -5
lol, I also have problems with English and Google translated my neutral text "need to fork k8vavoom" into a guide to action "you need to fork k8vavoom". There's a completely unnecessary "you".
|
|
SilverMiner
You're trying to say you like DOS better than me, right?
Posts: 1,344
|
Post by SilverMiner on Sept 15, 2023 13:22:51 GMT -5
write in russian then
|
|
|
Post by camper on Sept 16, 2023 2:42:14 GMT -5
Not everyone knows Russian. Google has a harder translating Russian than English. I need to formulate the Russian sentence correctly from the very beginning so that Google can translate it more or less clearly. And then I look to see if he added extra words to my words. Не все знают русский язык. Google переводит русский язык сложнее, чем английский. Мне нужно с самого начала правильно сформулировать русское предложение, чтобы Google смог его более-менее понятно перевести. А потом смотрю, не добавил ли он к моим словам лишних слов.
|
|
DoomKrakken
Doomer
Aspiring game designer and programmer looking for work. https://ko-fi.com/DoomKrakken
Posts: 37
|
Post by DoomKrakken on Sept 18, 2023 15:56:56 GMT -5
it is almost there. as usual. ;-) internally, k8vavoom is client/server system, with replication modelled after UnrealScript (so VavoomC code can declare any object fields for replication), and fully-featured RPC. but it is half-finished (mostly works, but there are some nasty bugs and inefficiencies), because i have very little interest in multiplayer. If I had any idea how to write netcode I'd attempt to help. I'm not much of a multiplayer guy myself, but I do have ideas for a game that would require some solid seamless multiplayer shenanigans to give the best experience possible (players ought to have the ability to [dis]connect whenever they please). alas. this is hardcoded into the engine in too many places (including DECORATE parser). What about allowing the mapping of different graphics to share the same sprite indices, in the same way MODELDEF (in GZDoom) can use a sprite index + frame to denote a specific frame in the model? It does so on an actor by actor basis... like, two actors with two different models using the same sprite index/frame will of course show up differently. My goal here is to attempt to eliminate sprite conflicts as much as possible, while also having cohesive and legible naming conventions. I have a game in mind that'd use PLENTY of sprites, many of which would depict the pitch views of sprites in addition to all their rotational angles. I'm sure I can still achieve having this many sprites in GZDoom (being restricted to 36^4 * 29 sprite frames + all their rotations), but the less hassle with which I have to deal, the better it will be for me in the long run.
|
|
|
Post by ketmar on Sept 19, 2023 1:40:30 GMT -5
If I had any idea how to write netcode I'd attempt to help. the problem is that one have to know not only about networking, but the engine internals too. netcode is very tightly coupled with engine data structures, and even with the engine design. tbh, this is the hardest problem in finding a helping hand: before writing (or fixing) something more-or-less complex, you may spend monthes, or even years trying to untangle the logic. i literally spent years learning how the whole beast (Vavoom) worked (and there are still parts i don't fully understand ;-). and i must admit that Vavoom code is one of the cleanest codebases i've seen, yet it still took a lot of time. and if you'll start diving into k8v internals, you'll hardly have any time or energy left for doing something else. ;-) but I do have ideas for a game that would require some solid seamless multiplayer shenanigans to give the best experience possible (players ought to have the ability to [dis]connect whenever they please). yep, k8vavoom can do this. i mean, it already works like this, players are connecting to the spawned server at any time, without server or other clients waiting for the full party before start playing. the engine is really redesigned to be client/server (you may read "spawning server with map XXX" in console when starting a new map; and it is not a cheap trick, this is what really happens ;-). internally, the code is separated too, sfx like particles are done in client code, for example. if you'll look into game basepaks, you will find "progs/game" and "progs/cgame" dirs. this is server and client support code respectively. alas. this is hardcoded into the engine in too many places (including DECORATE parser). What about allowing the mapping of different graphics to share the same sprite indices, in the same way MODELDEF (in GZDoom) can use a sprite index + frame to denote a specific frame in the model? It does so on an actor by actor basis... like, two actors with two different models using the same sprite index/frame will of course show up differently. the problem is that in texture manager, texture name IS its index. and some code builds or checks sprite names dynamically, expecting them to be in Doom format. and then sometimes assign this built name as "current frame". that is, the engine passes around `VName`, which represents internalised string index. it also expects that each `VName` can be exploded back to string, and you can aseemble new name from a string at any time. supporting UDMF feature where you can specify the full path to the texture was already a PITA (and a gross and dirty hack). and in object states, current animation frame is kept as `VName` as sprite base, plus frame number. then the engine builds a full texture name out of this (sometimes using simply `char buf[8]` as buffer ;-), and using it to find a proper texture in texture manager. also, as names are texture indicies, there is no way to have two different textures with the same name. sadly, such code is scattered across the whole engine. so while replacing sprite names in DECORATE with something else could be done easily, everything still have to adhere to Doom base4+frame1+rotation scheme, and should be unique. My goal here is to attempt to eliminate sprite conflicts as much as possible, while also having cohesive and legible naming conventions. I have a game in mind that'd use PLENTY of sprites, many of which would depict the pitch views of sprites in addition to all their rotational angles. I'm sure I can still achieve having this many sprites in GZDoom (being restricted to 36^4 * 29 sprite frames + all their rotations), but the less hassle with which I have to deal, the better it will be for me in the long run. yeah. and a way for mods to avoid sprite conflicts will be nice too. still, the most realistic way to achieve this is to allow each actor specify a full path to sprite data, while still sticking with 4+1+rot scheme (as you suggested above). p.s.: i should tell you a little secret, though. most of the time when i'm telling that something is impossible, and dumping walls of text explaining why exactly it is impossible, it really means that i am already thinking how to make it possible. ;-) i can't promise anything here, of course, but maybe i'll eventually find a way to hack around sprite name restriction. this will definitlely be a dirty hack… but hey, idTech1 is just a collection of hacks anyway! ;-) yet the problem is not only in sprite code, but in texture manager too. and in sprite texture scanner (the engine builds a list of all known sprite textures on startup). tbh, now the problem looks slightly more interesting than it was… ;-)
|
|
|
Post by whattheduckxd on Sept 19, 2023 17:40:59 GMT -5
I love this source port a ton but have a small problem with it. It seems to be stuck at 67 FPS no matter what I do, I have v-sync off, tried disabling graphics setting, I did everything I could think of. It's odd because I swear I had high framerates with it before.
|
|
|
Post by ketmar on Sept 20, 2023 1:08:01 GMT -5
the framerate is deliberately capped at around 70, see `cl_framerate` cvar (this is hard limit, the actual framerate can be slightly lower — that's what you see). you can change it, but there is a little reason to go beyond 60. while it may look smoother on 120Hz displays and such, the engine will start to slowly fall apart, because it is not a lock-step one. the smaller frame time delta is, the worser everything goes.
at 120 FPS it should be still playable, albeit somewhat unstable (physics and such). the hard cap is 250, any higher values will be capped to this. but i'd recommend to stay with vsynced 60. feel free to change `cl_framerate`, but you're on your own with that. ;-)
|
|
|
Post by whattheduckxd on Sept 20, 2023 18:54:44 GMT -5
the framerate is deliberately capped at around 70, see `cl_framerate` cvar (this is hard limit, the actual framerate can be slightly lower — that's what you see). you can change it, but there is a little reason to go beyond 60. while it may look smoother on 120Hz displays and such, the engine will start to slowly fall apart, because it is not a lock-step one. the smaller frame time delta is, the worser everything goes. at 120 FPS it should be still playable, albeit somewhat unstable (physics and such). the hard cap is 250, any higher values will be capped to this. but i'd recommend to stay with vsynced 60. feel free to change `cl_framerate`, but you're on your own with that. ;-) Alright, I understand.
|
|
|
Post by ketmar on Sept 21, 2023 1:25:57 GMT -5
just in case other people are interested (and because i love to write text walls), i explain why high FPS is a problem for k8vavoom. other sourceports are lock-step engines: internally they are locked at 35 FPS, no matter what. with higher FPS they simply interpolate positions between two "real" game frames, but it doesn't affect gameplay at all. but k8vavoom advances the game state exactly by the time delta between two frames. it is not "locked" to particular framerate internally. while this gives nice effects like smooth motion of lifts and physics for free (because they're moving exactly the required amount, no interpolation needed), there is one big problem here: small deltas. as deltas became smaller and smaller, various floating point values accumulate more and more errors. in lockstep engine delta is always the same, so all values are always predictable and stable. but in "lock-free" engines delta is varying, and with small delta some values may simply refuse to update at all (their update may become too small after various calculations). which may lead to various glitches — not only visual, but actual gameplay glitches. 60 FPS is ok. 120 FPS is probably ok. 240 FPS may work, but we're entering dangerous zone here. something arount 500 FPS will prolly start glitching. 1000 FPS will glitch hard. so i set default cap to 70 to stay on the safe side. besides, 70 is a refresh rate of most displays when Doom was released (hence its internal 35 FPS clock). i may later bump the default cap to 140, but i don't think that i'll go beyond that. i believe that 140 should be safe enough to play without problems, though, so if you have a 120Hz display and want game framerate to match it, change that cvar. i didn't bumped it mostly because i didn't tested the engine enough in that mode. please, note that it is better to set framerate limit to something slightly higher than display refresh rate, and rely on vsync. 130-140 is a good value for 120Hz refresh rate. for techies out there: the lower delta is, the closer we're to hitting denormals. and denormals are not only slow as a dead snail, they are so small that adding them to other numbers may be effectively the same as adding zero. that's where everything starts to fall apart.
(actually, the engine explicitly zeroes denormals in various places to avoid possible slowdowns.)
it is possible to (mostly) avoid this by rearranging calculations, but Vavoom and k8vavoom code was not written with this in mind. and it will take enormous amount of time to find and fix all places where that bug can possibly appear. and then somebody will write a VavoomC mod without thinking about that issue, and we're got back to the point zero. ;-)
|
|
DoomKrakken
Doomer
Aspiring game designer and programmer looking for work. https://ko-fi.com/DoomKrakken
Posts: 37
|
Post by DoomKrakken on Sept 25, 2023 13:09:33 GMT -5
the problem is that in texture manager, texture name IS its index. and some code builds or checks sprite names dynamically, expecting them to be in Doom format. and then sometimes assign this built name as "current frame". that is, the engine passes around `VName`, which represents internalised string index. it also expects that each `VName` can be exploded back to string, and you can aseemble new name from a string at any time. supporting UDMF feature where you can specify the full path to the texture was already a PITA (and a gross and dirty hack). and in object states, current animation frame is kept as `VName` as sprite base, plus frame number. then the engine builds a full texture name out of this (sometimes using simply `char buf[8]` as buffer ;-), and using it to find a proper texture in texture manager. also, as names are texture indicies, there is no way to have two different textures with the same name. sadly, such code is scattered across the whole engine. so while replacing sprite names in DECORATE with something else could be done easily, everything still have to adhere to Doom base4+frame1+rotation scheme, and should be unique. Right, but what I'm talking about is handling such a system like MODELDEF. I think you may not have understood what I said (or maybe I didn't understand what you said, but let's wait 'n see). In MODELDEF, individual actors are assigned models, and those models in different states of their animations show up by being bound to a sprite name and frame. Model EMGTracer { Path "Models" Skin 0 "tracerpistol.png" Model 0 "tracer.md3" Scale 1.0 1.0 1.0 PITCHFROMMOMENTUM ROTATING Rotation-Speed 25 Rotation-Vector 1 0 0
FrameIndex TRAC A 0 0 }
Model EMGChargeTracer { Path "Models" Skin 0 "tracerpistol.png" Model 0 "tracer.md3" Scale 1.0 1.0 1.0 PITCHFROMMOMENTUM ROTATING Rotation-Speed 25 Rotation-Vector 1 0 0
FrameIndex TRAC A 0 0 }
Model CombatShotgunTracer { Path "Models" Skin 0 "tracer.png" Model 0 "tracer.md3" Scale 1.0 1.0 1.0 PITCHFROMMOMENTUM ROTATING Rotation-Speed 25 Rotation-Vector 1 0 0
FrameIndex TRAC A 0 0 Skin 0 "tracerquad.png" FrameIndex TRAC B 0 0 }
Here, you can see, per actor, a model (with subsequent skins) is defined for use, and is assigned to a specific sprite frame (A or B) and index (TRAC). When that specific actor shows up, then while it's in a state that displays the listed sprite index + frame, the model will show up in place of the actual sprite. My proposal was to do something similar with sprites themselves. We map graphics to sprites in a similar way. You take a graphic, and any actor that wants to have that graphic show up in place of their own listed sprites will have it mapped to that sprite frame (even down to specifying rotation frames). This way, when a specific actor displays a specific sprite index and frame, it will show up as the assigned "skin". You can use the same sprite index and frame across different actors which have different "skins" associated with them to display different graphics, much like how those tracer actors show up differently despite using the same index name and frame letter.
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Sept 25, 2023 14:18:00 GMT -5
reworked Vavoom C mod loader code; introduced new VC mod description format Interesting. What's this exactly? Related to loadvcs/loadvcc?
cosmetic fix (nobody uses pk3 anymore anyway) Lmao
EDIT: Something more important. I can't seem to compile with Fluidsynth at the moment.
[ 13%] Building C object libs/fluidsynth_lite/src/CMakeFiles/libfluidsynth_lite.dir/utils/fluid_settings.c.o /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c: In function ‘fluid_settings_setnum’: /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c:1067:30: error: declaration of ‘setting’ shadows a previous local [-Werror=shadow=compatible-local]
|
|
DoomKrakken
Doomer
Aspiring game designer and programmer looking for work. https://ko-fi.com/DoomKrakken
Posts: 37
|
Post by DoomKrakken on Sept 25, 2023 17:45:09 GMT -5
cosmetic fix (nobody uses pk3 anymore anyway) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
|
Post by ketmar on Sept 26, 2023 4:54:40 GMT -5
Right, but what I'm talking about is handling such a system like MODELDEF. I think you may not have understood what I said (or maybe I didn't understand what you said, but let's wait 'n see). we're simply talking about different levels here. ;-) you're mostly talking about definition, and i am talking about implementation. in the implementation, models are completely separate from everything other. nowhere in the engine (except the low-level renderer, of course) nothing knows about model existance at all. basically, the renderer simply "intercepts" sprite drawing calls, and replaces sprites with models. but actor frame is the whole different story. we cannot simply replace sprite frame image at the very last moment, because the engine also uses actor frames to check for various things, including (but not limited to) image translucency, for example. and it does this assuming that frame name always corresponds to the texture, avoid passing the actor pointer around. (at least that is what i remember about the code; the beast is HUGE. ;-) the engine also using frame names to batch actors, so it can use less render calls; there is experimental (not commited) code for dynamic actor texture atlases (which is partially done in BSP traversal), and so on. this will break horribly if i try to replace frame images somewhere along the way. My proposal was to do something similar with sprites themselves. We map graphics to sprites in a similar way. You take a graphic, and any actor that wants to have that graphic show up in place of their own listed sprites will have it mapped to that sprite frame (even down to specifying rotation frames). This way, when a specific actor displays a specific sprite index and frame, it will show up as the assigned "skin". You can use the same sprite index and frame across different actors which have different "skins" associated with them to display different graphics, much like how those tracer actors show up differently despite using the same index name and frame letter. that was exactly what i thought about: in DECORATE, you can set base texture path for each actor, and the engine will read textures from there, not from SPRITES subdir. yes, frame names will stay the same, but frame images will be different. and that is THE problem: we need 1:1 correspondence between frame name and frame image. on startup, for example, the engine scans all available sprite frames to build various tables (rotations, etc.). at this stage, no actors are loaded yet, so the scanner doesn't know about frame overrides. and even if it will know that, rotation info may be wrong due to conflicts (override has more than 8 rotations defined, but base textures defines only 8, for exampe). and rotation table is global for all actors (we need it to be that way). there are other places where the engine doesn't except sprite frame images to suddenly change too. so it's not only about substituring one texture with another on rendering (which works for models). properly implementing such feature will require several major redesigns of various engine parts. that's why this proposal was rejected in GZDoom, for example: they faced the same set of problems. so i have to think hard about new designs for this feature. because i don't want to sacrifice engine performance (and it heavily depends on some immutable info pregenerated on startup), and don't want to turn the code into unmaintainable mess too.
|
|
|
Post by ketmar on Sept 26, 2023 5:01:02 GMT -5
cosmetic fix (nobody uses pk3 anymore anyway) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlol. that commit is related to "vlumpy", the tool k8vavoom is using to build its basepaks. it simply fixes the bug with pk3 compression levels, which i introduced earlier, and failed to notice because all engine data is in vwads now. ;-) that's what "nobody uses" part is about: nobody (me) is using vlumpy to build pk3s, and that's how that bug crept in. ;-)
|
|
|
Post by ketmar on Sept 26, 2023 5:12:33 GMT -5
reworked Vavoom C mod loader code; introduced new VC mod description format Interesting. What's this exactly? Related to loadvcs/loadvcc? yeah. it is to allow to have mod description in one file, like this: "vavoomc_mods.rc": server { options { skipbdw }
pre { k8zan_server } }
client { k8zan_client }
that is done to avoid problems with future additions. now i can extend the thing without ugly hacks, and without fear of breaking something. EDIT: Something more important. I can't seem to compile with Fluidsynth at the moment. [ 13%] Building C object libs/fluidsynth_lite/src/CMakeFiles/libfluidsynth_lite.dir/utils/fluid_settings.c.o /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c: In function ‘fluid_settings_setnum’: /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c:1067:30: error: declaration of ‘setting’ shadows a previous local [-Werror=shadow=compatible-local] i almost decided to declare any GCC higher than 6 as unsupported. ;-) my GCC6 is silent about that, so i commited a blind fix. let's hope it will work. thank you!
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Sept 26, 2023 13:18:02 GMT -5
yeah. it is to allow to have mod description in one file that is done to avoid problems with future additions. now i can extend the thing without ugly hacks, and without fear of breaking something. That is much nicer than the old way (which I'd guess was inspired by loadacs :p). i commited a blind fix. let's hope it will work. thank you! No problem, and thank you for the fix! Though, that didn't quite fix it: /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c: In function ‘fluid_settings_setint’: /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c:1209:30: error: declaration of ‘setting’ shadows a previous local [-Werror=shadow=compatible-local] /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c:1185:26: note: shadowed declaration is here cc1: all warnings being treated as errors I'll clarify that it's only compiling with Fluidsynth that's broken, just passing -DWITH_FLUID=OFF makes K8V compile fine. Unrelated, but why are you using GCC 6? I recall that's what Slackware 14.2 or so provides, but why not compile a newer version?
|
|
|
Post by ketmar on Sept 26, 2023 13:36:31 GMT -5
That is much nicer than the old way (which I'd guess was inspired by loadacs ). yeah. actually, i simply created it as a way to test mod loading, and then it stuck. then i started adding various options there, and suddenly realised that i am doing it wrong. ;-) Though, that didn't quite fix it: /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c: In function ‘fluid_settings_setint’: /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c:1209:30: error: declaration of ‘setting’ shadows a previous local [-Werror=shadow=compatible-local] /home/tdrr/Programs/k8vavoom/libs/fluidsynth_lite/src/utils/fluid_settings.c:1185:26: note: shadowed declaration is here cc1: all warnings being treated as errors I'll clarify that it's only compiling with Fluidsynth that's broken, just passing -DWITH_FLUID=OFF makes K8V compile fine. fixed that too, thank you. yeah, i know that it's a fluidlite problem. still, it should be buildable anyway. ;-) Unrelated, but why are you using GCC 6? I recall that's what Slackware 14.2 or so provides, but why not compile a newer version? because i don't know when they will break C++ ABI next time. previously, you'd be safe if the major version wasn't changed, but now there is no way to know. and i don't want to rebuild all C++ code on my system just because some morons from GCC dev team decided to break something. i have different GCC versions built, of course, but it is a PITA to test with them all, so i tend to avoid doing that. ah, and the last GCC i have is 12, because i completely stopped caring around that time.
|
|