Pages: 1 [2]
  Print  
Author Topic: 0.8.1 & 0.8.5 Demo Playback issues  (Read 43747 times)
grey matter
Member


Cakes 8
Posts: 381

>9k


« Reply #25 on: February 04, 2012, 12:51:53 PM »

@Gig: the ioquake3 project is pretty dead, and anyway the guys are really reluctant to add new functionnalities, so I think we are on our own if we want to enhance the game code.
There is actually quite a few commits to ioquake3 but not anything that would draw a headline. My favourite enhancement have been the qvm based serverside mod on pure server thing.

The ioquake3 team has a rather large list of NOTTODO, that's all. If you want to add something fancy, just create your own fork. Their main interest has always been eliminating bugs and cleaning code. They will not touch the gamecode, unless you find a serious flaw, but they might add new stuff into the engine (and thus being mod-agnostic).

What's new about server-side (QVM) mods? They've been around ever since id Quake 3.
Logged

This space is for rent.
sago007
Posts a lot
*

Cakes 62
Posts: 1664


Open Arena Developer


WWW
« Reply #26 on: February 04, 2012, 01:22:06 PM »

What's new about server-side (QVM) mods? They've been around ever since id Quake 3.
I have never been able to get them to work. But of course just because Google does not know about it does not mean it is not possible.
Logged

There are nothing offending in my posts.
GrosBedo
Member


Cakes 20
Posts: 710


« Reply #27 on: February 04, 2012, 02:59:02 PM »

About server-side mods, I guess that what they did is allow server-side mods with a sv_pure 1 server, because before, if I remember well, it was not possible, you had to set sv_pure 0.

Indeed now it works, simply unzip the vm into the vm/ folder, and launch a server (with OA <= 081), and it will work. Also, most serverside mods require to set vm_game 2, but a few ones, like ExcessivePlus, supports 0.

About ioquake3: yes but there are a lot of things that they could do, such as fix the /rcon tell which _should_ work logically.
Logged
Gig
In the year 3000
***

Cakes 45
Posts: 4394


WWW
« Reply #28 on: February 04, 2012, 07:15:02 PM »

@Gig: Loading a map is not a great matter, because players can always find a way to fetch the required map over the net.
Well, different versions of the same map may be difficult to identify... Smiley
Logged

I never want to be aggressive, offensive or ironic with my posts. If you find something offending in my posts, read them again searching for a different mood there. If you still see something bad with them, please ask me infos. I can be wrong at times, but I never want to upset anyone.
swaggerall
Member


Cakes -58
Posts: 263


Mega|^AIM


WWW
« Reply #29 on: February 04, 2012, 08:49:26 PM »

i dont see why i just cant be editted and fixed for newer versions....

renaming it is so stupid...


weather you play demos regularly or not just because YOU dont doesnt mean other do.


i also think demos should have a rewind pause fastword button :\


espically since the meer touch while playing a demo sends you back to the main menus
Logged

Mega Rules The World ! Mega Rules The World
GrosBedo
Member


Cakes 20
Posts: 710


« Reply #30 on: February 05, 2012, 06:18:31 AM »

@Gig: I agree, but this is a different feature to implement than compatibility break, which is what we are discussing here. The problem with compatibility break is that with time it will get worse, and either the dev team will have to maintain an old release just for compatibility sake, or drop it and risk to lose all the compatibility (which is probably what will happen, try to download OpenArena v0.6.0 to see what I mean).

So I don't think that saying that old release are to be used for this kind of case, because one day they will be dropped. If the compatibility break is fixable, I think it rather should be.

