mvdevs / jk2mv Goto Github PK
View Code? Open in Web Editor NEWJK2MV - improved, modernized JK2 client and server
Home Page: https://jk2mv.org
License: GNU General Public License v2.0
JK2MV - improved, modernized JK2 client and server
Home Page: https://jk2mv.org
License: GNU General Public License v2.0
We should add an option for the client to permanently decline the download of specific files, so they're not asked to download the same file every time they join a server offering the file they don't want. Some kind of clientside "blacklist".
Protect, Rage and Speed can be perceived visually but Absorb is only visible upon affection of a force and thus it is important for it be audible.
Menu patchfiles should be updated to show the client cvars in the menu.
1.03 demos can't be played in the moment and the game crashes when trying to play one.
e.g. when setting g_maxForceRank to something > 7 it reads from unallocated memory locations and thus crashes the game in some cases.
@aufau already made some fixes for that
aufau/jk2sdk-gpl@a161876
@Daggolin is working on Multiversion QVMs which will be part of the mvsdk he is working on.
JK2MV 1.2 will ship with bugfixed, improved but still mostly basejk versions of them.
The repository is missing a .gitignore file. I recommend looking into https://github.com/github/gitignore
Setting default "homePath" to $HOME/jk2mv
is wrong. It should be classic $HOME/.jkii
or $HOME/.jk2mv
. I'd use first one, as there is no "official" jk2 client for linux and resource files are all compatible afaik.
Modern approach would be using XDG specs but it's not worth it in this case.
On MacOSX FPS drops down to 20~30FPS when r_dynamicglow is enabled.
I guess that's because of some missing opengl extension, or we are using an extension which is software implemented on osx.
I think this cvar need to be changed to something like "mv_coloredShadow", because the "nick name" is not the only thing affected by an colored shadow, all of strings texts marked as ITEM_TEXTSTYLE_SHADOWED can have a "colored shadow"... anyways, is an suggestion 😄
Some people report their game crashes when minimizing it or shortly after.
We've talked a bit about this in the forums, but i want to leave here too.
Basically this fix is for the 2D render (not the 3D), actually the current code just stretch all 2D from 640x480. Both games has this problem (jk2 and jk3),i discussed this with some guys attemped to fix this... huds are easy to fix (editing all cgs.widthRatioCoef), but there are some texts or fonts which would require modified renderer... same with the jk2 menus i think.
Current: http://i.imgur.com/OraXC70.jpg?1
Fixed: http://i.imgur.com/ju9LqD9.jpg?1
Changes: http://i.imgur.com/t0CNBdA.jpg?1
Commit 8084729 introduced a regression, ctrl-v and few other shortcuts in Field_CharEvent don't work anymore. On the other hand, Issue #7 it was supposed to fix doesn't happen when I remove converting chars to uppercase code on current HEAD (can't simply revert because it was overwritten).
Tbh I can't see where is there a requirement for upper-case characters in ui code or why it would work on windows.
Leaving it without one makes it default to 0. This confuses noob modders like myself who register their own strip files without ID and they overwrite each other in stri.cpp:SP_ListByID.
I'd suggest setting it to something other than 0, as this may break some legacy mods who got it wrong too.
A demo recorded in a 1.02 server with JK2MV(b3) cannot be played. With original JK2 the demo recored with JK2MV works fine and can be played. The name of the demo reads "demo01.dm_15". The error message reads: "Error: Couldn't open demos/DEMO01.DM_15".
As of my experience, the client crashes if you try to join a 1.03 or 1.04 server and don't have assets2.pk3 or assets5.pk3 in your base folder. This could happen to people who use the standalone executable in their 1.02 folder. Instead of crashing, drop to main menu and inform the client that he needs these files?
Typing e.g. ^2 to create a green text doesn't work on unix platforms, it creates what it actually should "²"
This needs a workaround.
jk2mv automatically detects the appstore version of jk2 and loads the assets file from within the package. This should also be the case for the steam version (which seems to be the same in a different directory)
Plans to move to SDL2 across all platforms in the future like we did with OpenJK?
Using /screenshot only outputs a black file.
when using e.g. the "german nodeadkeys" layout instead of the "normal" one the console will not show when pressing shift + ^
Here is a list of remaining Clang/GCC warnings that need resolution. They mostly indicate minor bugs that may, or may not float up in the runtime. Please don't just silence them unless you're 100% sure they don't indicate a real bug.
/home/witold/src/jk2mv/src/server/sv_client.cpp:1257:18: warning: illegal character encoding in string literal [-Winvalid-source-encoding]
(VALIDNAMECHARS constant)/home/witold/src/jk2mv/src/ghoul2/G2_bones.cpp:216:11: warning: enumeration value 'ORIGIN' not handled in switch [-Wswitch] switch (up)
etc.up
, forward
etc. can come from modules. What should we do when it's ORIGIN?/home/witold/src/jk2mv/src/qcommon/RoffSystem.cpp:953:6: warning: variable 'originTrajectory' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] if (roff_ent->mIsClient)
etc./home/witold/src/jk2mv/src/qcommon/strip.cpp: In function ‘void SP_Unload(unsigned char)’: /home/witold/src/jk2mv/src/qcommon/strip.cpp:1587:16: warning: deleting object of polymorphic class type ‘cStringPackageSingle’ which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor] delete (*i).second;
/home/witold/src/jk2mv/src/client/FxScheduler.cpp: In member function ‘void CFxScheduler::PlayEffect(int, CFxBoltInterface*)’: /home/witold/src/jk2mv/src/client/FxScheduler.cpp:1245:19: warning: the address of ‘origin’ will always evaluate as ‘true’ [-Waddress] if ( origin )
PlayEffect(int, CFxBoltInterface*)
, it's only referenced by CG_FX_PLAY_BOLTED_EFFECT_ID
syscall and fortunatelly it's not used by original cgame, although someone tried in cg_players.c: //FIXME: Due to the horrible inefficiency involved in the current effect bolt process an effect with as many particles as this won't
//work too happily. It also doesn't look a lot better due to the lag between origin updates with the effect bolt. If those issues
//are ever resolved it should be switched over to BoltedEffect.
//trap_FX_PlayBoltedEffectID(trap_FX_RegisterEffect("force/confusion.efx"), &fxObj);
/home/witold/src/jk2mv/src/client/cl_main.cpp: In function ‘void CL_ServerStatusResponse(netadr_t, msg_t*)’: /home/witold/src/jk2mv/src/client/cl_main.cpp:3445:10: warning: enumeration value ‘PROTOCOL_UNDEF’ not handled in switch [-Wswitch] switch (prot) /home/witold/src/jk2mv/src/client/cl_main.cpp:3472:11: warning: enumeration value ‘PROTOCOL_UNDEF’ not handled in switch [-Wswitch] switch ( prot )
/home/witold/src/jk2mv/src/renderer/tr_shade_calc.cpp: In function ‘void RB_CalcFogTexCoords(float*)’: /home/witold/src/jk2mv/src/renderer/tr_shade_calc.cpp:879:14: warning: ‘fogDepthVector[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized] t = DotProduct( v, fogDepthVector ) + fogDepthVector[3];
/jk2mv/src/sys/con_tty.cpp:126:31: warning: ignoring return value of 'ssize_t write(int, const void*, size_t)', declared with attribute warn_unused_result [-Wunused-result] write(STDOUT_FILENO, &key, 1);
When I have time to crawl through more, I can start showing which things exactly.
Every now and then people ask about raw mouse input and some players who got issues with their mouse on jk2mp, jamp, etc. say that they don't have issues on OpenJK when they use raw mouse input.
Maybe we should add support for raw mouse input, too?
OpenJK references:
JACoders/OpenJK#202
JACoders/OpenJK#215
in the moment http-downloads on the clientside are implemented in a seperate thread which is controlled in a, well, pretty ugly way from the main thread. It could be implemented better by downloading chunks every frame. (http://curl.haxx.se/libcurl/c/curl_multi_fdset.html)
Code New Roman is ready and can be downloaded from there: https://jk2.info/viewtopic.php?f=34&p=4000#p4000
I'm haven't added it yet to avoid trashing repository in case somethings changes. I think this is a good practice. Maybe we should keep these binary files in a separate repo until release or keep them as git submodule? The problem is that git hasn't been made for binary blobs and each update permanently increases repository size without any delta compression.
The jpeg code currently calls "exit(EXIT_FAILURE)", when it encounters issues reading a file. This leads to the game quitting on some maps that used to load in jk2mp. Adding a custom error handler could solve the problem.
If "show empty servers" is disabled and botfiltering is enabled empty servers are shown nonetheless. That's because when the servers are filtered, they still count the bots but then placed into the list without them.
As Triforce reported (http://forum.jk2mv.org/viewtopic.php?f=5&t=18)
Bug is caused by the new font centering code I wrote.
JK2MV does not have a workaround for saberstealing, yet.
The dedicated server package should have a readme.txt which explains the cvars, features and how to use them.
For example, if you input
"cl_maxpa 100"
in the console and press ENTER, the command won't complete to cl_maxpackets even if it's the only thing it can complete to. It seems like it won't complete anything when an argument is supplied, which is contrary to basejk behavior.
So for the above to work as wanted, one must first write "cl_maxpa", press TAB so it completes to cl_maxpackets, and finally write the value. Is this intended? I remember seeing some bugs when I ported the ioquake3 command completion code to my own jk2 binary, but in the end I found some workarounds if you need inspiration.
Oh, and I suggest removing the green color for the completion stuff - looks bad in my opinion. Either go with white or make some special color for it like grey. Maybe it's just me 😄
so servers can use a seperate webserver to provide http downloads rather then the builtin one.
Some admins can't open up another port or are not allowed by their provider.
Also, multiple servers could use one single source.
r_gammamethod "2" is broken on linux. At least with drivers using Mesa3D.
I already tried fixing it but didn't find a solution for it.
I blame Mesa3D :P
Ability to autocomplete command arguments, eg. callvote
or tell
would be particularly useful (latter could probably go straight to JK2MV). Should we allow mods to override autocompletion functions defined by JK2MV?
I hope I can make it before next release, but I wouldn't make it a milestione as there are enough changes by now.
Version: JK2MV b3 / 1.02
I noticed following error / warning messages spamming the console:
And when playing on specific servers (not every server):
unknown UI script interface
unknown UI script button1
unknown UI script wav
It happens when you go into Setup > More Video > Show driver info
I'm not 100% sure about this one, but sometimes when I update the serverlist some servers aren't shown at all. I know that these servers reporting to all the master servers of ouned, jk2master.ravensoft and jkhub.
When I add these servers to the favourites list, they aren't updated correctly and cannot be joined although they work perfectly fine with original JK2.
For example the server: 46.38.237.114:28070 "-BT3-". (1.02, it runs NT mod)
Loopsounds (like force absorb, force protect, force rage, ...) do not play at all.
should work from fs_homepath, too
e.g. the chat can be bound by "bind u messagemode" in the console but it doesn't work in the menu.
I suggest to change this:
Line 3532 in b25d747
because local players also can have ping 0, the current "ping == 0" filter is interpreting real players with ping 0 as bots in the server list, i suggest to change it for something like the remoteAddress.type == NA_BOT, so u need to parse a client info for that i think... or checking if the client has the "skill" field in his info (that is only from bots) but i think is unsafe. idk what is better 😋
Because the "broken" models can only be triggered in non-team games (skins are forced to either blue or red in team games on the clientside).
The problem is that if you enter "team_model morgan" in a team game when mv_fixbrokenmodels is enabled, you get kyle skin. There are some people like me who use the team_model command and rather not have to write "morgan/red" instead of morgan. Huge issue, I know. 😸
I suggest changing
if (mv_fixbrokenmodels->integer) {
to
if (mv_fixbrokenmodels->integer && g_gametype->integer < GT_TEAM) {
You need to be fast to reproduce that.
Then you will see some servers inserted into the wrong place.
in the moment the minimizer is only implemented for windows
https://github.com/mvdevs/jk2mv/blob/master/src/unix/sdl_input.cpp#L71
I think this should say not A_DIVIDE as A_DIVIDE is in the lower case range and A_MULTIPLY is in the upper-case range, no?
with d5223c1 FS_MV_VerifyDownloadPath got way too inefficient by reading the file every single time the function is called.
-> read the file once when the map is loaded
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.