We are happy to announce the launch of [b]KovaaK 2.0 - The Meta[/b]! This year of development has been heavily focused on a new guided training mode of the game, which involved creating new [b]Trainer[/b] systems and integrating them the [b]Sandbox[/b] functionality into it. There are a handful of known issues that we are working on resolving in the short term, but workaround are available on this [url=https://docs.google.com/document/d/1YZipgwTyCJNVTpZjqOi6mULwLZmU8HRMFB-xX4rVDm8/edit]Google Doc[/url] - please bear with us! [u]Trainer[/u] The [b]Trainer[/b] is what you will see on the front page of the game when you first run it, and the general idea is that we want to provide game-specific guided training with dynamic difficulty adjustments to adapt to players combined with a progression of levels that go through different skills. Right now we support a subset of weapons from [b]Fortnite[/b] and [b]Overwatch[/b], and we have one training tree ([b]Flicking[/b]) with plans to add two more ([b]Tracking[/b] and [b]Scoping[/b]) in coming weeks/months. The skill trees have been designed so that we can continue to add games and weapons without too much of a headache. [u]Sandbox[/u] The [b]Sandbox[/b] is what people have come to know as [b]KovaaK’s FPS Aim Trainer[/b]—the collection of user-made scenarios on the Workshop that are made up of collections of profiles. At this point the [b]Sandbox[/b] is largely the same as the product that exists on Steam plus a few QOL improvements and a variety of profile additions to expand upon capabilities. We have plans to completely overhaul the UI/UX of the [b]Sandbox[/b], add [i]Playlists[/i] of scenarios—and plenty more. [i]QOL[/i] We’ve made some initial QoL improvements: [list][*]Scenario Caching: After the list of scenarios is downloaded from Steam, the client will now keep a cache of that for 24 hours (by default). The duration can be changed under [i]Game Options -> Main[/i]. Clicking the refresh button on the [i]Scenario Browser[/i] will manually force a cache refresh. [*][i]Pause[/i] menus are cached between pausing, which results in much quicker pausing and profile manipulations in the scenario editor. Note that the [i]Game Options[/i] menu still takes a little bit longer to load since it generates a tab for every weapon profile that the game is aware of.[/list] [i]New Options[/i] [list][*][i]Hide Gibs[/i] option added under [i]Game Options -> Visuals[/i] [*][i]Scenario Cache Duration[/i] added under [i]Game Options -> Main[/i]. This specifies the number of hours that Workshop scenarios are kept until the game has to download a fresh list. [*][i]Reload Sounds[/i] were added as an option per-weapon. [*]There are now three types of Shoot Sounds: [olist] [*][i]Shoot Sounds[/i]: played when the weapon fires a shot, or played on loop when shooting if a shoot released sound is specified. [*][i]Shoot Pressed Sounds[/i]: played when the input for shoot is pressed. [*][i]Shoot Released Sounds[/i]: played when the input for shoot is released, and also immediately stops any Shoot Sound in progress. Thus, you can choose a very long .ogg file for the Shoot Sound of a weapon to play while fire is held, then specify a Shoot Released sound and have it prematurely end the Shoot Sound when fire is released.[/olist] [*]If a weapon profile is set to use a different weapon profile while ADSing, these sounds can be modified in the ADS weapon profile’s preferences and will apply correctly. [*]Most selectable sounds now allow for multiple entries, which means that when a sound would be played it will choose a random one within that list to play. This applies to: Kill Confirmed Sound, Spawn Sound, Shoot Sounds, Hit Sounds, Reload Sounds, and Miss Sounds.[/list] [i]Dodge Profiles[/i] [list][*]Waypoints: Bots and can now be configured to follow waypoint paths on a map from spawn. The waypoint movement is applied as a single direction key the bot holds down after considering every other movement/dodge behavior associated with it, so if you have bots toggling forward/back and left/right, they will still attempt to follow those inputs but have the single input held that gets the bot closest to the waypoint. Target entities from [b]Reflex[/b] maps can be set to have a “String32 name ”, and [i]PlayerSpawn[/i] entities from [b]Reflex[/b] maps can be set to have a “String32 path ,,“. Additionally, the [i]PlayerSpawn[/i] can specify “Bool8 loopingPath 1“ to make the bot continue to go back to the first waypoint after the last one. Some of these lines have to be added manually with a text editor to the [i].map[/i] file (sorry, slightly inconvenient).[/list] [list][*]Bot Dodge Profiles then have a “Waypoint Logic” variable that can be set to: [list][*][i]Ignore[/i] (don’t chase waypoints) [*][i]Follow Until Combat[/i] (chase until it finds a non-teammate target) [*][i]Follow Aim At Target[/i] (chase waypoints while aiming/shooting at non-teammate targets) [*][i]Follow Aim At Waypoint[/i] (chase waypoints and completely ignore any other characters)[/list] [*][i]Waypoint Turn Rate[/i] that specifies in degrees per second how quickly the bots turn. This only applies when bots are aiming at waypoints. [*][i]TargetStrafeReaction[/i] has a new option: [i]Player Can Shoot Soon[/i]. When this is selected and the player is using a weapon that shoots slower than every 400ms, the dodge profile tells the bot to change his strafing direction a short time before the player will be able to shoot again. Associated variables: [list][*][i]MinTimeBeforeShot[/i] & [i]MaxTimeBeforeShot[/i]: seconds before the player can shoot again, change strafing direction. Again, requires that the player is using a weapon that shoots every .4 seconds or slower, like a shotgun/rocket launcher. [*][i]Ignore Shot Chance[/i]: 0 = always try to trigger just before the player can shoot again, 0.75 = shrug it off 3/4 of the time.[/list][/list] [i]Character Profiles[/i] [list][*][i]TerminalVelocity[/i]: This variable may be set to a positive value to apply a maximum velocity for falling characters, or 0 for same behavior as before. [*][i]CharacterModel[/i]: We’ve added cosmetic animated humanoid models that can optionally be shown on top of characters. They are set to automatically scale according to the existing character bounding boxes, so the visuals of the character model are cosmetic only (You don’t have to worry about unlucky instances of shooting between legs). When a Character Model is specified, you can also choose to show the main bounding box as a wireframe, or hide it entirely. [list][*][i]CharacterSkin[/i]: There are a few character skins included for specific models, and we will be adding more as time goes on.[/list] [*][i]ViewBob[/i]: When the player lands on the ground after jumping, apply a small down&up visual of the camera shifting. The time, angle adjustment, and camera Z offset can be specified, as well as whether player shots are affected by this or if it’s cosmetic only. [*]Two new flyer modes of movement: [list][*][i]IsFlyer=true[/i] and [i]FlightObeysPitch=false[/i], in which holding jump will immediately set vertical velocity to the [i]FlightVelocityUp[/i] variable, and holding crouch will immediately set vertical velocity to the [i]FlightVelocityDown × -1[/i] variable. Looking up and down has no effect on the angle of flight, and this acts more like a simple jetpack (with the addition of crouch sending the character down). [*][i]IsFlyer=true[/i] and [i]FlightObeysPitch=true[/i], in which looking up or down while holding forward also affects vertical flight. In this mode, holding jump or crouch will apply those velocities 90° up or down from the facing camera angle. So if you look straight up and hold forward, you fly up. If you look straight up and hold crouch, you move “forward” to an observer.[/list] [*]Note that if you are configuring flying bots to follow waypoints at different elevations, you probably want to set them to [i]IsFlyer=true[/i], [i]FlightObeysPitch=true[/i], and make their waypoint logic “Follow Aim At Waypoint”.[/list] [i]Weapon Profiles[/i] [list][*]1st and 3rd person Weapon Models [list][*][i]WeaponModel[/i] (first person) [*][i]WeaponSkin[/i] (first person): Note, alternate weapon skins are temporarily disabled. [*][i]WeaponAnimation[/i] (first person): can be set to [i]Primary, Secondary, Charging[/i], or [i]None[/i]. Some weapons have different primary and secondary animations, some have charging animations. Intended use is primary animation on left click and a secondary animation on a weapon ability. [*][i]3rdPersonWeaponModel[/i] [*][i]3rdPersonWeaponSkin[/i][/list] [*][i]Incremental Reload[/i]: Option to make the weapon reload bullets to the magazine over time instead of a full reload at the end of the time line. [list][*][i]ReloadStartupTime[/i]: Delay between reload activated (reload press or weapon ran out of ammo) and begin of Incremental Reload [*][i]ReloadLoopTime[/i]: Amount of time between each instance of adding ammo to the weapon [*][i]AmmoReloadedPerLoop[/i]: How much ammo is added every loop [*][i]ReloadEndTime[/i]: After the incremental reload ends, how much time until the weapon can shoot again [*][i]CancelReloadWithShoot[/i]: Whether reload can be manually cancelled in the middle of looping to get back to shooting early.[/list] [*][i]ProjectileVisualOffset[/i]: Where to spawn the projectile visual. This does not affect the source of damage, so it can look like shots are going through walls when they really aren't. Recommended values of 0. [*][i]SpreadDecayDelay[/i]: After firing a shot, how long until "-Spread/Sec" kicks in. [*][i]ReloadBeforeRecovery[/i]: When the player runs out of ammo, force the reload to start immediately, or wait until passes. Default for old scenarios/weapons is true, default for newly created weapon profiles will be false (true maintains compatibility with existing content, but recommend setting false to match most games) [*]New particle variables - All old particle variables were using UE4 Enums, which were more effort to maintain than they were worth, so I added string-based particle variables. If an old weapon profile is read that uses the old variables, the correct value will be read for the new variables. A fair bit of new particle effects have been added to each of these.[/list] [i]Bot Profiles[/i] [list][*][i]AbilityUseTimer[/i]: Previously, bots were configured to check whether they should use abilities every 0.1 seconds. Now you are free to set how often bots try to use abilities. [*][i]UseAbilityFrequency, UseAbilityFreqMinTime[/i], and [i]UseAbilityFreqMaxTime[/i]: These "frequency" variables allow bots to go in and out of states of whether they are allowed to use any abilities or not. Every [min to max] period of time they will re-evaluate whether they can use abilities based on the frequency listed. [*][i]Show Laser Pointer[/i]: If checked, a laser will be projected forward from the bot to show where they are aiming. [list][*][i]LaserRGB[/i]: Color of laser [*][i]LaserAlpha[/i]: Transparency of Laser. 1 = fully opaque, 0 = fully invisible.[/list][/list] [i]Aim Profiles[/i] [list][*][i]AimingStyle[/i]: [i]Original[/i], or [i]Sniper[/i]. [i]Sniper[/i] is a style the locks onto the player over time and begins shooting when it is close enough. When the player isn’t in line of sight, the bot will scan in figure-eights around the player. Adds the following variables associated with the aiming style: [list][*][i]Scan Speed Multiplier[/i]: How quickly the bot follows a figure-eight path around the player when the player is not in line of sight. [*][i]Max Seek Pitch[/i]: How far vertically (in degrees) the bot will aim up or down along his figure 8. [*][i]Max Seek Yaw[/i]: How far horizontally (in degrees) the bot will aim left or right along his figure 8. [*][i]Aiming Speed[/i]: How quickly the bot will converge his crosshair onto his intended target (either the figure-eight or the player when in LOS) [*][i]Min & Max Shoot Delay[/i]: After the player is in the Shoot FOV of the bot, how long until the bot fires?[/list][/list] [u]Upcoming/Works in Progress[/u] [list][*]A large art pass is almost complete, which will further increase performance in the [b]Trainer[/b] [*]We have two tracking levels ready for production to wire up [*]We have ideas for a “learning to aim” trainer design that focuses on proper mouse control from point A to point B with vertical angles [*][b]Sandbox[/b] UI/UX Overhaul plans are complete, and implementation will begin soon [*]Design spec for the [b]Sandbox[/b] [i]Playlist[/i] feature is complete[/list] [u]For folks who have their skilltree unlocked[/u]: [olist][*]Level 5 is pretty broken/rough around the edges. Proceed with caution. [*]Level 7 isn’t quite functional (We’re working on it!). The player is supposed to be able to move, but a last-minute map change gave the player concrete shoes. So the level isn’t quite as fun/interesting. Levels 7.5 to 7.7 are particularly troublesome (geometry is behind you). And, the Level 7 Combine is broken/incomplete. [/olist]