-
Posts
1,907 -
Joined
-
Last visited
Content Type
News Articles
Tutorials
Forums
Downloads
Everything posted by Futuza
-
The scrimmages for this weekend have concluded! Thanks to everyone who joined, blasted me, and gave feedback/helped find bugs. We had a ton of fun and found only one serious crash issue. A small patch will be released before the follow up scrimmage in the upcoming week, to address the most important issues we found and then assuming we don't find any more critical issues, we will finalize the release and start working on the next patch.
-
Thanks to everyone for coming out to the first scrimmage match, next one is in a few hours!
-
Thanks for the news update Circa. May the 4th be with you! I will also put in a plug for JKG today, since we just released v1.3.24 and are play testing it today.
-
[Released] JKGalaxies 1.3.24 (Preview Version)
Futuza replied to Futuza's topic in Jedi Knight Galaxies
As a note, you can now get v1.3.24 from here on JKHub as well. Thanks JKHub staff! -
Want to know how to compile JKG for Windows or Linux? You're in the right place! (This tutorial is a copy of the one found here.) The source code for Jedi Knight Galaxies, can be downloaded from the git repository. Alternatively, you can fork our project if you would like to contribute back! Either way, you must adhere to the GNU GPLv2 license, under which the original Jedi Outcast/Jedi Academy source was licensed. This means any changes to the code must be publicly available. We also really appreciate it when you make mention of Jedi Knight Galaxies in your own projects readme/credits/etc. (Please keep in mind assets for JKG are not covered by this license and have their own separate rules.) We use Git for our software versioning control and you should use it to keep your local repo up to date, and submit new push/pull requests with your changes. Once you've installed Git, you can clone the repo to your local device using either the cmd git clone https://github.com/JKGDevs/JediKnightGalaxies.git or git clone git@github.com:JKGDevs/JediKnightGalaxies.git (if using SSH). Before beginning, we recommended first installing JKG on the device from jkgalaxies.net so you have all the assets and an understanding of how the project should look and behave. Generating project files We use CMake as our cross-platform makefile generator. This allows us to maintain a single set of project files, and have CMake generate the Visual Studio solution, Makefile, or Xcode project files for us. The following instructions explain how to use CMake and compile the JKG source code for Linux or Windows. We recommend using Microsoft Visual Studio (Community) on Windows to install/use the MSVC compiler. When installing Visual Studio you'll need to select the Desktop development with C++ workload section. Only the core editor, and MSVC v143 (or later version) - VS 2022 C++ component, and the Windows SDK are necessary to be selected to compile JKG. However some other components like C++ Build Insights, Just-In-Time debugger, C++ Profiling, C++ CMake tools, and IntelliCode might be useful for debugging/developing/and testing JKG (but are not necessary). Visual Studio Installer example: Get the dependencies. On Windows, aside from Git and CMake, dependencies are part of Visual Studio's runtime libraries, or they're included in the JKG source code (although external version of the libraries can be used.) Windows users will need to add CMake to the system PATH (the CMake installer should prompt you to do this automatically). On Ubuntu/Debian based versions of Linux run the following commands in terminal to acquire necessary dependencies: $ sudo apt update $ sudo apt install build-essential cmake cmake-curses-gui libjpeg-dev libpng-dev zlib1g-dev libsdl2-dev Otherwise, adapt your distro's package manager to install the following libraries: cmake, libjpeg, libpng, zlib1g, libsdl2, make, gcc, g++, libc, git Glibc (libc) requires v2.38 (or higher), please note that you can compile it with earlier versions but will likely encounter crashes on earlier versions of glibc. If you are on Windows, manually install CMake and Git or use a package manager. We require CMake v3.12.0 (or higher). On Windows make sure to restart the machine, after installing Visual Studio and CMake before proceeding. After doing so, simply click on CreateVisualStudio2022Projects.bat and it will run a script using CMake to generate a Visual Studio solution in the build directory (you can open it by clicking on Jedi Knight Galaxies.sln). On Linux, go to the directory where the JKG source code is located, and create a build folder (mkdir build). In the build folder, run cmake .. the project/make files will now be generated for you for your platform's primary build tool. If you wish to use a different generator to generate different project/makefiles (e.g., generating mingw32 makefiles on Windows), you can specify a generator using the -G flag: cmake .. -G <generator-name>. A list of generators can be found by typing cmake -h. A GUI console tool is available through the cmake-curses-gui package installed earlier that may be simpler to use than plain cmake, simply do ccmake .. to bring up the interface, there you can more easily toggle options such as the CMAKE_BUILD_TYPE (eg: debug vs release) to configure and generate the makefiles before running make. The generated project/makefile can be found in the build directory. Change directories to it. On Windows open the Jedi Knight Galaxies.sln VS Solution file, and then click on Build > Build Solution to compile and generate executable files. On Linux from the build directory run make -j x where x is the number of cores in your system (eg: make -j 12 will use 12 cores to compile). You can specify less cores if you want it to compile with less overall CPU usage, but it will generally scale with the more cores you have. Final setup. You've now successfully compiled the project, however there's a few more things to note about setting up the project. The JKGalaxies directory contains code-like content (such as lua scripts and json data tables) that should be packaged into a .pk3 and placed in the JKG directory (this is what zz_JKG_Assets5.pk3 contains). Additionally the content in JKGServer should be placed into the JKG directory. Finally, you'll want to move the executables to their appropriate locations. To make this all easier, look at the scripts available for reference in tools. The directory structure should look something like this: <JKGalaxies> jkgalaxies.x86.exe //primary JKG executable (client) jkgalaxiesded.x86.exe //primary JKG executable (server) OpenAL32.dll //open source dll API library for sound rd-galaxies_x86.dll //dll responsible for renderer code SDL2.dll //open source dll library for low level access to peripherals and GPU access. <JKG> cgamex86.dll //dll responsible for cg code (eg: scoreboard) gamex86.dll //contains most of the game's game logic (eg: combat) JKG_Bespin.pk3 //an example map file server.cfg //server configuration file uix86.dll //dll responsible for user interface elements (eg: shop) zz_JKG_Assets1.pk3 //contains model assets (humanoid, map objects etc) zz_JKG_Assets2.pk3 //contains model assets (weapon models) zz_JKG_Assets3.pk3 //contains sound (and some texture) assets zz_JKG_Assets4.pk3 //contains gfx (textures) and efx/shader assets zz_JKG_Assets5.pk3 //contains code-like data assets (constants, cfg, etc) zz_JKG_EXT_Assets0.pk3 //contains 3rd party assets, JKG has permission to use <server> accountlist.json //contains accounts created by the JKG login system ranks.json //contains rank permissions (used by accounts above) Linux/Mac OS X CMake notes Building on Linux or Mac OS X requires SDL2. If you wish to build on 32-bit Linux, you can force it, by adding the CMake flags -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_C_FLAGS=-m32 -DCMAKE_SHARED_LINKER_FLAGS=-m32 -DCMAKE_SIZEOF_VOID_P=4 If you wish to build on Mac OS X, you should force it to build 32-bit, by adding to the CMake commands -DCMAKE_OSX_ARCHITECTURES=i386 Compiling Compiling the source code depends on the project/makefile generated. Instructions for the main build tool on each supported platform are supplied below. Windows Open the Jedi Knight Galaxies.sln file in the build folder. Select the build configuration to use (Debug/Release/RelWithDebInfo/MinSizeRel). Build the solution. Built files can be found in build/<project name>/<build configuration>/. Linux/Mac OS X Run make from the build folder. (Alternatively include the -j with a number of cores to use multiple cores in the build process). Executables are found in the build directory. Multiarch builds If you are attempting to build 32-bit binaries under 64-bit Linux, chances are you will be able to make use of multiarch support in most modern Linux distros. If you are having problems, then we suggest creating a 32-bit chroot and building inside of the chroot. Launching the game. At the moment JKG requires several startup arguments to function properly. A typical launch will look something like this: Windows: jkgalaxies.x86.exe +set fs_game "JKG" +set fs_cdpath "." +set fs_basepath "C:\Program Files (x86)\Steam\steamapp\Jedi Academy\base\GameData" or Linux: #!/bin/sh ./jkgalaxies.x86_64 +set fs_game "JKG" +set fs_cdpath "." +set fs_basepath "/home/username/.local/share/Steam/steamapps/common/Jedi Academy/GameData" fs_game specifies the mod being run, fs_cdpath specifies where to find JKG's assets, fs_basepath specifies where to find JKA's assets. We recommend setting up a script to make launching the game easier after each compile for testing purposes. You might check the /tools/ directory for examples.
-
Hello there! The beta for v1.3.24 was just released and we need your help testing it. We have three planned test scrimmage matches this coming weekend (times are UTC/GMT+0) and two the following weekend. Scrimmage Event Times May 4th Release Weekend 2025-05-03 13:30:00 2025-05-04 02:00:00 2025-05-05 03:30:00 -- Follow up Scrimmage Weekend 2025-05-09 22:00:00 2025-05-10 14:00:00 May the 4th be with you!
-
As of patch v1.3.24 - durability has been partially implemented for armor/clothing. (Technically all items have a durability value, but only armor is affected by durability atm). It can be enabled/disabled by the cvar: jkg_durability . The way it behaves is as follows: 6 item tiers now exist as outlined in the concept: scrap, common, refined, elite, superior, legendary If durability is between 10 - 25% of the item's max durability, the armor is 25% less effective at reducing dmg. If durability is 1-10% of the item's max durability, the armor is 50% less effective at reducing dmg. If the durability is at 0%, armor no longer reduces dmg while equipped. If an item takes at least 1 dmg it has the following chance of taking durability damage: scrap has a 50% chance common has a 40% chance refined has as 30% chance elite has a 20% chance superior has a 10% chance legendary cannot take durability dmg However, if the dmg taken exceeds the armor's value (eg: 150 dmg > 120 armor) the chance to take durability is increased by 50%. If the dmg taken is 2*armor, then the chance is increased to 100% and the equipment takes 2 durability dmg. So for example, let's say you are wearing elite armor with 150 points of armor, that has 9/50 durability and you take 38 dmg. 1. armor effectiveness is decreased (due to being at 18% durability) by 25% 2. because 38 < 150, there is a 20% chance durability will be decreased by taking this dmg 3. die roll is lucky, durability remains 38. Durability can also be repaired in the shop: Refined Tier example:
-
May the 4th be with you! Jedi Knight Galaxies v1.3.24 is ready for public testing. You can try out the new release by going to the download page here and downloading the beta release (found in the beta table). Or get it from JKHub here. You can find a list of full patch notes here. We also plan to hold a few scrimmage matches over the weekend of May the 4th to test the new patch. Here are some of the patch highlights! New/Improved Systems: Armor Penetration - Weapons (and ammo overrides) can now penetrate or ignore a % of armor on a target, allowing the weapon to more easily damage armored opponents. Penetration can be added via weapon, ammo overrides, or through means of damage. By default only crossbows do armor penetration as of this patch. Please note this is similar, but different from ignoring armor (which is what pulse weaponry does). Armor Resistance - Armor can now be resistant to specific means of damage such as fire or poison. (They can also be made vulnerable to specific damage types.) This is in addition to their normal reduction of damage. For example: an armor can be resistant against fire damage, taking 25% less damage from fire damage sources. Basic Durability System - When taking damage to a location protected by armor, the item's durability has a chance of being damaged (item tier quality determines that chance). At 0 durability, the armor is no longer able to protect you. At 10-25% durability armor's effectiveness decreases by 25%, at 10% or less armor effectiveness decreases by 50%. You will need to repair it to a durability level above 0 for it to be able to offer you protection. You can repair it in the shop, similar to how refilling ammo works. The chances of an item's durability being decreased by taking damage is determined by that item's tier. Higher tiers are less likely to lose durability and Legendary Tier items are immune to durability loss. This feature is enabled by default for now, but can be disabled by server owners by setting the cvar jkg_durability to 0. Crowd Control Assists - Players who assist with kills by using some kind of crowd control method such as a emp, slow, stun, or knockback will be awarded additional credits for their help. Custom Slice Improvements - The slicing custom feature has been expanded on and several bugs with the original have been fixed. It is now possible to specify grid width's and heights separately from each other (for example you can have a 3x7 grid now). To try out the changes, as an example, you can run the following slctest command: slctest custom 7 5 3 90 2 3 4 3 2 0 0 12 Improved Toxin/Poison Filters - There are now two types: toxin filters, and toxin removal. If you are inflicted by a poison debuff, the toxin removal option will actively remove the debuff, while the toxin filter option is only preventable measure and will only prevent further application of the debuff. See this video for a demonstration: https://www.youtube.com/watch?v=y6ifUOhLIWQ Basic Quest System - While this system is largely disabled during Phase I, improvements to the quest system have been added to allow devs and players to get feedback on the status of quests they have started. Command is: `/ply.Quests` Improved UI Change - A few improvements have been made to inventory, shop menus, and other UI systems including: - Better item description text displays (it now breaks up text on spaces instead of dashes as before) - W/S keys allow you to scroll through inventory menus (you can still use mousescroll as well). - Icons on the HUD's top left corner for resources such as hp, shield, or stamina now light up with green when the resource is full. - Several improvements to inventory and shop menus so that more information about weapons and other items can be viewed. Most firemodes will now display most stat information correctly. However, there are more changes to come and this is still somewhat incomplete for some items. Shield Updates - Shield code has been rewritten. Shields now have their own files (.shield) for greater customization. Shields can now override blocked/allowed damage types. If a shield varies from the standard behavior, it will be listed as a modified shield type along with information about which damage types have been overridden. For example, the shield_prax_medium shield blocks vibroblades, slugthrowers, and bleeding, while no longer protecting form disruptors dmg or pulse dmg. Shields will also now protect players from knockback. (If damage penetrates through a shield's charge, knockback will be reduced by 25%). Shields can also now trigger a lua script to run when overloaded as well (try shield_blastech_ind for a taste). More changes to come including bubble shields, shield activation effects, and greater efx customization in future patches. New Outfits for Male and Female Humans - Noodle has graced us with some additional human options in the species section. Note: these will typically not be available on Gangwar themed maps that force specific team skins. In addition, we have also switched over to a new skeleton, which will make some really cool things possible in future patches... SDL2 updated to v2.30.8 - This is a necessary update to allow the game to continue running natively on modern systems. You likely won't notice any significant changes, although some rendering and audio might be slightly improved. New Items: Array_Ion (Jawa Gun) - There is now an EE-3 Pistol for when you want to take your favorite blaster rifle on the go. Courtesy of Jonthe and Silverfang. EE-3 Blaster Pistol - This has been finally been added after it was teased by Pande back in 2015. You can now fire the 3rd blaster seen in Star Wars at unsuspecting stolen astromech droids and then sell them to unsuspecting farmhands. Diplomat Outfit - Noodle made this model based on concept art by Tony Warne, aka "Jedi-Art-Trick". Sunguard Armor Set - Jonthe & Noodle Jensaarai Armor Set - Jonthe & Noodle Pyromaniac Helmet - Jonthe & Noodle Imperial Shoretrooper Set - Scerendo Shadows of the Empire Imperial Guard set - Phazzer, ZanderNao, and Noodle Map Changes: There are no map changes this patch. Bug Fixes, Quality of Life Improvements, and Balance Changes: Some adjustments to weapon balances including accuracy, damage, cooling, and cost have been adjusted. Flechette Pistol now deals ACP damage instead of bypassing shields completely. Shotguns can now overheat, bringing them a little bit in-line for balance. Bryar Shotgun has been buffed and now feels more worth the cost. Westar-34 Heat has been increased so you can't just fire it with reckless abandon anymore. Westar-34 no longer has missing strings. Crossbows (MOD_QUARREL) now do 25% armor penetration by default. Firing shots while jetpacking is now 20% more inaccurate, and more likely to be affected by knockdown when firing weapons with knockback. Fixed a bug where explosions did extra damage (lol) to armored targets. Balance changes to the following means of damage: Blaster's do slightly less damage to organic targets, and slightly more damage to shields. Electric does slightly more damage to organic targets. Explosions do standard damage to shielded targets, damage to droids is reduced from explosions and slightly more hurtful toward organics. Carbonite damage now does 1/2 damage to organics, and is reduced by 70% to droids. EMP damage does slightly more to armored targets. frozen, fire and ignited means of damage now do standard (1.0) damage to shields. Fire was previously very underwhelming against shielded opponents. Carbonite damage (and debuffs) are now blocked by shield, this slightly nerfs the carbonite gun. Pulse damage is weaker against shields and organics Ion does slightly more damage to organics. Sonic damage is now weak against armored opponenets. EMP damage now drains jetpack fuel (in addition to health). Droids can now be healed by MOD_REPAIR means of damage. Unfortunately there are no real droids to use this on yet. Fall damage is more deadly (falls are now 2x as deadly). Other Fixes Added prisoner npc (for more vendors). Imperial Mining Helmets now filter toxins properly. Destroying allied trip mines no longer give a credit reward for 'destroying enemy equipment'. Giveother cmd now gives better feedback so admins can tell that it worked. Grenades no longer lock your weapon and prevent you from being unable to switch weapons. Bonus credits for when your team gets a kill is no longer getting doubled for both teams (just the losing team). Team Kill Bonuses fixed, no longer randomly awarding them. If you switch jetpacks from higher maxfuel capacity jetpack, it now resets the fuel capacity to the freshly equipped jetpack's capacity instead of carrying the old fuel value. Jetpacks now have a required cooldown to turn them on. (Most require ~200ms). Jetpacks now have an initial 10% fuel capacity cost when activating (minimum of 1, maximum of 5 fuel). Admin teleport functionality improved, admins can now teleport themselves to specified players as well. Fixed overheating efx so it only shows the efx on your own barrel instead of mistakenly duplicating it on all players barrels. Improved notifications for busymode for pazaak. Fixed linux builds (this fix probably took the longest to figure out - special thanks to Daggo for assistance on this one). Several crashes on both server and client have been fixed. Detonator consumables now have a check in place so you can't place your last one/remove your detonator remote. This is a temporary fix while we investigate a more elegant solution. Slicing programs that require input now re-enable btn_stopslicing after input is received. Fixed bug with armor resistances not parsing correctly. setItemDura cmd added for debugging/testing durability (requires cheats). Fix for cinbuild if client is not logged in. Improved debuginventory command. HeatGenerated and armorPenetration have both been added to the ammo override system. Fixed a bug where some torso hits to armor were counting as leg locations. Workaround fix so that after a match ends, players are forced onto spectator team to prevent armor visual persistence bug from affecting players (this also has the side effect of mixing up teams after each match). Inventories are now capped to 256 items (this will likely change in the future). Improved splash damage for weapons so that they can also apply debuffs in an area, as well as allowing the old method that used G_RadiusDamage() instead of JKG_DoSplashDamage() Fixed executable property details (Windows) to display the correct application version information, copyright and app info. Rusty stormtrooper helmet now has its own model/texture. Fixed memory leaks from chatcmds. Footstep sounds now play correctly while sprinting. Expanded and improved various lua API options. Fixes for various exploits. And much more! JKG Contributors and Credits Binaries and assets will need to be updated this patch (no map changes). Follow the instructions on the download page to patch/install. As a note, we hope to soon release v1.3.25 ( additional inventory/shop and shield features and qol improvements), but we've also started working on the next major version v1.4 (featuring lightsabers), which is where we'd like to put our focus on next. Those interested may want to view our project roadmap located here. We want to again express our appreciation for everyone that helps contribute to and support our favorite modding project. May the force be with you!
-
Development screenshots: cool things that are being worked on
Futuza replied to eezstreet's topic in Jedi Knight Galaxies
A very silly jetpack bug (and a hint of a new ui feature change in the nearly finished update): This is what happens when you try to make Boba Fett a jetpack instead of his jetpack a jetpack. Something Noodle made that I thought was very pretty: -
- 3 comments
-
- star wars related
- botroute support
-
(and 1 more)
Tagged with:
-
Development screenshots: cool things that are being worked on
Futuza replied to eezstreet's topic in Jedi Knight Galaxies
Been a while since I've posted in this thread. Been working on lots of things, but here's something simple but neat. Fixed the antitoxin filters and added a new type that actively removes toxins rather than just preventing new applications of poison debuffs. -
So many great things everyone. Congrats SomaZ, it's a beautiful remake and I love the work you've put into rend2.
-
Anyway you'd consider including the source stuff for this for other modders that want to try and see an example for how to do things with rend2? I'd like to add rend2 to JKG at some point, but I'm not much of a mapper and not really too sure where I'd have to start with that aspect of it - plus I gotta merge rend2 with JKG's source too. I'm not really ready to do it quite yet as I'm busy with some other things for the mod that take priority, but I imagine there's other projects like ours that would like more instruction for how to use/implement rend2.
-
-
Hello everyone, to celebrate JKA turning 20, and JKG turning 10, we'll be hosting a few scrimmage matches over the weekend. You can check our homepage Discord announcement feed for updates for this announcement. Matches will be held at the following times: Scrimmage #1 - Saturday, September 16, 2023 1:30:00 PM UTC Scrimmage #2 - Sunday, September 17, 2023 2:30:00 AM UTC Scrimmage #3 - Sunday, September 17, 2023 3:30:00 PM UTC Scrimmage #4 - Sunday, September 17, 2023 11:00:00 PM UTC You can get the latest version of the mod (v1.3.23) at the download page here or here on JKHub. You'll want to get both the assets, binaries, and map packs. We will be playing on the "JKGDev Server US" server. We hope to see you in game. May the force be with you! EDIT: Thanks everyone for joining us for a very fun weekend to celebrate JKA's 20th birthday, and JKG's release anniversary as well. It was a blast! We hope to have a new patch out soon, with a small number of bug fixes and a much bigger patch in a few months time with some larger features. I will also probably try and get some of the video footage recorded of the map put into a compilation video sometime. Feel free to send me footage/demos.
-
This is now the latest stable release! Thanks for everyone's help in helping test it. The mirrors here on JKHub should be updated shortly. Hopefully we'll have a new beta out soon as well.
-
Arghhh so many good ones, so hard to choose.
-
@JaredKFanThis part: C:\Users\jared\OneDrive\Documents\My Games\OpenJK\base Can be modified by adding +set fs_homepath as a command line argument (via either batch, in a cmd window, or with a launcher like Steam) when you launch OpenJK. eg, this would put the user directory on your desktop instead of OneDrive (which is probably a terrible idea to use for writing homepath data to): openjk.x86.exe +set fs_homepath "C:\Users\jared\Desktop\OpenJK"
-
Was wondering if anyone was interested in adding new tutorials to this guide? Especially for the missing ones (such as the whole Level Distribution section). I could maybe write something, but I'm not much of a mapper so you'd all probably get a bunch of MS Paint pictures to explain the concept. (Will the real mappers please stand up, please stand up?)
-
Noticed this was slightly outdated. Here's a slightly better batch script: @echo off echo. echo ================================== echo == q3map2 ent compiler == echo ================================== ::Path to q3map2.exe directory SET q3map2dir=..\GtkRadiant-1.6.6 IF NOT EXIST %q3map2dir%\q3map2.exe ( echo Could not find q3map2.exe - failed! GoTo FAILED ) echo. echo Type in the name of your maps ent file echo (without an extension) then press enter echo. SET /P map=ent file name: cls echo. echo ================================== echo == q3map2 ent compiler == echo ================================== echo. echo compiling map: %map%.bsp echo with ent file: %map%.ent echo ------------------------------------------------- echo. IF NOT EXIST .\output\ mkdir .\output\ SET COPYCMD=/Y && COPY /Y %map%.bsp .\output\%map%.bsp SET COPYCMD=/Y && COPY /Y %map%.ent .\output\%map%.ent %q3map2dir%\q3map2.exe -v -game ja -fs_game base -onlyents .\output\%map%.ent echo. echo ------------------------------------------------- echo Please review the above text for errors to ensure echo your entities have compiled correctly. echo. pause cls echo. echo Cleaning up... IF EXIST .\output\%map%.ent DEL /F .\output\%map%.ent echo. echo Complete! New %map%.bsp available in output dir. echo. start "Output" .\output :FAILED You can point it to your q3map2 directory by changing this line SET q3map2dir=..\GtkRadiant-1.6.6 To wherever you have q3map2 installed. Also here's the recreated first screenshot (using VSCode instead of Notepad++).
-
Is there a way to generate recovery codes for 2FA? Or if your phone gets blasted by a stormtrooper are just locked out forever?
-
-
-
Yeah, something like that also works very well, especially if the current is visible to the player so they don't just think they're being pushed away for no reason. The important thing, regardless of how exactly you define the map edge, is presenting the player with the illusion that there's something real preventing them from proceeding beyond. Nobody likes an invisible wall, its very jarring and brings one out of the immersion. My what? Which movies are you referring too? o.O
-
A great way to help participate with the Jedi Knight Galaxies (JKG) community and have fun with your friends is by hosting a server. JKG can be hosted on a Linux or Window's server. We recommend Linux, as it is probably the cheapest and easiest to maintain option. This tutorial will assume you are hosting the device in question on a regular ipv4 DHCP or static address. As a general reminder when it comes to server security, be sure to make passwords (such as rcon or admin account passwords) at least 16 characters in length and randomly generated and unique to each account/username. The default passwords configured by JKG's initial configuration are intended to be temporary examples, and SHOULD NOT be used on real servers. Be sure to keep the operating system on your server up to date and patched. JKG works great as either a LAN server or an internet facing public server, a ping no greater than 200 is recommended, but the game can still be played with higher latency. There are a variety of locations available online that can help provide resources to host a server on (such as Asutech), or you can host it from the comfort of your own home. JKG make use of UDP packets to send/receive information. Server Naming It is recommended you include the server's general location in it's name (eg: NA, EU, AUS, JAP, etc), as player's are often organized by regions and interested in playing with player's with similar pings. You can find a list of current internet servers here. While you are free to include the server's gameversion in the server's name, as of v1.3.23 (and later versions) this information is now contained within the serverinfo broadcast information and displays in the client's UI. Phase and Version Information JKG generally has two public versions available (though this is not always the case): the primary/stable version and the test/beta version. It is recommended that those wishing to host the latest version (test/beta), be prepared for some instability and more frequent updates. JKG's versioning system includes an optional letter at the end of the version string (eg: v.1.3.22a), this is used for emergency server-side only fixes. Client's with the same version number, but with a different or no letter can still join servers hosting a newer version without the letter. If a client tries to join a server with a different version string (eg: v1.3.22c tries to join v1.3.23), they will receive a message indicating they need to update their client. Please note that as JKG's development continues to work towards the phase system release, we eventually plan on providing a way for server hosts to enlist to become 'Official' servers. Official server's hosted by 3rd parties, need to follow a much more stringent configuration and rules, but we also plan on allowing unofficial server hosts to continue hosting their own customized variants of the game that do not adhere to these rules. This information is subject to change, but we hope this will continue to be possible during later phase releases. Setup First install JKG. You can download the game and find instructions for installing on the website. The game is about 600MB in size in addition to Jedi Academy. JKG's server supports some multithreading (mainly for scripting lua, usually no more than 4 is useful), but is primarily a single threaded application so will generally scale better with faster clockspeed and storage read/write speeds than additional processors. Running the server does not require a gpu, (except for displaying console text to the screen of the hosting machine). Lua Admin Accounts Once you have installed the game, you're going to want to setup an admin account for the ingame lua system. You can find a list of these accounts within /JKG/server/accountlist.json. A list of the permissions these accounts have can be found in the same directory /JKG/server/ranks.json. Server.cfg Next we'll want to setup the server's configuration file. This can be found in /JKG/server.cfg. There are a number of settings we'll likely want to change in this file to suit your needs. We'll go over the most important, but you can specify any of the game's cvar's you want your server to use from this file. server.cfg will look like this: ///////////////////////////////////////////// // // Jedi Knight Galaxies - Server config // ///////////////////////////////////////////// // --==-- Rcon --==-- set rconPassword "" Here's the first most important setting, the rconPassword. If you want to enable rcon on your server, just put your password inbetween the quotes. You can use the rcon command to remotely issue commands to your server after setting this up. For example if my rconPassword was passwordExample, if I wanted to change the server's current map from a client, I could connect to the server and then open the console and type in the following: rconpassword passwordExample rcon map jkg_ctf_bespin And the server would change the map to Bespin. Keep your rconPassword secure and do not share it. If you do not want to enable rcon, then you can just leave the rconPassword set to nothing ( "" ). Let's move onto the next setting section. // --==-- General information --==-- set sv_hostname "Put Your Server Name Here" set g_motd "Put your Message Of The Day Here." //currently unavailable in jkg set sv_pure "0" //whether clients connecting are required to have identical assets to the server or not set sv_fps "40" set sv_maxRate 11000 set sv_timeout 800 set sv_allowDownload "0" // Do not set to 1 set sv_floodProtect "0" // We don't need this primitive flood protection sv_hostname let's us set the name of your server to what you'd like. The default name is 'Put your Server Name Here'. Some other important settings are also covered here. g_motd sets the server's message of the day, which is displayed to clients upon joining. Note this feature is currently disabled in JKG. sv_pure determines if clients are not allowed to use mods such as skins while playing, if set to 1, they must have identical assets to the server to join. sv_fps sets the frame rate of the server (not client), the default is 40 and we don't recommend using other variables. sv_maxRate is the maximum rate of data allowed to be sent in frames, higher is generally better (eg: 40000), but can cause lag and other issues on clients that have a poor connection, but generally makes for a smoother gameplay experience for clients that can handle it. If you want to accommodate player's with poor quality connections, low bandwidth and high ping, we recommend a lower setting (eg: 10000). LAN server's should probably use the highest setting possible. sv_timeout is how high a ping a client is allowed to have before they are timed out. JKG should not use sv_allowDownload or sv_floodProtect so these are disabled by default. set jkg_name "JKG Server" // Server name to use when registering set jkg_dialcode "jkgofi#" // Stargate address to this server (6 alphanumeric characters followed by a #, each character can only be present once) set jkg_serverid "NewJKGServer" // Unique identifier for this server, 16 characters max, alphanumeric set jkg_url "" // If applicable, the URL to use to connect to your server (port excluded), if left empty, your external IP will be used These settings do not really affect Phase I servers, but will eventually be used in later phases. jkg_name is a distinct name sent to the master server, but not displayed to clients. The other settings here are not currently used, except jkg_url which can be used to associate the server's ip address with a domain name. // --==-- Anti-Q3Fill/Non-JKG client settings --==-- set jkg_antifakeplayer 1 // Enable fake player protection // --==-- Server Settings --==-- set fraglimit "50" set timelimit "45" set bot_minplayers "0" //how many minimum number of bots should spawn when there are available slots on teams set duel_fraglimit "10" //For Duel, the number of rounds to win the map\game set capturelimit "10" // number of flag captures to win and end a CTF game before time runs out jkg_antifakeplayer is a security setting to prevent some exploits which should be enabled. The other settings here change the server's game variables. For example fraglimit changes how many kills are required before a match ends. // --==-- JKG Faction Battle Settings --==-- set jkg_startingCredits "500" //how many credits each player starts with upon joining a team set jkg_creditsPerKill "150" // how many credits are paid out for a kill set jkg_shop_replenish_time "300" //how often the vendors refresh their wares (in seconds) set jkg_bounty "225" //how much is paid out for a bounty (gets multiplied for successive bounties) set jkg_allowDodge "1" //whether or not player's can use roll to 'dodge' damage Here we have more settings specific to JKG. There are many settings that can be changed here and not listed in the server.cfg most of these can be found in g_xcvar.h of the code, but the defaults are recommended. For example, jkg_underdogBonus if set to 1 will give bonus credits to player's who join the match late and adjust it based on which team is losing. The other settings listed in the .cfg are the most commonly used that server owner's might want to adjust. We recommend looking through the rest and changing it to suit your preferences. The default .cfg contains a customized map cycle for your use, but feel free to make your own or add additional maps your server will be using. When you're done save the server.cfg. Congrats you're almost ready to host your server. Hosting a LAN Server We recommend trying this first before hosting a public internet server to give you a feel for things. A LAN server is one that works only within the local area network, also sometimes referred to as the local intranet. Only the devices connected to the network the server is on will be able to see and interact with the server. To start up your dedicated server open up a terminal/cli and navigate to the directory JKG is installed at. Inside of the jkgalaxies directory where JKG is installed, you should usually have the following files: Linux | |---- jkgalaxies | | | --- JKG (sub directory) | | | | | |--- JKGalaxies-Changelog.txt | | |--- jkgalaxies.x86_64 | | |--- jkgalaxiesded.x86_64 | | |--- rd-galaxies_x86_64.so | | |--- runJKGalaxies.sh | | |--- runServer.sh Use a text editor (such as vim) to edit runServer.sh it should look like the following: #!/bin/sh #this is for a local LAN server ./jkgalaxiesded.x86_64 +set fs_game "JKG" +set fs_cdpath "." +set fs_basepath ".." +set dedicated 1 +exec server.cfg #this is for a dedicated server (don't forget to setup port forwarding) #./jkgalaxiesded.x86_64 +set fs_game "JKG" +set fs_cdpath "." +set fs_basepath ".." +set dedicated 2 +set net_port 29070 +exec server.cfg As you can see the two are quite similar, we want to use the first one to host a LAN server, comments are denoted with a line starting with a # so you can add or remove a comment to switch between an internet server or a LAN server. Hosting an Internet Server As you can see from the above LAN example, we can use the same .sh or .bat script file to launch an internet server instead of a LAN one (just use the 2nd line instead). There is however one other thing we need to do. You'll need to set your home network's router to allow port forwarding (sometimes also called port mapping or port triggering). This essentially tells your router to forward incoming and outgoing traffic on the JKG port (by default that's port 29070 or whatever you specified in your runServer script), through your firewall to the relevant machine on the local network. There is no standardized interface for routers so they all vary a little bit, but you can usually look up instructions for your router on this site. JKG uses UDP traffic (not TCP - some routers will ask you to specify which type). Once you've saved the settings it usually takes about one minute to begin actually forwarding the relevant traffic. Make sure you've also configured the server's OS to allow the traffic for that executable through the firewall. Be aware some ISPs also prevent you from doing this, and you may need to also check with them to make sure they allow port forwarding. If your router asks if it should forward both internal and external traffic for the port, allow both. Once you've setup your port forwarding on your router, save the changes and logout of your router. Go ahead and launch your server's runServer.sh or runServer.bat script and it will start your server. After a minute or so your servers should send heartbeat packets to the master server(s). You can test that your server is online, by checking the Online Server List. If it shows up there, it's working. You could also test it by having a friend on a different network connection try to join your server. Recommendations Scripts Because software sometimes crashes due to undiscovered bugs, its probably a good idea to setup a restart script for your runServer script (or make the script a service). This way if the jkgalaxiesded.x86 executable crashes, you can have the server reboot on its own. Linux For example, on Linux with a bash script you could do the following: #!/bin/bash until ./runServer.sh; do echo "Server crashed with exit code $?. Restarting..." >&2 sleep 1 done This script will restart everytime the server crashes, but not restart if the server is shutdown normally (the executable returns a 0). If you want to have it restart everytime even if the server receives a shutdown command, you could change it to this instead: #!/bin/bash while true; do ./runServer.sh echo "Server stopped (exit code: $?). Restarting..." >&2 sleep 1 done Windows The windows equivalent would be something like this: ::restart server @echo off :loop ./runServer.bat TIMEOUT /T 1 GOTO:loop However, we would recommend you use a service on Windows as this will provide a lot more flexibility. RCON Suggestions You can find other helpful combinations and suggestions for using rcon commands at this tutorial (applies to Jedi Academy, but is mostly the same). If you need help generating a random RCON password, you can use Didz's generator here. Common Errors "When people try to join, they get 'Awaiting Connection...` with the number of seconds they've been waiting"? Usually this means the server cannot be reached by the client if more than a few seconds go by. The server most likely has configured something incorrectly, such as their port forwarding. "When people join their weapon keeps automatically swapping and can't fire." This usually happens if the client's asset5.pk3 contents mismatches with the server's. Usually the client needs to update to the correct asset5.pk3 or the server could also be hosting out of date files. "The game tells me to update my clientside when I try to join a server." This message means that the version of the game you are playing on is not the same as the server's you are attempting to connect to. This can mean that the server you're trying to join is using an older version, or it can mean yours is out of date. Most commonly this happens because the server is hosting a new beta and you are using the most recent stable release rather than the beta. Keep in mind that the download page for JKG has two different versions on it a stable release, and a beta/test release. These are generally not compatible. You can check to see which version you are currently using by opening the console (~), and typing in `gameversion` to get the version string of your client, or `version` to get a very specific git build commit (usually this is not necessary unless you compiled the game yourself). For example: