99 Managers Futsal Edition is a futsal sportsmanagement game, where you control every aspect of your team from tactics to finances and much more.
Work in progress
The gameplay, user interface and features might change before final release.
Main responsibilities
Choose tactics and lineup for every game
Guide and change your players during the matches
Win the league and cups on national and international level
Stay up to date by reading news and emails
Special features
Fantasy teams and players that can be shared with the generation seed
Open Source
Vim mode with simple key-binds (h, j, k, l, /)
Light/dark themes and fully customizable colors
Planned features (not implemented yet)
Full controller support
Buy and sell players
Extensive player market
More languages support
Spanish
Portuguese (Portugal)
Portuguese (Brazil)
French
Custom players and teams
Import/Export of data
In-game editor
Visible replays and highlights of all matches
More about 99 Managers
99 Managers will be a series of sport management games for different team sports. It is Open Source and also respects your privacy, because it has no trackers or similar privacy invading. Being Open Source means that you can see the source code of the game to see how it is made. Beside that you are also able to suggest bug fixes, new features or create your own customized version of the game. For that reason this game is truly hackable by anybody in all aspects with not limitations.
v0.5.6 brings yet again some fixes to transfers. Player can be bought again. Also the contract logic to sign free agents and renew contracts work again.
Now the pre-release checklist has transfer related checks. This should prevent that future releases break transfer logic again.
Added
UI
[list]Transfer-list: make decline button red and accept button green
[/*]
Fixed
UI
[list]Show correct amount of emails in dashboard overview
[/*]
Match UI
Update result labels after fast simulation, also if speed is bigger x1
[list]Previously it would show 0:0 if speed was bigger x1
[/*][/*]Fix null pointer error for players bar
[/*]Match Engine
Reduce stamina recovery during match
[/*]Make changes only during kickin, corner or free kicks
[list]Reduces amount of stuck ball states
[/*][/*]Fix long wait time on penalty shootout, if target is missed
[/*]Slightly reduce shoot aim accuracy to reduce goals amount
[/*]Transfers
Randomize offers by teams, instead of making all offers on start of market
[/*]Fix stuck free agent offers
[/*]Fix stuck buy offers
[/*][/*]Data
Load and save watch list correctly
[/*][/*]Code Contributors
Simon Dalvai (dulvui)
[/*]
Translation Contributors
German
[list]Ettore Atalan
[/*]
Portuguese (Brazil)
Thiago Papageorgiou
[/*][/*]Added
UI
[list]Watch list: create watch list, where players can be bookmarked
[/*]Player list: use colored position label in general view
[/*]Player profile: use colored position label in info view
[/*]Stadium configuration view: use colors as buttons instead of text
[/*]
Match UI
Re-design match info bar on top left
[list]Add foul indicator
[/*]Add team logos
[/*][/*]New stadium colors
[/*]Show penalty shoot out goals and results in match events overview
[/*]Match Engine
Fast simulated matches have less goals
[/*]Fast simulated matches result is affected by team overall prestige now
[/*]Player pace attribute affects speed
[/*]Long shoot attribute is used if player shoots from more than 12 meters distance
[/*]Players run to goal scoring player on goal
[/*][/*]Data
Add German leagues
[/*]Add Turkish leagues
[/*][/*]Fixed
UI
[list]Player list
[list]Fix player condition sorting
[/*]Remove multi column sorting. Only one sorting can be active now
[/*]Keep active sorting on filter changes
[/*]Set default sorting to player value in Search Player view
[/*]
Formation: Fix player position highlight colors
[/*]Competitions: Align top bar buttons to center again
[/*]Player profile: hide not yet used contract bonus
[/*]Match UI
Show correct goals and changes in event log, if match is simulated
[/*]Fix first leg info in match events
[/*][/*]Match Engine
Let ball cross touch and goal line, before moving to next position
[/*]Fix changes during break
[/*][/*]Transfers
Fix income demands for free agents
[/*]Fix contract negotiations for own players
[/*][/*]Logic
Fix cup match days assignment during season
[/*][/*]Remove unparsed competition link in cup elimination email subject
[/*][/*]Changed
UI
[list]Player profile: hide statistics, until they dont show values
[/*]Calendar: make days font weight normal
[/*]Competitions tree: use normal font weight, not bold
[/*]Teams tree: use normal font weight, not bold
[/*]Stadium colors: remove white and black ones
[/*]
Match UI
Invert action speed and visible action button positions
[/*]Change layout and formatting of match events
[/*]Change default camera and speed settings
[/*]Improve penalties bar design with dots as goal indicators and bordered background
[/*][/*]Match Engine
Increase goal probability to have more goals
[/*]Enter field animation is only played once. On break, sides are switched directly now
[/*]Fix field assignments during overtime
[list]Players where trying to shoot own goals, because field was wrongly assigned
[/*][/*]Fix goals that where no goals
A defending player could intercept a goal shot
[list]Next time the ball would leave the field a goal was triggered
[/*][/*]Logic
Universal players can play good in all positions, except the goal
[/*][/*]Data
Internally use dictionary for shirt numbers instead of array
[list]Could lead to different assigned numbers, for existing save games
[/*][/*]Use Italian names for all Italian teams
Some teams had the English city name
[/*][/*]Code Contributors
Simon Dalvai (dulvui)
[/*]
Translation Contributors
French
[list]Max RMax
[/*]
German
Ettore Atalan Atalanttore
[/*][/*]Portuguese
Loureno Martins hlourencoam93
[/*][/*]Russian
Ukrainian
Now you can negotiate contracts with players and it is not possible to easily buy the best players.\nTransfer history is now also visible aside to the player morale. \nIn the match engine the players make now better offensive movements.\nMore attributes affect now the match result.\n\nAdded
[u]UI[/u]
- Player profile: show if playing for youth/1st team
- Show contract negotiation chat, when offering a contract to a player
- Create morality indicator
- Visible in player list and player profile
[u]Email[/u]
- Add logic for email response variations
- Get reason in email why player did decline your offer
[u]Data[/u]
- Create version migration system for global and save specific migrations
- Migrate player morality from enum to float value
- Migrate offer state to fewer possible states
[u]Translations[/u]
- Add examples to all email text with placeholders
[u]Transfers[/u]
- Players check teams league pyramid level and don\'t join lower league teams
[u]Logic[/u]
- Increase/reduce morality depending on how many minutes played per match
\n\nFixed
[u]UI[/u]
- Transfer list: show player name on all outbound offers
[u]Match Engine[/u]
- Interpolate head look, to person rotation smooth
- Adjust pass success statistics
- Adjust shots on target statistics
[u]Data[/u]
- Fix generated birth dates after the year 2038
Changed
[u]UI[/u]
- Load game screen: add separators and titles to backups, for better overview
[u]Logic[/u]
- Player morality affects players contract negotiations
- Simplify stamina logic by moving to attributes
[u]Match Engine[/u]\n - Reduce pass amount\n - Improve dribbling\n
Code Contributors\n- Simon Dalvai (dulvui)\n
Translation Contributors\n- German\n - Ettore Atalan\n- Portuguese (Brazil)\n - ryanh\n- Ukrainian\n - \n
Added\n- UI\n - Dashboard: improve history by saving\n - date in calendar\n - visible email and filters\n - selected tab from player profile\n - selected tab from team profile\n - selected competition in competitions overview\n - selected tab and season year from competitions overview\n - Dashboard: show player name on top left, if player profile is visible\n - Email: mark all as read button marks only filtered emails as read, not all\n - Email: mark active message as important in list\n - Player profile: show transfer history\n - Player profile: show contract offer monthly, yearly and total income\n - Player list: show nation name aside to league name in league filter\n- Match UI\n - Add competition name to overview\n - Add run up animation of shooting player on penalties\n- Match Engine\n - First implementation of goalkeeper pass rule\n - Attacking players move now to \"best\" possible position to receive a pass or shoot\n - Still far from the best, but at least they move now\n - All players, substitutes included, shoot now penalties\n- Email\n - Send expiring and expired contracts emails\n - Send expired offers emails\n- Logic\n - Add friendly matches at start of season\n- Data\n - Save transfer history of every player\n\nFixed\n- UI\n - Formation: show recommended players in all list views, not just in the formation view\n - Player list: make rows clickable from everywhere\n - Dashboard: update email button count when mark as read button is pressed\n- Match Engine\n - When player is changed, wait until clock is not running and own team has possession\n - Fix overtime checks and take first leg goals into account for two-legged knockout matches\n - On overtime, change sides correctly\n- Logic\n - Transfers: fix several bugs related to transfers that caused problems\n- Data\n - Contracts: assure start dates are in past and end dates in future after player generation\n\nChanged\n- UI\n - Dashboard: align profile tabs to the left\n - Dashboard: always show overview during day progress\n- Match UI\n - Increase ball size\n - Make match speed control more intuitive\n - Adjust background size dynamically to current window size, for better performance\n- Match Engine\n - Change ball movement implementation to pre-calculated destination\n - No collision detection needed\n - Makes it easier to use player attributes to calculate results\nData\n - Reduce players from other nations than the league nation in lower leagues\n - Reduce youth players from other nations than the league nation\n\nCode Contributors\n- Simon Dalvai (dulvui)\n
Translation Contributors\n- German\n - Ettore Atalan (Atalanttore)\n- Portuguese\n - gustjfo (gustjfo)\n- Portuguese (Brazil)\n - Ryan Rezende Martinelli (ryanh._.)\n- Ukrainian\n - (Maksim2005UKR)\n
UPDATE Somehow I released v0.4.2 on Steam two days ago instead of v0.5.2. I guess I miss-clicked something during the release process. Now v0.5.2 is released for real. Sorry for the mistake!
This week the second version v0.5.2 is released from GodotFest25 with Love <3.
It includes just some minor fixes to formation, transfers and some email content.
## Fixed\n- UI\n - Formation: fix list order in formation setup\n - Player list: fix sorting order\n - Money enter form: fix manual enter with keyboard\n - Buy offer Email: fix team name\n- Logic\n - Transfers: improve transfer flow and fix bugs\n\n## Code Contributors\n- Simon Dalvai (dulvui)\n\n## Translation Contributors\n- French\n - Max \\[RMax](https://hosted.weblate.org/user/RMax) \n- German\n - Simon Dalvai \\[dulvui](https://hosted.weblate.org/user/dulvui)
Added
Match UI
[list]Make home team player labels white with black text and away ones black with white text
[/*]
UI
Formation: highlight also field players to substitutes positions
[/*][/*]Fixed
UI
[list]Settings: show correct translation percentages
[/*]
Match Engine
Switch all players left/right flag on halftime, not just field players
[list]In the previous version, players that start the second half in the bench shoot own goals
[/*][/*]Data
Save games: fix force loading
[/*][/*]Logic
Make sure also simulated teams can not have more than the max amount of players
[/*][/*]Code Contributors
Simon Dalvai (dulvui)
[/*]
Translation Contributors
French
[list]Max RMax
[/*]
German
Simon Dalvai dulvui
[/*][/*]Italian
Simon Dalvai dulvui
[/*][/*]Ukrainian
Dan kefir2105
[/*]Added
UI
[list]Formation setup: highlight selected player and best possible substitutions
[/*]Number format settings: choose between dot, colon or space separation of big numbers
[/*]
Match UI
Match events log: improve look and add player changes
[/*]Match events log: show goals
[/*]Stadium: add new colors yellow, black and white
[/*][/*]Data
Save games: add forced load button, to skip checksum validation
[list]Useful if files have been changed manually by user
[/*][/*]Save games: show corrupt files as list, when save state has errors
[/*]Fixed
UI
[list]Dashboard: update email button count correctly
[/*]Dashboard: use scroll container for league table
[/*]Team logos: make them more lightweight, for performance
[list]Improves loading performance of screens with many logos
[/*]
Player list: show all filters again in player search
[/*]Player list: fix same positions multiple times in filters
[/*]Match UI
Camera: move to center in screen (was slightly moved to the right)
[/*][/*]Match Engine
Team: simulated changes work again
[/*][/*]Logic
Stamina: improve overall stamina consumption/recovery during and outside matches
[/*][/*]Data
Backups: fix loading of backups, by actually load correct backup files
[/*]Player Positions: fix wing left position assignment
[list]There where only a few wing lefts and many wing right players
[/*][/*]Stadium: fix year renovated calculation
[/*]Offer list: save/load player contract correctly to csv
[/*]Youth players: reduce attributes, they where too good
[/*]Changed
UI
[list]Email: split size of list and message view 50/50
[/*]League table: make own team row bold
[/*]Text: make bold text bolder
[/*]Player list: move all filters to left and view change button to right
[/*]Stadium: hide unused information, like year renovated or ticket price, until used
[/*]
Data
Save games: remove automated backup for save game files. Only user can trigger backup
[list]Automated backup still are used for internal files, such as settings
[/*][/*]League names: use more generic names
[/*]Custom name files: allow dots as valid characters
[/*]Custom name files: treat wrong headers just as warning, to as error
[/*]Code Contributors
Simon Dalvai (dulvui)
[/*]
Translation Contributors
French
[list]Max RMax
[/*]
German
Simon Dalvai dulvui
[/*][/*]Italian
Simon Dalvai dulvui
[/*][/*]Portuguese
Skkkkkrt. Skkkkkrt.
[/*][/*]Ukrainian
Added
UI
[list]Add clear filters button in player list
[/*]Colorize positions for better overview
[/*]Highlight active sorting button in player list
[/*]Show good bye message when exiting game
[/*]
Logic
Add release player to free agents button
[/*]Add relegate player to youth team button
[/*]Introduce recommended minimum team size and mandatory maximum team size
[/*][/*]Match UI
Show bench players
[/*]Show player change animation
[/*]Show spectators
[/*]Add confirm button for formation changes
[/*]Add camera settings
[/*]Introduce match simulation speed settings
[/*][/*]Fixed
UI
[list]Remove empty page from player list, if players fill exactly the page size
[/*]Player list: on filter update, make sure current page respects max page
[/*]Hide alternative positions from player profile, until improved
[/*]
Match UI
Fix camera position issues, especially when changing window focus
[/*]Reduce transparency of view backgrounds
[/*]Prevent player changes, before match is started
[/*][/*]Match Engine
Stop pass receiving player go towards ball, if the pass failed
[/*][/*]Logic
Improve transfer logic and fix many transfer related bugs
[/*][/*]Data
Make last saved save state always the active one
[/*]When Men League Type is selected when starting a new game, only male first names are used
[/*]Improve attribute distribution, some players had one value for too many attributes
[/*][/*]Changed
UI
[list]Use player list to set formation for better overview
[/*]Player list keeps sorting on view change of persistent columns, such as name and value
[/*]
Match UI
Improve game finish checks to have correct time and result on finish
[/*]Reduce field size to default aspect ratio and size
[/*]Improve head look direction of players
[/*]Make player name always white text on black background
[/*]Keep players visible in last position, when match runs fast
[/*][/*]Match Engine
Improve match buffer logic
[/*]Fix issues with player and formation changes during match
[/*]Improve checks if players reach destination
[/*][/*]Data
Reduce max team size to 18
[/*][/*]Logic
Start league in October
[/*]Start nation cup in October
[/*]Move all nation cup matches, including the final to Wednesday
[/*][/*]Code Contributors
Simon Dalvai (dulvui)
[/*]
Translation Contributors
German
[list]Ettore Atalan Atalanttore
[/*]
Portuguese
Skkkkkrt. Skkkkkrt.
[/*][/*]Ukrainian
Added
UI
[list]Add mark all emails as read button
[/*]
Data
Add cup elimination email
[/*][/*]Fixed
Logic
[list]Make sure that new assigned matches don\'t happen on current day
[list]Fixes bug when winning first round of national cup
[/*]
Data
Enable transfer in/out emails again
[/*][/*]Match Engine
Formation changes work again
[/*]Player changes work again
[/*][/*]Match UI
Temporary hide change buttons in player bar
[list]Until bug, of formation is changed after player has been changed from player bar, is fixed
[/*][/*]Fix first round score, by inverting home/away, visible below team names in overview
[/*]Stop player animations when match is over
[/*]Show overview when match is over
[/*]Code Contributors
Simon Dalvai (dulvui)
[/*]
Fixed
Data
[list]Fix saving saving game
[/*]
Code Contributors
Simon Dalvai (dulvui)
[/*]
Translation Contributors
Ukrainian
[list]- [/*]
Dan kefir2105
[/*]
Added
UI
[list]Change between full screen and windowed mode in interface settings
[/*]
Match Engine C
Add first version to version control, but not used yet in game
[/*][/*]Match UI
Create camera zoom and fixed settings, but keep hidden until correctly implemented
[/*][/*]Data
Sync features like Steam Cloud can now sync save games correctly
[list]Also between devices with different operating system
[/*][/*]Create legacy data migration, to prevent data loss, if file structures change
[/*]Changed
UI
[list]Add team logos to calendar days
[/*]Use transfer icon to visualize transfer market
[/*]Show league type and year settings on new game screen, instead of hiding in advanced settings
[/*]Center save games in save games screen
[/*]In the formation setup view, split reserves and substitutes list and move to right
[/*]Improve filtering of Competition and Team Tree selectors, by hiding empty list entries
[/*]
Match UI
Players always watch ball now
[list]Will be improved in future with more realistic head movements
[/*][/*]Logic
Reduce player buy price for automated buy offers
[/*][/*]Data
Split up settings internally into local and sync settings
[list]Allows easier cloud sync functionality with Syncthing or Steam Cloud for example
[/*][/*]Use /import directory to import save states, instead of scanning active save states directory
[/*]Fixed
UI
[list]Team logos are now visible, also in release export
[/*]Use 2 letter abbreviation for position labels in formation
[/*]Fix memory leak in player profile
[/*]Use question mark team logo and name for undefined matches, like cup finals
[/*]
Match UI
Hide simulation progress when simulation is done
[/*][/*]Match engine
Improve goalkeeper saves
[/*]Reduce tackle amount
[/*][/*]Data
Fix player ages with more realistic ages for normal aged players and young players
[/*]Starting players have now correct positions after initial setup
[/*]No player has the shirt number 0
[/*]Prevent error when empty csv file is not found on disk
[list]This can happen when files are synced with Steam Cloud, that does not sync empty files
[list]Checksum file has information, if file is empty, so validation still works
[/*][/*]Scripts
Fix restore of export_presets.cfg after build
[/*][/*]Code Contributors
Simon Dalvai (dulvui)
[/*]
Translation Contributors
German
[list]Ettore Atalan Atalanttore
[/*]
Ukrainian
Added
UI
[list]On continue pressed in dashboard, show animation with stop button
[/*]Add wave background effect
[/*]
Translations
Show translations percentage in settings
[/*][/*]Other
Create Email tests
[/*][/*]Changed
Match UI
[list]Show progress bar while simulating match, but visual progress still doesn\'t work
[/*]
UI
On continue pressed in dashboard, go to next day until blocking event found
[/*]Show team color and logo on top left of dashboard
[/*]Use gradient backgrounds in dashboard
[/*]Remove Hacker and Red theme
[/*]Remove theme selection from initial screen
[/*]Use flat more buttons
[/*]Use logo in loading screen
[/*]Remove player silhouettes
[/*]Remove useless button from calendar and show match results
[/*]Loading screen is no longer full screen
[/*][/*]Input
Improved joypad control by reverting to last active button on focus lost
[/*][/*]Fixed
UI
[list]Clear field in team profile before adding new players
[/*]Translate emails in the selected language, before emails were always in English
[list]Note: emails of previous versions are lost
[/*]
Set correct color for hover on selected tree items
[/*]Player list: use ellipsis to fit texts on filters, even with big font
[/*]Match UI
Field extends to whole screen
[/*][/*]Other
Build script: move export_presets.cfg backup file instead of only copying
[/*][/*]Code Contributors
Simon Dalvai (dulvui)
[/*]
Translation Contributors
German
[list]Ettore Atalan
[/*]
Portuguese
Loureno Martins
[/*][/*]Ukrainian
[/*][/*]
This month I mainly focused on fixing bugs and polishing the UI of the game. The Steam Next fest is coming soon and the game needs to be stable and look nice(r) for that.
7th of November Early Access release
While writing this devlog, I nearly forgot about the biggest news this month: The game will enter Early Access on the 7th of November!!!\nI\'m really excited and looking forward to sell my very first copy of a game. (If someone buys it, of course). The game will cost 10$, with regional price adaptations, Steam usually has.
I chose the 7th of November randomly a few months ago, by simply postponing the date again and again. But this time the game is ready and also Football Manager 26 will be released on the 4th of November. This means a lot of players will head to the Football Simulation category on Steam, potentially finding my game.\nThis momentum could increase the numbers, or at least I hope so :-).
New beta versions v0.4.1 and v0.4.2
Two new beta versions have been released in September. The latest beta version is v0.4.2 . They fixed some bugs and improved the design and UI, as usual.
There will be at least one other version before the Steam Next Fest on the 13th of October. I hope, that many players play my game during the Festival.
Future version will now also show the changelog, when launching the game. That makes it easier to understand that a new version is played and what changed. The only issue could be that the changelog will be available in English only.
The Demo in numbers
The demo is now live since the 10th of September, that makes 20 days in total as of today. The numbers are great and I didn\'t expect so many users to add the demo to their Steam library.
In total 886 added the game to their library and 106 actually played the game. The most happened the very first day with 477 library additions but only 11 players, and 20 players the second day. This shows how important the first day of the demo is.\nAfterwards the numbers declined and now I have around 10 library additions per day.
Two players played for over 120 minutes, that is amazing! The median play time instead is 9 minutes. Surprisingly people around the whole world played the demo. I expected most players to be from Portugal, Brazil or Spain, the main countries of Futsal.
I also got my very first Steam review, with some bugs reported and good feedback! I guess it was worth creating a dedicated Steam page for the demo, for this exact reason.
Contributors guideline
I created a Contributors guideline that should cover most questions a potential contributor might have. It also defines some rules like code style, the (non) use of AI and third party dependencies (that currently are not allowed).
The curl projects contributors guideline was used as base for this. Many thanks to the curl project!
Bugs info page
There is now a new bugs page, where information on how to report bugs can be found. I hope this improves the user experience on how and where to submit bug-reports and feedback. Especially for people who don\'t know how to create issues on git forge platforms, like Codeberg.
Who knows, maybe someone will even fix some bug and becomes the first code contributor :-)
Contributors guideline
I tried to sync the game between my Linux Steam client and the Windows Virtual Machine, but without success.\nThe Steam Cloud sync is currently not working and is more complicated than expected. I wrongly assumed that simply pointing to the correct path was enough.
The progress on this issue can be followed on Codeberg .
Minimum Setup
- OS: Linux Distrubition with Steam support
- Processor: Dual Core processorMemory: 2 GB RAM
- Memory: 2 GB RAM
- Graphics: On-Chip GPU
- Storage: 300 MB available space
Recommended Setup
- OS: Linux Distrubition with Steam support
- Processor: Quad Core processorMemory: 4 GB RAM
- Graphics: Dedicated GPU
- Storage: 500 MB available space
[ 6382 ]
[ 5853 ]
[ 1933 ]
[ 2282 ]











