-
Notifications
You must be signed in to change notification settings - Fork 5
macOS support, cross-platform improvements, and bug fixes #12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
macOS support, cross-platform improvements, and bug fixes #12
Conversation
Corrected sound for not handled keypress in the game
FPCAtomicLauncher works FPCAtomicServer works FPCAtomic - crashes with error ReadMe rewritten
First multiplayer attempt is working!
Will try create Interpoaltion.
Ai bots are working.
EDIT: Fly.io deploy scripts
Simple remove_quarantine.command Exiting Bomberman will kill also server running in background
… Data from CD is succesfull
* RunningServerFromApp: BUG: Corrected bug with logging REMOVE: Removed log TGame.OnReceivedChunk REMOVE: Removed template header and python script for applying header ADD: Added files headers - Modified by : Pavel Zverina EDIT: Local project folder renamed to fpc_atomic EDIT: Atomic Launcher refreshes the picture of Bomberman when Extract Data from CD is succesfull BUGFIX: Cornered Animation are working again EDIT: Start Network Game runs the server in the Terminal, co user can kill it # Conflicts: # units/uatomic_field.pas
…correct data folder)
…on. Corrected BASS device initalization
|
Hi Uwe, i have just created the pull request. The Updater functions are not implemented on MacOS, The Builds for mac are done locally, with my Apple developer account. Thank you very much, Pavel |
|
Feedback on your Pull Request First of all: wow. I am genuinely impressed that you took the time and effort to dig into my codebase. Most people would not even try, and your motivation and persistence really stand out. Thank you for that. Unfortunately, I cannot merge this pull request directly. The reasons are not about the intent or the ideas — many of them are good — but about scope and constraints: The PR is extremely large and touches many unrelated areas at once. Some changes break existing functionality or project assumptions. Some included content may violate third-party copyrights. A few changes conflict with the current architecture or toolchain. Because of this, a direct merge is not possible. That said, I do plan to manually adopt and re-implement many of your ideas, because the core concepts are often correct and valuable. How changes are usually handled. For maintainability and quality reasons, changes are usually broken down into small, isolated steps (features, fixes, refactorings). Your PR contains many such “small workloads”, which I would rather treat as individual feature requests. Below is a structured overview of what I found, including my initial thoughts. Review of Individual Topics General / Repository
cd_data_extractor
Client
Launcher
Server
Units
General ConcernsThese topics either seem questionable to me or require further clarification:
Final NotesTo be very clear: I really appreciate your work and the effort you invested. However, this must happen in small, reviewable steps, not in one massive change set. If you are okay with this approach, I will re-implement features one by one, using your code as a reference and inspiration. Since everything happens publicly, you are very welcome to act as a reviewer, provide feedback, and suggest improvements along the way. Once this is done, two larger topics will remain:
Again: thank you for the contribution. I hope you stick around — your input is valuable, and with a more incremental approach, we can get a lot done together. |
|
Hi Uwe, thank you very much for this deep analysis and all comments. I agree with most of your detailed comments. I am ready to cowork with you, just let me know how would you like to work on it. Looking forward to work with you PS: Your work is amazing, and you made my dream come true - play online Atomic Bomberman with my son :-) |
|
Hi Pavel, as you maybe already saw, i started "porting" your patches to my codebase, i will keep the #12 (comment) post updated and strike out everything what is "done" in my opinion ;) (please test if the solved issues fit the MacOS variant as well, or if it needs more adjustments). At 3. January 2026 i plan a little test session with some of my friends, so atm i am hurrying up as much as possible to port the "most" benefit patches into the game to be tested.
I am interested on your opinion, feel free to share ;) In the mean time it would be nice if you can answer the following questions:
|
|
Hallo Uwe, Sorry for long pause, the Christmas vacations, New Years Eve, and lot of unexpected work beginning of January. I want to help and contribute to this project, as much as I can. Here are my notes.
https://drive.google.com/file/d/1PjFbBGCB-KRcNwsGN8RdXII1K_AcGsOg/view?usp=share_link
Yes, that will be better. I don’t have code for work with ANI files. Here is explanation screenshot.
I need more time to investigate building flow for MacOS, It is more complicated, than Windows, and Linux. With each new MacOS version, there are more security rules, for running unknown software. As far as I know, the user has to heave paid Developer Account from Apple, and the aplication needs to be signed with Developer Certificate, and should have Aprrovement from Apple, that is does not contain Malware. The process is very complicated. And if it is not signed, than this Application does not run. The app cannot access the files in the Data folder. (Data created by CD_Data_Extractor.).
I used Lazarus v 3.9 for macOS. Review of Individual Topics cd_data_extractor I need a concrete example. My existing .ani files do not show this issue. Default locations / Darwin-specific defines → Is this really required on all macOS systems? Lazarus already provides mechanisms for storing/loading such values. I have not used them yet, but this likely needs refactoring. -> MacOS has these specific rules for security. It is not common, and restricted to save something into Application Directory (where the Apps/Games are stored - Similar to Program Files in Windows). The best and safe practise is to save data into Library/Application Support/ And the data folder sometimes in runtime is not visible from another App (fps_atomic). Client Increase timeout → This seems rather high. I tested over LAN and internet in Germany without issues. Maybe this should be a server-side option. → I need to fully understand this before integrating, but the idea sounds promising. Always show key labels in LoadPlayer screen → This deviates from the “original”, but I am okay with it. → I do not fully understand this. Shouldn’t this be handled by the launcher? More error handling during startup → Agreed, but your approach violates DRY. I will rework this more elegantly. → No issue on Linux and Windows, but macOS seems problematic. This deserves a dedicated ticket and discussion. Check for existing files during game start → The launcher already validates files. If used as intended, these checks are redundant. → I am still learning GitHub releases. I will try to align this with common standards. Fly.io support → Interesting idea. I need to evaluate what is required. macOS support → I would love this. However, I cannot test it myself. I will need Docker support and at least one macOS user willing to test. → Agreed. Purple artifacts in images → See “Units” section below. -> Actually i think this is a topic for the CD_data_extractor .. Launcher → Seems to be a macOS-specific requirement. OK. Cyclic reload of side image → Not sure if I like this, but it can be done. Use fphttpclient instead of Synapse → Needs testing. Especially on Windows this is non-trivial. Server → Sure. but ignore docker ;) (if you use server in docker run with -d param) → Sure. → Same as client/launcher. Can be done. -> did → HandlePlaySoundEffect does look suspicious. Needs deeper inspection. → Not acceptable. These are available elsewhere and may violate copyrights. → True. Needs fixing. Invalid animation locking → I was not aware of this. Will investigate. → Will check and fix. (see also client ;)) TOpenGL_GraphikEngine.LoadAlphaColorGraphik alpha handling → Idea is fine, implementation is not. I will replace it properly. -> Isn't this an issue of the cd_data_extractor ? → Does fphttpclient support proxies? If I switch, I will create a new downloader. A Synapse downloader without Synapse makes no sense. General Concerns → This caused multiple reimplementations and broke the Lazarus build (e.g. removal of LNet*). If it builds with FPC: fine. But the official IDE remains Lazarus. Also, I didn't remove LNet - I only changed how it's obtained: instead of a git submodule, it's now downloaded during CI/CD builds (and kept in macos/third_party/lnet_src/ for local macOS development) to simplify the build process and avoid submodule issues. ResolveResourceBase introduces DRY violations → If truly needed, it should live in a shared, central unit. More build modes (especially for Darwin) → The project intentionally has only Debug and Deploy. I do not yet see why macOS needs additional modes. Copyrighted content (e.g. images) → This cannot be merged under any circumstances. Threaded chunk manager → Makes little sense on Windows due to time slicing. If macOS truly needs this, it must be implemented via a derived class, not injected globally. → Is this macOS-specific? Likely related to ResolveResourceBase. This needs discussion and should probably be optional via the launcher. My Final Notes I love what you have done, and I play this atomic bomber man version with my son, and with my friends. Looking forward to work with you. Pavel |
|
Hello Pavel, Saying this i have had a further look into the clFuchsia issue. First, if i run the cd_data_extractor with a bunch of images that i found via google, and run it with my orig CD-Version, it alway's extracts the bigfont.png correct, so there is no issue or i did not get how you created your "invalid" bigfont.png (because the one you shared is definitly not correct). Also if i get your writing right, you created your data folder with this "corrupted" .ani files. So i am not shure if we are heading into the right direction by supporting corrupt files and having lots of continued issues, if the solution is to use one of the other "correct" versions which are easily accessable via a google search? Maybe you could test, if you have the same issues, if you choose a different source ? To be able to run my code with darwin i think the following steps are needed
Did i miss something, or should the code run on darwin after this ? |
This PR adds significant improvements to FPC Atomic:
New Features
Bug Fixes
Technical Improvements
All changes maintain full compatibility with the original game mechanics. The original author is properly credited in the README.
Tested on:
Not tested on: