EmuLinker-K v1.0.2 has been released, enhancing online multiplayer for emulators using the Kaillera protocol. This Kotlin rewrite of EmulinkerSF focuses on performance, security, and user-friendly features. Notable updates include seamless localization in multiple languages, improved server performance, and new helper scripts for easier administration. The update addresses previous bugs, notably a server slowdown issue, and includes a Kotlin Multiplatform library for Kaillera messages. Configuration cleanup and updates of project dependencies enhance usability. The community contributed significantly to translations and testing, further improving the project’s functionality. Download the latest version for updated features and fixes.
(HEY YOU!! We hope you enjoy! We try not to run ads. So basically, this is a very expensive hobby running this site. Please consider joining us for updates, forums, and more. Network w/ us to make some cash or friends while retro gaming, and you can win some free retro games for posting. Okay, carry on 👍)
EmuLinker-K v1.0.2 has been released. This server leverages the Kaillera protocol to enable online multiplayer capabilities for various emulators. EmuLinker-K is a Kotlin-based rewrite of EmulinkerSF, focusing on performance measurement and enhancement, patching security and privacy issues, and introducing valuable features for server administrators and users alike. The project is maintained by nue.
EmuLinker-K changelog:
✨ Key Updates & New Features
Seamless Localization
The majority of messages previously found in language.properties files, which required manual translation by server admins, have now been translated into Russian, Spanish, Portuguese, Japanese, and Chinese, and are included directly in the server binary. For broader language support, you can still submit your own translations if desired.
Configure your preferred translations and character set using the following settings in conf/emulinker.cfg:
# Please select the character set that matches your language region:
# Use Windows-1252 for English and Western Europe, Windows-1251 for Cyrillic,
# GBK for Simplified Chinese, Shift_JIS for Japanese, or x-IBM949 for Korean.
# Note: Unicode (UTF-8) is generally not supported by clients. If text appears
# garbled or shows as ‘?’, try selecting a different charset.
emulinker.charset=Windows-1252
# The language for server messages.
# strict ISO 639-1 language code (e.g. en, es, ja, ko, pt, ru, zh)
# or “custom” to prioritize user-provided strings in language.properties.
emulinker.language=en
If your language isn’t listed, please reach out to us on Discord and consider contributing to our CrowdIn project.
You can continue to use conf/language.properties for custom welcome messages as usual. Refer to this example for guidance.
Performance Enhancements
Significant architectural changes have been made to achieve considerable improvements in throughput performance and garbage collection timing. As always, the server is optimized for single-core, low-end hardware.
We undertook extensive rewrites of our load testing code and conducted microbenchmarking to confirm that code alterations did not negatively impact performance. While there is still room for further enhancements, performance now exceeds the current requirements of even the most popular servers.
New Helper Scripts
We’ve introduced dedicated scripts to simplify server administration:
An interactive setup and update script (see the Quick Start section) that can also be used to install beta versions and upgrade or downgrade specific versions as needed.
The revised start-server.sh and stop-server.sh scripts now verify if the server is running, display startup output/errors, and check for updates.
Legacy scripts server.sh and kill-server.sh have become obsolete and have been removed.
The Windows equivalents start-server.bat and stop-server.bat have also been improved but do not check for updates.
Other Enhancements
Bug Fixes: This release includes various bug fixes. Most notably, we addressed an issue that caused the server to gradually slow down over time, necessitating restarts.
KMP Project: A new Kotlin Multiplatform (KMP) library for Kaillera protocol messages has been introduced, supporting several new languages: KailleraProtocol-kmp.
Dependencies: Project dependencies have been updated to their latest stable versions.
Config Cleanup: Obsolete configuration flags in conf/emulinker.cfg have been removed (including game.desynchTimeouts and game.timeoutMillis), and others have been assigned reasonable default values. Check the README for descriptions of each flag value, including their defaults and requirements.
🙏 Acknowledgements
A heartfelt thank you to the community for making this release possible:
@Jgunishka for providing Russian translations.
Radar in Discord for supplying Spanish and Portuguese translations.
@eacucbo, heakoda, and Andypsl8 for offering Chinese translations.
Users from the Kaillera Reborn Discord and the Chicago SSB and nue ELK servers for early testing and invaluable feedback.
@russell-jeter for assistance with code cleanup and review.
Justase64 in Discord for beta testing and providing server logs to help track down bugs.
Retro Replay Retro Replay gaming reviews, news, emulation, geek stuff and more!