Jump to content

Didz

Members
  • Posts

    259
  • Joined

  • Last visited

Posts posted by Didz

  1. Hmm anyone knows exactly what action was taken with the JK2 masterserver? There's a big bunch of servers missing, including my own.

     

    Is it shown now? They changed the IP address for the master server, and game servers only refresh their master server IP address every 24 hours. So there would be a period of 24 hours where not all of the servers would be on the list unless they were manually restarted.

  2. Don't try to whitelist the master server IP address, it can change at any time.

     

    Are you sure your server is properly responding to getinfo and getstatus requests? If the server's name and player count appear in the favourites list, getinfo works. To test getstatus, click the button to view more info on the server, and if the information about all the players is shown, then that's good.

     

    Does your server work on the JKHub master server? Have one of your server's masters be "master.jkhub.org" then check for it on the list here: http://my.jacklul.com/jkhubservers/

  3. OpenJK doesn't ship with its own main menu or any changed UI stuff, it just loads the assets from your retail version of the game. So the reason why OpenJK "keeps" the old one, is simply cause it just loads whatever assets you give it, which in most cases is the retail JKA assets.

     

    The new launcher needs to support loading SP and MP, and JKA vs JK2. I've never even played JK2, but it's still disheartening when everyone thinks of OpenJK as only supporting Jedi Academy.

     

    The art style of the new launcher should be true to its JK roots (in my opinion), but the layout can be completely fresh. There really aren't many ways to improve on a window with a few buttons on it though.

     

    I think the idea of embedding a compiler or P2P file sharing into the launcher is really excessive. Just HTTP GET yo!

  4. A launcher sounds good, but as said before in the thread it shouldn't be cluttered with too many options. The main thing it'd need to cover would probably be cvars that can only be set before launching (like fs_game, and the fs_*paths). Profile support could also be awesome, but I usually just exec a cfg file while the game's running if I need to change stuff.

     

    Update checking sounds great, they should never get in your way though. (No dialogue boxes for errors checking updates, interface slowness, etc.)

     

    C# with Gtk# would be a good cross-platform solution to use as it's not too low-level. I'm guessing it'll be skinned to hell, so there won't be any gripes with things not looking "native" to the OS.

     

    There doesn't need to be any question about how releases can be managed and distributed :Dhttps://help.github.com/articles/creating-releases/
    No cost, no limits, and it ties in great with source control. Releases are also served over HTTPS. The launcher can use the GitHub Releases API to check if there's a new release.
     

    though I'm not exactly sure who hosts the OpenJK website...

     
    That would be me :P

    Xycaleth, Stoiss and Futuza like this
  5. Your router or ISP is blocking the game's UDP packets, either when they're going out to the internet, or when replies are coming back from the internet.

     

    You shouldn't normally need to forward any ports - because it's 2015 - but something's interfering with traffic between your PC and the internet. You could try allowing port UDP 29070 and port 29060 outbound and incoming on your router. If this doesn't work, you should contact your ISP.

  6. Yeah this would basically be easier done by scripting the transitions rather than using shader animations. You can toggle a light entity, while toggling the appearance/disappearance of the geometry that should show up based on the state of the light. I think the entity to use for the brushwork is func_wall, but it's been a while.

  7. Area portals only work when inside doors that open and close. Basically they let the engine know that whenever doors are closed, the other side of the area portal should not be rendered at all. And when the doors are open, the area portal gets toggled so that it will show everything behind the door.

     

    There was a nice tutorial I read many years ago that explained how to do area portals properly. I can't seem to find it now though.

  8. func_group don't count as in-game entities, they get dropped when the map is being loaded. (Identically to info_null)

     

    ref_tag don't count as in-game entities either, however they get their information extracted while loading. They are added to a list of tags, of which there are a limit of 16 "tag owners" and 256 tags per "tag owner". This results in a maximum of 256*16 tags, aka 4096. If you don't supply a tag owner, it'll pick the default world "tag owner". So if you want to use more than 256 tags, you must make use of different tag owners by setting the "ownername" field on the tag.

     

    EDIT: All waypoint_navgoals add up to the tag list too, and these use the world's default "tag owner". (This means a maximum of 256 waypoint navgoals, because they fill up one "tag owner")

     

    EDIT 2: This is all correct for MP, but it might be different in SP.

  9. As I alluded to in a status update, Raven's master server came back online briefly and it's now running on the Microsoft Azure cloud platform. Seeing as the IP address was only flipped over recently, I'm guessing they're actively experimenting with bringing the implementation over to today's standards of scalability and stability.

     

    It will be up soon, and I don't think it'll fall back down so easily in the future.

  10. You can set commands to be executed when the map ends by setting the nextmap cvar. (g_autoMapCycle should be 0 for this to work properly)

    server.cfg
    ----------
    map mp/ffa1
    set nextmap "set g_gametype 8;exec newbots.cfg;map mp/ctf3"
    

    So here your server.cfg will initially start the map off with mp/ffa1. Then when the map ends, the game will do "vstr nextmap" internally to execute the contents of the nextmap cvar. So basically here, the game will change gametype to CTF, execute newbots.cfg, and change the map to mp/ctf3."

     

    You can chain these as much as you like in something a bit more complex like this:

    FFA.cfg
    -------
    set g_gametype 0
    set timelimit 20
    set fraglimit 0
    set ffa1 "map mp/ffa1;set nextmap vstr ffa2"
    set ffa2 "map mp/ffa2;set nextmap vstr ffa3"
    set ffa3 "map mp/ffa3;set timelimit 30;set nextmap vstr ffa4"
    set ffa4 "map mp/ffa4;set timelimit 20;set nextmap vstr ffa5"
    set ffa5 "map mp/ffa5;set nextmap exec CTF"
    
    CTF.cfg
    -------
    set g_gametype 8
    set timelimit 30
    set fraglimit 0
    set ctf1 "map mp/ctf1;set nextmap vstr ctf2"
    set ctf2 "map mp/ctf2;set nextmap vstr ctf3"
    set ctf3 "map mp/ctf3;set nextmap vstr ctf4"
    set ctf4 "map mp/ctf4;set nextmap vstr ctf5"
    set ctf5 "map mp/ctf5;set nextmap exec FFA"
    
    server.cfg
    ----------
    set g_autoMapCycle 0
    exec FFA
    

    As you can see, you can customize timelimit/fraglimit/bots/whatever per map in this way.

    RancorSNP, Smoo and ent like this
  11. I think I'm closer to the error. In the call stack window, right under the entry that points to the strncpy.asm file, a green arrow points me to this line of code: 

     

    strncpy(files[*num_file].dir, page, strstr(page, ";")-page);

     

     

    Something on this line is pointing to invalid memory and you're trying to read from it.

     

    You basically need to figure out which of these is invalid:

    • files
    • num_file
    • *num_file
    • files[*num_file]
    • files[*num_file].dir
    • page
    • strstr(page, ";")-page
    I just noticed your error message in the first post mentions an access violation while writing not reading.

     

    Access violation writing location 0x0128f140.
    This part of the exception is the crucial bit.

     

    This narrows down the problem to the destination of your strncpy call being invalid. Your strncpy destination argument is files[*num_file].dir. The value of this variable (0x0128f140, from the error message) is bogus, and strncpy was unable to write to the destination this value was supposed to represent.

  12. The entire architecture of the game code was built for a single thread of execution. It would be a massive undertaking and a monumental waste of time (imo) trying to retrofit multi-threading/parallelism into the Q3 engine to try to squeeze out more performance for the increase in entities. You'd need to do detailed profiling comparisons on the code (with original entity limit, and with increased entity limit) before thinking of taking this on. If you can't pin-point the critical sections of bad performance, there's no hope of trying to parallelise it.

     

    Off-the-topic of more entities, but on-topic on performance: One very noticable source of bad performance in the game is synchronous file loading where the game pauses for several frames in order to load files in (like when players change their models). This could be fixed by loading in files asynchronously, and you don't even need to implement multi-threading to do this (the system will let you know when the file has been read). Many of these can be set off in parallel and you can carry on running the game while files are being loaded in the background if the file is not critical to the gameplay.

    gerbilOFdoom and Futuza like this
×
×
  • Create New...