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

k8vavoom: no good thing ever dies!

Recommended Posts

no, no compositing on my box at all. and it is my own terminal emulator, pure Xlib with somewhat optimised drawing.

 

anyway, it is not the emu, because i got exactly the same disconnects without tty logs at all, it just needs some more lights to make GPU busy. and full tty logging of both client and server creates zero problems with client-side FPS cap. this is definitely "GPU drivers doing something very strange when the GPU is busy" thing.

Share this post


Link to post

How well does the network system work if you were to simply disable all light and shadow effects? ~ eg giving your GPU a little oxygen. 

Share this post


Link to post
33 minutes ago, Mr.Rocket said:

How well does the network system work if you were to simply disable all light and shadow effects? ~ eg giving your GPU a little oxygen.

perfectly ok. basically, switching to lightmapped mode cures everything right away, because lightmaps are alot less demanding on a fillrate.

 

but i also implemented a workaround: if the client doesn't get any packets in more than 600 msecs, it will cap the frame rate for around 10 seconds (the joy of freestep engines: i can dynamically change framerate, and it will Just Work ;-). 600 msec lag is not something you should see anyway, and if your network connection is so bad, it doesn't matter how high your FPS is, becase there's simply nothing to draw at a high rate ;-), so it is safe to temporarily cap it. this magically cured all the problems, and 99% of the time i still able to play with shadow volumes at a full speed. best of both worlds, i guess.

 

p.s.: yes, you can play nuts.wad with monsters. it won't be at the full speed because the server is struggling with such high number of objects to process, but you still can play it. on a client side, you will be able to see only around 1000 surrounding monsters, though. but it is more than enough to die anyway. ;-)

Edited by ketmar

Share this post


Link to post

welcome to dying! ;-)

 

Spoiler

jjgi57.png

 

597b1x.png

 

huge lag is because i am testing 20/20 packet loss (both from the server, and from the client). also, 60 FPS on the client doesn't mean that it is really running with 60 FPS on the server. ;-)

Share this post


Link to post

Ah Nice!

Can't wait to try it out! :)

I'm currently working on a game launcher, a new one.

But thinking of fixing up a small launcher for k8vavoom specifically.

It's in standard C# but I'll see about making it cross platform.

Are all the commands the same? eg:

Server:
k8vavoom.exe -Doom2 -file C:\pwads\dwellers.wad +MaxPlayers 2 +Deathmatch 1 +Skill 3 +NoMonsters 1 +NoExit +Map 05 +AddBot 1,  etc.

Client:
k8vavoom.exe -Doom2 +Connect 192.168.1.2

So here's some questions:

Would the client connect and get the rest of the info from the server, or does it need to already be written out like the server?

Will the client auto download the needed pwad from the server? or will client side need to have the required pwad already too?

Is there a default port #? with a command like +Port 6667 ?

Also I'm not finding a +FragLimit command anywhere. ~ I'm guessing there isn't one? :\

There is a +TimeLimit however.

 

Thanks! 

Edited by Mr.Rocket

Share this post


Link to post
1 hour ago, Mr.Rocket said:

Are all the commands the same?

yes. only mid-level comm layer was rewritten, high-level interface is the same.

 

1 hour ago, Mr.Rocket said:

Would the client connect and get the rest of the info from the server, or does it need to already be written out like the server?

Will the client auto download the needed pwad from the server? or will client side need to have the required pwad already too?

the client need to be started with exactly the same list of pk3s/wads. wrong clients will be kicked out. the server knows the list, and it can be queried, tho (and if the client is kicked, the list will be in the console output). pwad downloading is not planned for now.

 

1 hour ago, Mr.Rocket said:

Is there a default port #?

26000.

 

1 hour ago, Mr.Rocket said:

Also I'm not finding a +FragLimit command anywhere. ~ I'm guessing there isn't one? :\

yep, there is no fraglimit yet. i may implement it later, tho (i'm not playing DM games, so i never checked if all now-standard options are there; i need to be told about any missing ones ;-).

 

1 hour ago, Mr.Rocket said:

Thanks!

you're welcome! ;-)

 

p.s.: due to my GPU, i cannot properly test "combined" server (i.e. hosting a server from the full-featured game), so most of the tests were done with dedicated "headless" server now. "combined" server should work, of course, but...

 

also, windows build of dedicated server is not tested too. i may include it in the next official build, tho.

Share this post


Link to post
2 hours ago, ketmar said:

yes. only mid-level comm layer was rewritten, high-level interface is the same.

Ok.

2 hours ago, ketmar said:

the client need to be started with exactly the same list of pk3s/wads. wrong clients will be kicked out. the server knows the list, and it can be queried, tho (and if the client is kicked, the list will be in the console output). pwad downloading is not planned for now.

Got it.

2 hours ago, ketmar said:

26000.

Ok cool.

2 hours ago, ketmar said:

yep, there is no fraglimit yet. i may implement it later, tho (i'm not playing DM games, so i never checked if all now-standard options are there; i need to be told about any missing ones ;-).

Np, yeah a +FragLimit 0-100 would be good feature to add for DM, most but not all ports have a Fraglimit option.

Aside from that, +Deathmatch 1, If I recall is just turning DM off and on 0-1. An +Alt-Death 0-1 would be a nice feature also to add, when you get there. ;)

2 hours ago, ketmar said:

you're welcome! ;-)

 

p.s.: due to my GPU, i cannot properly test "combined" server (i.e. hosting a server from the full-featured game), so most of the tests were done with dedicated "headless" server now. "combined" server should work, of course, but...

 

also, windows build of dedicated server is not tested too. i may include it in the next official build, tho.

;) , I have a remote computer to test with as well as some internet buddies, will be more than happy to give it all a try with the next build.

 

Cheers!

Share this post


Link to post
8 hours ago, Mr.Rocket said:

Aside from that, +Deathmatch 1, If I recall is just turning DM off and on 0-1. An +Alt-Death 0-1 would be a nice feature also to add, when you get there. ;)

the MP menu currently selects the mode by directly copying menu option value to "DeathMatch" cvar (yep, this is simple cvar). if this is something that really bugs people off, i will prolly change it, but tbh, i prefer to leave it as is, because it is simply easier to maintain in the current form. ;-)

 

8 hours ago, Mr.Rocket said:

Np, yeah a +FragLimit 0-100 would be good feature to add for DM

will prolly add it for the upcoming build, why not. ;-) and why only 100? k8vavoom is using 32-bit signed integer to count frags anyway. ;-)

 

8 hours ago, Mr.Rocket said:

I have a remote computer to test with as well as some internet buddies, will be more than happy to give it all a try with the next build.

thank you! just be prepared to pre-alpha code quality (and absolutely no client-side prediction and lag compensation).

Share this post


Link to post
13 hours ago, ketmar said:

the MP menu currently selects the mode by directly copying menu option value to "DeathMatch" cvar (yep, this is simple cvar). if this is something that really bugs people off, i will prolly change it, but tbh, i prefer to leave it as is, because it is simply easier to maintain in the current form. ;-)

Well I wasn't asking you to change it, actually I was wanting you to add a command, -altdeath or in this case +AltDeath. It's the same as +Deathmatch but makes items respawn after 30 seconds. :) Altdeath is also known as Deathmatch (2) and was implemented in the original Doom game.

Most ports have -deathmatch and -altdeath, where one or the other would be used.

If neither command is used, then it's a co-op game.

Also some ports added a Deathmatch (3) where not only do the items respawn, the weapons also stay.

So I guess what I'm asking for is actually a couple flags, -itemsrespawn 0-1 and -weaponsstay 0-1. you get the idea. ;)

 

13 hours ago, ketmar said:

will prolly add it for the upcoming build, why not. ;-) and why only 100? k8vavoom is using 32-bit signed integer to count frags anyway. ;-)

Awesome! 

Well the only reason I say 100 is just that an integer, totally optional what limit you want though. :P

I really doubt anyone will play beyond 200 frags though. you could set it to 666 as the limit for shits n giggles. :D

 

13 hours ago, ketmar said:

thank you! just be prepared to pre-alpha code quality (and absolutely no client-side prediction and lag compensation).

Yes, of course. :)

 

11 hours ago, ketmar said:

ok, i added fraglimit. ;-)

Shweet! 

 

Thanks

 

Edited by Mr.Rocket

Share this post


Link to post
22 minutes ago, Mr.Rocket said:

Well I wasn't asking you to change it, actually I was wanting you to add a command, -altdeath or in this case +AltDeath. It's the same as +Deathmatch but makes items respawn after 30 seconds.

this is exactly what "DeathMatch 2" does. ;-) "0" is coop, "1" is "old-style deathmatch", and "2" is "altdeath".

 

22 minutes ago, Mr.Rocket said:

I really doubt anyone will play beyond 200 frags though. you could set it to 666 as the limit for shits n giggles. :D

yeah, but hey, Hell is the limit! set it to 1000000 or more, why not? ;-) i mean, i am too lazy to implement any limits except the 31-bit limit of the initeger itself. the same is with timelimit too (except that it is slightly lower, because minutes should be converted to doom tics).

 

i also implemented experimental "client-side entities", so flying blood in default "gore mode" exists entirely on the client side, and doesn't consume any additional bandwidth. in the future this will allow me to shift more calculations to the client. of course, the server is still the authority, but why it should send a rocket coordinates each time, for example? the client knows the velocilty, so it can fly the rocket ;-) by itself, and the server will only send the final hit point and explosion information. i mean, all modern games are doing something like this, and i'll be able to do it too. and working client-side physics will allow me to implement client-side predictions for player objects. hey, Zandronum, i am coming for you! ;-)

Share this post


Link to post
19 minutes ago, ketmar said:

this is exactly what "DeathMatch 2" does. ;-) "0" is coop, "1" is "old-style deathmatch", and "2" is "altdeath".

AH! duh.. the multiplayer menu option is currently disabled, so I assumed it wasn't implemented yet hah!

 

19 minutes ago, ketmar said:

Hell is the limit! set it to 1000000 or more, why not? ;-) i mean, i am too lazy to implement any limits except the 31-bit limit of the initeger itself.

True.. well you're the boss :P

 

19 minutes ago, ketmar said:

i also implemented experimental "client-side entities", so flying blood in default "gore mode" exists entirely on the client side, and doesn't consume any additional bandwidth. in the future this will allow me to shift more calculations to the client. of course, the server is still the authority, but why it should send a rocket coordinates each time

Only thing I could figure is the extra info needs sent for recording a demo during a netgame? or f12 watching the demo from player view etc.

 

Edit:

I can't wait to get my hands on the next build so I can check this stuff out man!

 

Edit2:

oh btw, I don't know if you could use this but here's GetWad, for fetching a hosted Pwad.

If it could be integrated in k8 as the external plugin as it is or not?

 

 

Edited by Mr.Rocket

Share this post


Link to post
42 minutes ago, Mr.Rocket said:

AH! duh.. the multiplayer menu option is currently disabled, so I assumed it wasn't implemented yet hah!

eh... i tend to constantly forget that other people cannot see what i see. ;-)

 

42 minutes ago, Mr.Rocket said:

Only thing I could figure is the extra info needs sent for recording a demo during a netgame?

tbh, not something i am planning to support yet. but, of course, replaying all network packets will allow to watch the game from the corresponding player's eyes. but it is too fragile (even a small change in the code will break everything), so i won't support it until i'll make it more stable.

 

42 minutes ago, Mr.Rocket said:

or f12

don't. press. f12. ever. ;-)

 

42 minutes ago, Mr.Rocket said:

If it could be integrated in k8 as the external plugin as it is or not?

the problem is not in downloading pwads per se. the thing is that after the engine initialised itself, you cannot add/remove mounted archives anymore. this is how the file system layer was designed, and it is impossible to change that without rewriting significant parts of the engine. and if you have to fully restart the game anyway, then an external launcher is better suited for this, i believe.

 

as i said, you can ask the server for a list (this is what the engine does when it checks servers it got from the master). i will prolly make the protocol for this public (i.e. i will try to support it in future versions), so launchers would be able to ask the server and build the command line automatically.

 

p.s.: i declared feature freeze today, so if no Big Bad Bugs will pop up, next week should be Teh Build Time! ;-)

Edited by ketmar

Share this post


Link to post
33 minutes ago, ketmar said:

tbh, not something i am planning to support yet. but, of course, replaying all network packets will allow to watch the game from the corresponding player's eyes. but it is too fragile (even a small change in the code will break everything), so i won't support it until i'll make it more stable.

Ok

33 minutes ago, ketmar said:

don't. press. f12. ever. ;-)

lol why? will something explode? :P

 

33 minutes ago, ketmar said:

then an external launcher is better suited for this, i believe.

Ah I see, so this is basically up to me while creating a launcher.

 

33 minutes ago, ketmar said:

i will prolly make the protocol for this public (i.e. i will try to support it in future versions), so launchers would be able to ask the server and build the command line automatically.

Ok, yeah I'll likely need the master server protocol if/when I get to adding a server scanner in the launcher then.

 

33 minutes ago, ketmar said:

p.s.: i declared feature freeze today, so if no Big Bad Bugs will pop up, next week should be Teh Build Time! ;-)

Nice! I can't wait!

 

Cheers!

Share this post


Link to post
10 minutes ago, Mr.Rocket said:

lol why? will something explode? :P

you. ;-)

 

default.cfg:

bind F12 "Impulse 16"

 

impulse handler in player:

case 16: Actor(MO).Damage(none, none, 10000); Impulse = 0; return;

 

oops.

;-)

Share this post


Link to post
2 minutes ago, ketmar said:

default.cfg:

bind F12 "Impulse 16"

 

impulse handler in player:

case 16: Actor(MO).Damage(none, none, 10000); Impulse = 0; return;

 

oops.

;-)

 

lol so something does explode.. the player :D

 

BTW try Brutal Doom ~ -doom2 -file brutalv21.pk3 map13 for game mod consistency.)

It runs, actually runs as expected for the most part, though I noticed something with the tank model, like it's not pulling a part of its model def, you'll see what i'm saying. 

Share this post


Link to post
39 minutes ago, Mr.Rocket said:

It runs, actually runs as expected for the most part

thank you for the report, will be fixed in the next build! it was never supposed to run! ;-)

Edited by ketmar

Share this post


Link to post

You mean Brutal Doom isn't suppose to ever run if loaded with k8?

Or are you saying k8 isn't suppose to load the file if there maybe a problem running it? 

Share this post


Link to post

BD is absolutely not supported. this, PB, and everything infected with BD disease. no, i don't have anything against the idea, but the code... even BDLite is still a mess, and the author spent alot of time cleaning BD shit.

 

of course, i was joking about "fixing" it, but i am dead serious about "unsupported, and will always be unsupported". ;-) so you're on your own with BD. ;-)

 

p.s.: "k8v", if you please. "k8" is just my name, and i have... little problems with the image of loading BD inside of me... ;-)

Share this post


Link to post

Speaking of which, I've noticed a lot of people who looked at BD's code said that it's very messy and unclean, which is part of the reason for its performance issues.

 

Is that so? Is BD's codebase that fugly?

Share this post


Link to post

I see, I was just surprised that it ran the mod actually, and actually did a good job of it considering.

I didn't know BD's code was that bad either!

26 minutes ago, ketmar said:

p.s.: "k8v", if you please. "k8" is just my name

Ah ok I'll try to remember that.

26 minutes ago, ketmar said:

and i have... little problems with the image of loading BD inside of me... ;-)

lol it wouldn't be BD anymore, it would be VD :D

Share this post


Link to post
On 3/14/2020 at 10:18 PM, seed said:

Is that so? Is BD's codebase that fugly?

yep. it seems that Sgt. cleaned it up a little for the latest version, but it is still... no, i don't have a word.

contrary to HDoom, btw, which is one of the cleanest and best written decorate code bases i've seen. no, not a joke.

 

On 3/14/2020 at 10:22 PM, Mr.Rocket said:

was just surprised that it ran the mod actually

same here. ;-)

Edited by ketmar

Share this post


Link to post

hmm, I can't seem to get +TimeLimit to work.

eg +TimeLimit 1

Which should make the level end in 1 minute.

 

It shows up in the console with the limit set to 1 as it should, but it seems to do nothing at the moment.

Is it because the multiplayer menu is currently disabled?

 

Thanks

Edited by Mr.Rocket

Share this post


Link to post

so, finally, here it is! i couldn't invent some creative slogan, so...

 

this build comes with experimental multiplayer support.
WARNING! MP code is of alpha quality at best. complex mods may not work, mods with ACS may not work, and even
standard setup may fail. there is currently no way to control headless server on windows, and on GNU/Linux you
should have access to the server tty.


* great thanks to id0 for invaluable help in testing network code!
* ALOT of work on MP modes
* enabled and extended multiplayer menu (because networking is in pre-beta testing stage now)
* better handling of known blood types (if our own gore mod is active, block spawning of other known blood entities)
* do not render models with "null" textures; also, added cvar "r_model_ignore_missing_textures" to ignore models with missing textures (and menu option)
* allowed bitshifts for float numbers in DECORATE (sometimes used to convert float to int, 'cause there's no other way to do it there)
* fixed setting RenderStyle property from ACS
* parse point light color string from UDMF (thanks, Khorus)
* better fixer for light sources embedded into floors/ceilings (thanks, Khorus)
* some fixes to weapon zooming (it should NOT change fov cvar, evar!); also, reset client fov on reborn
* spawn MUCH less blood on crush damage (yeah, alot of blood looks great, but it kills the framerate)
* line attacks should hit floors and ceilings again
* subtractive render style should not affect depth buffer
* fixed logic for sound pitching, added option to turn it off (thanks, Remilia Scarlet)
 

Share this post


Link to post
3 hours ago, Mr.Rocket said:

hmm, I can't seem to get +TimeLimit to work.

eg +TimeLimit 1

Which should make the level end in 1 minute.

1. it was broken.

2. it works only for deathmatch games.

Share this post


Link to post
  • Here are some minor bugs so far. It seems as that k8vavoom-dedicated.exe wants to stay running in the background, we sort of need to have it in a dialog of some sort.. ~ As-is, it will need to be end-task'd from within task manager.. in Windows, it doesn't appear anywhere other than in task manager, end user needs to know that it's running and be able to close it.  Is there a public source code for the dedicated program? 
  • When running a local DM and a bot finds a secret, it's displayed on the human players screen.
  • Fraglimit and Timelimit seem to only work from the multiplayer menu. ~ I'm not sure what all commands are working from the dedicated server command line, most of them seem to, other than fraglimit and timelimit. ~ hmm, just running from k8vavoom exe, these 2 commands don't seem to be working from CL at all.

 

Windows 10 64bit.

Edited by Mr.Rocket

Share this post


Link to post
26 minutes ago, Mr.Rocket said:

Is there a public source code for the dedicated program?

of course, that is exactly the same source as for the "full" engine. ;-) because this *is* the full engine, only with rendering and sound code ifdef-ed out.

 

26 minutes ago, Mr.Rocket said:

bot

please, don't. bots are completely broken, and should not be used. they are there for my own development needs, but by all means consider them totally unsupported. and yes, they are "local players", without network connection, and so without RPC required to dispatch messages.

 

26 minutes ago, Mr.Rocket said:

Fraglimit and Timelimit seem to only work from the multiplayer menu.

the order of the commands matters alot. basically, "maxplayers" initiates a server mode, then other commands setup the parameters, but they only have effect after the "map" command. that is, you have to start the server, then setup it, and then set the map. otherwise you'll see some strange effects (becase "maxplayers" does its own business too). quite a mess, but i used to it, so never bothered to change it. ;-)

 

also, dedicated server is using the same config.cfg as the "full" engine (yet it will never rewrite it), so you can put some common things there.

Share this post


Link to post
5 hours ago, ketmar said:

of course, that is exactly the same source as for the "full" engine. ;-) because this *is* the full engine, only with rendering and sound code ifdef-ed out.

Ah ok I see, well there needs to be a way to close it more easily than through task manager lol, it really just needs some ui adjustments to be "visible". :)

 

5 hours ago, ketmar said:

bots are completely broken, and should not be used.

*Noted ;)

 

5 hours ago, ketmar said:

the order of the commands matters alot. basically, "maxplayers" initiates a server mode, then other commands setup the parameters, but they only have effect afte the "map" command. that is, you have to start the server, then setup it, and then set the map. otherwise you'll see some strange effects (becase "maxplayers" does its own business too). quite a mess, but i used to it, so never bothered to change it. ;-)

Yeah I noticed that, I'm working on a launcher for k8vavoom exclusively..

https://imgur.com/a/DlMLtSb

I see now, and will mess with it in a bit! So fraglimit and timelimit need to be after +map ?

 

Love the new version so far!

Cheers!

 

EDIT: lol guess what, fraglimit and timelimit need to be before +map.. :D

eg: -doom2 +MaxPlayers 2  +Deathmatch 2  +NoMonsters 1  +Skill 3  +FragLimit 1 +TimeLimit 1 +map map01 +Addbot bot1

It's working now.. ;) so something to go in the docs :P

 

Oh btw, in case you're wondering, because -bdw is a graphic/client side command, when the launcher is used to host a dedicated server, -bdw will be removed from command line. Otherwise, the dedicated server seems to reject the connecting client.

But if it's a client side server, then the option will remain there to enable or disable said graphic mods.

If there's reason enough, I haven't added anything having to do with the external dedicated server app yet, so..

 

hmm, seems like the Deathmatch intermission screen could stand to be displayed a little longer than the 1 second that it currently is heh..

It probably needs at least a 5 to 10 second countdown, so everyone has a chance to see what their score is, ya know?

 

 

Edited by Mr.Rocket

Share this post


Link to post
9 hours ago, Mr.Rocket said:

well there needs to be a way to close it more easily than through task manager lol, it really just needs some ui adjustments to be "visible".

sure. in GNU/Linux, it still prints to the terminal, so i simply didin't noticed that on windows it won't open console window. ;-) i'll fix it later.

 

9 hours ago, Mr.Rocket said:

I'm working on a launcher for k8vavoom exclusively

yay! great, thank you! ;-)

 

9 hours ago, Mr.Rocket said:

lol guess what, fraglimit and timelimit need to be before +map

ah, i didn't made myself clear, sorry. you have to specify everything before changing the map, and then new map with "map" will use what you specified. that is, you got it exactly right. ;-)

 

9 hours ago, Mr.Rocket said:

because -bdw is a graphic/client side command

nope. it is a command to load a full-featured built-in mod (and blood is a mod too, so "-nogore" disables loading it). if you start the server with "-bdw", then you have to start the client with "-bdw" too (i.e. they both should either have it, or not). it doesn't matter if it is dedicated, the mod still should be loaded.

 

and even if something is only gfx, it still should be loaded to dedicated server. client and server should include absolutely identical list of loaded wads. it doesn't matter what they contains, they still should be loaded, and in the exactly same order. otherwise, even if you will manage to beat the checker (it is not hard, it only checks names ;-), Bad Things will happen. messed sprites, mangled sounds, and other chaotic things.

 

the engine is using simple ints to identify alot of things (including textures, sprites, etc.). those ids are depend of loaded wads, and they should be the same on both ends. that's why the list of mounted archives should be completely identical. otherwise ids will differ, and you will get things like SSGs dripping from the ceiling instead of blood (lol).

 

also, the server is Teh Authority. it means that any mod (including weapon mod like BDW) should be loaded onto server for actual processing (because all actions are done there), and onto client for rendering (because client only rendering what server telling it to, and so client needs all the gfx ;-).

 

sorry if i'm talking about obvious things you already know. then maybe some other people are interested. ;-)

 

so i don't think that there is any need to do something special for dedicated server, you can (and actually should ;-) use exactly the same command line for both exes.

 

9 hours ago, Mr.Rocket said:

hmm, seems like the Deathmatch intermission screen could stand to be displayed a little longer than the 1 second that it currently is heh..

it should be a normal intermission screen, with 4 second unskippable pause, and then it will be skipped as usual (i.e. one player skipped it -- everybody skipped it). at least that is how i wanted it to be. i'll check if i broke it (i certainly did ;-).

 

as i absolutely don't play DM games, that mode may be undertested. so thank you for your reports! the more people will report, the better DM mode will be. ;-)

Edited by ketmar

Share this post


Link to post
Guest
This topic is now closed to further replies.
×