JazzJackrabbit Community Forums

JazzJackrabbit Community Forums (http://www.jazz2online.com/jcf/index.php)
-   General Jazz Jackrabbit Talk (http://www.jazz2online.com/jcf/forumdisplay.php?f=4)
-   -   JJ2+ v6.6h (last updated 1 September, 2026) (http://www.jazz2online.com/jcf/showthread.php?t=19489)

proud2beamerican Jan 25, 2017 08:44 PM

Thank you sir, that helped!

proud2beamerican Jan 25, 2017 09:13 PM

btw. are there any chances for Linux JJ2+? At least somewhere in the future? Honestly I believe that most of the problems I'm facing / faced in the past are due to Wine. I really dislike Wine. This game is the only reason I have it on my computer, I don't use any other Windows stuff.

Maybe that's a lot to wish for, I have absolutely no clue how hard would it be to make JJ2 and JCS Linux-friendly.

Stijn Jan 26, 2017 04:08 AM

Since there is no native JJ2 for Linux the only way for JJ2+ to be Linux-compatible would be for it to lose JJ2 as a dependency, which while not totally off the table is mostly a pipe dream at this point in time.

djazz Jan 26, 2017 06:50 AM

Quote:

Originally Posted by proud2beamerican (Post 491047)
btw. are there any chances for Linux JJ2+? At least somewhere in the future? Honestly I believe that most of the problems I'm facing / faced in the past are due to Wine. I really dislike Wine. This game is the only reason I have it on my computer, I don't use any other Windows stuff.

Maybe that's a lot to wish for, I have absolutely no clue how hard would it be to make JJ2 and JCS Linux-friendly.

Not JJ2+, but Soulweaver is working on an open source clone of Jazz Jackrabbit 2, called Project Carrot. I haven't tried it but it should run on Linux. The JCF thread is here.

I'm working on an open source clone of JCS called WebJCS, since it's made with web technology it runs on all platforms. See the links in my signature to version 1 (old and complete) and 2 (current, but in early stages).

Logface202 Mar 1, 2017 04:15 PM

I'm having trouble running jj2+, I'm running it through wine on ubuntu mate 16.04
whenever I try to start a level or join a server, the screen goes black and an error message appears
[IMG]https://s14.postimg.org/cd0dud9cx/Screenshot_at_2017_03_01_17_48_06.png[/IMG]
here is a link to my error report: http://pastebin.com/iKQUM21g

Seren Mar 1, 2017 08:56 PM

That error is likely from Wine not supporting part of Windows API used by JJ2+. Recent versions of Wine are believed to support all JJ2+ functionality. Please update and retry.

SAMI Mar 1, 2017 11:32 PM

Is there anyway to force Vsync on Window mode?

I want to replace 800x600 with 800x450 as well. 800x600 no good and makes jazz too small.

Edit: Its worth mentioning, I can easily zoom 800x600 and have 800x450 cropped. Bit the huds are missing unlike native 800x450.

Simon Mar 2, 2017 02:37 AM

Quote:

Originally Posted by Sir Ementaler (Post 491183)
That error is likely from Wine not supporting part of Windows API used by JJ2+. Recent versions of Wine are believed to support all JJ2+ functionality. Please update and retry.

Logface's crash report:

Code:

Unhandled exception: C++ exception(object = 0x0033f7f8, type = 0x102c5658) in 32-bit code (0x7b83936c).
=>0 0x7b83936c in kernel32 (+0x2936c) (0x0033f798)
  1 0x1017f0e0 in plus (+0x17f0df) (0x0033f7e8)

Installing more wine libs will probably help, I don't have this crash on up-to-date Arch. But are you sure about letting the exception through?

Logface and I assume that JJ2+'s online check for self-updates fails here, even though Logface wants to start a singleplayer game. If this assumption is right, please catch and continue, you don't have to let the app crash. Can that API call throw in native Windows?

-- Simon

Seren Mar 2, 2017 06:25 AM

Quote:

Originally Posted by Simon (Post 491185)
Logface and I assume that JJ2+'s online check for self-updates fails here, even though Logface wants to start a singleplayer game. If this assumption is right, please catch and continue, you don't have to let the app crash. Can that API call throw in native Windows?

We use a pure C library for the update check. If under any circumstances it can throw, I would find this fairly impressive in the first place, because it's C, and then I would say that's not something to discuss with us, but rather the creators of the library, because if a library to be used in C applications can throw, that's not a good sign.

No, what we blame for the exception, based on earlier symptoms and when they occurred (regular Wine users reported the crash only in the latest release, while the update check has already been around for 5 public versions of JJ2+), is a far more substantial part of JJ2+, and letting the exception through is reasonable in the sense that if that part of code fails, the most we could do right now is display a custom crash message instead. The API function that we believe older versions of Wine don't support shouldn't throw unless its callback throws, which shouldn't happen under normal circumstances and no Windows user experienced it so far, to our knowledge.

Simon Mar 2, 2017 07:08 AM

Okay, cool. Thanks for the extra info.

-- Simon

ScarXL Apr 15, 2017 01:48 AM

The latest version works perfectly for me. Do hope it gets updated soon though. :P

Slaz Apr 18, 2017 06:30 AM

I occasionally run the latest version of JJ2+ on my work MacBook through Wine (a recent OS X build) and haven't encountered any wrongful behavior compared to native Windows. Maybe Wine's even better, as both my gaming PC's are running Windows 10 with Nvidia drivers that still like to mess up DDraw to stutter, while I had Wine set to be like XP (which gives me a smoother, 60fps capped fullscreen somehow).

Anyhow, using a recent build of Wine seems to be a good idea, at least. :rolleyes:

Violet CLM Jun 1, 2017 11:04 PM

New release (5.5)!
Click here to download. (ModDB link coming this weekend.)

[IMG]http://www.jazz2online.com/jj2plus/img/newplus13small.png[/IMG]

The full list of changes can be found over here. The first thing you'll notice is that we have an actual installer now (thanks Stijn!), which should take care of the ongoing problem of asking people to edit parts of their plus.ini, jcs.ini, etc. files without overwriting the old files entirely. It'll also set up your jazz2:// protocol registration and give .j2l files some context menu options in windows explorer, if you let it.

Besides that, this update is primarily focused on fixes for online servers and improvements to associated network code. Going forward, this new installer exe format should make us more comfortable with smaller, more frequent releases if other important fixes are needed in the near future, while putting off more major stuff for a version beginning in 6 instead of 5.


(Our recurring problem with getting releases to work with Windows XP right away may still be in action. Stay tuned.)

Stijn Jun 2, 2017 12:15 AM

Yay!

Apparently the new version indeed does not work on Windows XP (though it's worth trying if it works for you anyway). If you are still using XP you are stupid and deserve to lose your files to ransomware. It hasn't been updated or supported by Microsoft for years and it's full of security holes.

That said, we'll try to compile a version that works for you, but it will probably take a bit of extra time.

ShakerNL Jun 2, 2017 08:35 AM

My game list stopped showing JJ2 version since I've updated to 5.5. :(

Stijn Jun 2, 2017 11:44 AM

Quote:

Originally Posted by ShakerNL (Post 491344)
My game list stopped showing JJ2 version since I've updated to 5.5. :(

This is intentionall as virtually all servers host on 1.24, and JJ2+ clients can join 1.23 and TSF servers alike, so server version doesn't really mean anything anymore.

szmol96 Jun 2, 2017 01:39 PM

Quote:

Originally Posted by Stijn (Post 491341)
Apparently the new version indeed does not work on Windows XP

Yeah, I can confirm that. Just runs as regular JJ2.

ShakerNL Jun 2, 2017 03:58 PM

Quote:

Originally Posted by Stijn (Post 491345)
We decided to keep this because virtually all servers host on 1.24, and JJ2+ clients can join 1.23 and TSF servers alike, so server version doesn't really mean anything anymore.

Is this why I can't see contents of 1.23 servers anymore through the SGIP?
[IMG]https://www.pukenukem.com/puke/images/screenshot.PNG[/IMG]

Violet CLM Jun 3, 2017 03:05 PM

XP support is back in.


Quote:

Originally Posted by ShakerNL (Post 491347)
Is this why I can't see contents of 1.23 servers anymore through the SGIP?

But that's not anything new? My 1.23 servers in 5.4 were also reduced to "Version different."

ShakerNL Jun 4, 2017 07:21 AM

Quote:

Originally Posted by Violet CLM (Post 491350)
But that's not anything new? My 1.23 servers in 5.4 were also reduced to "Version different."

This issue started to occur about a week or three ago. Before that, it was OK.
For example, I could always see who was in PJ's server and he is hosting on 1.23.

Stijn Jun 4, 2017 01:43 PM

If this is what I think it is it's an issue with SGIP, not JJ2+.

I sent an update that fixes it to DJazz a while ago but looks like he hasn't had time to deploy it yet.

ShakerNL Jun 5, 2017 01:43 PM

When you set /maxplayers to 1 while server is in "Idle Server" mode, the server will disappear from the list servers. I tested it on Camel Duels 1 and Puke Nuk3m Battle. I could still see the latter in the "Local Network TCP" list, but the players count was 0/0
[IMG]https://www.pukenukem.com/puke/images/zeroes.PNG[/IMG]
Also, sometimes it doesn't update the players count until I do /relist.

Stijn Jun 6, 2017 05:40 AM

As far as I can see this is not a bug in JJ2+, but an unfortunate side-effect of the list server not displaying servers with a max player limit of 0 in the server list (because no one will ever be able to join that server until the limit is increased).

I'm not sure this is something that needs fixing - can you give me a scenario in which someone would want to host an idle server that no one can join but should still be listed in server browsers?

(player count not updating is a separate issue I'll have a look at)

ShakerNL Jun 6, 2017 07:16 AM

Just pointed it out. It probably doesn't need to be fixed. But Camel admins might have to find a solution if players want to be annoying and set /maxplayers to 1 and leave.

Violet CLM Jun 6, 2017 09:50 AM

How is that a new problem? Surely a server that can only include 1 player is exactly as unjoinable as one that goes up to 0.

vBrute Jun 8, 2017 12:10 AM

I have written to the comments section of the News about this update, but noone sawit, so i write here too

Hello, what exactly did u change in transmitting gamedata, because my LGSL status stopped working, it is unable now to display player names in extended info
http://brut.me/lgsl/?s=8
and what exactly information else are sended, that could be added into the table in extended information past the version of the game?
I add the code here

Code:

function lgsl_query_42(&$server, &$lgsl_need, &$lgsl_fp)
{
if (!isset($server['e']['version'])) {
fwrite($lgsl_fp, "\x06\x0D\x05\x00"); // request JJ2 status via UDP
if (strlen($buffer = fread($lgsl_fp, 1024)) < 20) return FALSE;

$buffer = substr($buffer, 7);
if (ord(lgsl_cut_byte($buffer, 1))) $server['e']['spectator mode'] = 'enabled';
$ver = lgsl_cut_byte($buffer, 2);
$server['e']['version'] = '1.'.$ver;
$buffer = substr($buffer, 3);
$server['s']['players'] = ord(lgsl_cut_byte($buffer, 1));

$gamemode = array('Single Player','Coop','Battle','Race','Treasure','CTF');
$mode = ord(lgsl_cut_byte($buffer, 1));
$server['s']['game'] = $mode < 6 ? $gamemode[$mode] : 'unknown';
$server['s']['playersmax'] = ord(lgsl_cut_byte($buffer, 1));
$server['s']['name'] = str_replace('|', '', lgsl_cut_pascal($buffer, 1));

fwrite($lgsl_fp, "\x85\x0F\x03\x08\x15\xB4\x05\x00\x32\x34\x20\x20"); // second request via UDP
$buffer = fread($lgsl_fp, 1024);
if (ord(substr($buffer, -1)) >= 160) {
$server['s']['password'] = 1;
if ($lgsl_need['p']) { // needs password in the server's "Comment" field to return player info
global $comment;
if (!empty($comment)) fwrite($lgsl_fp, "r\x96\x0A\x07{$comment}"); // send password
}
}
$lgsl_need['switch'] = TRUE; // switch to tcp for the next query
}
else {
fwrite($lgsl_fp, "\x09\x0F\x01\x04".substr($server['e']['version'], -2)."\x20\x20\x01"); // request status via TCP
$buffer = fread($lgsl_fp, 1024);
if (strlen($buffer) < 10) { return TRUE; }
$slot = substr(lgsl_cut_byte($buffer, 4), 2, 1);
$server['s']['map'] = lgsl_cut_pascal($buffer, 1, -4);
if (!$lgsl_need['e'] && !$lgsl_need['p']) return TRUE;

fwrite($lgsl_fp, "\x08\x3F\x20\x03\x04\x00\x05\x00");
$buffer = fread($lgsl_fp, 1024);
$buffer = fread($lgsl_fp, 1024);
if ($offset = strpos($buffer, 'Z')) {
$buffer = substr($buffer, $offset+10);
$i = 0;
while ($buffer = substr($buffer, 5)) {
if (($part = ord(substr($buffer, 1, 1))) < 65 || $part > 122) {
$j = 0;
while ($lgsl_need['p'] && ($buffer = fread($lgsl_fp, 1024))) { // cleanup before requesting players
if ($j == 4) return TRUE; // failsafe
$j++;
}
break;
}
$server['e']['mutator'.$i] = lgsl_cut_pascal($buffer, 1);
$i++;
}
}
if (!$lgsl_need['p']) return TRUE;

$botname = "LGSL";
$char = array('Jazz', 'Spaz', 'Lori', 'Bird', 'Frog');
fwrite($lgsl_fp, chr(strlen($botname)+17)."\x0E\x01{$slot}\x02\x00\x40\x40\x40\x40\x11{$slot}\x0A\x0D\x00\x00{$botname}\x00");
$i = 0;
while (TRUE) {
if (strlen($buffer = fread($lgsl_fp, 8192)) < 18) break;
while ($buffer) {
if (($part = lgsl_cut_string($buffer, 0, "\x0A\x0D")) == $buffer) break 2;
if (($name = lgsl_cut_string($buffer, 2)) == $botname) continue;
else $server['p'][$i]['name'] = str_replace('|', '', $name);
$server['p'][$i]['char'] = $char[ord(substr($part, -8, 1))];
$server['p'][$i]['team'] = ord(substr($part, -7, 1)) ? 'red': 'blue';
$i++;
if ($i == $server['s']['players']) break 2;
}
}
}
return TRUE;
}

btw: here is how my chatlogger looks like now on windows xp server
http://brut.me/jj2/chatlogger.png

Stijn Jun 9, 2017 02:32 PM

vBrute: I should've made a note of this in the documentation, but you no longer need to "join" a server to acquire the player list. The packet you send in line 4 now has an extra byte that can be set to get player info from the server. Send an UDP packet with the following value

Code:

\x07\x14\x05\x00\x01
(that's \x05\x00\x01, plus the leading two checksum bytes). The server will reply with an extended version of the packet, with the following format:

Code:

char[2]  header
long  uptime in seconds
long  version
char  number of clients
char  number of players
char  game mode
char  max players
char  length of server name
char[]  server name
char  custom mode
char  flags (if the server is not running 5.5, this byte and all the following will be missing)
  & 1: server is private (if this is the case none of the following data will be sent)
  & 1 << 1: plus only
  & 1 << 2: idle server mode
char  max score
char  blue score
char  red score
char  green score
char  yellow score

then for each player:
  char[]  player name (null-terminated)
  char  player score
  char  player flags
    & 3: player team
    & 1 << 2: player is spectating

char[] level filename

That level filename at the end is kind of awkward, oh well. I can't really tell at a glance what exactly broke your script, but the old way of getting player info was always a hack and you should switch to the new method if possible.

vBrute Jun 11, 2017 04:00 PM

thank you for your answer, yes i think it should be in the documentation. As I am not a programmer, i depend on the good will of LGSL protocol creators to help me with this update. Hope it will not last long to rewritee the protocol, for now I reverted my server back to v5.4

ScarXL Jun 13, 2017 11:41 AM

Seems as if the new version works perfectly fine. :)

L853RCHU Jun 18, 2017 11:25 PM

Just a quick idea, what if the file downloader was fixed from 20kb/s to 1gb/s?

XxMoNsTeRXM Jun 19, 2017 10:29 PM

Quote:

Originally Posted by L853RCHU (Post 491370)
Just a quick idea, what if the file downloader was fixed from 20kb/s to 1gb/s?

That's a good idea, but I am not sure if the staff team can change it that easily, but if they can, they should do it.

Violet CLM Jun 20, 2017 10:57 AM

I don't think there is such a cap, though. Sir Ementaler tried joining a random server and got about 46 KB/s. I just tried downloading a file from my own server and got about 531 KB/s.

burnout92 Sep 11, 2017 08:33 AM

I have problem with this version. When i enable the "Beta Sprites" from Plus menu the crashes the game but i change the "Beta Sprites" within the plus.ini file to True the game is works fine.

vBrute Oct 2, 2017 12:44 AM

Problems with serverlist
 
My server is constantly disappearing from serverlist, I dunno exactly after what time or why is this happening, but i need it to restart and then it shows again

ShakerNL Oct 2, 2017 01:38 AM

Quote:

Originally Posted by vBrute (Post 491652)
My server is constantly disappearing from serverlist, I dunno exactly after what time or why is this happening, but i need it to restart and then it shows again

You need to use /list when that happens. No need to restart the whole server.

Stijn Oct 2, 2017 04:06 AM

Are you still using an older version of JJ2+?

vBrute Oct 3, 2017 12:16 AM

oki thanks I do it next time, I use the newest version on winxp

Darkhog Nov 15, 2017 01:30 PM

Would be possible to integrate JJ2+ with J20 so users could vote, explore and download levels Mario Maker style? Of course uploading would still need to be done manually, but this would make discovery and enjoyment of custom content easier.

cooba Nov 16, 2017 03:09 AM

What's J20

umisery Nov 16, 2017 05:56 PM

The site you're on, J(azz)2O(online).


All times are GMT -8. The time now is 07:53 AM.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
JCF © 2001-Infinity Jazz2Online