And about your feature, there is already i mapChecksum integrated, but maybe this is not stored in demos. But a simple check based on checking could easily be implemented I think (if that's not already done).

@sago: then will it be fixed for the next version? Could you please point me to the code in question?

i also think demos should have a rewind pause fastword button :\

espically since the meer touch while playing a demo sends you back to the main menus

Please do not mix up your requests AIM, this is a different matter.

Anyway, even if these features are not show on the GUI, they already exist.

To avoid quitting by just hitting any key or button, use:

Code:
/com_cameraMode 1

To pause the demo:
Code:
/cl_freezeDemo 1
or
Code:
/cl_paused 1

To slow down or fast forward the demo:
Code:
/timescale xx
With 1 = normal speed.

And if you want advanced features like rewinding, just use q3mme or oamme (available on this forum).
« Last Edit: February 05, 2012, 06:34:42 AM by GrosBedo » Logged
swaggerall
Member


Cakes -58
Posts: 263


Mega|^AIM


WWW
« Reply #31 on: February 05, 2012, 07:59:00 AM »

never knew..
Logged

Mega Rules The World ! Mega Rules The World
Gig
In the year 3000
***

Cakes 45
Posts: 4394


WWW
« Reply #32 on: February 05, 2012, 08:29:47 AM »

I tried cl_freezedemo in the past, but it strangely freezes the current frame, but the demo continues playing in background. I will try cl_paused when I have some time.

Anyway, I don't understand why you separe the game logic compatibility from the maps compatibility. In general (maybe with the exception of serverside mods?), both of them depend from loaded pk3s. If you have 085 pk3s loaded, you use 085 game logic and 085 maps. If not, you use 081 game logic and maps. Demos capable to save and load the right pk3s list should work with different patches, in theory.

Anyway, I've told various times that the compatibility checks may not do miracles, and may make compatible different OA patches, but not different major versions (oa 0.9.x will not be able to correctly play 0.8.x demos, cause of completely rebooted pk3s). Maybe, for this reason, spending too much time about the feature would not be worth?
Logged

I never want to be aggressive, offensive or ironic with my posts. If you find something offending in my posts, read them again searching for a different mood there. If you still see something bad with them, please ask me infos. I can be wrong at times, but I never want to upset anyone.
GrosBedo
Member


Cakes 20
Posts: 710


« Reply #33 on: February 05, 2012, 08:48:00 AM »

@Gig: I make a difference because, as you point it, the technique or loading a previous pk3 only works because 085 is a pk3 patch, but when there will be a new major version, there will probably be a single vm so you can't load a previous one (unless of course you download a previous version of OpenArena...).

And there's nothing that says that the next major version of OA can't be compatible with previous demos and serverside mods. OA 081 was compatible with every demos, be it for OA <= 081 or Quake 3 demos (as far as I know, I can remember I tested, you just had to change the extension).

So that's why I say: if the compatibility break is due to a simple unnecessary change in the code, then fix it ; if it's due to a major change in the game, then nevermind.

Sago confirmed that this is due to a very simple unnecessary change, so what's the fuss? Do you really want to break compatibility now (while this was a major goal of OA until now) for such an unnecessary thing? To me this is quite logical to revert the unnecessary change.
Logged
sago007
Posts a lot
*

Cakes 62
Posts: 1664


Open Arena Developer


WWW
« Reply #34 on: February 05, 2012, 09:28:31 AM »

In bg_public.h:
Code:
// player_state->stats[] indexes
// NOTE: may not have more than 16
typedef enum {
        STAT_HEALTH,
        STAT_HOLDABLE_ITEM,
#ifdef MISSIONPACK
        STAT_PERSISTANT_POWERUP,
#endif
        STAT_WEAPONS,                                   // 16 bit fields
        STAT_ARMOR,
        STAT_DEAD_YAW,                                  // look this direction when dead (FIXME: get rid of?)
        STAT_CLIENTS_READY,                             // bit mask of clients wishing to exit the intermission (FIXME: configstring?)
        STAT_MAX_HEALTH                                 // health / armor limit, changable by handicap
} statIndex_t;
STAT_PERSISTANT_POWERUP should be after STAT_MAX_HEALTH. Of course changing it now will break compatibility one more time and that is why I haven't done it.
Logged

There are nothing offending in my posts.
GrosBedo
Member


Cakes 20
Posts: 710


« Reply #35 on: February 05, 2012, 09:50:32 AM »

Thank you very much Sago for the code.

Of course changing it now will break compatibility one more time and that is why I haven't done it.

I understood that this is why you haven't done it yet, but breaking compatibility with OA 085 is worth, since it will fix the compatibility with all previous OA versions and ioquake3 and server-side mods. And after all, this should simply be called a bugfix, because that's what it is.
Logged
Neon_Knight
In the year 3000
***

Cakes 49
Posts: 3775


Trickster God.


« Reply #36 on: February 05, 2012, 10:39:45 AM »

IANAC, so sorry if my question is dumb, but... is it possible to keep compatibility with all the OA versions by using an "if" statement which detects 0.8.5, and if OA version is 0.8.5 uses the current code, while if not it uses the fixed code?
Logged


"Detailed" is nice, but if it gets in the way of clarity, it ceases being a nice addition and becomes a problem. - TVT
Want to contribute? Read this.
GrosBedo
Member


Cakes 20
Posts: 710


« Reply #37 on: February 05, 2012, 11:03:10 AM »

IANAC, so sorry if my question is dumb, but... is it possible to keep compatibility with all the OA versions by using an "if" statement which detects 0.8.5, and if OA version is 0.8.5 uses the current code, while if not it uses the fixed code?

The compatibility break will mainly happen between the server and client, so if the server gets fixed, the clients with the old code won't be able to play, unless they download the new version.

Anyway Sago, since noone these day use OA 085 as server-side, because when they update, they need the clients to download the OA 085 pk3, I think it won't matter much to fix this bug and break the compatibility with OA 085? I mean, anyway, either players won't upgrade, or they will be required to download the pk3 by the server, so practically there shouldn't really be a compatibility break.

And about OA 085 demos, players will still have the possibility to temporarily rename OA 088 pk3, at least they won't have to do this trick anymore for OA <= 085 versions nor ioquake3 demos.
Logged
Gig
In the year 3000
***

Cakes 45
Posts: 4394


WWW
« Reply #38 on: February 05, 2012, 06:17:50 PM »

@Gig: I make a difference because, as you point it, the technique or loading a previous pk3 only works because 085 is a pk3 patch, but when there will be a new major version, there will probably be a single vm so you can't load a previous one (unless of course you download a previous version of OpenArena...).

And there's nothing that says that the next major version of OA can't be compatible with previous demos and serverside mods. OA 081 was compatible with every demos, be it for OA <= 081 or Quake 3 demos (as far as I know, I can remember I tested, you just had to change the extension).
Sorry, I still don't understand something... how is it possible that 081 played pre-081 demos or even q3 demos? Where would it find the right gamelogic? Where would it find the required maps, models, textures, shaders, effects?
Logged

I never want to be aggressive, offensive or ironic with my posts. If you find something offending in my posts, read them again searching for a different mood there. If you still see something bad with them, please ask me infos. I can be wrong at times, but I never want to upset anyone.
GrosBedo
Member


Cakes 20
Posts: 710


« Reply #39 on: February 05, 2012, 06:40:47 PM »

@Gig: the necessary gamelogic to replay the demo stayed the same, because ioquake3 (and even Quake3) is a subset of OA 081: OA 081 includes everything from ioquake3 but adds more features, without modifying what is already existent.

About shaders and graphics stuff, indeed OA 081 cannot find them (and most Quake3 shaders and textures aren't implemented yet), but you could download the map elsewhere (there are Q3 map packs) and use Rainbow's textures pack, and it works quite well if I remember well.

The code is now broken starting from OA 085 because the weapons are not anymore in the same order, so that old clients get a new info that they do not expect at this place (before it was appended, so no problem, now it's mixed in between -> bug).
Logged
Graion Dilach
Member


Cakes 12
Posts: 403



« Reply #40 on: February 06, 2012, 03:26:54 AM »

And as numerously told, the entries were placed there by iD. They were just commented out in the whole time.
Logged

One shall remind what have he left behind... to actually realize that it's still cool.
GrosBedo
Member


Cakes 20
Posts: 710


« Reply #41 on: February 06, 2012, 03:48:15 AM »

And as numerously told, the entries were placed there by iD. They were just commented out in the whole time.

They maybe were commented off for a good reason. And iD isn't god, they may be wrong sometimes. Did you try to place those additions at the end instead of in the middle?
Logged
grey matter
Member


Cakes 8
Posts: 381

>9k


« Reply #42 on: February 06, 2012, 12:22:30 PM »

Sorry, I still don't understand something... how is it possible that 081 played pre-081 demos or even q3 demos? Where would it find the right gamelogic? Where would it find the required maps, models, textures, shaders, effects?

Demos include information about which map was played (though not which version, as there are no checksums). Everything else is just a dump of network packets. The game will then load whatever assets are required by the local map and use whatever local gamelogic is present and whatever assets it loads. As long as this is compatible to what has been used during recording, everything will be fine.
If the gamelogic interprets stat[2] as STAT_PERSISTANT_POWERUP during playback while it was STAT_WEAPONS during recording, then things break. The demo itself has nothing to do with this.
That is, if you change any of the code logic behind these "magic" offsets, then old demos will be interpreted incorrectly.
« Last Edit: February 06, 2012, 03:41:05 PM by grey matter » Logged

This space is for rent.
Peter Silie
Member


Cakes 2008
Posts: 610



« Reply #43 on: February 06, 2012, 02:00:54 PM »

If there is any chance to detect a .85 demo, a little program could change the order.
But maybe thats overkill.
Logged
swaggerall
Member


Cakes -58
Posts: 263


Mega|^AIM


WWW
« Reply #44 on: February 06, 2012, 03:01:52 PM »

will it be fixed or not..?
Logged

Mega Rules The World ! Mega Rules The World
grey matter
Member


Cakes 8
Posts: 381

>9k


« Reply #45 on: February 06, 2012, 03:54:09 PM »

Also, most serverside mods require to set vm_game 2, but a few ones, like ExcessivePlus, supports 0.
Shouldn't it be the other way around? vm_game defaults to 2, meaning QVM compile mode. 0 is to run shared libs (.so, .dll, .dylib). The latter one is bad for portability. 1 means QVM interpret mode.

About ioquake3: yes but there are a lot of things that they could do, such as fix the /rcon tell which _should_ work logically.
"tell" is not part of ioquake3. As said numerous times, they won't add anything but bugfixes to the gamecode, but will accept changes to the engine. Using the engine for "/rcon tell" is not portable, because each game might be using different commmands for this in cgame gamecode.
Logged

This space is for rent.
Gig
In the year 3000
***

Cakes 45
Posts: 4394


WWW
« Reply #46 on: February 06, 2012, 04:31:51 PM »

Code:
/cl_paused 1
This looks like as read-only...

And here http://joz3d.net/html/q3console.html they say "variable holds the status of the paused flag on the client side".

PS: Strange... that com_cameramode 1, does not only prevent from exiting the demo by simply pressing any key... but enabling it also hides your player model drawing if \cg_thirdperson is set to 1. I don't see the logic behind this... id software mysteries?
« Last Edit: February 06, 2012, 05:23:57 PM by Gig » Logged

I never want to be aggressive, offensive or ironic with my posts. If you find something offending in my posts, read them again searching for a different mood there. If you still see something bad with them, please ask me infos. I can be wrong at times, but I never want to upset anyone.
GrosBedo
Member


Cakes 20
Posts: 710


« Reply #47 on: February 13, 2012, 07:06:03 AM »

@Gig

Ah sorry Gig, didn't check it, maybe cl_paused is only accessible with /devmap (cheats enabled).


@Grey Matter
Also, most serverside mods require to set vm_game 2, but a few ones, like ExcessivePlus, supports 0.
Shouldn't it be the other way around? vm_game defaults to 2, meaning QVM compile mode. 0 is to run shared libs (.so, .dll, .dylib). The latter one is bad for portability. 1 means QVM interpret mode.

Yes exactly, that's why 1 is the worst in terms of running time (since it's interpreted), 0 is bad for crossplatform compatibility but if you can afford to compile the "libraries" for every platform, you then get the best running time you can with a vm. 2 is a good compromise: faster than 1 (interpreted), but worst than 0, but its crossplatform.

That's why only few mods are nowadays runnable with vmgame 0 (such as ExcessivePlus), but anyway they are all runnable with vmgame 2 or 1.

"tell" is not part of ioquake3. As said numerous times, they won't add anything but bugfixes to the gamecode, but will accept changes to the engine. Using the engine for "/rcon tell" is not portable, because each game might be using different commmands for this in cgame gamecode.

/tell _is_ part of ioquake3, it always worked, but the problem is that /rcon tell does not work, while /rcon say and similar client-side commands work. I do not think that was on purpose, rather a forgotten implementation by Id Software that persisted over time. I think it's clear that it's a bug (of partial implementation).

And I think this is rather unfortunate, because this simple litte bit of code allows to use a lot of third-party applications that add a lot of functionnality.

And about ioquake3 project, they are not only implementing bugfixes but also new functionnalities such as VoIP. But I can't understand why aren't they backporting codes from mods of their engine that could be considered as core functionnalities, such as advanced scripting capabilities, which does NOT break the compatiblity with the Quake3 assets and old engine.

Anyway this is another debate, but I really do think that ioquake3 release cycle is flawed. Ok for stable releases, but they could also create a testing branch implementing new functionnalities that do not break compatibility.
« Last Edit: February 13, 2012, 07:27:18 AM by GrosBedo » Logged
grey matter
Member


Cakes 8
Posts: 381

>9k


« Reply #48 on: February 13, 2012, 12:24:59 PM »

Yes exactly, that's why 1 is the worst in terms of running time (since it's interpreted), 0 is bad for crossplatform compatibility but if you can afford to compile the "libraries" for every platform, you then get the best running time you can with a vm. 2 is a good compromise: faster than 1 (interpreted), but worst than 0, but its crossplatform.
I doubt that there is much of a performance bottleneck within the Q3 VM. The only reason I've ever seen native shared libs is to use functions not available for QVMs (such as direct iptables support without additional engine trap_* calls).
If you really were after the "best running time for every platform", you'd also have to compile the gamecode with -march=native, which also means you'd have to compile for each processor architecture as well (and, again in theory, test for each platform and architecture).

That's why only few mods are nowadays runnable with vmgame 0 (such as ExcessivePlus), but anyway they are all runnable with vmgame 2 or 1.
This would not be a problem at all, if all mods were properly open source'd (the OA Debian port for example uses native libs due to licensing issues with q3lcc).
I'll be a bit pendandic here (regarding "they are all runnable"); mods in QVM format can always be run in both compile or interpret mode (vm_game 2 and 1 respectively). Furthermore they need to be compatible with either id Quake 3 1.32c or use ioquake3's improved QVM format (and can then no longer be used with id Tech 3. This applies to OA for example.). Mods in native library format (e.g. qagamex86_64.so) can only be run on a specific platform and architecture (let alone problems like being linked to outdated glibc versions).

/tell _is_ part of ioquake3, it always worked, but the problem is that /rcon tell does not work, while /rcon say and similar client-side commands work. I do not think that was on purpose, rather a forgotten implementation by Id Software that persisted over time. I think it's clear that it's a bug (of partial implementation).
Sorry for not being more explicit here, I meant to say "rcon tell is not part of ioquake3" (I thought this was obvious from the context).
Game commands do not automatically become "rcon-ready". They either need to be added to g_svcmds (and can then be used from server console and rcon) or hacked into the engine (which is a bad approach). I do think this was on purpose, since iirc "say" is the only command you can use within rcon. Anything else like "say_team", "tell", "callvote" can not be used with rcon.
I'll say it again; the ioquake3 team won't add this. They will not touch the gamecode, but adding "rcon tell" to the engine is just not cross-compatible for all mods (and is thus not in the interest of the ioquake3 team either).

And I think this is rather unfortunate, because this simple litte bit of code allows to use a lot of third-party applications that add a lot of functionnality.
This is not a real problem. If you have the source code, just add the required commands to the gamecode. If you don't, just create your own hacked engine, which is compatible with whatever mod you're using.

And about ioquake3 project, they are not only implementing bugfixes but also new functionnalities such as VoIP. But I can't understand why aren't they backporting codes from mods of their engine that could be considered as core functionnalities, such as advanced scripting capabilities, which does NOT break the compatiblity with the Quake3 assets and old engine.

Anyway this is another debate, but I really do think that ioquake3 release cycle is flawed. Ok for stable releases, but they could also create a testing branch implementing new functionnalities that do not break compatibility.

If you've loosely followed their changes, you'd notice that they hardly ever added any changes which require more than one new file (not counting entire external libs like curl or speex). If I had to guess I'd say they are afraid of the number of potential bugs that large new changes could bring (assuming that small changes are less likely to contain bugs Smiley ).
I don't quite see why scripting capabilities (like variable substitution) are a core functionality. People have been playing Q3 without it ever since. IPv6 on the other hand *will be a required core functionality soon.

The ioquake3 team is rather small. Combine that with the fear of new bugs and the lack of time for testing "experimental features" and you know why they don't do this themself. You're always free to create your own fork. I agree that this is bad, since everyone starts to maintain his own fork with some own new features and some borrowed from other forks, without any kind of "central additional feature repository". Thus you'll have to keep an eye on all these forks and safe interesting .diffs and .patches for later Wink

By the way, ioquake3 does not really have any release cycle. The latest official stable release is v1.36 and from the stone age. Even the "untested Angst Build which is compiled from the freshest of SVN sources" is quite old.
Logged

This space is for rent.
Pages: 1 [2]
  Print  
 
Jump to: