* Don't generate IRC alerts
* Differentiated rubber-banding
* Fix#3222
* Small simplification
* Use master's version
* Fix typo
* Use std::sort
* Remove useless function call
test_ai is only used for profiling without human players
* Update GUI files for replay improvements
* Updated replay capabilities
* Improve timer formatting possibilities
Mainly, the ability to choose to display or not minutes, and to choose how many digits are shown after seconds (from 0 : second as smallest timestep - to 3 : ms as smallest timestep)
Also displays "mm:ss.ms" rather than "mm:ss:ms".
* Some new list widget possibilities
Like the ability to update the header while the list is displayed (useful to add or remove columns)
* Update ghost kart for the new replay data
* Also update the ghost controller
* Live differences with ghost replays in linear worlds
* Replay-related UI changes
Big changes to the replay selection screen, and small change to the race UI (add the live timer in ghost races) and the race result UI (add the option to directly race against a newly saved ghost).
* Improves the replay action modal dialog
* Fix time-to-ticks regression
* Several requested improvements
* Improved ghost icon
Also updates the license
* GUI changes and improvements to accomodate multi-mode support
* Additional recorded data
* More functions to get the current race state
* Update replay variables to match what is used
* Updated replay-related config values
* Add ghost kart support to easter egg hunt mode
* Transparent attachments for ghost karts
* Use new stored data (color, item type)
Also :
- Interpolate speed for smoother display in watch-only mode
- Coding style improvements
* Fix coding style issues and add UI support for modes
* Fix coding style issues & support for easter egg mode
* Remove leftover prints
* Use getDifficultyName to remove hardcoded values
* Fix attach_ticks and coding style fixes
* Make the position of the timers fully relative
Otherwise, they would tend to touch each other in some resolutions
Also add a comment about the 59.9995f
* Make the list filling code clearer
Also use getDifficultyName
Most of the line changes shown by git correspond to moving around some bits or adjusting indentation.
* Remove a TODO as requested
* Fix dialog being dismissed too soon
* Remove a fixme
* Small clean up
* Fix logging
* Partial #3249 fix
* Update custom_video_settings.stkgui
Change label titles to conform to title case typographical convention.
* Update custom_video_settings.stkgui
Sentence case for everything.
* Add SuperTux difficulty & update number of karts
Also make the expert challenge slightly easier to match more the difficulty of other challenges.
* Add SuperTux difficulty & update number of karts & points required
Also give some more time margin in easier difficulties, as it is a hard challenge compared to most.
* Add SuperTux difficulty & update number of karts & points required
Also change the lap count to 4 as it is a very short track (sub 30s)
* Add SuperTux difficulty
Also tweak the expert challenge to have a more appropriate difficulty
* Add SuperTux difficulty & update number of karts
* Add SuperTux difficulty & update number of karts & points required
* Add SuperTux difficulty & update number of karts & points required
Also correct the requirement position, since this is not a FTL race anymore.
* Add SuperTux difficulty & update number of karts & points required
Also slight balancing improvements for the usual difficulties.
* Add SuperTux difficulty & update number of karts & points required
Also adds a position requirement in expert
* Add SuperTux difficulty & update number of karts & points required
* Add SuperTux difficulty & update number of karts & points required
* Add SuperTux difficulty & update number of karts & points required
Also change the number of laps to 5, as this is a very short track. The time requirements for easier difficulties have been kept proportionally similar to before.
* Add SuperTux difficulty & update number of karts & points required
Also change the number of laps to 4.
* Add SuperTux difficulty & update number of karts & points required
Also add a position requirement to expert and intermediate.
* Add SuperTux difficulty & update number of karts & points required
Also change the number of laps to 4, as a lap often is 30s or less in expert/supertux
* Add SuperTux difficulty & update number of karts & points required
* Add SuperTux difficulty & update number of karts & points required
* Rename islandtrack.challenge to gran_paradiso.challenge
* Rename challenge file
* Add SuperTux difficulty & update number of karts & points required
Also makes the time limit in expert less easy and tweak position requirement.
* Add SuperTux difficulty & update number of karts
* Add SuperTux difficulty & update number of karts & points required
* Add SuperTux difficulty & update number of karts & points required
* Add SuperTux difficulty & update number of karts & points required
* Add SuperTux difficulty & update number of karts & points required
Doesn't unlock the SuperTux difficulty anymore - it's managed elsewhere.
* Add SuperTux difficulty & update number of karts & points required
* Add SuperTux difficulty & update number of karts & points required
* Add new unlock challenges, for difficulty and karts
* Add a lap to oliver's math class
* Replace Northern Resort by Volcano Island
* Replace Volcano Island by Candela City
Candela City was in no (official) GP before this.
Also sets Green Valley to 3 laps.
* Add Northern Resort and remove Fort Magma
In 0.9.3, this GP has only 4 races in Story Mode (5 for the other GPs) because Fort Magma is locked.
Of all the tracks outside this GP before, Northern Resort is one of the hardest, the AI being rather good there.
* Temporary cup for SuperTux challenges
Recolored version of the gold cup
* Update challenge selection UI for the SuperTux challenges
* GUI used before SuperTux difficulty unlocking
This is the old select_challenge.stkgui
* Swap the two sara
* Replace Kiki by another kart to unlock on Benau's demand
* Update for improved Story Mode
* Update for improved Story Mode
* Add support for SuperTux challenges
* Add support for SuperTux challenges
* Add support for SuperTux challenges
* Add support for SuperTux challenges
* Update for SuperTux ; also adds the ability to unlock a challenge by points
* Update for unlocking by points
* Add support for SuperTux challenges
* Add support for SuperTux challenges
* Add support for SuperTux challenges
* Minor changes to function calls
* Update for SuperTux challenges
* Add support for SuperTux challenges
* Update for Story Mode GP changes
* Allows to display the correct number of points for GP challenges
* Set the unlock of the 1st bonus kart to correct non-test value
* Add support for SuperTux challenges
Including a bigger challenge selection diaolg
* Add default value
* Icon to indicate that there is an unlockable
The number of points needed to unlock it are displayed next to it.
* Changed format : the point requirements is now specified in the file
* Changed format : the point requirements is now specified in the file
* Changed format : the point requirements is now specified in the file
* Function for unlock by points UI
* Add default for unlock list node and use requirements node for all
* Make unlockByPoints simpler and more flexible
Now the code will iterate in StoryModeStatus and send the unlock_list challenges for treatment here. The question of getting the right challenge statuses beings solved, it allows for a great simplification and much more flexibility
* Update unlockByPoints declaration
* Adds support for next unlockable UI
* Improve call of unlockByPoints
Also calculations for displaying in the UI how many point the next unlockable by points requires.
* Add icon for next unlockable
* Displays icon/number to make the player aware of the next unlockable
Also displays the number below the icon rather than on the side, for more clarity.
* Changes to display karts in the unlock scene
* Update unlock functions declarations
* New function to clarify code and more logical recently unlocked list management
In the previous version, everything was added to the recently unlocked list at some point, necessitating a clearing at the end of computeActive, which also removed from the list the non-race challenges. Checking if the feature is newly unlocked to add it to the list remove the need of that clearing.
* Declaration for unlockFeatureByList
* Display newly unlocked karts
* Display newly unlocked karts
* Clear the list of recently unlocked features at the end
* Update testing code
* Update unlocks finding function call
* Improve UI scaling
* Fixes indentation
* Update the number of points before checking for unlock by points
* Add const to declarations
* Remove const_cast
* Remove a const_cast
There are other const_cast in the menu debug items (but they are unrelated to this PR)
* Fix menu being bolder
Now we don't use tfb shader to compute particles, so it seems to not have a sense anymore.
And it's still possible to set particles_effects=0 in config.xml if someone will need it.
* New getRecentPreviousXYZ function
* New getRecentPreviousXYZ function
* New getRecentPreviousXYZ function
* General slipstreaming refinements
* Increase the minimum time to get the slipstream bonus
The obsolete parameter is not yet removed as several other files would have to be changed to not trigger an error.
* Slipstreaming characteristics update
* Changed slipstreaming characteristics
* Update slipstreaming characteristics
* Update slipstreaming characteristics
* Update slipstreaming characteristics
* Update slipstreaming characteristics
* Update slipstreaming characteristics
* Remove slipstreaming power engine bonus per kart type
Power engine bonus is already balanced by the different weights : a heavier kart needs more engine power to achieve/maintain the same speed.
* Remove an unused function
* Various slipstreaming refinements
* Pull the XYZ history size from config
* Pull the XYZ history size from config
* Remove unnecessary logs
* Fix a frenchism with fix
* New speedometer and nitrometer gui
* Update Speedometer and Nitrometer
* Improve nitro background
* Improve nitro bar drawing
* Improved meters
* Improve meter and rank drawing
* Agressive smoothing and higher visibility
* Helper function for meter drawing
* Helper function for meter drawing
* Improved meters
* New nitro bar, slight 3D effects and hopefully fix compilation
* Update license
* Prepares for advanced item and nitro usage strategy
Replace the bool determining if usage is random or not by an int allowing several levels of AI item usage.
Add NITRO_ADVANCED mode for nitro usage.
* Adapt for more item and nitro levels
The XML files have to be changed. The logic for the item_skill still has to be done.
* Preparation for the preferred kart in GP
* Preparation for the preferred kart in GP
* Preparation for the preferred kart in GP
* Prepares for advanced item and nitro usage strategy
* Prepares for advanced item usage strategy
* Preparation for the preferred kart in GP
* Parametrized AI_skill level
* Fix typo
* Fix typo
* Fix typo
* Fire items with a shield on in unrestricted mode
* New function allowing AI to know what flyable is incoming
* New function allowing AI to know what flyable is incoming
* Fix typo
* Update bubble gum AI to new system
In addition of making some functionality depends on AI levels, there are a few overall improvements for the better AIs :
1)Remove the "drop the gum in the last lap" logic. Bad strategy since ever the shield has been added to the gum
2)The protection against flyable is not used if the user holds a swatter and the flyable is a plunger
3)Holding a swatter no longer blocks the AI from using the shield against a flyable nor from using the gum behind
4)The shield is used to remove bad attachments (bomb, parachute, anvil)
5)Reduce the distance with the kart behind when dropping the gum to reduce misses
* Update swatter AI to new system
The swatter could benefit from several kind of usage improvement. This patch introduce only one, but probably the more important : the better AIs now use it to remove bad attachments
* Fixing #3139
* Fix compile error
* Fix
* Fix compilation
* Fix compilation
* Fix compilation
* Update variable
* Update variable
* Fix non-breaking space issue
* Fix typos
* Revert for compilation
* Revert for compilation
* Update cake AI to new system
* Redefine HandleItems to be position aware
* Redefine HandleItems to be position aware
Also changes bowling ball for the new system.
* Activate shield before hitting box or bad item
Meant for higher AIs.
* Increase lookup distance
Some distance will be needed for the switch
* Temporary fix to avoid a nitro regression
* Fix typo
* Fix typo
* Bubble gum improvements ; explicitely calculate distances to items
* Update Switch to the new system ; use item-distance awareness
Also fix a missing parenthesis
* Change nitro-usage to a numerical parameter
* Change nitro-usage to a numerical parameter
Also update comments to explain the new item-skill
* Change nitro-usage to a numerical parameter
* Change nitro-usage to a numerical parameter
* Change nitro-usage to a numerical parameter
* Update handleNitroAndZipper to the new system
Also fix a naming error, remove the 95% speed limitation on nitro usage
* Adds a small engine boost to nitro
Currently, nitro is very counter-intuitive as it only affects max_speed. This change corrects it. The effect remains small to not upset balance. It is mostly felt when below max_speed, so the can of nitro potential power doesn't change much.
* Improve AI nitro handling
Summary :
1)Makes the AI use nitro by bursts, greatly improving its efficiency
2)Makes the AI use nitro when close to max speed (to unlock the max speed increase)
3)Remove the overtaking logic as the AI will now use its nitro anyway
4)The AI tries to keep a reserve of nitro for use towards the end of the race.
* Allows estimated finish time to be checked at any lap, fix a crash
* Makes the AI use its nitro reserves
* Better tuning for nitro reserve usage to reduce the probability of unused nitro
* Remember last used powerup for AI
* Remember last used powerup for AI
* Remember last used powerup for AI
* Remember last used powerup for AI
* Remember last used powerup for AI
* Remember last used powerup for AI
* Fix compilation
* AI don't wait between usage of items of different types
* Use floats for Parachute duration
* Revert
* Nitro use when trying to pass a bomb improved
* Fix broken time check
* Take into account the kart-specific fadeout to calculate time between bursts
* Improvements to bursts and to use of the reserve at the end
* Improve comments explaining item_usage_skill and nitro_usage
* Make LastUsedPowerup a PowerupType
* Make LastUsedPowerup a PowerupType
* Make LastUsedPowerup a PowerupType
* Make LastUsedPowerup a PowerupType
* Make last_used_powerup a PowerupType
* Make last_used_powerup a PowerupType
* Fix compilation
* Fix compilation
* Revert
* Revert
* Finally fix compilation
* Finally fix compilation
* Change shield radius per difficulty
A reduced non-null shield radius reduces false positives as long as it is big enough to get a few frames during which the object is inside the radius.
* Improve Projectile closeness management
* Improve projectileCloseType
* Improve projectileCloseType
* Fixes indentation
* Fix lastUsedPowerup initialization
* Fix the last used powerup type
* Rename projectileCloseType
* Rename projectilCloseType
* Clarify comment and update projectileCloseType to new name
* Reuse a member RandomGenerator
* Fixes getLastUsedPowerup type
* Fixes comparison
* Fixes type
Now we can get determine the background color by depth, so
the alpha tricks in diffuse color fbo is not necessary
And using rgba8 to pack normal doesn't seem to cause visual glitches.
* Initial SplitScreen
All are upside down and player 1, 5 player does 6 even...
* Working version of splitscreen
* black screen fix
* te fix
* Update race_gui.cpp
* Change item
* wrong way fix and refactorings
* Fix icon scale, cleaning code for lap count
* Remove tabs
* Add settings option
* Fix FOV
Right now the FOV gradually decreases when going from 1,2,3,4 players. Then after 4 players it wont drop any lower. This behaviour can easily be replaced in the future
* Prevent overflow
* Unlimited splitscreen
* Space out duplicate skins across additional players
* Update stk_config.cpp
* Update irr_driver.cpp
* Update options_screen_ui.cpp
* Update irr_driver.cpp
* Update options_screen_ui.cpp
* Update race_gui.cpp
* Update irr_driver.cpp
* Fix for empty pixels at edges
* Fix referring to template not int
* Fix compile errors
* Progress towards fixing selection screen
* Begin process for selections
* Fix selection screen for >4 people
Important GUI changes included
* Disable changing rows/cols ingame
* fix sp related crash
* Styling fixes
Particles cause a crash on some radeon devices, so people can at least disable it to make the game working.
Also tfb causes quite big slowdown on slow devices even if there is no particles displayed, so it can give few more fps.
(fixes karts getting stuck at borders), use a longer less bevelled collision
shape better kart stability), and reduce angular factor to make it less
likely that karts can drive on walls.
In this case only diffuseMatColor really matters, other values are constant.
It improves performance on GLES renderer and it's also noticeably faster for GL on desktop.
For example:
- fps increased for me from 60 to 69 on Hacienda with intel HD 4000
- from 43 to 49 on lighthouse
There is much less difference on nvidia graphics card, but still it gives small performance improvement.
- Don't use BGRA format at all. It doesn't work with non-typical cases (i.e. with srgb or compressed textures) and also casues artifacts on some android devices. I kept the extension in central settings, but it probably won't be used.
- Use sRGB texture format when advanced lighting is enabled. This makes it closer to the original OpenGL renderer and also avoids to have even more #ifdef's for sRGB conversions.
- Keep RGBA textures for non-advanced lighting to make it simpler.
Now advanced lighting in GLES looks almost the same as in OpenGL 3.x (without shadows/GI)
The force legacy device graphics restriction is needed for ironlake graphics cards. But newer generations in pentium/celeron processors also are named just "Intel(R) HD Graphics" without any number.
The newest drivers for ironlake graphics card is 8.15 and it's unlikely that it will get an update. So assume that all drivers older than 9.x are ironlake generation or that are too old to run STK anyway.
It's a bit ugly solution because we should handle it properly in one place and not add another sRGB correction... But it's already working solution and it doesn't affect the OpenGL renderer, so we can use it until better fix will be done.
Now the GLES renderer looks almost the same as the original OpenGL 3.x one :)
It should be much more comfortable on small devices.
Though it's not possible to get default screen orientation (and real device orientation) using NDK functions, so at this stage user has to manually choose if he needs "tablet" or "phone" accelerometer.
* Change grand-prix node for the new GP point system
* New GP point system
* Add parachute characteristics for rank and speed time multipliers
* Add new parachute characteristics
* typo fix
* Add rank and speed parachutes characteristics
* Add rank and speed parachute characteristics
* Add rank and speed parachute characteristics
* Add rank and speed parachute characteristics
* Add rank and speed parachute characteristics
* Add logic for parachute time scaling according to rank
* Add logic for parachute time scaling according to speed
* Separate GP and parachute branches
* Separate GP and parachute branches
It allows to enable it easily in GLES renderer. And we check if this extension is available anyway because it's needed for shadows, so we can use it for other shaders too.
It may be useful if someone wants to play with external keyboard.
The multitouch_mode parameter will be also used to choose between steering with buttons and using accelerometer.
It is generally safe for GLES drivers. The driver often reports OpenGL ES 3.1 or 3.0 support even though we request only GLES 2.0. But we can still use GLES 2.0 / GLSL 1.0 functions on GLES 3.x context, so it shouldn't cause any issues.
I also added Android Emulator to graphics restrictions.
This function was used by Cand for his OpenGL 2.1 renderer. The round function is available since GLSL 1.3 (OpenGL 3.0), so there is no need to override it.
If it will be needed in future, I suggest to change the name to round_stk or something similar.
Also split ghost karts out of additive shader, so fixed issues like
"drivers are facing backwards", "water in abyss affects ghost karts"
Todo: maybe transparency depend on current track color?
Changes applied:
*symbol files added
*LabelWidget removed from SkillLevelWidget and replaced by IconButtonWidget
Subsequently variables and method containing Label or Text renamed
setSize method was rewritten
*Unused property "m_label_name" removed from SkillLevelWidget
*Substitution label->icon also introduced renamings in KartStatsWidget.
For instance, setDisplayText is now named setDisplayIcons
It adds support for OpenGL ES renderer, which is needed for Android port and for running STK on other embedded devices such as Raspberry Pi.
Currently it works in two ways:
- Shader-based pipeline, which requires OpenGL ES 3.0 (Android >= 4.3)
- Fallback to irrlicht-based fixed pipeline that needs OpenGL ES 2.0. The fixed pipeline generally works, but it is affected by the same issues as our OpenGL 2.1 fixed pipeline renderer.
I tried to modify our OpenGL renderer as little as possible to avoid regressions. The only one major change is that we are now using the "#stk_include" directive in shaders instead of linking multiple shaders into one program.
Currently it works only on linux. The Android port needs some refactoring. In theory it should be possible to make it working on Windows, but we would need some OpenGL ES SDK, or maybe modified libglew.
At this stage it is playable with current mesa drivers. I tested it on intel graphics card and I didn't notice any issues.
On Android only the OpenGL ES 2.0 renderer with fixed pipeline has been tested for now.
In ssao.frag we are computing theta valaue and it looks that intel driver doesn't like too big values for sinus and cosinus computations.
I just used modulo 360 to store lower angle values in theta variable.
The check for GL_ARB_geometry_shader4 doesn't have sense at all because we don't use this extension and our geometry shaders use functionality which is available in core OpenGL 3.2.
The reason that it wasn't working for older mesa versions must be a bug in mesa or maybe missing other functionality (but not GL_ARB_geometry_shader4).
I checked it with mesa 11.2 and current git version and it works fine on intel, nouveau and with software rendering.
It needs some testing because it potentially affects all drivers with OpenGL >= 3.2 on every platform.
If someone could test it with Radeon drivers, I would be really happy to enable it in upcoming release, at least on linux.
The problem was with shader-based pipeline with disabled "advanced effects" in options.
In this case we don't use RTTs and gl_FragCoord contains values in range of whole window. So fo 2 players we still get gl_FragCoord.y = 0..window_size instead of gl_FragCoord.y = 0..window_size/2.
The easiest way to solve it seems to be modulo it by current viewport size. It should be compatible with advanced pipeline as well as single-player games.
Atm. I'm not sure if this should be applied to 0.9.2 branch. It should work fine, but needs some testing.
- Increase version for sRGB-capable visual workaround because it doesn't look that it will be fixed anytime soon
- Enable compute shaders because it works fine now
- Enable texture compression because it works now too.
Texture compression for intel should work fine also for older versions, but it's hard to say which one version is the first working one.
It was reporting an error:
[error ] GLWrap: Error in shader gaussian6h.comp
[error ] GLWrap: 0:77(1): error: storage qualifiers must come after precise, invariant, interpolation, layout and auxiliary storage qualifiers
Notice: As race_manager->setKartSoccerTeam(i, info.team) already
pre-set karts team, there is no need to test for
(getNumKartsInTeam(SOCCER_TEAM_RED) == 0 || getNumKartsInTeam(SOCCER_TEAM_BLUE) == 0),
so the the menu code is simplified.